I just finished Where Wizards Stay Up Late. It’s breezy and at times light on the details and long on unnecessary childhood anecdotes, but otherwise a fairly nice history of the ARPANET. I suppose it occupies the same niche that the history of New Jersey we were forced to read in sixth-grade social studies: an inoffensive and mildly boosterish mass-market history designed to instill us with the requisite civic sense of where we come from. The difference being that being of the Internet age and of the hacker tribe is a lot more salient to the modern me than being a 20th-century New Jerseyite was to my sixth-grade self.
Leaving aside the inspiring tale of engineers triumphing over all technical challenges (a genre that I find sentimentally satisfying on a primordial level, the way that some people find romance novels good for a reliable emotional high), it was an educational experience learning about the chronology. As a dutiful student of computer science, I already know about the great and brilliant ideas that make computer networking work: routing, packet-switching, gateways, addressing, protocols, layering, remote monitoring, traffic analysis, transmission control, and so on. What I didn’t have as solid an understanding of was their order. WWSUL really shines in showing how each of these ideas was invented or perfected to serve immediate engineering needs. I have a much better idea now of how ARPANET’s organic growth drove the whole kit and caboodle of innovation, one problem at a time. I hadn’t realized, for example, that TCP’s end-to-end solution for message integrity represented a backoff from ARPANET’s decision to make the network gateways responsible for assembling complete messages. WWSUL, to its credit, explains why both decisions made sense in context.
I continue to believe that large tracts of computer science (much like large tracts of math, physics, law, music theory, and many other subjects) could usefully be taught historically, rather than according to a specific after-the-fact taxonomy. Our modern syntheses are often quite elegant, but there’s something uniquely humbling and instructive about examining each piece of elegance in the context of the specific technical challenge that motivated it. Some of my best computer science classes involved reading historic papers closely; the approach takes you back to fundamentals. Studying both the ontogeny and phylogeny of an algorithm tells you more about it than just a running-time analysis would.
All of which is to confirm, perhaps, something that J.C.R. Licklider understood immediately: computer science has always been a human discipline.