Mickens, A Systems Carol

If you've been hangin' around here lately, and you're lookin' to cleanse the computer fakery, mistakery, and opaquery from your palate, look no further than the brilliant and hilarious essay The Night Watch, by the hilarious and brilliant James Mickens of Microsoft. Bonus: he's a good writer. Here's his self-blurb from the MS research site:

Excellence. Quality. Science. These are just a few of the words that have been applied to the illustrious research career of James Mickens. In the span of a few years, James Mickens has made deep, fundamental, and amazing contributions to various areas of computer science and life. Widely acknowledged as one of the greatest scholars of his generation, James Mickens ran out of storage space for his awards in 1992, and he subsequently purchased a large cave to act as a warehouse/fortress from which he can defend himself during the inevitable robot war that was prophesied by the documentary movie “The Matrix.” In his spare time, James Mickens enjoys life, liberty, and the pursuit of happiness, often (but not always) in that order, and usually (almost always) while listening to Black Sabbath.

Last 5 posts by David Byron


  1. says

    he systems programmer has traced a network problem across eight machines, three time zones, and a brief diversion into Amish country, where the problem was transmitted in the front left hoof of a mule named Deliverance.

    As it turns out, I may be in need of new employment soon, and that describes my current job perfectly, except the mule was name "Chastity". When's the apocalypse?

  2. says

    Cool. I have a systems background (although I now drink daily from the garbage-collected Kool-Aid) and I couldn't stop cracking up at the descriptions of C++ programming. The error messages from templated code can be fierce indeed.

    Raw pointers are a frightening thing. Finding a 7 in a pointer is weird, but at least it breaks things in an immediately obvious way. Far worse is having an ordinary-looking but mis-aimed 0x02B922E8 in a pointer I don't even know about. In all my days programming, there is nothing to match the haunting fear that my C++ code is mysteriously failing because something, somewhere — one line of code among millions I didn't write — is (only sometimes) writing memory through a dangling pointer that just happens perversely to be aimed, out of the hundreds of millions of possible memory locations, straight at one of my variables.

    I just have to close my eyes to that looming horror, and persevere.

  3. David says

    It's wonderful. But he's young enough that he never had to work with 18 bit (yes eighteen) machines where pointers addressed whole words only, (or 16 or 12 or 8 bit for that matter) and memory was a frighteningly scarce commodity (think 8196 words to program spacewar) and you have to debug with an oscilloscope and a soldering iron.
    In some ways he is saying that an understanding of the bottom levels of a system is missing from too many people's experience. That's for sure true across many fields.

  4. Brian Jones says

    PDP-8E, 4096 12 bit words, 8192 with memory extension. OS-8, In-line code modification was a common practice. The original RISC machine with a 3 bit opcode field. Ah, the nightmares, er memories…

  5. barry says

    Hannibal was a snake-thrower from way back (the trick is to put them in breakable clay pots and throw the pot). I don't know if snake venom works on zombies, or if there will be zombie-snakes.

    Using snakes in the upcoming robot wars doesn't sound effective. They'd just be crushed in the gears and snake-oil might not be as bad as as all the anti-snake-oil propaganda suggests. They used to boil down penguins for their oil not so long ago.

    A quick google search of "does snake venom work on zombies?" finds that David Mizejewski from the National Wildlife Federation says it wouldn't because zombies don't have any circulatory system, but the alligators would get them.

  6. Hoare says

    I would never have dreamed to start an essay on page 5
    The man is a genius
    I bet the first 4 pages are header remarks

  7. says

    Brilliant, brilliant, brilliant. After 40 years in this industry, all I can do nod in awe at how outclassed I am as both a hacker and an author.

    Kudos also to the USENIX Association, which provided his forum. It's been some years since I was published there, but I'm mildly proud to have once been in the same pages. As for today – so, so, so outclassed.

  8. Niall says

    I have never done real programming*, and never debugging, and machine language is but a concept to me, yet I understood the pain (if not any specific references). That is the mark of a good author, with enough pain to cram in those pages.

    (* TRS-80 Basic and Fortran in the 80s so don't count. But they do give a bare knowledge of underlying concepts.)

  9. Mark says

    Re-cursive pointers are not taught in school anymore. All that the kids know how to do is Print. Pascal was blazing fast in theory. Started with a DigiComp plastic analog computer in 1960s… 3 bits with rubber bands.

  10. Shakerag says

    As a mainframe assembler programmer, I certainly felt some of this guy's pain.

    I am suddenly thankful that I'm not a systems programmer, though.

  11. mcinsand says

    I miss programming. I first learned C when doing single-crystal X-Ray. There were no utlities I could find for calculating distances and angles in non-Cartesian space, and I was doing enough calculations to make learning a language worthwhile.

    When learning C, my problem with pointers was not with the pointer concept, but with learning that pointers were not the default. I just assumed that, when I was sending X to a function, only the address was passed.

    Then, in my first job, a coworker was adapting freshly-declassified missile targeting routines to solving online industrial problems. With 17 variables and 286 hardware, FORTRAN was taking too long to be practical. So, I was drafted to rewrite everything in C. It was nice to have free reign over changing some other things to take advantage of C, and what took 8 hours to run before then dropped to 10-15 minutes.

  12. says

    @Doug Burbidge, Thank you for posting that!

    According to my dad, flying in airplanes used to be fun. You could smoke on the plane, and smoking was actually good for you. Everybody was attractive, and there were no fees or anything, and there was so much legroom that you could orient your body parts in arbitrary and profane directions without bothering anyone, and you could eat caviar and manatee steaks as you were showered with piles of money that were personally distributed by JFK and The Beach Boys. Times were good, assuming that you were a white man in the advertising business, WHICH MY FATHER WAS NOT SO PERHAPS I SHOULD ASK HIM SOME FOLLOW-UP QUESTIONS BUT I DIGRESS.

    This guy is the Ken White of systems programmers!

    Also, LOL: "…in those days, you could XOR anything with anything
    and get something useful…"

  13. SharonA says

    That was beautiful.

    I loved the thrill of the chase. I hated the huge gaping pits of doom on either side of the tightrope one skedaddles across during the chase. Most computer people get to work in a world that is, more or less, friendly or at least tolerant of its users. Systems Programs, on the other hand, hate you. They go beyond user-antagonistic and leap straight for the jugular. They grab you and cackle "I DARE you to figure me out" while their five other sets of claws are disemboweling you.

    He brought back some memories that I hoped had been permanently forgotten. Almost makes me miss those days :)

    Thanks for sharing that. I think.

  14. Basil. Forthrightly says

    Dear god. Closest I got to systems work was the 3 week hunt for the hand-coded assembly graphics routine that was only restoring half the registers on exit, some of the time. Client's PHB droid threatened to make me pay for the 4 cases of green bar paper I went thru on that bug hunt, blowing his budget for the month. These days, with a modern debugger it's (comparatively) easy, but back then, all I could get was paper copies of core dumps at select checkpoints or on crash, printed on a 5 ppm line printer.

    I thought I'd successfully repressed those memories…

  15. ArtK says

    As someone who has lived this stuff for years (systems programmer on an IBM S/360 model 25, in 1973 for starters) I appreciate and share his pain. Heck I'm doing some work with embedded micro-controllers for the fun of it. Try debugging when all you can do is toggle a spare I/O pin and watch it in a logic analyzer.

    That said, I wish he would use more paragraph breaks. The wall of text is a pain.

  16. JoeT says

    I know James; he is a funny guy. If you think this is entertaining as is, it is better when you know and work with some of the people involved.

    For instance, w.r.t. C++, I recently had this discussion with one of the authors (we'll omit the names of the guilty) of the C++11 spec about the semantics of reading variables when there is a data race. The following code seems straightforward, right?

    int x; // X is shared, and could have a data race.
    int count = 0; //This is local; no races
    int temp = x; //Also local; no races
    if(temp == 0) count++;
    if(temp !=0) count++;
    if(count==0) launchMissiles();

    We copy x out into temp to try to deal with the data race. If x was 0, then we increment count, and if x wasn't 0, we also increment count, so there is absolutely no way to launch the missiles, right? Wrong; according the the spec if there is a race on x you're not guaranteed to get the expected result, and you can actually convince the clang compiler to omit a binary which will potentially launch missiles.

    I went to a bar to drink after that discussion.

  17. AlanMorgan says

    For those who are not C++ programmers, this:

    Syntax error: unmatched thing in thing from std::nonstd::__map<_Cyrillic, _$$$dollars>const basic_string<epic_mystery,mongoose_traits <char>,__default_alloc_<casual_Fridays = maybe>>

    is only just barely a joke. The main reason you can tell it's fake is that C++ errors are usually about 20 pages long. This is far too short to be real.

    Other than that, it looks pretty typical. I wish I were joking.

  18. Anonymous Coward says

    Mickens's humor style in this essay reminds me very much of Dave Barry at his greatest, and the other humor essays Mickens has written even more so. Thanks for the link, this brightened my day considerably.

  19. says

    there is nothing to match the haunting fear that my C++ code is mysteriously failing because something, somewhere — one line of code among millions I didn't write — is (only sometimes) writing memory through a dangling pointer that just happens perversely to be aimed, out of the hundreds of millions of possible memory locations, straight at one of my variables.

    Ha – I hear ya! Memory leaks due to dangling pointers is like the phenomenon of referred pain, It hurts here but the cause is elsewhere.

  20. ArtK says


    Add me to the people who had a DigiComp. I didn't even remember that I had, until you mentioned it and I looked it up. Wow!

  21. Marconi Darwin says

    Is Popehat on vacation? Clark, Ken, David… someone, HELP, we need new posts.

    There is nothing good on TV.

  22. barry says

    I wasn't paying close attention, but I think there was something on TV news about David-Jong-Un having Clark-Song-Thaek arrested and taken out behind the punch-card machines and shot for "dreaming different dreams", and the rest of the party are keeping their heads down till the smoke settles.

    Or they might all just be out Xmas shopping.

  23. Grey Ghost says

    My guess is that complete enjoyment of this (admittedly splendidly written) essay would depend in large measure on having some remote notion of exactly what in hell he's talking about.