A Minor Redesign

Here’s what I’m trying to accomplish with the slightly redesigned homepage you see here.

Notice the new column of text over on the left? That’s the first big change. What used to be there was a lot of links and little graphic blobs and other bits and pieces of the flotsam and jetsam that bloggers like to put in their marginalia that links to other stuff. Most people on the web today have learned to completely tune out the navigation column; it seems about as exciting as the credits at the end of a movie.

The trouble was that new users would land on my site, having followed a link from somewhere, and they would have absolutely no idea what was going on. They were on some kind of site, there was this guy, Joel, he was saying things, so what? The home page, like the home page of many blogs, wasn’t really serving first-time visitors.

I was finally motivated to get off my butt and fix it by reading Jakob Nielsen’s recent post about Weblog Usability.

The theory here is to divide the home page into two columns, one for first-time visitors and one for everybody else, and by using narrative and full sentences in the navigation/first time visitor column, I’ll actually seduce some people into checking out what’s over there.

There are two other small changes. My public calendar has moved up to the top right corner. And home page postings will now have titles, instead of dates, because the RSS people kept complaining about that.

Non goals: I made no attempt to be slick. A long time ago I paid a top web designer, Dave Shea, who created a stunningly beautiful design for me to use. It ended up looking a little bit too shiny, though, so I never used it. This is a site designed by me, badly, using my poor Corel PHOTO-PAINT skills and my crappy amateur photos and my affection for the font “Georgia” and my poor eyesight (thus the largish font). It’s not some kind of corporate blog developed by the marcomm department at a company that desperately wants to get people to pay attention to their new brand of laundry detergent. The more it looks like it was designed by a geek, not a graphic designer, the happier I am, because I am a geek.

The changes haven’t completely permeated the inner pages yet, but that’s only a matter of time.

Why eBay Bought Skype

What caused me to fly off the handle about architecture astronauts was, indeed, this conference, organized by Union Square Ventures, a local VC. You can try to read the transcript online and see why I was so agitated, or just read the post-mortem, including my ungracious comment, on USV’s blog-site.

I had to install Lisp in a Box and start working through Seibel’s new book on Common Lisp until my brain started functioning again.

eBay and Skype

Here’s my highly irresponsible, off-the-cuff theory of why eBay bought Skype, because none of us believes that nonsense about how this would “allow people to talk to each other during auctions.” (Hint: eBay didn’t need to buy Skype just to allow people to talk to each other during auctions. Skype worked fine for that purpose without being owned by eBay. So that couldn’t possibly be the reason).

My theory goes like this.

EBay generates a lot of profit, which gives them a lot of cash, which they have to reinvest somehow or else give it back to the shareholders. If they give it back to the shareholders, the executives at eBay won’t be able to justify their ginormous salaries. So that leaves reinvestment.

A lot of big, profitable tech companies — Amazon, Microsoft, and Google — especially Google — hired carefully and have very good software development organizations. Especially Google. When they have extra money, they try to build something new. Whether it’s A9, .Net, or Gmail, it’s designed and built in-house in hopes of getting into a new business.

But eBay somehow got taken over by a swarm of MBAs way too soon and became an organization that was basically incapable of developing software. The evidence for this is the whole BillPoint/PayPal fiasco, in which eBay tried to create their own payment system, BillPoint, but found themselves so constitutionally incompetent at creating software by themselves that a scrappy team of outsiders at PayPal made a system that eBay users preferred 2 to 1, despite the fact that eBay repeatedly tried to force auctioneers into using BillPoint instead. (Eric Jackson wrote a very good book about it, The PayPal Wars.)

Full credit to eBay for recognizing their weakness, though. Since eBay realized they couldn’t build things, they have to use their cash to buy things instead. This is what MBAs like to do anyway. They don’t completely understand how to make companies but they do enjoy buying and selling them.

Good for eBay. The only problem is that this kind of acquisition, especially combined with Google’s blockbuster IPO, is leading people to think there’s a new bubble underway somehow, which is causing investors to try and figure out if del.icio.us (say) might be the next Skype because they’re both “Peer Production” or something. Hint: Skype has nothing to do with del.icio.us. Nothing. I don’t care if you manage to come up some architectural abstraction with that seems to include both. It’s not going to make del.icio.us worth $2.6b, because del.icio.us, architecturally, doesn’t have that “free phone call” feature.

Something Rotten in AdSense

Something Rotten in AdSense

Google AdSense is a system for web publishers of all sizes, from big newspapers to tiny bloggers. They sign up with Google to place a small box full of text ads on their site. You’ve probably seen it, but if you haven’t, check out Michael’s techInterview site for an example.

