The best part of developing shrinkwrap software is the wonderful feeling you get when people actually use your product, the work of your mind and hands, and get great things done.

John’s Adventures: “Basically it’s a superb piece of software… I used to be a web designer and I’ve tried virtually everything there is out there and nothing comes close to CityDesk in terms of power, flexibility and ease of updating your site.”



Ah, finally! The final, gold version of CityDesk 2.0 is now shipping. Yes, it’s a completely free upgrade.

We used to have both a Home Edition and a Professional Edition. That was a brave experiment, which was, I have to admit, something of a failure. Call it the Fog Creek PCjr. We wanted to make a cheaper entry-level CityDesk 2.0 Splash Scerenversion of CityDesk, but in the end we made something that was too cheap to support profitably, and which ended up making people worry about article count limits and go to ridiculous lengths to keep their sites under 500 pages. It wasn’t fair to sell a crippled version of the product at a price that we simply couldn’t maintain, so we’re going to stop selling the Home Edition altogether, and eat the cost of moving every existing Home Edition user to the Professional Edition. We also lowered the price of the Professional Edition a smidgen (to $299), and introduced a lower cost Contributor Edition for team members who don’t actually design sites, they just maintain them.

If you still haven’t seen them, Michael and I made two movies (in Flash format) with demos of the latest features. Bring popcorn! These movies were made with TechSmith‘s Camtasia Studio, which worked like a charm (and no, you cynical freaks, they are not paying me to say that. Sheesh.) If you’re completely new to CityDesk check out this online demo (I, for one, can’t bear to hear my own voice so you’ll have to watch it without me.)


Raymond Chen has been running a series of interesting articles about the history of Windows and its API. Ever wonder why the time zone map no longer highlights the zone you’re in? Or what the BEAR35, BUNNY73, and PIGLET12 functions are named after? Or why you turn off your computer by clicking “start”? I’ve bookmarked his site.

In particular, “The secret life of GetWindowText” should be required reading for anyone trying to understand API lockin. Describing one aspect of this simple and fundamental part of the Windows API takes a couple of pages. And then notice the kicker:

The documentation simplifies this as “GetWindowText() cannot retrieve text from a window from another application.”

As Raymond says, “the documentation tries to explain its complexity with small words, which is great if you don’t understand long words, but it also means that you’re not getting the full story.” (Actually, Raymond, the documentation does tell the whole story, look closer.)

Anyway, the complexity behind such a simple function is a classic example of an abstraction leaking. And more importantly, it’s one of the reasons it’s so dang hard to write API emulation layers, like, say, WINE… because getting 100% compatibility means emulating all these bizarre internal complexities perfectly, even when they’re not completely documented or the documentation doesn’t really describe what happens in every scenario.


Does anyone have any suggestions for inexpensive ways to print two color, high quality letterhead, stationary, and business cards? A number of people have recommended Vistaprint; I’ve decided to avoid them because they seem to be pretty major and unreformed spammers.


A once-in-a-generation blackout is the first time most people discover the problems with their emergency backup plans. Oh, look, we’re out of diesel fuel. Or: I didn’t know our generator needs electricity to turn on! (Yes, such things exist.)

When the lights went out in New York City last week and across much of the Northeast, Joel on Software and Fog Creek were online the whole time. We even sold software while the electricity was out. Credit for this goes to our colocation provider, Peer 1 Network, who maintained 100% uptime on backup generators while many of their competitors were falling over. Peer 1 even invited the journalists of the Toronto Star newspaper to their Toronto facility where they were set up with light, air conditioning, and Internet access allowing the Star to publish during the blackout.

Peer 1 hosts Joel on Software for free as a public service, but I would not hesitate to recommend them to anyone in the market for colocation.


New Fog Creek LogoI’m back from a nice vacation in England and Norway (motto: “And you thought the English liked mayonnaise”). Over the next few days I’ll be busier than a pair of jumper cables at an Alabama picnic catching up.

At the Oslo dinner Petter Hesselberg gave me a copy of his brilliant book Programming Industrial Strength Windows. I believe it’s out of print, but if you’re developing Windows software for a commercial/shrinkwrap type market, it should be required reading, so do track down a used copy. This is one of the only books that really talks about all the nitty gritty things you want to get right if you are releasing a Windows application for a large market: the kinds of things that, individually, only affect a small percentage of people but taken together spell the difference between super solid Lexus quality production code that delights its users, and Yugo clunkitude.



