GithubHelp home page GithubHelp logo

jetzt's Introduction

jetzt

jetzt is a speed-reader extension for Chrome inspired by Spritz.

Screenshot

Here's what jetzt looks like in your browser:

More Info

Contributions

We are looking for contributions! See the CONTRIBUTING.md for more information.

License

Licenced under the Apache License 2.0.

See LICENCE.md and NOTICE.md for more information.

| (• ◡•)| (❍ᴥ❍ʋ)

jetzt's People

Contributors

brianjhanson avatar davidmetcalfe avatar ds300 avatar fusillicode avatar fuzzwah avatar gyran avatar gywn avatar h0ru5 avatar ianzapolsky avatar j6k4m8 avatar peteruithoven avatar pratyushmittal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jetzt's Issues

flash information acquisition time.

Hey there, I've noted a possible flaw with the system which is easily remedied.
As a psychology student I've spent some time looking into how the brain acquires information at speed, it's been a personal interest of mine for some time.

I will equate the theory of how a flash card test with four symbols (words you know) can be thrown by the introduction of a new symbol (words you don't know).
For example a square, circle, triangle and star might be used over and over in a memory test (just like you do with reading, you're ordering information and giving it meaning) up until the 30 minute mark.

In this test you are expected to regurgitate the sequence up to 6 symbols long. Most people will get very good at this by this point. Until you slip in a new symbol which is hard to quantify. (new word which you've not seen before)
Usually people are thrown by the new 'information' and they completely forget the old information around it.

I believe the biggest flaw of the Spritz system is just this, it allows for no contextual assimilation time of new information.

As an example consider the attached text:

"Patrick's growing collection of enemies eventually became just too numerous and too powerful. He was in prison in Edinburgh when his son Robert rose in revolt in 1614 and seized Kirkwall. It took a royal army under the Earl of Caithness and a siege (during which Kirkwall Castle was destroyed and St Magnus Cathedral, Kirkwall, was threatened) to displace him, and both Patrick and his son Robert were later executed. It is an oft-quoted comment on Patrick's ignorance that his execution had to be delayed to give him time to learn the Lord's Prayer."

Reading this for the first time as someone who knows little of Scottish history, I might be thrown by the introduction of the place "Kirkwall" if this was ploughing by me at 600wpm I would not be able to assimilate this new information. I'd have even more trouble taking on board the Earls and the Cathedral mentioned after as I've never heard of them before this reading either.

Two things would help greatly to assimilate this new information, i. context ii. time

I would propose that after hitting the space bar the current point which has been "Spritz'd" if you will, will be displayed on screen below the main window in context. Attached is the proposed alteration.

image

Great work on this adaptation guys, it will certainly be of great use to many people with dyslexia and anyone looking to improve their reading speed!

Dan

Quotes

I would just like to start out by saying that Jetzt is the best spritz clone out there, openspritz is borked at the moment, and even when it worked, it wasn't as clean as this.

that said, there is one area I would like to see fixed. Quotes. I read fanfiction, and sometimes there ends up being quotes inside guotes, even when I know they arent there. (see picture) He is a sample page for you to see the problem for yourselves. Thanks alot.

I would fix it, but I don't know javascript. Again, great stuff, thanks for making this.

screen shot 2014-03-12 at 3 10 04 pm

Noir Theme Css

(Formerly titled 'CSS Optional Color Scheme')
Hi, first of all congrats on making what I think is the best Spritz-clone available so far. Using the sides to display " " and ( ) looks natural and intuitive, I wouldn't be surprised if SpritzInc copies it.

I was playing around with the .css and came up with a modification of the dark style that I prefer and will be using as the default. It might be another style option choice to consider adding when using the '0' key to toggle through styles. The colors are black, white and #ee7600 (dark orange).

desktop460_cr
desktop459_cr

Mobile app

Similar to #74, it would be great to have a mobile app.

Obviously, this is primarily an in-browser JS project at the moment, but there's no harm in dreaming big! Besides, with things like Apache Cordova, perhaps a mobile app isn't such a big deal. But I'd like someone (like @janl maybe) who knows more about Cordova to comment!

Purposefully not specified a platform for this issue, as Cordova would allow us to make an app that runs on many platforms.

Config page

I totally agree with @ds300 its a good way to separate the core from the config and the storage of that config.

So it might be a good step to sharpen the configuration interface before adding a config page.
What needs to be on the config page?

From the config object i could derive so far:

  • user settings: target wpm, scale, skin
  • modifiers: (probably per language?), max. word length?
  • keybindings

Anything else? Drop something from the list?

Periods shown on their own

When you have text like this

"Hello there how are you".

We see a period on it's own. I personally really don't like this. Can we canvas opinion?

My proposed solution would be to show the period after the " in the right hand panel. As you said on the other issue placing the period inside the quotes changes the semantic meaning.

image

image

Increase background opacity

I feel that the background should be almost black (opacity 0.8 or 0.9) so that the user can focus all his/her attention reading.

Todo issues?

Instead of the todo wiki, maybe issues for each thing so they can be assigned?

OS X native app

I demoed jetzt to @janl today and he suggested that an OS X native app would be good. The general idea would be an app that could speed-read any text in any app on OS X. This would be useful for people using desktop clients, like Mail.app.

One possible possible approach would be to hook into the accessibility framework.

I appreciate that this is probably a way out, but creating this issue anyway.

Keep the font of the page, *optional feature request*

Fonts vary and change among the different variants of jetzt. If there was a way to keep the font displayed on the page, that'd fix the inconsistency. It can also preserve the integrity of some eBooks that use multiple fonts for things like ancient prophecies.

If it's not possible to match the font of the page, at least denote the font changes in the reader in some way?

Update copyright

I just created #58 for a suggestion about the license.

The second boring legal thing I wanted to mention before I start contributing code is the copyright attribution, which is currently listed as:

Copyright (c) David Sheldrick 2014

As the project contain contributions from more than one person, and as the project is not using copyright assignment (unless I am mistaken on this point) this attribution is incorrect. A better attribution might be something like this:

Copyright 2014, jetzt contributors

This attributes the copyright to all contributors. It doesn't matter which contributor holds rights over which lines of code. All that matters is the sum of contributors collectively holds the rights and that the whole project is available under one license.

Crediting the project's progenitor (David) and the subsequent contributors is better left for the README or a THANKS file. (This is already done, I note!)

Work with PDF

It would be great if jetzt worked with PDFs. I don't know if that's possible from JS. But if it's not, we could at least documented a recommended way to convert PDF to text or HTML that works well with jetzt.

This is something I'm interested in researching.

Show position on page when paused.

The current word on the page should be highlighted when paused. The scroll position on the page should be such that the highlighted word is visible.

This would allow users to easily backtrack and re-read portions of the text, if necessary.

Website

It would be cool if we had a website. Something simple on a gh-pages branch. Perhaps with a logo to go with it. Not super important, but might help to bring in additional contributors if we make the project look attractive.

Use on mobile platforms?

Can we think of ways to use Jetzt on mobile / tablet platforms?

  • It looks like in mobile browsers bookmarks can't work with current pages, so the bookmarklet trick won't work.
  • I understand from @ds300 ecsplendid that Chrome doesn't support addons.
  • We could look into Firefox mobile, but it's user-base is much smaller.

Use Apache License

Can we switch to using the Apache License 2.0? The Apache License is like the MIT license, with a few additional protections. Firstly, it ensures that any contributions to the project come with patent protection, in case the rights to those contributions are bought at a later date, and the new rights holder decides to patent and license them. Secondly, it ensures that all contributions to the project are available under the Apache License itself, which is very helpful when collaborating in a loose fashion, such as on Github.

Some good explanation at the bottom of this post:

http://travisswicegood.com/2013/03/06/open-source-licenses/

If I had [the licensing of Django] to do over again, it would be Apache today.

— Jacob Kaplan-Moss

Switching licenses at this point would require the permission of all existing contributors. But it's better to do it early, as doing it later would be very painful. I think that given the situation with this technology, patent protections could be quite useful.

Work with ebooks

This for me is one of the potential killer features. I would love to be able to buy an ebook (Kindle, iBooks, ePub, whatever) and speed-read it with jetzt.

I am not even sure where to start with this. But I would be interested in researching it. I just tried jetzt with the Kindle Cloud Reader, and it doesn't work. As with #78, it might simply be that we document a way to convert your file format.

'wait, what was that?' feature

We're never going to get 100% perfect word timings, and some passages of text are just plain harder to read than others, often due to funky grammar and the like.

So when I've finished this new parsing/instructions functionality, I'm gonna come back here and remind myself to implement a button/keybinding which navigates backwards by sentences and reduces the target WPM by 100 or so until you get back to where you were originally.

Unit Testing

I'm a fan of the project and would like to contribute.
I've extracted helpers into a module and tested them to illustrate my idea--but am open to suggestions. https://github.com/dwaldhalm/jetzt
Would this type of effort be helpful / welcome?

`Alt-s` problematic with some keyboard setups

Jetzt is great extension, but to use it without problems with my current setup (Polish keyboard) I had to change default keybinding to Alt+j
on this line.

if (!instructions && ev.altKey && ev.keyCode === 83) {
// more code
}

It would be great if can change the default keybinding without editing source code.
If you don't mind about it, I can even write something like that.

Display images?

When the dust settles on the whole text selection method I'd like to try to integrate images into the reader somehow. I was thinking we could display images we come across in kind of a lightbox manner. Maybe with a very big pause, maybe requiring user input to continue.

Any thoughts, objections?

List visualization

When iterating through items of a list, include some markup that will let users know they have moved from one list item to the next.

In the case of itemized lists, display the item number in the rightleft-most margin while displaying words from that list item.

For bullet lists, display a bullet in the rightleft-most margin, and alternate the bullet color (filled/unfilled, dark/light, etc.) when moving to the next list item.

WPM is much slower than advertised.

I used this site as a constant measurement: http://www.readingsoft.com/

First, I just wanted to see what I was reading at without jetzt. I read through the paragraphs and it timed me around 365WPM.

Then I set jetzt to 500 and redid the test with the extension running. As soon as jetzt finished the test, I hit "stop" and the site clocked me at 377WPM. Setting jetzt to 620 (which is about the max speed I am comfortable comprehending jetzt at) timed the test at 468WPM. That's more than a 32% difference!

I understand that the pause from punctuation is going to cause jetzt to have some lag. However, shouldn't the jetzt WPM account for this lag (or whatever else might be causing this mass difference in speed)? Instead of thinking that I'm reading at 500WPM, I'm reading at almost the same speed without jetzt.

Bookmarklet

I created a bookmarklet that loads the addon. This enables usage in Firefox for example.
#14

Talk about RSVP instead of Spritz

From Lifehacker:

Rapid Serial Visual Presentation (RSVP) is a method used by most of the recent digital speed reading systems. Single words flash on the screen so you're concentrating on a single word at a time. As you get used to the system, you speed up how fast the display shows you words.

I think we should update the project description to talk about RSVP instead of Spritz. I assume it is the more general concept the project is seeking to implement.

Latest build doesn't play any text

I just pulled the master branch (is there a convenient way to refer to the version?), and the extension no longer works for me. The hotkey brings up the rapid text box, but no text ever appears therein, regardless of which webpage I visit.

Separate punctuation at the end of word from the word itself.

I noticed that the highlighted "focus" letter shifts when a word has punctuation after it.
screen shot 2014-03-12 at 3 27 55 am
I know it is remedied by pauses, but the pauses go by pretty fast at higher WPMs. I think this might make reading harder.

Dunno if it's possible, but if there's a way to separate punctuation from the word being displayed, so that the focus letter is still where it should be, but the punctuation is on a separate line? Maybe even put the punctuation below the last letter/character of the word so that it still feels kinda natural to be there but still keeps the focus letter in tact?

(Leave the apostrophes alone though, I guess? Short words and contractions need it where it is.)

Page scroll with up/down arrow keys

Hi there,

This extension is purely amazing. Thank you!

I just noticed that the page keeps scrolling when using up/down arrow keys to adjust the speed. This is a little bit annoying and distracts me from concentrating.

Can this be fixed?

Thanks!

Script tags are included in the jetzted text

If you select a container that contains script tags as well as content, the javascript is displayed to the user. This should probably be stripped out before being fed to the display.

I don't know if the DOM parsing work will make this easier to solve.

Progress bar color

Would it be ok to change the default color of the progress bar, if the current choice was used as a placeholder while the code was being built? Users may end up spending a lot of time with the initial color theme and ideally it should look as appealing as possible. I think this orange [#ee7600] would work aesthetically, as a suggestion.
Current:

Proposed:

Colors for punctuation

I saw some talk about inserting longer pauses where comas and periods are used. I was thinking that a specific color for each would help our brains auto add the pause while the words flash by. A way to highlight them with out interrupting the flow of information. Just a thought. Thank you and keep on rocking!

Make it easier to add bookmarklet

Currently it's a lot of manual work to add the bookmarklet. Ideally I would like to present a button that people can just drag to their bookmark bar, and have it dynamically filed with the code from bookmarklet.js.
Could I for example add a page to gh-pages with some javascript or something that does this?

Time left in the section

Hey there, first I would like to say that I can't get over the awesomeness of this extension!

It occurred to me that it would be nice to see the time left in the section at that reading speed.
Would that be hard to implement?

Doesn't work with text within iframes

Not sure if this is actually possible to implement, but it'd be really nice if the extension worked with text in iframes as well.

How to reproduce:

  1. Go to http://codepen.io/anon/pen/uKgIp
  2. Click on Jetzt button.
  3. Select the "HTML" area's element.
  4. Watch it correctly read the text to you.
  5. Click on the Jetzt button.
  6. Try to select the text element in the rendered area.
  7. Notice that you can't click it.

WPM mapping

The number shown at the bottom-right corner is not currently an accurate WPM measure, but more of a semi-arbitrary speed measure. This was raised by #23 .

There is no way to get a 100% accurate WPM measure all of the time, since different passages of text can have radically different properties when it comes to the things which jetzt inserts extra pauses for, e.g. ends of sentences/paragraphs, quoted sections, commas, long words, etc.

So a simple way to at least make the number in the bottom-right corner an approximate notion of the current WPM would be as follows:

first, let's denote jetzt's internal speed by s

  1. Gather lots of text from different types of sources, (Novels, blog posts, news-wire, etc), such that the text is comprised of n words.
  2. Calculate the number of minutes t that it would take jetzt to display all of the text with s = 1.
  3. Then calculate actual WPM a = n / t.
  4. This forms a ratio which we can use to map the desired WPM to s. i.e, if the user wants to go at some specific WPM w, we set s = w / a.

At the moment I think there is a linear relationship between s and a, but that might not always be the case (plus the delay modifiers might change with user feedback). So I think it would be best to build a tool that could do the above for different values of s and output an if statement which provides values of a for a sensible range of ws (e.g. 200-1500wpm in 100wpm intervals) which we could then copy and paste into jetzt.js.

Obviously we shouldn't store the text corpus in the jetzt repo, but it would be good to upload it somewhere publicly.

Anyone want to do this? Should be fun!

markdown-completeness

I want jeztz to be able to succinctly and intuitively display the following types of text:

  1. emphasis
  2. strong type
  3. strikethrough
  4. sub/super-script
  5. block quotes
  6. ordered and unordered lists
  7. headings
  8. hyperlinks

1-4 are simple and obvious.

5 could be done by some combination of the following:

  • weak type
  • emphasis
  • double-quote wrapping as currently done for inline quotes
  • inserting some kind of 'begin-quote', 'end-quote' tokens with appropriate pauses to ease the mental shift.

I think 6 could be done nicely by putting the bullets/numbers in the left wrap section.

7 is tricky because there are different levels of heading. Even if there weren't, choosing a way to represent a heading is not obvious. Possible options are:

  • Making the text bigger (I strongly dislike this idea)
  • Making the words ALL CAPS (I only vaguely dislike this idea)
  • Using some kind of wrapper (as is currently done for parens and double quotes)

Of course whatever is done would have to be accompanied by appropriate pausing.

I think I have a decent solution for 8:

  • Render link text blue, with a link icon in the left wrapper, and a good long pause.
  • Put an unobtrusive list of links above or below the reader which gets populated as and when links are seen in the text, so the user can click them (or press a key to pause the reader and open the most recently seen link in a new tab)

As far as I'm concerned, code blocks, images, tables, etc, make no sense for jetzt. However, it might be nice to deal with them in a similar way to hyperlinks.

Thoughts?

Pick a starting point instead of element selection?

So on mobile text selection and element selection is problematic. Element selection is mostly tricky because you don't have the hover. You would need a confirm step.

I had the thought that maybe we could let the user select a starting point by clicking on an element?
We could guide them through this by showing the following text in a bar at the top of the website.
"Where do you want to start reading?"

As I'm quite used to the concept of element selection through experience in web development, I'm not sure how userfriendly the current select method is. Maybe picking a starting point is more intuitive for more users.

The biggest downside is that you don't consciously determine the boundaries, so the progress bar won't be very useful.
Also it's technically slightly harder to determine what comes next. On trick could be that you only look into nephews and their children, this could automatically give you intuitive boundaries. But this depends on how websites are structured.

I think of this as a backup, when we can't find a good (preferably offline) scrape interesting text method. Why I prefer offline:
#6 (comment)
#6 (comment)

Display stats on completion

The Squirt bookmarklet displays summary stats on completion.

You read 800 words in 42 seconds.

Something like that. Not that important really, but it's nice to know.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.