Advertisers pay Google to have their ads appear in little sidebars. Well, that’s not technically correct. Advertisers actually pay Google if anyone clicks on those ads. In turn, Google gives a percentage of the money to the web site owner. As a web site owner, you can make some serious spending cash this way. Popular sites make hundreds or thousands of dollars a month.

The minute you put AdSense on your site, you might start thinking, hmm, gosh, what happens if I click on the ads on my own site? Will I make more money?

Probably not much. This problem, called clickfraud, is a tricky one, and Google claims to have algorithms to prevent it. They won’t tell us what they are, justifiably, I think, because that would it easier to defeat the algorithms. Still, how would you explain complaints like this one from an advertiser:

When I activate my AdSense campaign, not much more than 5 minutes go by before they are all over it.. Multiple clicks from the same Internet IP’s in Malaysia, Poland, Hongkong etc. (I tried to exclude certain countries in my AdSense account, but they seem to go through proxies, so its not much use)..

Tried just now and within 2 minutes I had around 20 clicks, which were clearly fraudulent (they seem to use some kind of tool – no pictures on the site were loaded according to my log). I guess that was around €20, which went up in smoke there. The super-duper top secret internal Google clickfraud prevention system, which is supposed to deduct the invalid clicks at the end of the month, only seems to catch an extremely small fraction of the clicks, but not nearly enough. I can’t see which clicks I actually pay for in the invoice from Google, so it’s a bit hard to say.

When you connect the dots, what seems to be happening is that scammers are doing four things.

  1. First, they create a lot of fake blogs. There are slimy companies that make easy to use software to do this for you. They scrape bits and pieces of legitimate blogs and repost them, as if they were just another link blog. It is very hard to tell the difference between a fake blog and a real blog until you read it for a while and realize there’s no human brain behind it, like one of those Jack Format radio stations that fired all their DJs, or maybe FEMA.
  2. Then, they sign up for AdSense.
  3. Then you buy or rent a network of zombie PCs (that is, home computers that are attached to the Internet permanently which have been infected by a virus allowing them to be controlled remotely).
  4. Finally, use those zombie PCs to simulate clicks on the links on your blog. Because the zombie PCs are all over the Internet, they appear to be legit links coming from all over the Internet.

There might be a technical solution to this, although I can’t think of one offhand. The minute companies start cutting checks to “affiliates” at the end of the month that are based on nothing more than clicks, you’re bound to get the AllAdvantage phenomenon. AllAdvantage was probably one of the most spectacularly stupid business ideas to come out of the first Dot Com bubble: a company that paid you to look at ads. That’s because they fell victim to one of the better business ideas from the first Dot Com bubble: hiring armies of low-paid workers to look at AllAdvantage ads.

Eventually, it stops benefiting the advertiser, and the advertiser figures it out, and stops paying for the whole charade.

It is important to remember that AdSense is just one part of Google’s revenue. A more significant part is AdWords, which covers the ads that appear on Google’s own site. AdWords are still susceptible to some fraud, although you can’t make money clicking on those ads, so it’s much less of a problem. There is a minor problem where advertisers hire clickers to click on their competitors’ ads, which cause their competitors to waste money, but that’s penny-ante stuff, and rare enough that advertising through AdWords still works well.

Still, with Google rapidly approaching 50% of the global search market, they can double the number of searches they get on their home page, but not much more than that, unless they can get more page views somehow. Which is why they are frantically trying to sign up non-fraudulent web sites for AdSense (they call me every two months) and constantly seeking new sources of ad inventory, which sounds a heck of a lot like what the web portals of the 90s tried to do.

This is where Google is actually hurt by the long tail world of millions of small sites. It’s easy to evaluate the top 100 or 1000 web sites to make sure they’re reasonably legit. It’s much harder to monitor 1,000,000 blogs to make sure that none of them were machine generated for the purpose of scamming AdSense revenue. Still, I don’t think Google has a choice: I predict that you’ll see a massive expulsion of smaller AdSense sites by Google, and it better happen soon, or AdSense will ruin Google’s reputation among advertisers, something which could be deadly.

Architecture Astronauts Are Back

Architecture Astronauts Are Back

I’m starting to see a new round of pure architecture astronautics: meaningless stringing-together of new economy buzzwords in an attempt to sound erudite.

When I wrote my original complaint about architecture astronauts more than four years ago, it was P2P this and messaging that.

“That’s one sure tip-off to the fact that you’re being assaulted by an Architecture Astronaut: the incredible amount of bombast; the heroic, utopian grandiloquence; the boastfulness; the complete lack of reality. And people buy it! The business press goes wild!”

Now it’s tagging and folksonomies and syndication, and we’re all supposed to fall in line with the theory that cool new stuff like Google Maps, Wikipedia, and Del.icio.us are somehow bigger than the sum of their parts. The Long Tail! Attention Economy! Creative Commons! Peer production! Web 2.0!

