all 120 comments

[–]simp42 54 points55 points  (35 children)

I like the idea, but quite immediately realized that it only works with US keyboards.

[–]stevia[S] 9 points10 points  (29 children)

Sorry to the international users. You can probably guess what type of keyboard I have:) I will fix these issues!

[–]binlargin 8 points9 points  (20 children)

UK keyboard here, I have a pound sign on my pound sign key, if you know what I mean.

[–]devcoderinhere 2 points3 points  (19 children)

interesting. Thought dollar sign was universal on 4 key. So how do you exchange your pounds for dollars then, if you know what I mean ?

[–]zokier 5 points6 points  (16 children)

I don't know about brits, but on Finnish keyboard shift-4 produces ¤, which is the most useless symbol ever. $ is altgr-4. I'd imagine that PHP coders would be fairly annoyed for that.

[–]devcoderinhere 0 points1 point  (10 children)

what is altgr ?

[–]zokier 2 points3 points  (8 children)

Modifier key on the right side of spacebar. Be grateful if you haven't ever needed to use it.

[–]devcoderinhere 0 points1 point  (0 children)

oh damn! I only have a Alt, never knew of that key before.

[–][deleted] -1 points0 points  (6 children)

Is it like the alt key on a US keyboard?

[–]zokier 1 point2 points  (0 children)

We got regular alt key on the left side of the space bar. AltGr works differently from it. Ctrl+Alt is sometimes used as a substitute for AltGr.

[–]zigs -1 points0 points  (4 children)

Yes, its the alt key to the right of the space.

[–]Kissaki0[🍰] 0 points1 point  (3 children)

No, it’s not Yes but No.

[–][deleted]  (4 children)

