8 ms·
Typing.io: Typing Practice for Programmers
- keesj 13y agoCouldn't stop myself from trying to use tab-completion.
- kbouw 13y ago^this
- arthulia 13y agoI find that covering up the next letter with the arrow makes this very difficult.
- sachleen 13y agoI was confused by it as well. It expects you to backspace and fix your mistake before continuing.
- lucb1e 13y agoTyped a few lines of Javascript, then hit ctrl+d to insert an EOF character (this usually closes my node.js shell). Now I've got this bookmark :/
- jreimers 13y agoWhat's the motivation behind doing this exactly? Why not actually write some code to practice...writing code.
- clebio 13y agoI've wondered for a while what my WPM is when writing code. It's slower than plain english text, partly because there's so many more characters in code than in plain english. So something like this lets me see the difference between regular typing tests (e.g. typeracer.com) and coding -- and presumably, which languages are either more familiar to me, or more syntactically sluggish.
- admnor 13y ago+1
- teleclimber 13y agoTheir pricing page shows that it has what appears to be a nice set of features to actually help you get better (note to site owner: might be an idea to put this on the main page). Despite that I can't imagine myself typing code just for the sake of typing code. Seems to me this would make more sense as a plugin for an IDE. Watch my every keystroke as I do real work and show where I am constantly having to correct myself, and offer ways to prevent that.
- dmnd 13y agoI'd definitely pay for a "typing analytics" addon to my OS, or maybe my editor, though I think that is needlessly restricting things. It depends if there are mistakes and advice that are specific to writing code versus just general typing. Either way, it could watch for bad habits and common mistakes, show aggregating stats, etc.
- farnsworth 13y agoThis is pretty cool. One thing that bugs me is that the code isn't formatted the way I write. For example, my muscle memory does not involve typing a space inside parens - "function ( selector )". I miss those every time.
- clutchski 13y agoTouch typing is like cursive writing. I want to be able to do it, but I probably never will, and I think that's ok.
- padolsey 13y agoNice UI! For programmers trying to improve their general typing speed I reckon it could help, but for me it creates an almost uncanny experience. In the JS test I found it incredibly difficult to type out `/^(?:parents|prev(?:Until|All))/`, because my mind interprets it somewhat like its AST -- i.e. I see a delimited regular expression with an uncaptured group nested within another uncaptured group. I focus on the operators then on the contents. But by the time I've done this I end up typing it out slower than if I was just transcribing character by character. And so I started to wonder if this is something it's "okay" to be bad at...? I mean, if I focused on it character by character, word by word, then I may gain speed, but I would be totally ignoring the meaning of the characters -- and I would also stop being a programmer. Maybe my mind just needs to become more attuned to reading code... maybe this experience reveals that I do not read code often enough. Intriguing.
- gknoy 13y agoI wonder what things would look like if they were to let you type, free-form, and not consider it complete until your code matched that of the sample. That way, you could use copy and paste, or bang things out and then fix them later rather than in-line. (e.g., let me type keywords and then later realize I forgot a 'self' in a Python method.) Probably less about typing, then, though.
- CoryG89 13y agoI was thinking all of these things too as I was trying it. I think there is something fundamentally wrong about this. I don't think the words per minute for a programmer's typing is important. As you say, to get the higher score, you must simply type as you read character by character, but this is not what programmers do. I don't see much value in this because of that. If our jobs were to transcribe code that someone had written out by hand then this might be something worth its disk space. If we find code that we want to copy exactly without trying to understand its meaning, we have a clipboard for that.
- ultimatedelman 13y agoi also had this thought, but i realized the value in this is not necessarily understanding the code that you're typing but rather getting better at typing characters in context and in certain sequences. for instance, i realized that i am terrible at typing } and ], but i assume that's because i have an IDE that does autocomplete for those chars. other typing programs i've used are just transcribing sentences, but in programming there are so many other characters we use in the middle of typing things.
- shakeel_mohamed 13y agoFWIW this has been posted a few times already, nonetheless it's a great app
- Taurenking 13y agoNice web app! One thing though, notify the user when he has Caps Lock on ;)
- eric_h 13y agoWhat programmer has a caps lock key? It's mapped to Ctrl on my machine.
- aquassaut 13y agoThose who write SQL code, I would imagine
- evincarofautumn 13y agoAny time I’m working in a C-like language and need to type something in SHOUTY_CASE, usually macros/enumerations/constants.
- hcarvalhoalves 13y agoThe problem is that nobody writes code like that (char by char, like prose). You often jump back and forth between statements and parens, and code from inside out.
- pointernil 13y ago... and thus some developer starts pondering an alternative editor for source code... usually culminating in a design of some sort of an "node" editor ;) Seriously though, were there any useful ideas developed regarding code input besides code macros with variables? Any hints?
- spc476 13y agoI write code like that. I tend to have a good idea of what the code should be doing, and write it out, char by char, like prose. I also avoid IDEs and prefer text editors. In the twenty-five years of programming, I've not found an IDE I like, and I suspect I'm a langauge-maven than a tool-maven (http://osteele.com/posts/2004/11/ides http://osteele.com/posts/2004/11/ides) (as long as I can type, I can try out a new language; I don't have to wait for a specific IDE to come along first). Edit: add a link about language-mavens vs. tool-mavens.
- tunnuz 13y agoProbably whitespaces should be ignored (except where they are mandatory, e.g., Python).
- pioul 13y agoI like how it can help dive into interesting open source code, as well as the look and feel of the app, but two things are holding me back: - Like @padolsey, I do need some time to understand what I'm typing; I'm not sure practicing typing and learning from someone else's code are compatible - More than code formatting, which has already been talked about, programming environments also have a direct impact on what characters need to be typed So even though that tool stems from a blending of two great ideas (increasing code output, and learning from the best), I'm still pondering whether these two would be best left apart: - Reading (and contributing to) someone else's code to learn from it - Optimizing your coding environment to increase your output: great IDE/editor, clever shortcuts and auto-completion, custom snippets…
- jbcurtin2 13y agoThis tool is perfect. - I'll recommend to you that you're marketing it all wrong. - I'd make this into a tech-interview/learn a new language site. Before I crack any book for any language, I download gists of the code and start typing it out. Imagine, python/c the hard way in this? What is a namespace? What is an import? Inline explanations of what you're doing would go a long way. Dare I say it, this could be the first Learning-Development-Enviornment I like. You're doing yourself more harm by only letting people use those 16 languages.
- parm289 13y agoSpot on. This would be great as a way to learn new frameworks/libraries as well.
- esmevane 13y agoI completely agree. Additionally, in the process of mimicking code, the only thing I could do was think about what I was writing - and in some cases I discovered that I would have done it differently than some of the libraries I use every day.
- dapz 13y agoDoes this have comparative summary statistics for these exercises? I did 45 WPM on the first Scala lesson; is this average, terrible, or good?
- matwood 13y agoGood question. I did 44 WPM on objc and 51 WPM on java.
- peeters 13y agoAll this does is make me realize how much I take my IDE for granted. In no example that I tried did I even get past the first line before I missed using IDE autocomplete or shortcuts. It got under my skin that I had to type out each character. Take the Scala example. I would NEVER type "@SerialVersionUID" with correct casing. I'd maybe type "@Ser" and then auto complete. Or "@SV" and then auto complete. I can't recall the last time I typed an entire type name. Or finished braces using Enter + "}" instead of CTRL-SHIFT-Enter. The UI is well made though.
- Edmond 13y agoI have to somewhat disagree, I think autocomplete is one of those IDE features that is no doubt quite useful but I think its contribution to developer productivity is greatly exaggerated... frameworks that are well designed for instance are far more important contributors to developer productivity... so my question to you is, what if a tool has a framework that allows you to get a lot done with significantly less coding but lacks autocomplete, would you not consider it? Full disclosure, I am the founder of a browser based IDE software company so my take may be biased, but I have also written enough code to kill a horse :) We currently don't have code completion though it is on the product road map. Our middle-ware however almost completely eliminates writing code for doing C.R.U.D operations, sending email, uploading files, doing configurations and using http restful services... I think such advantages greatly outweigh the lack of code completion. I do concede though that maybe in your specific case, code completion is a major productivity booster.
- ffk 13y agoExcept it isn't just auto complete he is describing. It is also code generation. The example he gave would come with an auto import. Other examples would include class and method generation, exception handling, parenthesis matching and test stubs.
- Edmond 13y agoI don't disagree at all that all the features you describe are nice to have. They do indeed make the programming experience more pleasant and add some utility. What I am arguing against is elevating those features over more effective productivity boosting solutions that may not have quite the same dazzle. Intellisense in general is kind of expected now in any IDE; it is like the buttons in your car to slide down your windows (old enough to remember the handles :) ), they are nice and expected but you wouldn't base your buying decision purely on that.
- benzguo 13y agoTyping practice seems like a waste of time unless you're actually bad at typing. Learn vim, use autocompletion, and write real code.
- petercooper 13y agoLearning to type quickly is a valuable skill. But with programming, is typing speed a common bottleneck? It seems akin to learning how to turn a steering wheel more quickly or how to hammer faster.
- ics 13y agoI think it really depends on your process. If you're efficiently pragmatic, then maybe your work environment includes an IDE with tab-completion, project skeletons, lots of snippets, and plenty of experience tying together existing frameworks and other tech to achieve your goal. On the other hand, some people actually want to do that sort of dirty work (even in verbose environments) because they get an overview of every single thing that's going into their program as they build it. They'll be a little slower than the first person but potentially have a much better grip on the underlying architecture of what they're working on which is incredibly valuable as you move forward and make decisions. So for these people, faster rote typing could be beneficial.
- ics 13y agoToo late to edit, but if anyone reads this comment later please also see this post: https://news.ycombinator.com/item?id=6908248 https://news.ycombinator.com/item?id=6908248 There's a neat part of the article that might better demonstrate what I'm talking about. --- > Because I was young, super-anal, and wasn't on SSRIs back then, I once asked Carmack why he didn't use libraries for common functions that he could share between engine revisions. Carmack's a super-nice guy, but on this one instance he used the "Well, I think my methods work pretty well..." defense. I never suggested coding style changes again. > But, really, for him it made no sense to share code, because, like a bee, it was just as fast to write new code. The template was in his head, he types really REALLY fast—why bother importing something? > Don't take this to mean his code was spaghetti—it was actually some of the easiest-to-understand code I've ever worked with. It has an almost indescribable quality of "obviousness." Like, you know when a really good teacher explains something, it seems obvious? That's what his code was like. I mean, OF COURSE there's a loop where you service the pending events and call a refresh on the UI layer.
- 13y ago
- maxehmookau 13y agoNot sure how much use the Objective-C one is. I spent most of my time in XCode pressing tab, not actually typing code.
- notpg 13y agoI don't think typing is what slows me down while programming.
- creed0r 13y agoThis is the most stupidest thing I could've ever imagined.
- deeteecee 13y agoi don't wanna go that far and say that but... I saw this AND belt.io. and im just not seeing any reason for either... like i've tried thinking for a while and have thought of NO USEFULNESS for either tools.
- neil_s 13y agoWhy would programmers need a separate tool for programming practice? Isn't the act of programming itself the best form of typing practice? I don't see a market fit for this for the stated purpose. Also, the UI when you make a mistake is confusing, I didn't realise I had to backspace and correct it. While that seems obvious in hindsight, I actually opened it in a different browser to make sure I wasn't just hitting some bug before reading the comments here and realising.
- thatthatis 13y agoThis is an example of a product I would buy, but would never buy as subscription software. $60/year to infinity is about $600 at a 10% discount rate. Sorry, but it's probably worth about $25 to me, not $600.
- ps4fanboy 13y agoI was also disappointed it was subscription.
- eonil 13y agoImplementation's good, but the concept and idea is completely useless at least for Objective-C/Cocoa. All the symbol names of the Cocoa are strictly designed to be used with auto-completing IDE support, not bare editor. That's why they're fine to go such long names. The IDE is a required part for development just like Smalltalk. And a lot of other language/libraries/frameworks are also silently presume auto-completion support. Even on C/C++. I highly doubt usefulness of this even on other languages. Maybe it would be more important to be familiar with specific auto-completion IDE behavior rather than training yourself to type faster.
- zarriak 13y agoThe calculation for unproductive keystrokes should have typed keystrokes on the bottom.
- brianzelip 13y agonice site; I like that they've implemented a css based laptop to show an example in versus using an image. see http://typing.io http://typing.io
- Daishiman 13y agoI like it. It would be nice to see a comparison to where you stack up related to other people as far as speed and productivity.
- jdalt 13y agoI love this site. I went through every lesson like 6 months ago because, although I could type prose very quickly, I had not mastered the programmer typing that it takes to quickly experiment on the unix shell or hit opening braces and parens with consistency. Although typing certainly isn't a big development bottleneck, being able to type fast lowers your overall cognitive load and lets you stay in the problem domain you're working on. It's not like loud noises are a programming bottleneck either -- but it's certainly nice to eliminate a nuisance.
- djent 13y agoSomething that bothered me about this is the fact that I prefer to type brackets - (), [], {}, <> - at the same time, and then move my cursor inside them to type. It makes sure I don't forget a closing bracket, and it's faster than searching for the bracket + shift key twice (once at the open bracket and again at the closing bracket).
- austinl 13y agoI would recommend Type Fu as a similar alternative that's freemium and offers more features atm. You're not typing code, but it can generate some interesting data, and scales the difficulty level as you improve. It also supports a bunch of different keyboard sets, so if you've always wanted to try learning Dvorak it's a solid choice. http://type-fu.com/ http://type-fu.com/
- krick 13y agoCool idea and everything, although all that "IDE FTW" comments are partly true. But nevertheless it's cool to read code from different projects while practising at typing. But, pricing, really? I guess I'll write such an app for myself. Not that $5/month is a lot, but the idea of paying for that is just ridiculous to me.
- ddoolin 13y agoThis is really cool. I love the UI and the idea and the execution. I actually learned a lot of Objective-C without Xcode and no autocomplete so it was interesting to see how I've learned to work with Xcode/AC since then, ha.
- krick 13y agoAlso, it's really annoying how every new service out there thinks that everybody has google account. You want me to pay for your service and don't even let me register there? Well, I don't have google account. And I never will.
- dsego 13y agoCroatian keyboards really suck for coding (http://allixsenos.deviantart.com/art/Croatian-keyboard-layout-2-265178713 http://allixsenos.deviantart.com/art/Croatian-keyboard-layou...).
- iam 13y agoI found this really fun, I tried half the languages there. But why do the lower level languages like C/C++ have actual logic in them (e.g. if/else/||/&& ) while the higher level languages just have module/class definitions? It's not exactly an apple-to-oranges comparison. Like I just got 100+ wpm in Ruby but what's the point of feeling good about that when it's just typing out a list of symbols over and over again?