So it's been a while. In my defense, I have a good excuse (of which more later). I am returning from blog hiatus to grouse about something: I subscribe to Hacker News in Twitter and I'm happy to do so as I regularly find new packages and good advice in the stream. The price one pays for these tidbits is having to suffer through the worst examples of tech nerdism alive in the world today. Allow me, if you will, two examples:
I'm forever trying to make myself more efficient through keyboard shortcuts, so I clicked right on this trap. After three or so sentences I recoiled in horror. Instead of being advice on how to use the command line, it's all about how the author hates graphical email clients, so he uses old-school Linux ones because they are far superior. I see two problems here.
- I do not claim Gmail is perfect, but it works damned well. Before it, I lived my professional life in Outlook. And that was fine too. I've used Thunderbird and had no major complaints. I've also used pine and mutt and written email by hand. Those are not superior ways of doing things. The specific mistake the author makes is in claiming terminal-based apps are superior because you get your email "faster" according to whatever observation-based metric he's made up. Email is a wonderful means of communication because it is asymmetric: you write to me when it's convenient for you and I read it when it's convenient for me. If you're sitting around hitting "Check for messages", you're doing it wrong.
- The more general mistake this type of nerd makes is that computer programs are an end to themselves. They are not. Carve it into your forehead backwards if need be, but unless you are currently taking Computer Science classes or writing a programming language, it is unlikely you are writing a program that doesn't have a purpose outside the confines of the machine it runs on. An email client isn't just for you, it's for everyone who needs to communicate with you. So I need you to be able to respond in nicely-formatted language that clearly indicates what you meant, not some plain text crud wrapped at 80 columns. And I need you to have an email client that can handle calendar events so I know if you're going to show up or not.
My all-time, can't-be-beat favorite example of this kind of crawling up one's own ass comes from my all-time, can't-be-beat favorite co-worker. When we moved to .NET, everyone got a copy of Visual Studio. Now you can make a lot of complaints about a lot of Microsoft programs (and I can help if you want to set up regular meetings), but I am hard-pressed to complain about Visual Studio as a work environment for creating Microsoft-based code1. Not good enough for The Professor though. Too complicated. His idea was to write his code in Notepad and then run it through the raw compiler on the command line (sense a theme here?) and then hand it over to us. Technical types reading this will need no further info before they begin laughing; for anyone else in the audience, this is the equivalent of your new employer handing over a set of keys to a Rolls Royce by way of apology for the commute and you refusing them, saying you prefer to walk 5 hours each way and then to prove it, cutting off your own legs at the knee with a rusty hacksaw. One could write the code in Notepad if that made them happy. It does have the side effect of pissing off all your coworkers who have to clean up the mess though.
The Big Re-Write
I've lost the second link, but it was a story from some wet-behind-the-ears kid about "Why I rewrote my company's code base and you should too." I won't claim it couldn't be true; from the link I think he said he did it in three days, so it sounds a bit like someone saying they rebuilt their entire house from the studs and then finding out their house was a refrigerator box and is now pieces of the same box taped up in a slightly different configuration. It's perfectly possible it was a good idea. But if you're the sort of person who thinks they can discerns a trend line based on a single data point, maybe you shouldn't be handing out free advice. Especially when it's rather dangerous advice. It's such a bad idea, a mistake so many people have made, it has its own name ("Second system effect") and an entry on Wikipedia.
I am regularly stunned by the number of people who think they have everything covered. As a kid, I always noticed the guys my Dad chose to hang around seemed impossibly competent2. Good with their hands, good with numbers, all-around friendly, you get the drift. The best description I can provide is one stolen from Neal Stephenson's Wired article about the laying of a trans-Pacific Intenret cable:
"They tend to come from the US or the British Commonwealth countries but spend very little time living there. They are cheerful and outgoing, rudely humorous, and frequently have long-term marriages to adaptable wives. They tend to be absolutely straight shooters even when they are talking to a hacker tourist about whom they know nothing. Their openness would probably be career suicide in the atmosphere of Byzantine court-eunuch intrigue that is public life in the United States today. On the other hand, if I had an unlimited amount of money and woke up tomorrow morning with a burning desire to see a 2,000-hole golf course erected on the surface of Mars, I would probably call men like Daily and Wall, do a handshake deal with them, send them a blank check, and not worry about it."
I've worked as a programmer for over a decade and I've worked with perhaps two people like that. Which feels about right to me— I've worked with a lot of programmers and a lot of good programmers, but people who you'd bet your life on— those should be rare. If they're not, you're awfully careless with your life. My frustration with this comes from our new venture3, Rivermill at Dover Landing. Just about every single vendor in the wedding industry thinks they are one of these people; some old ballplayer in Ken Burns' Baseball was quoted as saying "We do this every day" and I can't think of a better label for the condition. Some of them clearly are. But they're easily-identifiable behind the scenes, if not via their common competentness then through the higher price on their invoices. The trick is, if you're not behind the scenes, they'd be hard to spot, because you can't be casual in this business. This is someone's goddamn wedding day. I know you and I do this every weekend, but you still need to stand at attention and look like you're about to break into a sweat.
We had a pair of wedding "planners" who apparently worked together so there was always someone to explain why the other wasn't doing anything. We spent the better part of a week making these mopes look good because we don't have a choice: if any vendor screws up, it reflects badly on us. And even if the client understands, random guests can't tell things were off-schedule or messed up because of a vendor. So in the midst of us hurrying around to paint over their mistakes, in walks the mother-of-the-bride and she's freaking out. Which is entirely expected and entirely understandable: you're throwing probably the most important party of your life except you aren't exactly in charge: if it were your party, you'd know implicitly where you want the tables to be, what color linens should be where or what the first dance song is. Since it's not your party, you need to have that all written down beforehand, assuming you think to ask. Alternatively, you could hire a wedding planner. So she's freaking out and trying to get some answers out of the planners. Their answer? "Relax, have a drink. It will all be fine." These vendors "do this every day". The problem is, they all have their own internal definition of what "this" entails and you only find out after the fact.
 I'm not claiming it works well for anything else. I don't write anything but C#/ VB.NET (God help me) in it. But before you complain, go try Eclipse.
 Compare and contrast with the men who we knew by happenstance: my Dad once spent 5 minutes trying to help our neighbor get his lawn mower started because it never even occurred to my Dad someone would begin yanking on the pull start of an engine before checking to see if there was a single drop of oil in it.
 Which has basically sucked up all my nights and weekends and thus all of my blog-writing free time. Or at least that's my excuse.