I’m running out of my own ideas for article topics. I was going to write about how the search for autotrephination on Google only has one result, which is surprising, considering how there’s an entire movie on the subject, although I realized most people probably think autotrephination would mean “automatic-drilling-of-holes-in-the-head” when it’s perfectly obvious to me that it should mean “drilling-of-holes-in-one’s-own-head” but, hey, what does a word mean that has only been used once in the entire history of Google? And what does it mean to say that a word means something if nobody has ever used it? Anyway, I decided that writing about this would be so headache-inducing you all would try to drill a hole in my head so I didn’t write anything about it.
Luckily, I have my readers for topic ideas. A lot of times people email me saying, “I’d love to hear what you think about X.” Sometimes, that’s enough to motivate me to write a long essay. But more often, my opinion is far too shallow and insipid to justify such an effort, so I dash off a paragraph or two to the email correspondent, or, more often, file away the email in a folder full of things I would love to respond to if we lived on Pluto and the day was 153.4 hours long and humans didn’t require that much sleep.
I decided to try out one of Philip Greenspun’s ideas — the Ask Philip Forum. So, without further ado, I have recycled the dreary old “New Yorkers” forum, which was something of a ghost town anyway, into the shiny new Ask Joel Questions forum. There are still some old New York-related topics there. Ignore them. Put the drill away. Thank you.
The appropriate person at Microsoft blew off my request for a linker. The strongest argument he makes is that Microsoft wants to be able to patch security bugs in the CLR after I’ve shipped my program. This is a valid concern; when a major security hole was found in zlib everybody had to figure out which programs they had that used it and recompile them all. I wasted a day of my life on that particular bug. But it’s easily solved by a simple technology of shims or jump tables. Put on your thinking hat and you’ll figure out how to make a linker that produces a single executable plus a jump-table that Microsoft can patch when they find a security hole. PS. Apple had this technology in the original Macintosh, 1984.
His other argument about working set size is a decision that should be left to developers. Let me pick the tradeoff I want to make between ease of installation and working set size.
Look, I used to be a program manager at Microsoft, and there’s a really strong tendency in that culture to treat customer requests as fun intellectual challenges to be fended off like exercises in debating class. But I’ve been talking to customers since the days of the Visual Basic 1.0 runtime in 1991 — thirteen years ago! who have been begging for this problem to be addressed. Jason, why don’t you go talk to somebody on the FoxPro team. In the late 80s FoxPro clobbered dBase in the market mainly on the strength of the fact that it compiled standalone executables. FoxPro had a linker. xBase developers pleaded with Ashton-Tate, makers of dBase, to develop or acquire a linker, but Ed Esber, reviled CEO of Ashton-Tate, refused to give them one. Learn from your own history. (Thanks to Rick Chapman for reminding me of history repeating itself.)
ISV’s that I talk to agree that this is the #1 weakness of VB1-6 and .Net. I’m forced to conclude that Microsoft has grown so large they are living in a reality-distortion field. I suppose it’s not unusual for someone working on a campus with 45 buildings all full of Microsoft employees to lose track of what the outside world is thinking and doing.
OK, anyway, there are third party alternatives. Jitit makes a thing called Thinstall. I haven’t tried it. If someone out there wants to write an in-depth technical review of this thing, please contact me and I’ll try to get you a review copy.
I loved the style, wittiness, humor and erudition of Why’s (Poignant) Guide to Ruby but I can’t say I learned much about Ruby. Maybe in the next chapter?