The term Web 2.0 particularly bugs me. It’s not a real concept. It has no meaning. It’s a big, vague, nebulous cloud of pure architectural nothingness. When people use the term Web 2.0, I always feel a little bit stupider for the rest of the day. To quote the line from Billy Madison:

Principal: Mr. Madison, what you’ve just said is one of the most insanely idiotic things I have ever heard. At no point in your rambling, incoherent response were you even close to anything that could be considered a rational thought. Everyone in this room is now dumber for having listened to it. I award you no points, and may God have mercy on your soul.

Billy Madison: Okay, a simple no would’ve done just fine.

Not only that, the very 2.0 in Web 2.0 seems carefully crafted as a way to denegrate the clueless “Web 1.0” idiots, poor children, in the same way the first round of teenagers starting dotcoms in 1999 dissed their elders with the decade’s mantra, “They just don’t get it!”

I’ll do my part. I hereby pledge never again to use the term “Web 2.0” on this blog, or to link to any article that mentions it. You’re welcome.

And While I’m In A Bitchy Mood

Boy, am I glad I don’t work at Microsoft any more. The joy is gone when adding an easter egg is “immediate grounds for termination,” and a fun video they made for a conference doesn’t have a soda can in it because “none of the soda companies would give permission for their product to appear in this video.”

Still, it beats the hell out of listening to one of those podcasts about podcasting or reading one of those blogs about blogging. Unsub-frickin’-scribed.

And now, back to my normal sunshiny self.


VentureVoice ran an interesting (MP3) interview with VC Brad Feld, who built a consulting company and discovered that consulting doesn’t scale as well as products. “We determined that the profit level we were generating at 20 people, well, if we grew to 40 people we’d obviously double the revenue, our profit would probably be exactly the same.” He also talks about why it’s really hard to make the leap from consulting to products. Great interview.

While I’m on the subject, VentureVoice also ran an excellent piece about launching companies at the DEMO Conference.


Now I’m really excited… I saw the preview of the upcoming Project Aardvark movie and it’s simply amazing. You’re going to really dig this movie.


We’re accepting applications for summer internships (2006) at Fog Creek. The deadline is February 2006.

Microsoft Jet

I’m glad Microsoft is upgrading the Jet engine once again. Even though they tried to tell application developers that we needed to move to MSDE/Sql Server Express, we know that our customers want their data in a single file and don’t want to have to install and administer SQL Server just to get to that file.

In the minus column, Erik Rucker seems to be saying that the new Jet engine won’t be redistributable. “Developers can still program against the Access engine, but since it isn’t part of the system any more, application users will need Access on their machines.” Great. That makes it nearly useless to typical ISVs developing Windows apps, so I guess we’re stuck with the creaky old Jet 4.0.

I haven’t heard the whole story yet, but Erik also says that the main big new Jet feature is this clever way of doing many-to-many relations between tables that was done solely to benefit SharePoint. That’s nice, hon’, but it doesn’t seem like such a big deal. I’m hoping Erik has a Jobsian “just one more thing” up his sleeve.

What I’d much rather see is real, authentic, fast full-text search. Access (Jet) 4.0 just doesn’t have full-text search at all, and it will be pretty darn disappointing if Access 12 doesn’t have a good, instant full-text search feature that’s native and built in to the engine at the deepest levels.

When we work on FogBugz, whether with Access (Jet), SQL Server, or MySQL as the backend, we spend way too much time trying to get full-text search to work even moderately well. SQL Server 2000, even though it technically has a full-text search feature, actually has a very-badly grafted-on full-text engine that is poorly integrated, slow, unreliable, and assumes that programmers have nothing better to do than think about when the indexes are built and where they are stored. In production, the full text engine grafted onto SQL Server 2000 falls down all the time. In particular, if you use a lot of databases and frequently detach and re-attach them (what we were told we have to do in order to use SQL Server as a “file oriented” database like Jet), the full text search indexes get all screwed up. They rely on insanely complex chunks of registry data to associate indices, stored in files, with databases. It is almost monumentally difficult to backup and restore full text indexes.

The fact that it’s 2005 and I can’t buy a relational database from Microsoft that has full text search integrated natively and completely, and that works just as well as “LIKE” clauses, is really kind of depressing.

A very senior Microsoft developer who moved to Google told me that Google works and thinks at a higher level of abstraction than Microsoft. “Google uses Bayesian filtering the way Microsoft uses the if statement,” he said. That’s true. Google also uses full-text-search-of-the-entire-Internet the way Microsoft uses little tables that list what error IDs correspond to which help text. Look at how Google does spell checking: it’s not based on dictionaries; it’s based on word usage statistics of the entire Internet, which is why Google knows how to correct my name, misspelled, and Microsoft Word doesn’t.

