Git Product home page Git Product logo

steno-jig's Introduction

Steno Jig

This is a little browser-based widget for typing drills. I'm using it to teach myself stenotype. It's still early in development, but you may find it useful and/or fun. I have it set up with only a gh-pages branch which means it will show up on the web at: https://joshuagrams.github.io/steno-jig/

index.html has the basic structure you need to use it: for basic exercises you can pass an array of strings (each of which must be a single word with no leading or trailing whitespace or the answer matching won't work).

If the words represent a static text (i.e. a sequence of words in a particular order), that's all you need. If you want to set a time limit, you can also pass a number of seconds. If you pass true as the third argument, the words will be randomized and recycled until the time runs out.

I have a bunch of existing word sets in word-sets.js. One of these sets is the New General Service List: 2800 root words in common use, aimed at ESL students. It's organized as a set of root words with variations, so I've kept the base set that way, and set the code up so that each entry can be an array of words instead of just a single word. In this case, it will randomly shuffle the entries, and then randomly choose from the words in the current entry. But it may be better to use the NGSL_all_forms list which has been flattened and sorted by frequency.

There are also a bunch of translations in plover-translations.js so it can display hints for the next word. Many words have more than one set of legitimate strokes, and it will show all of them unless you filter the given options with TypeJig.longestTranslations or TypeJig.shortestTranslations.


numbers.html has a more complex example which overrides the exercise's nextWord function to generate a sentence at a time and spit out random sentences with lots of numbers in them.

steno-jig's People

Contributors

antistic avatar arxanas avatar biffbish avatar cemrajc avatar jasonwoof avatar joshuagrams avatar lf- avatar monniasza avatar na2hiro avatar sealiteral avatar slampisko avatar thaiwood avatar zhukant 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

Watchers

 avatar  avatar  avatar  avatar  avatar

steno-jig's Issues

Line break breaks everything

So this is related to the last issue that I opened. Na2hiro mentioned that he mapped the line-break ("enter") to restarting the drill because 1. it was handy and 2. the line break broke things anyway. My issue with the hotkey was that I sometimes stroked R*R by mistake. I was explained how to remove the hotkey.

However, while before I mentioned that if you backstroke then you can safely continue, I discovered today (more than once) that it was not the case. When you do a line break the "text cursor" goes down one line to a phantom line. Neither undoing the stroke with *, backspacing with the "regular keyboard" backspace nor clicking with the mouse on the "real line" prevents everything from going bananas on the next strokes.

I do not know what exactly causes it and not being a JS programmer I'm not much of help, but still from my perspective I see one possible work around.
When things work properly, you type in words that get marked green or red in accordance to whether they were typed correctly or not. As you type, the words on your tail "disappear": they are "submitted" and you can no longer edit them --- if you "delete everything" then you are back only so many words, not to the very beginning of the exercise.
Perhaps "enter/ line breaking" can be used as a command to "submit all"? It would "submit" all the words you have typed before the current word and clear the input box. The reason I think this would fix the issue is that while backspacing does not help preventing the app from going bananas, "selecting all" and "deleting" does, although at the expense of deleting the five or so last words you have typed. Having "enter" being a "submit and clear" command you prevent the program from going crazy and "keep" the last words you already typed.
Just one idea.

Cheers and thanks again for the great jig!

Additional whitespace in first line of answers

First of all: Thank you so much for creating this project! I'm still at a very early stage but steno-jig makes the whole experience so much more fun 🙂

I also really enjoy the new display but had the problem that the first answer line would not align correctly which sometimes causes an answer word to slip into the next row. That's because plover outputs a whitespace in front of the first word which is currently also displayed. I added a pull request. You can try out the result here: https://mkrnr.com/steno-jig/learn-plover.html?drill=One+Syllable+Words&hints=yes&timeLimit=10&type=shuffled

Allow whitespace in exercise strings (phrasing)

Hi @JoshuaGrams,

I've been having a blast recently drilling steno exercises with Steno Jig. Thank you so much for creating this awesome tool!

Is there any way to remove the answer matching restriction that exercise strings must be single words with no leading or trailing whitespace (i.e., to allow drilling a word set such as the following)?

TypeJig.WordSets['Phrasing'] = [
    "in the", "of the", "I am not",
];

Stenographers often utilize briefing and phrasing techniques to input such phrases in a single stroke. It would be amazing to be able to drill such phrases in random order using the randomization features already supported in Steno Jig.

I spent some time looking through the code this evening and determined that the answer matching code begins around line 73 of the type-jig.js file, and I've tried a couple of different approaches so far. One was changing the answerString.split(/\s+/) call on line 75 to answerString.split('_'). This actually yielded something close to the desired behavior except that it was necessary to input an underscore between every exercise string.

Another approach was extending the if statement condition on line 91 to support phrasing as part of the valid prefix determination case. I also tried adding a new else if case such as the following (although this turned out to be a sub-optimal approach because even if it had worked, it would only have allowed phrases of two words in length):

else if((ans + ' ' + answer[i+1]) == ex) {
    // Try to add support for phrasing
    if(hasClass(out, 'incorrect')) this.removeError(ex);
    out.className = 'correct';
}

I wasn't able to get the answer matching to work correctly again in either of these cases, and I also ran into issues with getting Steno Jig to recognize that the lesson was complete.

Do you have any thoughts or hints as to how to go about implementing phrasing support?

Kindest regards,

Pete

Feature Request: Navigate between Steno Jig and Learn Plover lessons

I have been switching back and forth between the Steno Jig lessons and the Learn Plover lessons. It would be nice if there were a convenient way to navigate between them, and possibly the "learn the steno keyboard" lessons, perhaps by just adding a link back to the intro page.

Word boundary errors possible

While doing the single-syllable exercise, I've run into word boundary errors, such as:

  • Kass setcassette
  • pup petpuppet

It would be nice if the lesson was aware of these entries and never suggested "pup pet" or "Kass set". Maybe more generally, all random lessons could be checked for word boundary errors.

I'd be willing to work through a solution and make a PR if you are open to it.

[Suggestion] Emily's Symbol Dictionary, Jeff's Phrasing and Python dictionary training

Hi, I want to study Emily's Symbol Dictionary interactively, but Typey Type refuses to load its JSON form. Additionally, I've had issues with spacing in the Typey Type's lesson. Maybe I could generate the material with Python, but I'd feel like having per-lesson-generated material. I'm now to working on this project, and I don't know where to start making my own code for the dictionary. I hope you will guide me on working on Steno Jig's code to generate Emily's Symbol Dictionary strokes for lessons.

Feature request: Disabling "Repeat Drill" hotkey

Hello Joshua Grams,

Great widget! I've been using and enjoying it a lot!
One request: it happens once and again that I hit R*R by mistake, and I find it very frustrating to have to start all over again. If it is not too difficult, do you think it would be possible to add a toggle (like for showing hints) for enabling/disabling the "repeat drill" hotkey?
Alternatively, do you think you could direct me at where I can make the change to disable/ replace the "enter" as the hotkey? I don't know my way around JavaScript and when I downloaded a local copy I tried to remove the <a id="again" title="Enter">&#8634; Repeat Drill <span class="shortcutkey">(Enter)</span></a> from the "navigation center" but that, instead, just broke the whole thing down. Oops.

Thanks in advance!

Suggestion: alternative animation scrolling

I've been drilling with steno jig and I'm really enjoying it. I'm using it to learn the LightSpeed.

My biggest issue is that I'm prone to nausea → and the scrolling text moves at such a pace that seems to make me dizzy.

I can think of some solutions:

  • Make the animation instant
  • Add more natural acceleration so that the animation is still followable, but much quicker
  • Introduce a paragraph view like TypeRacer (I can understand that this wouldn't work with really large texts)

I'd be willing to help out, but I wanted to get feedback on your thoughts. My drilling is roughly 75 words per minute right now, in case you wanted to simulate what it looks like.

Graphing Bug

It seems like if you start an exercise and then restart it by hitting enter three times the graph contains a flat region of 0 WPM for the amount of time that elapsed prior to restarting the test. It seems weird to me because it looks like the page should reload whenever you reset, but I guess the beginning of the timer isn't being reset somehow?

2022-06-19T18:35:50-04:00

didactic hints

when i use steno jig with the Learn Plover! exercise "one-sylable words", with the hints enabled, it shows H as a hint for "had", and SAEUS as hint for "says". However, for didactic purposes, briefs should not be shown that early, and the book says that the stroke for "says" is SEZ.

While the hints currently technically are working, i think that for didactic purposes they should work like the book tells you to stroke the word.

copy paste problem

Hello, your site is really great. I have been inserting my own word lists into the custom boxes to practice. The problem I'm having is that when I write the words with the steno keyboard w/ plover into notepad and then copy and paste it into your word box, nothing shows up when it loads the exercise. I have to type the words with my normal qwerty keyboard no plover and the exercise shows up properly but it would be preferable/faster and better for my practice to be able to just write the words in steno. Is there anything I can do about this?

Thank you so much for this website, it is a really great tool, and I am enjoying using it.

False alarm at punctuation

First, thanks for this great software. I've been using it for a long time and like it.

When a word is follow by a punctuation with no space between them, after you type the word, the screen displayed as red, while it's not a really an error. It turns to green after you enter the punctuation. Can we fix this so that is green after enter correctly the word?
Thanks.

Feature request: showing speed in other units

Right now, the speed shown at the end of a drill is in WPM, but could it be made to also show CPM (characters per minute) and maybe also CPS (characters per second)? I've found out it would just be a couple of changes to typejig.js, and, if you want, I could implement it myself.

Hello Joshua - How is WPM calculated? Something doesn't fully add up.

Dear Joshua, I just did a test with a metronome at 85BPM. And as you can see I typed 170 incorrect words on a 2 min exercise. Even in that case it says the WPM is 68WPM? Shouldn't it be 85 WPM? I did another test with 60 correct words on a 2min exercise and instead of 30WPM it came out to 25WPM. I then did another test with longer words, wrote 60 and came out to 38WPM this time. It's as if the WPM were calculated based on a parameter other than actual words! I don't know how to read code that's why I ask :S Thank you

screencapture-joshuagrams-github-io-steno-jig-learn-plover-html-2020-03-30-12_51_32.pdf

Make stylesheet colour-blind friendly

I'm not colour blind myself, but I noticed the red-for-wrong green-for-right colour scheme might not be particularly useful for those who can't tell those colours apart. Maybe we could underline the correctly written words or strike-through the ones with mistakes.

The word "diphthong" is misspelled.

dipthong

The word is misspelled in the drop-down as seen in the image, and also in the lesson title itself. It should be spelled "diphthong" with two letters "h" in it.

More alternative (British) spellings to match

Appreciate the feature so far! Today I encountered behaviours and flavours, which aren't in the 140 or so being matched. Maybe there's a way to import a more complete dictionary of US–British equivalents?

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.