Mystery icon: what’s this?

I’ll be on vacation for a couple of weeks. As soon as I get back, I’ll push the button and we’ll release CityDesk 2.0. There’s a loophole the size of a truck going on right now with CityDesk pricing… we promised to upgrade all CityDesk 1.0 Home or Pro Edition users to CityDesk 2.0 Pro for free when 2.0 ships. So basically while I’m looking at fjords and glaciers, you can buy the 1.0 home edition for $79 and get the 2.0 pro edition free when I get home, saving $270.


Picture of Norway's FlagOslo Dinner

You’re invited to a Joel on Software dinner in Oslo, Norway on Thursday, August 14th, at 19:30 at Peppe’s Pizza, Karl Johansgate 1 (outside Oslo S).  I’m arriving that afternoon on SAS 1514; you may want to check if the flight is horribly delayed or cancelled, in which case the meeting is still on but I won’t be there!

Yes, we’ll have more dinners in other cities in the future.

Joel (March 28): “… when you relocate more than a couple of miles, some employees’ lives would be too disrupted to make the move, so you lose a lot of employees, and all the institutional knowledge, skill, and experience that comes with those employees. While I was working at Viacom one of their companies, Blockbuster, decided to move from Florida to Texas after they hired a new CEO who lived in — Texas! What a coincidence! Only a small portion of the employees made the move. For years and years the business press watched agog as Blockbuster made mistake after inexcusable mistake, re-trying all kinds of ideas that had failed only two years earlier.”

LA Times (April 13): “Investigators are examining whether the move eviscerated Boeing’s technical capability and played a role in the Columbia disaster on Feb. 1…. The decision to move the jobs was highly unpopular among Boeing’s workforce, and about 80% of the California engineers refused to relocate, forcing the company to hire workers in Texas and forfeit much of the experience of its California engineering base.”

Rick Chapman is In Search of Stupidity

(This is the foreword to Rick Chapman’s new book, In Search of Stupidity.)

In every high tech company I’ve known, there’s a war going on, between the geeks and the suits.

Before you start reading this great new book full of propaganda from software marketing wizard and über-suit Rick Chapman, let me take a moment to tell you what the geeks think.

Play along with me for a minute, will you?

Please imagine the most stereotypically pale, Jolt-drinking, Chinese-food-eating, video-game-playing, slashdot-reading Linux-command-line-dwelling dork. Since this is just a stereotype, you should be free to imagine either a runt or a kind of chubby fellow, but in either case this is not the kind of person who plays football with his high school pals when he visits mom for Thanksgiving. Also, since he’s a stereotype, I shall not have to make complicated excuses for making him a him.

This is what our stereotypical programmer thinks: “Microsoft makes inferior products, but they have superior marketing, so everybody buys their stuff.”

Ask him what he thinks about the marketing people in his own company. “They’re really stupid. Yesterday I got into a big argument with this stupid sales chick in the break room and after ten minutes it was totally clear that she had no clue what the difference between 802.11a and 802.11b is. Duh!”

What do marketing people do, young geek? “I don’t know. They play golf with customers or something, when they’re not making me correct their idiot spec sheets. If it was up to me I’d fire ‘em all.”

A nice fellow named Jeffrey Tarter used to publish an annual list of the hundred largest personal computer software publishers called the Soft-letter 100. Here’s what the top ten looked like in 1984[1]:

Rank Company Annual Revenues
#1 Micropro International $60,000,000
#2 Microsoft Corp. $55,000,000
#3 Lotus $53,000,000
#4 Digital Research $45,000,000
#5 VisiCorp $43,000,000
#6 Ashton-Tate $35,000,000
#7 Peachtree $21,700,000
#8 MicroFocus $15,000,000
#9 Software Publishing $14,000,000
#10 Broderbund $13,000,000

OK, Microsoft is number 2, but it is one of a handful of companies with roughly similar annual revenues.

Now let’s look at the same list for 2001.

Rank Company Annual Revenues
#1 Microsoft Corp. $23,845,000,000
#2 Adobe $1,266,378,000
#3 Novell $1,103,592,000
#4 Intuit $1,076,000,000
#5 Autodesk $926,324,000
#6 Symantec $790,153,000
#7 Network Associates $745,692,000
#8 Citrix $479,446,000
#9 Macromedia $295,997,000
#10 Great Plains $250,231,000

