I liked this piece overall, but there's one part that annoyed me.<p><i>Something else that had long-lasting influence over software we still use today was the ADM-3A terminal. If you ever wondered why vi uses 'hjkl' as left,down,up,right - this is why.</i><p>You won't find anyone who believes more strongly than I do in the importance of understanding our history. But <i>understanding</i> history is different than making a <i>fetish</i> of it, and this explanation tiptoes pretty close to the latter. OK, vi uses hjkl because the ADM-3A terminal didn't have arrow keys. But every keyboard for decades now <i>has</i> had arrow keys. Given that, what's the value in pretending they do not?<p>This explanation basically boils down to "we do it that way because we've always done it that way," which is poor argumentation.<p><i>It's also a good illustration of the distinction between 'easy' and 'efficient' - the modern cursor key layout, with the 'up' in front of the 'down', is obvious, intuitive, and easy to master. No argument. But it's not the most efficient layout - it's not possible to keep all four fingers on the four navigation keys - you have to settle for three fingers and move them around. And if you're typing and suddenly need to move, you have to move completely away from where you're typing and switch to the cursors.</i><p><i>hjkl answers both issues - the four keys in a line make it possible to keep one finger on each and so move about as quickly as possible, without ever having to move from the text-entry part of the keyboard to any other. It's not as easy, not as obvious, but it's quicker and more efficient when you're used to it. Even on my modern keyboard, I go for hjkl far more than I reach for cursors.</i><p>Well sure you do, because <i>you have trained yourself to do that.</i> But how many people can say that? And what's the value in leaving everybody else out when you design your tools?<p>Anytime you talk about how UNIX-like systems have evolved, there's a danger of falling into the trap of hailing historical cruft as "misunderstood features." But at the end of the day, it's still just historical cruft. It's there, it won't kill anyone if it <i>stays</i> there, but it's not something awesome either. It's just an evolutionary dead-end; the male nipple of software design.