9 ms·
Typing Practice for Programmers
- munaf 14y agoCool? Still haven't decided if it's useful. Anyway, the cursor occasionally obscures the character and slows you down. Might be worth testing out a fish-eye effect as the cursor scrolls so you clearly know what you need to type.
- moonboots 14y agoAuthor here, thanks for the feedback. Do you mean the backspace cursor that appears after the user typed a character incorrectly?
- munaf 14y agoNo, I meant the cursor that's highlighting the current character. This could be my own vision problems, but the size of the text + color of the cursor + motion makes it slightly difficult to tell what character I'm supposed to type on the fly. I found myself stopping and squinting just to be sure. That's mainly why I recommended a fisheye - enlarging the current character would solve the problem, but perhaps it's not worth it for most users. Beautiful app though!
- tobr 14y agoFun idea, but doesn't seem to recognize non-US keyboard layouts.
- moonboots 14y agoThanks for the bug report. The next update will fix international keyboard layouts once I figure out the mess that is cross-browser, cross-language javascript key event handling:)
- tsahyt 14y agoSame here on a german keyboard layout (Linux & Firefox 14.0.1). It works well until I reach a special key, which kind of spoils the whole thing.
- agscala 14y agoPossibly one of these will be useful: https://github.com/madrobby/keymaster https://github.com/madrobby/keymaster https://github.com/ccampbell/mousetrap https://github.com/ccampbell/mousetrap
- moonboots 14y agoThanks for the js library recommendations. I've taken a look at keymaster, and it's mostly focused around modifier keys used in shortcuts. I'm currently using google closure library, but I will need to add more key recognition and failsafes in case there is a unrecognized keyboard layout.
- lfborjas 14y agoHappens to me too, with a slightly modified latin-american keyboard layout
- rasmusrygaard 14y agoNot quite as important, but it seems that Caps Lock isn't being registered either (did the Rails demo and some of the constants would be rather tedious with only the shift key).
- BoppreH 14y agoI'm using a standard Brazilian keyboard. The colon was mapped to the US layout location, but I could not type {, even though I knew the location on a US layout. Maybe because that key is a dead key here. I would be very glad if there were an "ignore layout" option that dropped support for any layout difference, so I could type as in a US layout and at least finish the exercises.
- timc3 14y agoAh! Swedish keyboard here (English operator though). Pity that was fun until I got to a bracket.
- Skalman 14y agoWouldn't it be better to have an input field and simply read what has been typed in it? It's not as if you need to have something else focused while doing it. That would eliminate all international keyboard problems in one go, even without a dedicated library.
- sp332 14y agoFF 16/Win7, I don't seem to be able to type underscores '_' at all. ETA: looks fine in Chrome though, and I really like this idea :)
- moonboots 14y agoThanks, will take a look into this
- slmbrhrt 14y agoP|pes in OS X on Firefox, too.
- freditup 14y agoFF15/Win7 here, and I'm also having trouble with underscores
- roryokane 14y agoIn Firefox 14.0.1 on Mac, I can’t type the colon ‘:’ in http://typing.io/lesson/clojure/clojure/zip/1 http://typing.io/lesson/clojure/clojure/zip/1 or the underscore ‘_’ in http://typing.io/lesson/ruby/rails/relation/1 http://typing.io/lesson/ruby/rails/relation/1. I also can’t use caps lock to type USAGE in http://typing.io/lesson/shell/git/git-mergetool/1 http://typing.io/lesson/shell/git/git-mergetool/1. But I think moonboots already knows about these problems: https://news.ycombinator.com/item?id=4419357 https://news.ycombinator.com/item?id=4419357.
- rince 14y agoIf anything, this site shows the importance of autocomplete
- amirmansour 14y agoThis is awesome. Finished the 1st Scala lesson and I really liked the end of the lesson summary. I got to make some improvements :)
- agscala 14y agoI wish this had a timer on it. I don't know which metric it would result in, but it would be fun to race against other people nonetheless
- nicholassmith 14y agoAh this is awesome, we've had a few similar stuff appear recently but this is exactly what I was after.
- nicholassmith 14y agoI honestly didn't mean to break it! It does seem however under Safari OS X it doesn't like alt + 3 for hash, which for the C++ ones is a big thing.
- newtonapple 14y agoI made something similar except you can practice using any Gist you want. http://newtonapple.github.com/Gistype/#1 http://newtonapple.github.com/Gistype/#1 It still needs some work on the current cursor movement for longer Gists, but the basic functionality is there. No login required, just type. :) Note that if you have Vimium installed, you'll have to put the URL on your "excluded URLs" list.
- tobiasu 14y agoWell done on the NoScript front. It's rare to see a site on HN that requires JS and falls back to a nice explanation of why it needs JS (Instead of just stating the fact, or worse, displaying a white page).
- moonboots 14y agoI'm glad someone noticed! I hope you whitelisted typing.io in noscript:)
- tobiasu 14y agoI did ;-)
- ibotty 14y agoi did as well. nicely done! :D
- Iaks 14y agoI will! =) I just checked my comment history and about 50% of my comments have been related to this issue. This is the first one that is complimentary.
- tripzilch 14y agoI didn't notice because I had scripting on at the time, but it deserves another compliment, seeing as so few websites seem to bother these days. (even for those who think noscript browsing is not with the times any more, it's still good practice to give a decent error message / explanation instead of breaking or blanking)
- Gazler 14y agoThe hash (#) character isn't working for me (UK layout keyboard, Firefox 10 on Ubuntu).
- grecy 14y agoWhy do you want me to sign in with Google?
- ajross 14y agoYou would prefer Facebook or Twitter? Or that they implement yet another authentication scheme and store their own accounts and credential database? There's no free lunch. The OAuth providers are, on balance, pretty good at what they do and a better choice for account management at small sites. This one happened to pick Google.
- zargon 14y ago> Or that they implement yet another authentication scheme and store their own accounts and credential database? Yes, either this or openid. I don't have an account at google. I don't want an account at google. While it's a lower barrier than a facebook login, it's still enough that I'll bounce off the site when I see it.
- grecy 14y ago> There's no free lunch. Of course there is. No sign-in at all. My question should have been: Why do I have to sign in?
- dbaupp 14y agoPresumably for keep track of statistics reliably.
- edanm 14y agoThis. Is. AWESOME. Let me tell you what this is useful for by telling you my story: I'm a pretty fast typist (80-100WPM on TypeRacer, usually) and I really never put much thought into my typing, since it was good enough. But I recently started paying attention to the kinds of mistake I make on Typeracer, and realized that I have certain combinations of keys which I don't make using the "home row" of the keyboard, but rather, move my hands to make. Every time I hit one of these, I have a 50/50 chance of not getting back to the home row correctly, meaning I have a 50/50 chance of throwing off my typing. And I am a heavy VIM user, by the way, which means I am very used to doing everything from the home row, including every navigation you can think of. I even have AutoHotKey scripts to give me vim-style navigation everywhere in windows, so I never have to move my hands. Now with this program, I finished running an example and noticed 2 shocking things: 1. There are a lot of keys which I'm not used to typing from the homerow, which happen to show up a lot in regular Python code. For example, periods (.). And underscores. I was used to shifting my hand to type these characters. I don't notice this during every day work, since I'm actually programming, but I did notice this while playing a program specifically designed for typing. 2. At the end of the program, it gives you statistics, and I found out that I was only about 48% effective, meaning 52% of the keystrokes I made were accidents that had to be backspaced out. This is a lot. Part of it is "first time with this program" bias, but it still means I have a long way to go. Anyway, I recommend running through this program, it will probably teach you a lot. P.S. Just one bit of constructive criticism: the way the program presents mis-types is a little annoying, and hard to follow. I recommend doing the same as TypeRacer, that is, have the "mistaken" keystrokes be visible somewhere, so the typist is very clear on how many keys he needs to backspace out. This is much closer to how people type in the real world.
- moonboots 14y agoThanks, I'm glad you found the stats useful. In my initial version, I wasn't requiring the user to correct errors. I was personally getting errors rates around 3~5% , which appear good but seemed too low for the amount of errors I feel I make. Adding the need to backspace and correct keys revealed the true cost of mistyping a key, namely the wasted keys typed before correcting and all the backspaces. Thanks for pointing out typeracer. I will take a look at it and try to incorporate its error handling.
- cgray4 14y agoThis doesn't interact very well with the firemacs Firefox extension. I love the idea, though.
- ericmoritz 14y agoIt would be awesome if they're keeping stats on each language so that we can find out which language is the easiest to type.
- moonboots 14y agoI am! This is good idea. Keep an eye out for a blog post...
- shashashasha 14y agoReally fascinating to see my Javascript vs Python speed (the two I type the most in), JS around 45 and Python around 65. Super interested to see what the blog post shows!
- Flenser 14y agowhere should we keep an eye out?
- gosu 14y agoOr which language attracts the most expert typists.
- gersh 14y agoIt seems like <,:, and certain other characters don't work. Also, why do you skip over white-space? It is interesting. I wonder if I can learn to make fewer typos.
- Mon_Ouie 14y agoIt seems to me that any character that needs to be typed using alt gr can't be detected (using Firefox as my browser and BÉPO as my keyboard layout).
- kschults 14y agoI had issues with the '-' character (for example, in the first line of the Shell Git lesson), and I'm just using the standard US keyboard layout. EDIT: also '_', as sp332 commented. Firefox on OS X.
- waterhouse 14y agoMe too with '-', also with Firefox (Nightly) on OS X (10.6.8). However, it seems to work fine with Safari.
- CHsurfer 14y agoI also had problems with the fist line in the rails example: require 'active_support/core_ext/object/blank' I have a swiss german keyboard and I can't get past the first _'_ character. I'm using XP and Firefox. Otherwise a really neat idea.
- kevinpet 14y agoThe message google gives when trying to log in is really poor: "A third party service is requesting permission to access your Google Account.Please select an account that you would like to use." What do you mean "access"? Do you mean "authenticate as"? Do you mean "go screw with my email"? I seem to remember that I sometimes see specific access requested, but this one is vague. Possibly this is the result of requesting sign in with no permissions at all.
- moonboots 14y agoYou can try typing.io without signin in by clicking the demo link below the blue button.
- ibotty 14y agoi really like it, but one thing disturbed me. why do you skip the comments?
- moonboots 14y agoGood question! I wanted to focus on helping users practice typing code with its often cumbersome symbols. The majority of comments are prose, comfortably near the home row, which I didn't feel deserved as much attention. Plus some comments (like the ones in the Guava projects) are longer than the code.
- ibotty 14y agoyeah, but you do not practice comment characters :D. but valid point nevertheless.
- jesyspa 14y agoThe hash character and numbers don't work on Arch Linux, dvorak programmer layout.
- dkersten 14y agoIt doesn't appear to respect my keyboard layout - I'm using colemak (which works fine) but with UK symbols instead of US (which works everywhere else, including the HN comment box, but not in Typing.io where it wants me to type US symblos: eg " and @ are swapped).
- jfaucett 14y agoyea, german keyboard here and it doesn't recognize my "=" ( so couldn't get past line one. Looks really cool though, I hope it gets I18lized sometime soon :) KeyboardJS has a basic locales mapping: https://github.com/RobertWHurst/KeyboardJS https://github.com/RobertWHurst/KeyboardJS , Unfortunately it appears to only have en_US at the momment though
- zcid 14y agoI have the same issues using US International on OSX 10.6.
- pgsandstrom 14y agoSame here. I'm using swedish layout, and it could not recognize semicolon It wasn't even enough to press the corresponding button where semicolon is placed on English layout, I had to actually switch keyboard-layout and then press the correct button to get past it.
- ZoFreX 14y agoI can't type underscore on my "British" layout MBP keyboard. I wrote a typing tutor a while ago and this is a somewhat common pitfall, to manually handle characters by pulling key codes. Instead you should let the O/S tell you which character was typed (and also check key codes, for things like backspace) which then handles different layouts / locales etc. Edit: Ok, it works in Chrome - so it's not working for me in Firefox 14.0.1 on OS X Lion. Now that I can use it, I love it, but I have one request - I'd like to be able to go back and see my stats, please!
- JoshTriplett 14y agoVery impressive. Things I particularly liked: not making me type the indentation (because any sane editor will do that for me), allowing backspace, providing examples in numerous languages. Things that bugged me (and which only become an issue because the example otherwise proves sufficiently realistic that any remaining differences feel awkward, like an uncanny valley for typing code): showing faded-out code I'm not expected to type and skipping it, not allowing any navigation other than backspace (I frequently "correct" errors by ignoring them until I finish typing what I wanted to type and then going back and correcting them, which means the "collaterally typed before backspacing" characters are not wasted keystrokes), not allowing copy-paste (particularly important for lines like #include or import), not showing incorrect characters I've typed. Things you probably can't do anything about: typing a file in a more natural order than top-to-bottom (the Haskell exercise starts with a giant export list, and the Python exercise starts with an import list). Normally, you'll extend those as you go, rather than typing them all at once.
- moonboots 14y agoThanks for the feedback and criticism. I decided to keep error correct close to the error instead of allowing navigation to simplify navigation logic. Mimicking normal editing may have still felt stilted if I didn't support the mousing around or keyboard shortcuts programmers are used to with their editors. I debated whether to require typing the import/include boilerplate at the start of code. As you noted, this usually done piecemeal and often inserted by an ide. I decided to include it as it's part of the code and looked for code samples that didn't go overboard. For the Java and Scala examples, I collapsed imports into wildcards imports.
- sdh 14y agocool, but what's this -really- for? ;) recruiting coders? optimizing keyboard layouts? optimizing character usage for new language or framework development? advertising open source projects?
- moonboots 14y agoI found myself fat fingering too many keys, wanted to improve my typing, and one thing led to another...
- state 14y agoWith all of the emphasis on learning how to code I think this is really useful. The insight I really like is that simply learning to type in this weird way is a big part of being an efficient programmer. Maybe when codeacademy students get frustrated they could spend a few minutes doing this. Nice work!
- kanchax 14y agoReally nice. It felt like shadow-boxing the creation of a language. What I mean is that the ability to type what giants typed before me in such an easy and accessible way made it worthwhile. I'll do it again.
- moonboots 14y agoLove the metaphor and glad you enjoyed the experience
- deleted 14y ago[deleted]
- cgag 14y agoWe attempted to make something very similar at a hackathon. It's cool to see a more polished, complete version. Ours was more of an attempt to make a version of typeracer (http://play.typeracer.com/ http://play.typeracer.com/) using code samples from rosetta code. All we really got done though was handling typing the code (hilighting errors, letting you use tab for whitespace, etc), we didn't get around to recording stats. This is all bringing back horrible memories of our disastrous demo actually, but very nice otherwise.
- thoughtpalette 14y agoI learned I really need to type correctly.
- zapt02 14y agoDoesn't work at all with nordic (swedish) keyboard - it doesn't recognize the less than (<) sign.
- rapind 14y agoI've been using the opensource Keyzen to polish up those awkward coder keys. http://wwwtyro.github.com/keyzen/ http://wwwtyro.github.com/keyzen/ That being said, this also looks great. Love the idea.
- haukur 14y agoI couldn't type various characters, such as <>={ and probably others that I didn't get to try out. I have an Icelandic keyboard layout, if that matters. I should probably switch to the American layout anyway. Ubuntu 12.04, Chrome version 21.0.1180.79. This is still excellent. If these keys worked I would definitely use it.
- ojr 14y agoThis reminds me of Learn Code The Hard Way... The guy that runs it states the only way to learn is by typing the code in, bit by bit and not to go too long because you might burn yourself out...This is a nice free tool, Cheers moonboots!
- armenarmen 14y agoAWESOME
- irunbackwards 14y agoWhy can't I share my test results on social networks? This is like one of the only types of social activites / games I would want to share with my friends! Other than that, this is freaking rad! I found it funny that I'm normally a 120-150 WPM typist, but when typing special characters for regex, etc, I hit a patch of molasses.
- moonboots 14y agoCurrently there's an option to tweet your results after you finish any entire lesson. However, I will consider adding more sharing opportunities.
- pg_bot 14y agoThis is cool but it doesn't play well with Caps lock.
- tennis 14y agoI'll chime in as one of those, who made something similar. It's not very official, but should work in Firefox and Chrome for all keyboard layouts, though you have to bring your own text. http://type.trmnl.org/ http://type.trmnl.org/
- pacaro 14y agoThis definitely shows me how much of the coding style I use is in muscle memory, I'm continually trying to add spaces and newlines where they aren't! It would be interesting to be able to pick specific coding styles for C I'm spending too long on this, back to work...
- Swizec 14y agoI had this exact same problem! Kept trying to predictively type characters that weren't actually there in the source code.
- chrisbroadfoot 14y ago+1, except the opposite: my usual coding style is more terse than jQuery's style. Those guys have spaces everywhere
- awolf 14y agoThis is great. You should charge money. Regarding indentation: I think you made a reasonable choice in excluding it across the board. Definitely better than requiring it to be typed everywhere. That said, ideally you would require the user to make the keystrokes to un-indent whenever an IDE wouldn't automatically. Also: Something in Objective-C please. Those square brackets took me a lot of practice to get used to.
- progrock 14y agoTyping the Php sample code - mainly the namespace stuff was a horrible experience. Please find some code that isn't laden heavy with use statements. I'd expect my editor to autocomplete these...
- theGimp 14y agoI love it! One tiny piece of criticism though: when calculating the percentage of unproductive keystrokes, divide by the number of ALL keystrokes, not just the correct ones.
- DaviNunes 14y agoThis is awesome, but whats supposed to happen when I mis-type? It is not allowing me to keep typing or re-type again, it just freezes.
- sirmarksalot 14y agoFor the most part I like it, but there's a performance issue that actually affects usability. The first time you start a lesson, the editor is really snappy, but with each successive lesson, the scroll speed gets slightly slower, and a few lessons in, the entered text is just a blur, and you can't even see a cursor. This means that when you make a mistake, it's hard to tell how far you've backspaced, and I ended up bogged down in error correction loops. I don't have anything more specific to add than that it seems to get worse over time. Otherwise, awesome idea!
- moonboots 14y agoThanks for pointing this out. I will see if I'm holding on to references to finished lessons for too long.
- ismarc 14y agoI'm one of those folks who is on the top-end of crazy-stupid-fast typing, but hadn't ever seen a typing test that actually had typing code, so this is absolutely awesome for seeing the difference in speed between prose and code. However, the fading in and out cursor makes it extremely difficult to track where I am, particularly when going back to correct a mistake I made (I know I hit the wrong key, and depending on where in the typing I hit it, I'll need to see how far back to go). It's also exceedingly annoying when it blurs across multiple characters. I personally would prefer a side-by-side text entry, rather than typing on top of existing code, so it's easy to see progress and mistakes (even if you don't highlight mistakes in the text). EDIT: It looks like about 50 words per minute, maybe 55, is the max speed you can type and have the cursor actually be visible enough to be a guide of where you are in the text.
- RegEx 14y agoAre you one of those 170wpm-ers that ruin my win streak on TypeRacer?
- ismarc 14y agoOnly if I'm on my preferred keyboard, I top out at 120 to 130 on laptop/netbook keyboards.. For a stint in high school, I typed medical reports from dictation for a friend's mom, eventually having the cassette player on the fastest speed and keeping up without issue. I have no idea how people can be very productive as hunt and peck typists when writing code.
- RegEx 14y agoWould you also happen to be a fast reader? I can't seem to break the 120 barrier, and I'm wondering if the habit of mentally "saying" the words as I read them is a significant reason why I can't improve.
- dbarlett 14y agoThat's known as "subvocalization" [1]. Look at a basic speed reading book for tips on avoiding it. [1] https://en.wikibooks.org/wiki/Speed_Reading#Subvocalization https://en.wikibooks.org/wiki/Speed_Reading#Subvocalization
- repoman 14y agoThis is not fair. The captial letter requires you to use shift + letter key. It took me more time to do that..... can we fix that bug?
- CodeCube 14y agoThis is fantastically great! I'm a huge fan of typing games (typing of the dead, typeracer, etc.) and always lamented the fact that there were none that focused on programming syntax. Love it! edit: the more I use this, the more I find myself really hoping that you're storing all of these stats somewhere. I think that some aggregate analytics of typing accuracy across programming languages would be fascinating.
- RegEx 14y agoThis serves as a great reminder that a good portion of your speed comes from accuracy. I find if I slow myself down ~10% of what feels "fast", I'm much more accurate and my WPM increase significantly over typing faster but backspacing more.
- julianz 14y agoHaskell, Scala and Clojure but no C# or Objective C. Typing practice for hipster programmers or something?
- julianz 14y ago(Apart from that it is very cool though)
- nsmartt 14y agoYou raised a legitimate concern but threw in unnecessary derision. I wish I could downvote you.
- dinkumthinkum 14y agoThey have C, not a hipster language. :)
- samd 14y agoI don't understand programmer's obsession with typing efficiency. We're not typists. Typing is a tiny fraction of the time I spend programming. Most of the time I'm thinking, or talking to another developer about a problem. I could have the fastest typing skills and most efficient editor and not even be marginally more productive.
- moonboots 14y agoI agree that we're not typist in the sense that basketball players are not dribblers.
- samd 14y agoYou think typing skills are as essential to being a productive, and by productive I mean creating wealth and value, not lines of code, a productive developer as dribbling is to being a good basketball player?
- sukuriant 14y agoA programmer, by practicing his trade diligently, will in high likelihood grow in his typing proficiency and become faster, especially if he is spending much of his time developing. Also, writing specs and comments take a lot of text as well.
- mnicole 14y agoTime is money.
- gruseom 14y agoYes, but adding code creates negative value.
- zhoutong 14y agoIt may be true that we spend most of our time thinking or communicating, but doing anything creative is all about the flow. Slow typing interrupts thinking and it takes time for our brain to re-construct the "blueprint" after this interruption. For a programmer, typing is a more frequent activity than say, drinking coffee. I don't think anyone can work productively if we need to sip some coffee every 10 seconds. I need to improve my typing speed and reduce the interruption as much as possible.
- sukuriant 14y agoThis is a very neat idea; but, I do have one issue with it. When I'm programming, I don't start with the import statements (except for maybe some common ones that I have to deal with). I usually start with the most important part of the API and then spiral outward. I noticed this issue in the Java sample I tried. It began with the drudgery of import blah.blah.SomethingSpecific 10 times. I wasn't able to get into the meat of the code, and by the time I did, I was bored to tears. Imports usually come organically, if I'm having to deal with them at all (IDE's usually take care of them). I think a great place for this to go would be if the code bounced around a bit more. Perhaps, start with what seems like the most commonly used function and write that function header and whole function; then, start writing all of the different subordinate methods you called in this primary method, and so on until the whole class is created. The way it's written write now, in particular for Java, isn't a way that I code and I imagine it's not the way that many people code. Just my two cents. Otherwise, it's an interesting system so far.
- MarkJHagan 14y agoAwesome! This is incredibly cool. Bug: Caps Lock key is ignored. Feature Request: c#
- h4pless 14y agoI'm glad to see someone else mention the Caps Lock issue, I was starting to fear that I was the only one who used it or that it was just an issue on my end. I would like to see the Caps Locks functionality added to the Rails practice set too if possible. Otherwise I think this is a fantastic resource you've created, moonboots!
- musashibaka 14y agoIt would be an added bonus if there were an illustration of a hand highlighting which fingers should be used with which keys at the bottom. Similar to http://www.typingweb.com/ http://www.typingweb.com/. I get allot of practice typing my own source, but what I am currently working on is making sure I am using the right fingers for numbers, symbols, and punctuation.
- swah 14y agoKinda OT, but I noticed you're using Google Fonts, and they load instantaneously. When I use Google Fonts, they take a little bit, usually loading after the whole site is already displayed. Did you optimized anything regarding this?
- moonboots 14y agoHmm, I'm not doing anything special. I just put the web font link at the top of head. I'm also only including the default font weight. How many assets does your page have? Typing.io is relatively slim, so the font download can occur relatively sooner. If I'm not mistaken, the initial css downloads blocks the page load, but the actual ttf/woff/etc download occurs async and may be delayed if there is other stuff.
- swah 14y agoI'm just in development right now, and the assets haven't been packed yet (but I'm loading the font right on top). Thanks for answering, and congrats on your very well designed website!
- jacobsimeon 14y agoAbsolutely love the design and the idea! Just one small issue: I'm using a MBP but, for reasons that that I won't take the time to explain, I spend 90% of my time in bootcamp (windows 7). I can't seem to get past any single quote(') characters. http://i47.tinypic.com/ilbm1x.png http://i47.tinypic.com/ilbm1x.png
- evilpenguin_ 14y agoAwesome!!!!
- ChronoGawd 14y agoWhere do people get these .io names? Are they really $50+ a year?
- zer 14y agohttp://nic.io http://nic.io And yes, those domains are pretty expensive.
- DannoHung 14y agoThings that bother me in the extreme: Not showing letters as they are typed in the advanced lessons. That immediate feedback is how I know that I'm typing a word correctly and how I know if I make an error that I have corrected it. Penalization for adding additional whitespace between identifiers in some situations: "[one,two,three]", for example, I personally like adding a space after the comma and do it automatically.
- moonboots 14y agoAre the typing mechanics different in latter/advanced lessons? If so, it's something I need look into. Or is this a different problem? I preserved the whitespace the project authors used. I'm a little picky too regarding these details, but I want users to see code in its original form. Thanks for the feedback
- billsix 14y agoA "Kinesis Advantage " keyboard and "apt-get install dvorak7min" is all a programmer needs.
- billsix 14y agoI don't want to sign in with Google for a typing tutor.
- gruseom 14y agoThis is really well done. Surprisingly well done. Way better done than average. I'll tell you how I'd like to use it. This may seem odd, but I'd like to be able to upload code that I'm interested in learning, and then type over it just like in these lessons - but not to speed up my typing, but rather for learning. Writing is a unique channel for learning new things. (Reading is too, of course, but everyone knows that.) Even if you're merely reproducing keystroke-for-keystroke what someone else wrote, following in someone's footsteps helps the brain absorb new patterns and is particularly good for something one's a beginner at. If what you're copying is the work of a master, then you're absorbing really good patterns. I would totally use a tool like this for that purpose. It's a way of learning with one's hands. But pure typing efficiency? That's hardly a way to become a better programmer, only a more prolific one, and more code is not what we need in this business. So basically I wish I could subvert the purpose of your tool and send it off in a new direction. :)
- moonboots 14y agoThanks. I will give your idea some thought. A related offshoot I've considered is allowing companies to upload private code for employee onboarding. New programmers to the company can type through common code, get a feel for the libraries, coding standards, etc.
- tripzilch 14y agoMan, that's a brilliant idea. I hope companies will use it! Hey a few pieces of constructive criticism, I only did the Python lesson so I may have a skewed view though: - your tool somehow collapses double newlines? in the example, after the import statements came a class definition, which are (as suggested in PEP8) separated by a blank line so I pressed Enter twice. But your program expected me to already type the 'c' of 'class' :( - it skips comments. and not only comments, but also docstrings! docstrings are not just "comments that happen to be documentation" but actually proper python code and part of the program, they are not ignored like comments, but can be introspected. When I'm programming Python, I'm also typing docstrings. - the example I got had me starting out by importing a whole load of modules that were particular to that project. for Python practice it would make more sense to practice typing imports of the standard library, or popular frameworks. - You should try to figure out some way to incorporate the particular keyboard shortcuts, autocompletion and other typical code-editor features, because learning to use those properly gives enormous advances in efficiency. Does your program at least do auto-indenting? For other features it is more difficult since they are so different across editors.
- rwl4 14y agoThis is great! I'd love to see some SQL examples too!
- tuananh 14y agoi don't really care how fast i type as programmer as i found typing doesn't account much of time in total time of shipping a product. and second, why the hell we got code completion for!?
- mark_integerdsv 14y agoI don't understand why I need to sign in to try this out. Glad you're getting rave reviews in this thread but I'm passing on the basis that I believ this sign in is unnecessary and creates yet more data exhaust.
- deleted 14y ago[deleted]
- sahat 14y agoThis is the best project I've encountered at Hacker News so far. Thank you.
- f4stjack 14y agoDoes not support other keyboard layouts than US I think. Good idea though.
- sspross 14y agoyes, my demo stops at (
- the_cat_kittles 14y agoThis made me aware that i typed ":" with my RING FINGER. wow. What have I been doing...
- JoeAcchino 14y agoVery nice. One minor thing: practice sessions are called "lessons" but nothing is actually taught.
- stuntgoat 14y agoThis is very great! I was considering doing something like this in the terminal, possibly using an adaptation of gtypist. However, I the more I thought about it, I realized that I would be better off writing a module for my everyday text editor, since I would have access to completion, copy/paste, indention, macros, etc. I don't want to 'talk down' all the work you did with this. I'm really glad you made it and I am going to use it, for sure. Keep up the great work!
- sebastianhoitz 14y agoThis doesn't seem to work with keyboard layouts that are different than US keyboards. My german keyboard didn't work :(
- alexanderblom 14y agoSame here in Sweden. ; is mapped to ö here :(
- alexfoobar 14y agoand = is at + (swedish)
- godDLL 14y agoHm, worked for me with a Colemak keyboard.
- ajambrovic 14y agoNeither did my Croatian
- DutchCitizen 14y agoI really liked this idea, reminded me of this talk I saw a while ago: http://joshuafoer.com/conquering-the-ok-plateau/ http://joshuafoer.com/conquering-the-ok-plateau/
- cormacrelf 14y agoSafari 6 on OS X 10.8, most (not all) of the time, I have to type ':' twice to make it progress. Catches me every time, not pleasant.
- Xion 14y agoIt's absolutely brilliant. And besides improving your code-typing speed, it's also a nice way to get a hang of all different languages you might want to delve into. Alternatively, you can also polish your muscle memory on all the thousands of function, classes and method names you can find in your typical language/framework of choice.
- Nordvind 14y agoPerfect tool for code monkeys :) You even can't put more line breaks than it is - just type, character by character. If it checked the code in general (e.g. package names typed correctly - but not line breaks and stuff) - I'd totally use it. Not now, though.
- tfb 14y agoMan I think I might be kind of a slow typer. I was only getting like 45 wpm in the javascript test. I think it's because of all the abnormal characters, although I do code in js daily. -_- But keeping my fingers on the home keys to type has always felt really awkward to me. I tend to position my hands differently depending on the word I'm about to type - in a way that let's me "roll" my fingers along in just the right sequence so it tends to be a series of short bursts where it would seem as if I'm actually just smashing a bunch of keys at once over and over again. Edit: I just tried type racer and was getting 80+ wpm. /me wonders how people get 140+. :O
- utopkara 14y agoNice app, I would like to point out one thing, hope you find it useful enough to address. I am pretty sure many people do this too: whenever I type braces/brackets/parentheses/[/%$..] I type both open and close, then continue filling in the statement inside the completed pair of open/close. It is a very useful practice especially for languages with a love of open/close symbol pairs. When you try this in your app, the close gets marked as an error, and I couldn't find an easy way out.
- almost 14y agoLooks awesome! For some reason I can't type the ( symbol. I do have my ( and [ keys swapped but I tried both and neither has the desired effect.
- epsylon 14y agoThe quotes don't work on US-international layout.
- psykotic 14y agoGreat idea. But as a fast typist of both prose and code I found the interface nearly unusable. Please make it behave more like a normal edit box. I never had any idea of the location of my cursor. The lack of alt-backspace made it unbearably slow to correct errors. Auto-skipping whitespace makes it tougher to rely on my habits where the key strokes for indentation and line breaks are a natural part of the flow. And if you're not going to make me type the comments, just delete them from the text entirely so I can more easily scan ahead. Here's a straight-up bug: I had to turn off a Chrome extension (Type Ahead Find) that I use for incremental search. It was intercepting key strokes that were supposed to go to typing.io. That hasn't happened with Ace and other canvas-based text editors. My friend also mentioned that it didn't work with his Danish keyboard. Beyond these annoyances with the implementation, typing the C code from Redis reinforced how difficult (and frankly infuriating) it is to spontaneously conform to an unfamiliar coding convention. E.g. no spaces in "while(1)" throws me off completely because my brain is thinking "while 1" and my fingers translate that into my customary "while (1)". If you want this web app to be relevant to real-world programming, you need to let people upload their own code samples. For even punctuation heavy, syntactically gnarly prose, I can average 140+ WPM without much effort. Typing.io put me at around 100 WPM for the first few sections of the C Redis lesson. I'd say I'm good for at least another 15-20 WPM if the environment wasn't so utterly alien.
- Tichy 14y agoWouldn't accept an = on a German Apple keyboard. Is it only typing an existing piece of source code? Wouldn't simply coding stuff then be better practice?
- deleted 14y ago[deleted]
- felideon 14y agoAny plans on adding Common Lisp? Do you just need someone to point you to some decent code?
- deleted 14y ago[deleted]
- scott_karana 14y agoMaybe it's not a bug, but could you make the Details buttons collapse when you click away from them, or at the very least when you click on other details buttons? Detracts from checking out all your sourced projects :)
- LukeShu 14y agoIt's collapsing newlines. In the Rails demo I hit enter twice to skip a line, but it only took one to get me down two lines, and the second was an 'error'. Edit: It appears that this is part of the "auto-indent" mechanism (which is intuitive for indentation). How about accepting multiple newlines, or whitespace at the beginning of a line, but not requiring it?