Whoa. Notice, if you will, that every single company except Microsoft has disappeared from the top ten. Also notice, please, that Microsoft is so much larger than the next largest player, it’s not even funny. Adobe would double in revenues if they could just get Microsoft’s soda pop budget.

The personal computer software market is Microsoft. Microsoft’s revenues, it turns out, make up 69% of the total revenues of all the top 100 companies combined.

This is what we’re talking about, here.

Is this just superior marketing, as our imaginary geek claims? Or the result of an illegal monopoly? (Which begs the question: how did Microsoft get that monopoly? You can’t have it both ways.)

According to Rick Chapman, the answer is simpler: Microsoft was the only company on the list that never made a fatal, stupid mistake. Whether this was by dint of superior brainpower or just dumb luck, the biggest mistake Microsoft made was the dancing paperclip. And how bad was that, really? We ridiculed them, shut it off, and went back to using Word, Excel, Outlook, and Internet Explorer every minute of every day. But for every other software company that once had market leadership and saw it go down the drain, you can point to one or two giant blunders that steered the boat into an iceberg. Micropro fiddled around rewriting the printer architecture instead of upgrading their flagship product, WordStar. Lotus wasted a year and a half shoehorning 123 to run on 640kb machines; by the time they were done Excel was shipping and 640kb machines were a dim memory. Digital Research wildly overcharged for CP/M-86 and lost a chance to be the de-facto standard for PC operating systems. VisiCorp sued themselves out of existence. Ashton-Tate never missed an opportunity to piss off dBase developers, poisoning the fragile ecology that is so vital to a platform vendor’s success.

I’m a programmer, of  course, so I tend to blame the marketing people for these stupid mistakes. Almost all of them revolve around a failure of non-technical business people to understand basic technology facts. When Pepsi-pusher John Sculley was developing the Apple Newton, he didn’t know something that every computer science major in the country knows: handwriting recognition is not possible. This was at the same time that Bill Gates was hauling programmers into meetings begging them to create a single rich text edit control that could be reused in all their products. Put Jim Manzi (the suit who let the MBAs take over Lotus) in that meeting and he would be staring blankly. “What’s a rich text edit control?” It never would have occurred to him to take technological leadership because he didn’t grok the technology; in fact, the very use of the word grok in that sentence would probably throw him off.

In Search of Stupidity -- the Cover
Buy the book

If you ask me, and I’m biased, no software company can succeed unless there is a programmer at the helm. So far the evidence backs me up. But many of these boneheaded mistakes come from the programmers themselves. Netscape’s monumental decision to rewrite their browser instead of improving the old code base cost them several years of Internet time, during which their market share went from around 90% to about 4%, and this was the programmers’ idea. Of course, the nontechnical and inexperienced management of that company had no idea why this was a bad idea. There are still scads of programmers who defend Netscape’s ground-up rewrite. “The old code really sucked, Joel!” Yeah, uh-huh. Such programmers should be admired for their love of clean code, but they shouldn’t be allowed within 100 feet of any business decisions, since it’s obvious that clean code is more important to them than shipping, uh, software.

So I’ll concede to Rick a bit and say that if you want to be successful in the software business, you have to have a management team that thoroughly understands and loves programming, but they have to understand and love business, too. Finding a leader with strong aptitude in both dimensions is difficult, but it’s the only way to avoid making one of those fatal mistakes that Rick catalogs lovingly in this book. So read it, chuckle a bit, and if there’s a stupidhead running your company, get your résumé in shape and start looking for a house in Redmond.

[1] Source: Soft*letter, Jeffrey Tarter ed., April 30, 2001, 17:11.


In every high tech company I’ve known, there’s a war going on, between the geeks and the suits. Read all about it in my foreword to Rick Chapman’s excellent new book, In Search of Stupidity.

Meanwhile: the CityDesk 2.0 release candidate is here. If you have been using any version of the beta, please upgrade to the 2.0 release candidate. If you have been using 1.0, this is a pretty dang stable release thanks to the beta testers from four prior rounds of beta releases, so you can feel reasonably safe about using it. In a week or two if no major new problems crop up, we’ll rerelease this as the Gold version of CityDesk 2.0. Getting the Release Candidate