Coding Horror

programming and human factors

Microsoft Doesn't Trust .NET

Richard Grimes recently posted an Analysis of .NET Use in Longhorn and Vista, wherein he draws two conclusions:

  1. Between PDC 2003 and the release of Vista Beta 1, Microsoft has decided that it is better to use native code for the operating system
  2. Microsoft has shown no intention so far to use .NET on a large scale on XP or the server versions of Windows, neither in the operating system, nor in their major revenue generating applications.

I agree with the first point. If you're writing an OS, you need to get down to the metal. Managed code trades off CPU cycles for protection from buffer overruns and other C++ nastiness, but I'd rather spend those CPU cycles on virtualization to protect myself. That said, there is Microsoft's Singularity project, which is an OS written entirely in managed code.

But the second point is just plain wrong. The Windows XP Media Center Edition functionality was, and is, written in .NET! Just ask Joel Belfiore:

From a technical standpoint, Media Center user interface functionality is almost entirely written in C# managed code, on top of native Win32 and DirectX Windows XP components. These operating system components render video and draw fluid animations smoothly on the screen at 60 frames per second, with hardware acceleration and MPEG decoding provided by 3rd parties. Getting all these technology components to work together well was our biggest challenge.

Windows XP Media Center Edition happens to be one of the fastest selling versions of Windows at the moment:

Sales of Media Center have reached the 6.5 million mark in just three years.

MCE is a superset of Pro, in that it is based on Pro (it has IIS, etc) but with added MCE functionality. Now check out the newegg.com Windows pricing:

XP Pro : $139.95
XP MCE : $114.95

So you're getting more functionality for less money. Hmm. I wonder which version of Windows is going to sell faster?

I would say the 6.5 million sales of XP MCE to date clearly indicates "[Microsoft's] intention to use .NET on a large scale on XP", wouldn't you?

Discussion

Programmers as Human Beings

It's remarkable how much you can learn from other programmers. Not by reading their code, mind you, but by realizing that programmers are human beings. Nowhere is that more evident than these two collections of interviews with notable programmers:

Out of Their Minds: The Lives and Discoveries of 15 Great Computer Scientists   Programmers At Work: Interviews with 19 Programmers Who Shaped the Computer Industry

Both Programmers At Work: Interviews with 19 Programmers Who Shaped the Computer Industry and Out of Their Minds: The Lives and Discoveries of 15 Great Computer Scientists are packed with amazing insights, even though these interviews are now more than 15 years old.

For more of the human side of software development, I also recommend this list of real world programming stories.

Discussion

Selling Usability

It can be very difficult to sell usability, as Jared Spool notes in this 2004 interview:

I learned quickly that business executives didn't care about usability testing or information design. Explaining the importance of these areas didn't get us any more work. Instead, when we're in front of executives, we quickly learned to talk about only five things:

  1. How do we increase revenue?
  2. How do we reduce expenses?
  3. How do we bring in more customers?
  4. How do we get more business out of each existing customer?
  5. How do we increase shareholder value?

Notice that the words 'design', 'usability', or 'navigation' never appear in these questions. We found, early on, that the less we talked about usability or design, the bigger our projects got. Today, I'm writing a proposal for a $470,000 project where the word 'usability' isn't mentioned once in the proposal.

If you can't talk about usability, what do you talk about? How many customers you're losing. In the internet era, the cost of switching to a competitor is approaching zero. If your site is more difficult to use than your competition's, you're in trouble. A recent A List Apart article highlights the dramatic results of a usability overhaul:

We tested a subscription route that [..] asked for a lot less information on the subscription page.

The outcome? An increase in conversion rates of over 500%. That is to say, of the people who arrived at the subscription offer page, we increased the number who actually signed up by over 500%.

And while we sold a little harder -- and offered an incentive at the back end -- the primary cause of the increase was almost certainly that we reduced the friction during the sign-up process. We offered more and asked for less.

With another partner we cut back on the number of pages involved in signing up for a paid subscription service from nine to three. (Yes, a nine-page process was more than excessive.) The result? An increase in sign-ups of 293%.

You may have trouble selling usability improvements-- but I don't think you'd have any trouble selling a three to five fold increase in sign-up rates.

Discussion

In Praise of Good Design

Which pill bottle would you rather use?

A comparison of pill bottles

The rightmost bottle was designed by Target to address the shortcomings of traditional pill bottles. And you probably decided which pill bottle you liked best within a twentieth of a second.

When I suggested redesigning address input in web forms, there was some resistance. Current web forms are good enough. Yeah, they have some shortcomings. But why change what works? Why change what people are used to?

Why did we have to wait 50 years for a better pill bottle? Because the shortcomings of pill bottles weren't important enough to justify a new design? I think that's a crock. We should constantly be striving to overcome existing shortcomings with better designs.

Donald Norman has a page with examples of well-designed products that he calls In Praise of Good Design. Did the kitchen whisk need to be redesigned? No. Is it better because it was redesigned? Absolutely.

Discussion

Firefox Excessive Memory Usage

I like Firefox. I've even grown to like it slightly more than IE6, mostly because it has a far richer add-on ecosystem.

But I have one serious problem with Firefox:

Massive Firefox memory usage

This screenshot was taken after a few days of regular Firefox usage. That's over 900 megabytes of memory for a single, non-tabbed instance of Firefox.

What's going on? Well, according to my tests, Firefox never seems to release any of the memory it uses-- until you close all instances of Firefox. If you spend enough time browsing the web, and never close Firefox completely, you'll consume nearly a gigabyte of memory!

Because I often keep at least one browser window open for research or reminder purposes, this bites me a lot. I'll look at Task Manager and Firefox will regularly be gobbling up over 400 megabytes. This isn't uncommon. It's normal.

I don't ever recall having this problem with IE 6.

Of course, I can close all instances of Firefox and reduce memory usage back to zero, but why should I have to? I've read this techweb news article on the controversy around Firefox and memory usage, and I've implemented the workaround suggested in that article:

  1. Within Firefox, enter "about:config" (minus the quotation marks) in the address bar
  2. Scroll down to the entry "browser.sessionhistory.max_total_viewers" and double-click it.
  3. In "Enter integer value" field, type..
    • "0" to disable the cache
    • "1" through "8" to set the maximum cache as 1 through 8 previously-viewed pages
    • "-1" to return the cache to its default

Sadly, this fix did very little to address the problem. The above screenshot was taken after setting that value to 1!

Discussion