Typing Speed Test, but for Developers

(haxxorwpm.0s.is)

76 points | by hronecviktor 4 hours ago

19 comments

  • programjames 1 hour ago
    Where is the "tab" autocomplete?
  • Bender 1 hour ago
    "Movie Hacker" should perhaps include nmap and sshnuke [1] despite being a real command and a real skiddie exploit [2]. When that that first played in the movies (The Matrix) people in the bay area theaters were standing up and cheering. People not familiar with the tools were very confused as to what was going on.

    [1] - https://nmap.org/movies/

    [2] - https://blog.doyensec.com/2025/03/04/exploitable-sshd.html

    • jedberg 40 minutes ago
      And they even bumped the version number so it would be “in the future”. I remember watching it in the Bay Area and having the same reaction.
    • hronecviktor 1 hour ago
      Ahh, core memories
    • snozolli 1 hour ago
      Unrelated, but I saw a movie in the early 2000s while visiting San Francisco. One of the trailers was for the Ben Affleck movie Paycheck (2003). When the trailer voice dramatically announced, "Michael Jennings is the best reverse-engineer in the business," the entire audience erupted in laughter. I felt like I had found my people. I moved to SF shortly after.

      https://m.youtube.com/watch?v=rkE5I9nFqrI

  • raincole 2 hours ago
    Only slightly related, but what increased my code typing speed the most is this (AutoHotKey 2):

    ; CapsLock + J/K -> ( )

    CapsLock & j::SendText "("

    CapsLock & k::SendText ")"

    ; CapsLock + U/I -> [ ]

    CapsLock & u::SendText "["

    CapsLock & i::SendText "]"

    ; CapsLock + L/: -> { }

    CapsLock & l::SendText "{"

    ; SC027 = physical ;/: key on a US keyboard

    CapsLock & SC027::SendText "}"

    ; CapsLock + O/P/M/E -> _ + - =

    CapsLock & o::SendText "_"

    CapsLock & p::SendText "+"

    CapsLock & m::SendText "-"

    CapsLock & e::SendText "="

    • SoftTalker 1 hour ago
      I've tried this sort of thing but then your muscle memory works against you when you have to use a "normal" keyboard.

      Even remapping Cap Lock to Control, which I do, trips me up for a few minutes when I need to work on any other computer that has not been set up that way.

      • hronecviktor 1 hour ago
        Dont even have to remap anything to cause issues. Case in point: we wanted to try mob programming with 2 colleagues.

        I was using a 106 with US layout

        Colleague #1 was using 60% with russian layout

        Colleague #2 was on catalan layout

        90% of the time we were just hunting for special chars

        • mananaysiempre 1 hour ago
          For what it’s worth, a normal (100%) Russian PC keyboard set to a Latin layout turns into a bog-standard QWERTY, with the sole exception of an ISO-style Return (like a British keyboard) but a wide left Shift and two equivalent Alt keys (like a US one). The variation among various keyboards advertised as 60% is wide enough that the Russian part really shouldn’t matter as long as you can ignore the additional labels.
  • eqvinox 3 hours ago
    This seems to be largely devops stuff, not developer. (Or plain ops.)
    • jascha_eng 2 hours ago
      It used to be that DevOps was the movement of merging Ops leftwards so that Devs own the Operation of their software.
      • JohnMakin 56 minutes ago
        and devs almost universally end up not wanting to do that
        • Yiin 1 minute ago
          in the age of agents I found myself loving frontend again, loving devops again, loving email servers again, you name it, I suspect in most cases those roles will merge into one (excluding the ones needing extreme competency and trust).
  • lucb1e 2 hours ago
    There's a highscore system but considering it's a matter of time before that gets cheated, the first run where I didn't struggle with backspacing into a previous command (which is blocked):

    60s | Basics category | 79 wpm | 100% acc | 38 cmds | QWERTY | Logitech K200 (membrane keyboard from like 2007)

    Fun idea, I like the categories and the option to specify keyboard+layout in the highscore, and the page layout/design is very clear. Thanks for making!

  • arikrahman 2 hours ago
    I made a typing trainer for developers for a vim inspired corne keyboard layout (enthium) called enthalpy. It's made for matrix keyboards. You can find it at https://enthalpy.arik.zip/
  • abhaynayar 3 hours ago
    Something I realized with the new LLM tools is that learning how to type plain English words fast i.e. without capitalization or punctuation, and even typos is not that big of a problem anymore. And so it follows that code-specific typing is even less important if you can just type in normal words fast and then just check it's output. Although yes for stuff this small i.e. super small terminal commands I feel there does still exist an advantage.

    Also, another observation I've had is sometimes I just don't feel like speaking, so voice as input to LLMs is really not an ALL time replacement in my personal opinion. In fact, I find myself preferring to type fast and with typos in lowercase much more than anything else.

    • jghn 1 hour ago
      I'm not sure. And to be honest, typing speed was never that big a deal. By the time I got out of college a few decades ago I was in the 110-120wpm range.

      However as I progressed in my career as a developer what I found is that both my "working" WPM and then my "normal" WPM dropped over time. Once I moved out of truly junior, pure code grinding roles, I spent more and more time thinking, talking to people, etc than I did typing. At that point, what does it matter if I'm at 20wpm or 200?

      Likewise, in day to day life, it's not like I'm sitting there typing a novel. I'm mostly clicking buttons, writing short messages, tweet,s and the like. My day to day typing speed has also decreased. I'm sure it's still up around 80-100wpm, but it's rare that I'm sitting there typing long enough to matter.

      Same with LLM. Who cares if it takes me 10 seconds or 20 seconds to type in a prompt, when it's going to sit there and spin for a minute anyways?

    • jwpapi 2 hours ago
      I’m seeing a lot of people that having that train of thought. I think that is a fallacy. I can understand that some LLM execution can be faster, but definitely not all. Agents need to explore, grep and get back up to speed to get context, if you have a good mental model, you can do changes or adaptions in <7s with a bunch of shortcuts or commands.

      One could argue to find the <7s commands in your head takes you more mental power than to just wish it in to the LLM and whilst its running you can wish something else in another session, but I’m thinking that the cost of context is more important than the actual execution time for your task. Every extra task gets more expensive. It’s not a ressource where you have a limit, right from the 2nd task the cognitive load increases.

      Therefore I’m thinking one task that can be done in one context window without switching is worth a load in these days of constant distraction.

      • ashu1461 2 hours ago
        I get your point but I do prefer delegating almost all of the things to the LLM.

        A lot of times human commands are prone to errors / edge cases as well. Example a simple git pull command usually would take < 7 seconds, but then LLM can take care of resolving merge conflicts etc as well.

        A simple git push is usually instant but that comes with an overload of some un intended changes being pushed, which LLMs take care of removing themselves.

        When LLM is doing its thing, we can spend the same time in writing the next prompt.

        • KronisLV 48 minutes ago
          > A simple git push is usually instant but that comes with an overload of some un intended changes being pushed, which LLMs take care of removing themselves.

          In my experience it can often be the opposite - AI would commit a lot of slop comments and sometimes unnecessary stuff, whereas if you can review things in GitKraken or another program with diffs, things are closer to what you want. Writing commit messages and PR descriptions (maybe change summaries, the intro less so) is easily outsourced to the LLMs though.

  • amarant 1 hour ago
    I like how our very own Bobby Tables is ranking near the top in several categories!

    Go Bobby!

  • BrenBarn 3 hours ago
    Realistically, to measure a lot of this stuff, you need to model tab completion.
    • umvi 1 hour ago
      When I was typing "ssh-copy-id" I typed "ssh-c" and then hit tab... I was disappointed
    • jugg1es 3 hours ago
      especially for directories
  • stfnon 3 hours ago
    Your connection is not private Attackers might be trying to steal your information from haxxorwpm.0s.is (for example, passwords, messages, or credit cards). Learn more about this warning net::ERR_CERT_AUTHORITY_INVALID

    this is what happens when you dont have always on ssh box for your agents

    • hronecviktor 3 hours ago
      It's on a VM running behind caddy + bog-standard Let's Encrypt DV cert. It apparently works for nearly everyone, but I did have one user in the past that reported that *.0s.is domain doesnt work in his browser. Could not get enough info about what his setup was, if you could share what OS/Browser + versions you got that would be much appreciated
      • mashlol 1 hour ago
        For me, Firefox on desktop (Windows) and mobile (Android) both give the SSL warning. Although mine appears a bit different than the parent comment:

            An error occurred during a connection to haxxorwpm.0s.is. SSL received a record that exceeded the maximum permissible length.
        
            Error code: SSL_ERROR_RX_RECORD_TOO_LONG
        • lucb1e 21 minutes ago
          No issues here with Firefox on Linux or Android 11 (installed from F-Droid in case that matters). Strange. I wonder if it's a network difference rather than the workstation setup
  • malux85 31 minutes ago
    Typing speed only really matters for juniors and going into intermediate developers, after that point thinking methodology - abstraction design, data structures, system design, complexity isolation, matter way, WAY more.

    50% because by the time you get to this your typing speed has crossed a threshold of no longer being the bottleneck and 50% because you are experienced enough not to make all the silly little mistakes and your unit of work is larger and more complex

  • wazoox 2 hours ago
    There is no autocompletion, that's not realist. I never type "apt-get install nginx" I type "apt-g<tab> ins<tab> ngi<tab>"
  • rlv-dan 2 hours ago
    The speed that I type is not related to the quality of my code. I think then type.
    • hronecviktor 2 hours ago
      I can code real fast. It doesn't compile, but it's fast :)
    • yuuu 2 hours ago
      nobody asked
  • faitswulff 1 hour ago
    I wish this had some code or pseudo-code tests!
    • hronecviktor 9 minutes ago
      I added python, bash (script style) and Postgres.

      Also for the masochists among us - obfuscated perl, IOCCC style C and Malbolge ;)

  • sudo_cowsay 1 hour ago
    Bitdefender: "Phishing page blocked for your protection"
  • dmos62 1 hour ago
    Expected this to be speed typing of AI prompts.
  • arjunvrofficial 4 hours ago
    Cool initiative, UI can be improved.
    • hronecviktor 3 hours ago
      Thanks, if you have any specific ideas about the UI, I would love to hear them
      • lucb1e 3 hours ago
        Switching categories does not restore scroll position to top, so you start to type what shows as being on top and the whole list changes to "you've got the first command wrong and here is a completely new list to type". I didn't understand what had happened at first

        The scroll position of the whole page (including the field where I'm typing) changes when you press enter with the first three commands, until until the current command is centered within the commands list

        WPM is a strange measure when some words are -h and others are "user@example.com" including the quotes. Not like language doesn't have long and short words but especially with needing shift etc., this feels kinda weird and like it would depend a lot on which words you get randomly assigned. You can pick the longer duration to even that out, but you could also just switch to CPM and get more reliable results faster -- or so I'd expect

        The highscores don't show the run's duration, aka the error margin

        Theoretically this would have to use readline or whatever input mode the person is used to. Ctrl+P would put the cursor at the end of the previous command, Ctrl+W then erases the last word (until the previous whitespace), Alt+Backspace is similar but erases until the previous punctuation, etc. Not sure if that's all possible on web. For some reason it also didn't bother me though, although I'm a very heavy user of these and e.g. web KVMs and chat input fields (when writing a command to a nerd friend) keep tripping me up. I guess it just feels like a typing test and not "real". But it makes me wonder what "real" would do for typing speed

        Going back to the previous command (with (ctrl+)backspace I think mainly) is something I kept trying to do though, also tripping up 3 commands in a row (notice typo -> autopilot-mode fixing it: backspace to undo the enter, type correct character, enter again -> now you have 2 lines wrong). Maybe backspace (or also arrow keys?) being able to go back to a previous command could be a setting so people are free to choose whatever is faster for them

        The input field defocuses at the end, so then the default browser commands start triggering as I'm typing the remainder of the command (mostly that's just searching on the page and the scroll jumps to some random spot, but can also be leaving the page with backspace). Maybe the fix can be as simple as restoring the box' previous value onkeyup and coloring it as though it's disabled

        Highscores are probably more fun if you see (or can toggle between) the latest submissions as well as the top month/year/all-time. More of a long-term thing, for now I lead one of the categories so I know the submission worked and that I'm amazing *pats self on back* (there is only one other person in that category for now :P)

        I wonder how long it takes for everyone to get kicked out by a cheater though. Maybe there should be a cheater category that shows up once you hit >1.5×max(leaderboards), because people will want to try autotyping but you also don't want to give them ideas. Then they have some place to submit to without breaking the other highscores. I know that a lot of cheaters won't care but... I would :shrug:

        Choosing e.g. Debian does not include Basic commands that I can tell, whereas of course on Debian it's not like you never mv a file. Maybe multi-selecting categories would enable people to combine it however they want, but then the highscore system is difficult so hm.

        To reproduce... actually, I wonder if you can guess my browser and OS family based on the above :D

        None of these are a blocker or big bother for me btw, it's just that I saw the invite to report UI issues/ideas and I can't help myself. I had fun using it, thanks for making!

        • jdiff 7 minutes ago
          > The highscores don't show the run's duration, aka the error margin

          Different durations have different high score lists.

  • efitz 2 hours ago
    My typing speed is measured in tokens per second…
  • samso26 3 hours ago
    This is fun lol. typing tests but for terminal commands instead of regular words is such a niche idea but it actually makes sense. every dev has typed git pull origin main so many times their fingers do it on autopilot, so measuring that muscle memory is a cool way to track terminal fluency.

    The leaderboard angle is smart too,people love competing on pointless metrics and wpm is the perfect one for that.would love to see a mode for specific tools tho, like a docker-only round or a vim escape sequence speedrun. The git rebase one would genuinely stress test people lol.

    • ashu1461 2 hours ago
      Is WPM really pointless ?