If Microsoft doesn’t shed this habit of “thinking in if statements” they’re only going to fall further behind.


Visiting Cambridge (Massachusetts [USA]) for a party at Y-combinator made me jealous about how much more vibrant the hacker/startup scene is in the Boston area than it is in the New York area. Or maybe it just seems that way, because Paul Graham and his crew have done a remarkable job of attracting a first rate flock of smart young entrepreneurs by providing seed funding for a bunch of new startups. I probably talked to a couple of dozen people and they all seemed really, really smart and enthusiastic.

Is New York just lame compared to Boston? Or does it just seem that way? Why is that… is it because of MIT? or all the other high tech stuff going on there? Is it the high cost of living in New York? Or the fact that we have too many distractions, and it’s not a good place to concentrate on making a startup? Or maybe it’s because investment banks, hedge funds, advertising agencies, and media companies suck up all the oxygen? One bright young Harvard grad I met at the party has a job as the full-time, personal system administrator maintaining the PC of a famous hedge fund manager … (Dude, come work for Fog Creek… we can waste your talent in a much more laid back environment.)

Multitasking in the Workplace

New York Times: Big screens are good, interruptions are bad, etc. The stuff about how long it takes to pick up a train of thought after being interrupted is really cool; I’ve been claiming this based on my own experience but I never had anything remotely scientific to prove it. You can read the original papers by Gloria Mark on her web site.

She also tries to pin down whether it’s more productive to be “collocated” or not, by which, I think, she’s comparing the number of interruptions suffered by people in private offices vs. open spaces. The bizarre thing she claims, which could be true, is that open-space-dwellers actually get voluntarily interrupted less because people can quickly see whether they’re interruptible or not. She does mention that open-spacers do frequently decide to “interrupt themselves” to participate in another conversation that they overheard, something which is probably net beneficial for the team’s productivity but which drives me crazy.

I keep claiming that private offices are more productive than open space plans or cubicles, but the one advantage of open space which people keep bringing up is all the accidental, serendipitous knowledge transfer that takes place when everyone overhears everyone else. I think it’s not worth the productivity loss caused by an increased number of interruptions. This summer when we had four interns building a new product, we had to put them all in a single open space because we ran out of offices (oops). Watching the four of them work together, you could clearly see that ad-hoc, impromptu conversations were somewhat valuable, but you could also see that anything that interrupted one person (e.g. when I wandered over to discuss some tiny issue with one of the interns) it ended up interrupting everybody — those tiny issues inevitably became conversations with everybody, thus interrupting 3 people who had no reason to be interrupted and who would take an average of 25 minutes to return to what they were doing.

Also, I think that private offices have remarkable benefits in terms of your ability to attract and retain talent and people’s general happiness at work, which leads to increased productivity because you’re hiring better people and they’re happier. We’re doubling the size of the Fog Creek offices as soon as we can, and our goal remains to put every developer in a private office.


Paul Graham: “ The fact is, simplicity takes effort—genius, even. The average programmer seems to produce UI designs that are almost willfully bad. I was trying to use the stove at my mother’s house a couple weeks ago. It was a new one, and instead of physical knobs it had buttons and an LED display. I tried pressing some buttons I thought would cause it to get hot, and you know what it said? “Err.” Not even “Error.” “Err.” You can’t just say “Err” to the user of a stove. You should design the UI so that errors are impossible. And the shocking thing is, the boneheads who designed this stove had an example of such a UI to work from: the old one. You turn one knob to set the temperature and another to set the timer. What was wrong with that? It just worked.”

Fax to FogBugz

I’m rather pleased with myself that for the first time in Fog Creek’s history, purchase orders which arrive by fax will not actually be printed on paper and then moved from manila file folder to manila file folder to indicate their status. That’s because I changed our fax system so that anything faxed to Fog Creek automatically becomes a bug in our FogBugz database. Here’s how we did it.

First, we installed a fax modem in one of the servers in the closet. Remember fax modems? The top of the line models these days are about $16 and you probably have boxes of them in your attic.

Step two, we installed Snappy Fax Server on that server. Their network fax software costs $69 and does all kinds of handy things with faxes, but the only thing we needed it to do was receive incoming faxes and forward them to an email address.

Step three: set up a devoted email address to receive the faxes, and added a new Mailbox in FogBugz to check incoming email at that address and forward it to the normal customer service queue.

That’s all it took! Now when a fax is received, if it’s a purchase order, we just move it into a “Purchase Orders” project in FogBugz where we keep a complete history of invoices sent, payments received, etc. using FogBugz’s usual history mechanism. This will make it especially easy to keep a record of overdue purchase orders, what’s been done about them, etc., and now that they’re not in a file in my office, anyone handling customer service can quickly check on the status of a purchase order that a customer sent in.