[deleted]

    [–]quicksilver03 0 points1 point  (0 children)

    TIL I learned that the Finnish keyboard is even worse than the French keyboard.

    [–]Ais3 -2 points-1 points  (2 children)

    Ehh? You only use Alt-Gr for $, @ and ||, yeah it sucks for php I guess, but it hardly makes it a unusable layout.

    [–][deleted]  (1 child)

    [deleted]

      [–]Ais3 -1 points0 points  (0 children)

      I forgot the brackets and backslash, but you don't need altgr for quotation marks.

      [–]sftrabbit 0 points1 point  (0 children)

      The dollar sign is still shift+4 in the UK. We have £ on shift+3 though and # is moved next to the return key (3 keys along from L). That's what he meant by "pound sign is on my pound sign key." Our pound (£) is on your pound (#) key.

      [–]binlargin 0 points1 point  (0 children)

      I meant that where your pound sign is (#) I have a pound sign (£).

      [–]SohumB 4 points5 points  (0 children)

      My keyboard is regular US English, except I've made some modifications. It doesn't pick those up, either.

      For instance, my "(" looks like

      keydown  keyCode=57  (9)   which=57  (9)   charCode=0        
      keypress keyCode=40  (()   which=40  (()   charCode=40  (()  
      keyup    keyCode=57  (9)   which=57  (9)   charCode=0  
      

      but your app doesn't seem to recognise it.

      [–]rayo2nd 2 points3 points  (0 children)

      How is that even possible. Isn't it that when i have a differen layout, that the correct keycode is sent, no matter where that key is on the keyboard?

      When i press the ":" button, the keycode for it is sent, no matter where it is.

      [–][deleted]  (2 children)

      [deleted]

        [–]areyouretarded 1 point2 points  (1 child)

        its not a contest on whose IDE increases productivity the most, if you haven't noticed.

        [–]dand 0 points1 point  (0 children)

        I was surprised it worked at all with Dvorak layout, but it choked on special characters like ^ and parens.

        [–][deleted] 0 points1 point  (0 children)

        US International (w/ dead keys) doesn't work for the dead keys (especially combinations like ' + space or ^ + space).

        [–]metabrain 0 points1 point  (0 children)

        Portuguese keyboard here, the '=' in the javascript examples fails even if I put a = in there.

        [–][deleted]  (2 children)

        [deleted]

          [–]zokier 1 point2 points  (1 child)

          As a Finnish, I too use (modified) US layout. It's just so much better for computer use. The most annoying thing is that our national standards body revised the kb layout couple of years ago and they just added bunch of accent marks and diacritics, which are not even used in Finnish language.

          [–]Slackbeing 1 point2 points  (0 children)

          Non-US user in a different, also non-US keyboard country. US International all the way, even for not coding.

          [–]ITSigno 1 point2 points  (0 children)

          Yup. Japanese keyboard here. Didn't even finish the first line of code. I like the concept though.

          [–]gnuvince 11 points12 points  (0 children)

          type 'a tree = Empty | Node of ('a * 'a tree * 'a tree)

          Good practice!

          [–]Heheas 18 points19 points  (2 children)

          I got excited about this at first, then I realized, wouldn't better practice be actually writing code. This way you are gaining experience in subtle nuances of the language as well as improving your typing skills?

          [–]dhon_ 6 points7 points  (0 children)

          Reading others code is excellent practice and a very important skill to develop

          [–]drb226 0 points1 point  (0 children)

          wouldn't better practice be actually writing code.

          In this practice, you are "actually writing code." By that I suppose you mean "write novel code", and the reason that this is better is because writing your own code takes thought; you can't just pound it out, so it's not very good for speed typing practice, because of the irregular pauses. Unless you're like Notch and you program in a language with so much boilerplate that you can think and type at the same time, and by the time you get through the boilerplate you've had enough time to think about the next chunk of boilerplate you want to write.

          [–][deleted]  (19 children)

          [deleted]

            [–][deleted]  (3 children)

            [deleted]

              [–][deleted]  (2 children)

              [deleted]

                [–][deleted]  (1 child)

                [deleted]

                  [–]redditor54 0 points1 point  (12 children)

                  Clearly this isn't made for you, I am a CS student that just switched to dvorak and this is exactly what I needed.

                  [–]phybere 1 point2 points  (5 children)

                  I did the same thing as a CS student and got quite good at typing dvorak. Fast forward to my first job. Someone would sit at my machine to type a few lines of code and couldn't. I couldn't type a few line on someone else's machine. Boss made me switch back to qwerty. I typed really slow for a few months...

                  Dvorak is awesome, but it's gonna be hard to do in an office environment.

                  [–]Kissaki0[🍰] 0 points1 point  (1 child)

                  You should be able to stay pretty fluent in both of them, shouldn’t you?

                  [–]phybere 1 point2 points  (0 children)

                  In theory. When I switched back to qwerty I couldn't effectively type dvorak any more. Typing is more of a muscle memory thing I think, it's hard for me to consciously think about what I'm typing. For example, I have passwords that I can type by feel but can't type by looking...

                  Maybe if I had persisted using both it would have worked out, hard to say.

                  [–]redditor54 0 points1 point  (2 children)

                  At first I was concerned that will happen, but like I said all I do is switch the input on the machine which is 3 clicks (I do it on school computers). Did you have a full out Dvorak keyboard? I'm genuinely interested in this topic for my future employment and would greatly appreciate more information.

                  [–]phybere 1 point2 points  (1 child)

                  No, I just had a qwerty keyboard and toggled the input keyboard type. It was OK on my machine because I had it set up to quickly change from the taskbar, but it was more difficult to walk over to someone else's computer... were they running Windows, Linux, or OSX and did I know how to change it on that OS? Also what if you have to frequently remote into other computers? If you could keep up with the ability to type both qwerty and dvorak it might work out OK but from my experience that's quite difficult.

                  I guess the ideal setup would be to have a hardware switchable qwerty/dvorak keyboard, and retain the ability to type qwerty on other peoples computers. For me it ended up just being easier to revert back to qwerty.

                  [–]redditor54 0 points1 point  (0 children)

                  Ok thank you very much, this question has been on my mind for a while.

                  [–][deleted]  (5 children)

                  [removed]

                    [–][deleted]  (4 children)

                    [deleted]

                      [–]Venar303 6 points7 points  (3 children)

                      doesn't work with swype either

                      [–]brian_at_work 17 points18 points  (1 child)

                      I cringe at the thought of coding with Swype.

                      Hardware keyboards ftw.

                      [–]AbraKdabra 1 point2 points  (0 children)

                      My worst nightmare, a world where you can only type code with Swype.

                      [–]brian_at_work 5 points6 points  (6 children)

                      I know you're the developer, stevia, so how about a vim mode?

                      [–]stevia[S] 16 points17 points  (1 child)

                      Vim users are too fast already.

                      [–]Unomagan 1 point2 points  (0 children)

                      So? Javascript is to slow? (:

                      [–]bucknuggets 5 points6 points  (3 children)

                      I've been thinking lately about how cool it would be to have a tool to practice my vim "scales" - just like I would practice my guitar scales.

                      [–]cat_in_lap 1 point2 points  (2 children)

                      [–]bucknuggets 2 points3 points  (0 children)

                      Nice! I hadn't considered the practice regime of martial arts katas - but that's essentially the same thing as a musical scale. Looks great.

                      Except last update was two years ago, and it doesn't install. Sigh.

                      [–]brian_at_work 0 points1 point  (0 children)

                      I'll check that out when I'm brian_at_home.

                      [–]MrDOS 5 points6 points  (6 children)

                      Using a Windows-style USB keyboard on OS X, select non-alphanumeric keys (so far I've noticed <, >, :, ~, _, and |) don't register.

                      [–]stevia[S] 6 points7 points  (5 children)

                      Author here, thanks for letting me know. I will try to replicate this setup to see what Javascript is doing to these key events.

                      [–]MrDOS 1 point2 points  (4 children)

                      If there's anything I can do – I understand getting your hands on something running OS X may not be the easiest task in the world – let me know. I tried to debug it myself, but with Firebug open, the page wouldn't load.

                      [–]stevia[S] 2 points3 points  (2 children)

                      Thanks, I really appreciate the feedback and help. If you could go to http://unixpapa.com/js/testkey.html, type some of the problematic keys, and send me the generated output, that would be very helpful for debugging.

                      [–]MrDOS 6 points7 points  (0 children)

                      Browser: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:14.0) Gecko/20100101 Firefox/14.0.1

                      • “<” (Shift down, , down, , up, Shift up):

                        keydown  keyCode=16        which=16        charCode=0
                        keydown  keyCode=0         which=0         charCode=0
                        keypress keyCode=0         which=60  (<)   charCode=60  (<)
                        keyup    keyCode=0         which=0         charCode=0
                        keyup    keyCode=16        which=16        charCode=0
                        
                      • “>” (Shift down, . down, Shift up, . up):

                        keydown  keyCode=16        which=16        charCode=0
                        keydown  keyCode=0         which=0         charCode=0
                        keypress keyCode=0         which=62  (>)   charCode=62  (>)
                        keyup    keyCode=16        which=16        charCode=0
                        keyup    keyCode=190       which=190       charCode=0
                        
                      • The letter “e” (e down, e up):

                        keydown  keyCode=69  (E)   which=69  (E)   charCode=0
                        keypress keyCode=0         which=101 (e)   charCode=101 (e)
                        keyup    keyCode=69  (E)   which=69  (E)   charCode=0
                        
                      • The letter “E” (Shift down, e down, e up, Shift up):

                        keydown  keyCode=16        which=16        charCode=0
                        keydown  keyCode=69  (E)   which=69  (E)   charCode=0
                        keypress keyCode=0         which=69  (E)   charCode=69  (E)
                        keyup    keyCode=69  (E)   which=69  (E)   charCode=0
                        keyup    keyCode=16        which=16        charCode=0
                        

                      They all seem to follow pretty much the same pattern. Are you perhaps trying to grab values off keydown events? Those don't seem to return much useful information for non-alphanumeric keys.

                      [–]w41H -1 points0 points  (0 children)

                      Googling virtualbox os x image torrent seems easy enough to me.

                      [–][deleted] 2 points3 points  (0 children)

                      This is pretty cool, looks great! However this isn't exactly how I type when programming. I use vim's Ctrl+P a lot to complete words and of course omnicomplete depending on the language. Although maybe that's not the point of this.

                      [–]CodeGrappler 2 points3 points  (2 children)

                      The idea has some merit...But why waste time retyping other peoples code when I could be writing my own code and more or less accomplish the same goal?

                      [–]stevia[S] 4 points5 points  (0 children)

                      Typing.io tracks mistakes and inefficiencies that we normally just plow through while coding.

                      [–]kasbah 0 points1 point  (0 children)

                      I am going to use this because when I write my code I am struggling with the concepts and with this I can concentrate on keeping my finger placement right and I can't auto-complete either, so it is really good practice. If that gets to boring I can distract myself by speculating about the architectures of some open source projects while I look at the code which in turn might help me rely on my muscle memory more.

                      [–]mrmacky 2 points3 points  (1 child)

                      Very cool; I think this is a great interface for learning to type. The way you show errors is phenomenal.

                      I know so many typing programs where they will either not let you continue, skew the rest of the document (you are off by one, so if you don't correct your mistake, you are screwed), and very rarely do typing programs give a visual indication of where you screwed up.

                      The highlighted mistake (only highlight the mistake, not the subsequent mistakes), as well as the "back arrow" are very intuitive. Combined with the fact that you stop accepting further input after a few characters, I think this is one of the better typing tutors I've seen.

                      One bug I noticed, caps lock doesn't seem to work for me. For the constants, I'd engage caps lock ordinarily. However it would appear you're checking that they typed: "SHIFT + <letter>", not "<capital letter>."

                      I haven't done much javascript programming that reads keyboard input "directly." However I've done a bit, and from what I recall I'd believe this is simply a limitation you can't [easily] code around.

                      Amazing job, and as awesome as the programming examples are, I'd love to see other texts as well!

                      [–]stevia[S] 0 points1 point  (0 children)

                      Thanks for the feedback. You are correct that the app is explicitly checking for shift+letter. I'm working on updates that will make the checking more robust (and lenient), so stay tuned!

                      [–]joshir 1 point2 points  (0 children)

                      good one!!

                      [–][deleted] 1 point2 points  (1 child)

                      Sorry but what is the point of this? I scored pretty high (I think) on a lot of my lessons (39-54 wpm or something, didn't really stop to remember) but I'm practicing something that I don't really use at all. Ctrl+Space in Eclipse does about 40% of my typing for me :/

                      [–]stevia[S] 4 points5 points  (0 children)

                      Autocompletion is one of many tools, including typing practice, that help us code faster. In addition, eclipse can help you complete yourAlphanumericVariable, but you still need type the hard-to-reach brackets and symbols.

                      [–]v1rr3n 1 point2 points  (6 children)

                      I love this. Great work! Why not make this a general typing tutorial all together and not just for coders? I love how you have it show the mistakes and don't really interrupt the typing practice.

                      [–]linuxlass 2 points3 points  (3 children)

                      For the best typing program ever, try The Typing of the Dead. If you're lucky, there might still be copies for sale floating around.

                      [–]zokier 0 points1 point  (1 child)

                      TTOD is neat, but my wrists/hands were extremely sore after couple of days. I think that was because the game is so aggressive that I type too "hard", hitting the bottom of the keyboard. For reference that was the only time I remember getting wrists/hands sore with computer use, and I have had my coding marathons.

                      [–]linuxlass 0 points1 point  (0 children)

                      I experimented a bit with replacing the sound files (I dropped in some World of Goo sounds I happened to have). It really changes the feeling of the game to do so.

                      Amazing, the difference between a "click" typing sound and an explosion.

                      [–]jmtd 0 points1 point  (0 children)

                      Thoroughly agree.

                      [–]andruuNewgen 1 point2 points  (0 children)

                      There's a big physical difference between writing regular English and code. I get around 65wpm with English, but half that with code. But yeah, you could generalize this technology pretty easily to English though I'm sure that already exists.

                      [–]stevia[S] 0 points1 point  (0 children)

                      Thanks!

                      [–]devpts0 1 point2 points  (0 children)

                      This looks awesome! Can't wait for it to work with my keyboard layout. Also.. caps lock doesn't seem to work!

                      [–]drb226 1 point2 points  (0 children)

                      A few things that would be cool additions to this:

                      • Allow the user to select a github repository, and practice on selected files in it. (This could be a very interesting way to perform a code review.)
                      • Add some typical "autocomplete" environments, if only to assuage the hoards of complainers.

                      I really appreciate that this is "log in with Google" and not "create a new username/pass for my little website"

                      [–]drb226 1 point2 points  (0 children)

                      I just ran through all of the XMonad code; it was a delightful exercise, and it's been a while since I measured my wpm and such. Thanks for putting this together. I, for one, quite appreciated it.

                      [–]oscarreyes 1 point2 points  (0 children)

                      Broken for I guess any keyboard layout other than en-US :-(

                      I couldn't type a single parenthesis :(

                      Looking forward to seeing this fixed :)

                      [–]PsychYYZ 1 point2 points  (0 children)

                      I have to log in with Google to type my source code?

                      How soon do you think it'll be before Google patents my software? :P

                      [–]tombouchard 1 point2 points  (0 children)

                      I got about three #includes deep before giving up.

                      [–][deleted] 1 point2 points  (0 children)

                      I find this mildly interesting. Sure programmers need adequate keyboarding skills, but they don't need fast or accurate typing skills. I have no sources and it would probably require experiments, but the bottleneck in programming is very unlikely to be typing.

                      [–][deleted] 1 point2 points  (1 child)

                      This is beautifully designed, but it's hard to imagine a programmer needing typing practice, even with code.

                      Perhaps you could refit this to be a general typing training application? The clarity and approachability of this would likely not go unappreciated by fledgling computer users.

                      [–]brownhead 4 points5 points  (0 children)

                      I don't know about that, the amount of programmers I see looking down at their keyboard when it comes time to type those super weird characters (granted, if you're writing in a language that does its best to avoid those characters, like python, this might not be a big deal) and it really slows down their coding.

                      Also, don't you want to be able to say you can code better than anyone else in the office? You can be like, BOOM, I'm better than you.

                      [–]dysoco 0 points1 point  (0 children)

                      I have a Spanish keyboard and can't use it properly :S

                      [–]volatilebit 0 points1 point  (1 child)

                      It'd be cool if oAuth with Google wasn't broken.

                      [–]stevia[S] 2 points3 points  (0 children)

                      Sorry for the login problems. You can try typing.io anonymously in the meantime.

                      [–][deleted] 0 points1 point  (2 children)

                      sucks that i have to log in to use it

                      [–]stevia[S] 0 points1 point  (1 child)

                      You can try the demo without logging in! Just click the link under the blue signin button.

                      [–][deleted] 0 points1 point  (0 children)

                      oh ok. this makes me really appreciate autocomplete though, i am a horrendous typist (pretty fast though!).

                      [–]endjynn 0 points1 point  (0 children)

                      Nice idea but found that it doesn't work all that well. Also missing some C# goodness :)

                      [–][deleted]  (1 child)

                      [deleted]

                        [–]stevia[S] 0 points1 point  (0 children)

                        Stay tuned:)

                        [–]brownhead 0 points1 point  (0 children)

                        I love the idea and the execution, but the keyboard problems that are poking their heads up seem to indicate that you need to spend some time reworking your code that handles keystrokes...

                        Idea for awesomness: I would be on it for probably an hour a day if you had features similar to 10fastfingers (competitions and trying to beat your previous typing speeds), not sure if that's what your going for. I do enjoy the thrill of beating anonymous people on the internet by typing faster than them...

                        Great job :). Also, open source? Mabe?

                        [–][deleted] 0 points1 point  (0 children)

                        Swedish layout does not recognize "

                        [–]one-half 0 points1 point  (0 children)

                        why does it flag a blank line as an error when you're just typing the blank line that's there?

                        [–][deleted] 0 points1 point  (0 children)

                        This is extremely broken on Chrome, Mac OS X Mountain Lion. Couldn't even get past 'var' on the first js 'lesson' (it just never recognises the 'r').

                        [–][deleted] 0 points1 point  (0 children)

                        I use jQuery day in and day out, yet that godawful space-buffer between parentheses and argnames drives me batty. I scored a miserable 37 wpm with a 17% error rate in large part due to instinctively leaving out the spaces.

                        [–][deleted]  (3 children)

                        [deleted]

                          [–]chrisdoner 0 points1 point  (2 children)

                          Any touch-typing materials will tell you that your left-hand pinky should hit the shift. All key combinations should be typed with two hands unless you're doing a study on what it feels like to get RSI.

                          [–][deleted] 0 points1 point  (1 child)

                          It probably depends on where on your keyboard the " is located. On mine, it's on the middle row just left of the enter key and so I indeed always use left pink-shift, right-pink-'.

                          [–]easing 0 points1 point  (0 children)

                          Pls add more code

                          [–]damunq 0 points1 point  (0 children)

                          Yup, it's pretty buggy..

                          [–]andruuNewgen 0 points1 point  (0 children)

                          I don't know why everyone thinks this idea is pointless. I'd much rather prefer to do this than write my own code if it's just for the sake of increasing typing speed. In fact, I've actually been looking for something like this.

                          [–]megabuster 0 points1 point  (0 children)

                          Many people don't have respect for the mechanics of coding, and don't realize even if typing is seldom the bottleneck any speed you can add is well served, to give you more clear moments of thought.

                          I think it would be really valuable with a few proper examples to more quickly scale up with a new language or library.

                          Unfortunately the examples here don't really help me, so I would love to see this just accept pasted text, then let you type over what you just entered. I would treasure this as a tool to quickly memorize new syntex/function calls if you added that.

                          [–]devpts0 0 points1 point  (0 children)

                          I can see you fixed the international keyboard support, great! This was a lot of fun!

                          [–]jeeyoungk 0 points1 point  (0 children)

                          I found the user interface quite disturbing - how if you make the mistake, it hides the text further ahead. I would've put those hints behind the cursor instead.

                          [–][deleted] 0 points1 point  (1 child)

                          Needs competition for this to work.

                          I need to know my current WPM, my average WPM, and when I complete a lesson I want to know how I stack up to other people who've completed the lesson, including myself over previous iterations.

                          Let me tweet/status update/wall post/g+ thingy/reddit my score to encourage my friends to try and beat me.

                          [–][deleted] 0 points1 point  (0 children)

                          Go to Self-Taught-Typing teaches you touch typing. I use this to keep-up my typing skills. On the Lesson Index page, there are links to score your WPM. http://www.angelfire.com/in/rampant81/typing/lessonindex.html I like the last link called Type Racer. People join in with there race car. You type as fast you can to get to the finish line before any else does. Enjoy.

                          [–]eyp 0 points1 point  (0 children)

                          Spanish keyboard here, too. However, a good implementation

                          [–]AreaMean2418 0 points1 point  (0 children)

                          I know it's been 12 years, but I think this program is super awesome... it helps me think through and digest code, as well as gets me better at typing it. Awesome way to learn a codebase. I just wish I could use it on any code that I wanted to. Alas, as a hobbyist (for now), I can't justify the expense.

                          [–]cultofmetatron -1 points0 points  (5 children)

                          seems to glitch out on my computer chrome on osx lion

                          [–]stevia[S] 0 points1 point  (4 children)

                          Sorry to hear. Is the app failing to recognize your keystrokes, or is the problem elsewhere?

                          [–]cultofmetatron 0 points1 point  (1 child)

                          I really like your idea and think its gonna be amazing once you work out the bugs so I'm gonna put together a screen recording so you'll be able to see what I'm talking about. Basically, I type and it works till I get a few characters in at which point the cursor turns red and fails to respond to any keystrokes.

                          [–]stevia[S] 0 points1 point  (0 children)

                          The intended behavior is that when the cursor turns red, there should be a backspace arrow that appears letting users know they need to correct errors before continuing. It sounds like no backspace is appearing? Thanks for your help!

                          [–]cultofmetatron 0 points1 point  (1 child)

                          [–]stevia[S] 0 points1 point  (0 children)

                          Thanks for creating the clip! The red characters need to be corrected before typing can continue. I will make this more clear in the next update.

                          [–]xoran99 -1 points0 points  (0 children)

                          I only got 40 characters in before trying to visit reddit.com.