How Microsoft Lost the Joel War

In which I commit the cardinal sin of criticising Joel 'My Hero' Spolsky.

[continues...]

You love Joel Spolsky. I love Joel Spolsky. He's hard not to love.

But don't be tricked by Joel Spolsky.

Joel is clever, knowledgeable and very convincing. Joel writes in a way that suggests he is your friend.

But is Joel Spolsky really your friend? Do you even know Joel? Is it possible that Joel sometimes uses his charm and wit to hide his true feelings and his true agenda?

I know! I know! Joel is one of the good guys, isn't he? But sometimes I worry about what drives him. Don't you?

His recent article 'How Microsoft Lost the API war' is damn good, very interesting, excellent food for thought.

And (like you) I've thought hard about this article. There's a lot of it, so I printed it out and read it on the bus. Then I read it again and underlined a few things with my pen. Then I read it once more and made notes in the margin. Finally, I read it yet another time and made notes in a little notebook I keep on me.

After all this, I've learnt a lot of things. But I've also come to some rather harsh conclusions.

The harshest conclusion is that Joel's article is a piece of FUD from a very frightened ISV (Independent Software Vendor), who has decided to try and invent the future.

Joel's fears (largely about finding and keeping a market for his products) lead him to build the following hidden argument.

  1. ISV's are the most important thing in the universe.
  2. ISV's feel intimidated by Microsoft, because it releases too many development tools.
  3. ISV's feel threatened by Microsoft, because it is the world's biggest ISV.
  4. ISV's who write web applications have less to fear from Microsoft.
  5. ISV's of the future will only write web applications.

Yes -- I've committed the "straw-man fallacy" by inventing an argument which Joel didn't really make. So i won't go on to derail this fictitious 'hidden argument.' I'll say this much: To the extent that Joel is saying these things, he's clearly misguided. Web Developers have even more to fear than Windows Developers. There are more malicious competitors (just a mouse click away) and guess what? Microsoft is still among them. So don't run from fear. Embrace fear. Acknowledge it. It's always going to be there.

Joel makes several valid and thought-provoking points throughout the article. My favourite points are:

  1. Microsoft has started breaking backward-compatibility. (for example IIS 6.0 has a different threading model)
  2. If you write a brilliant application for Windows, it may turn out that you were 'merely doing market research for Microsoft.'
  3. People don't upgrade their software often, and they don't buy new computers very often anymore.
  4. The biggest trouble with [VB/Java/.net] is shipping [the runtime/JVM/.net framework]
  5. Software Development is made waaaay more productive by Automatic Memory Management
  6. Asp.net is years ahead of other server-based software apps
  7. A "whole generation of developers" chose to write web apps over windows apps

I'm going to write down some thoughts on each of these points.

1. Microsoft has started breaking backward-compatibility. (for example IIS 6.0 has a different threading model)

Microsoft should stop doing this.

Every morning when a MS developer wakes up, she should say to herself:

Then the developer should take a long deep breath, look in the mirror and add:

2. If you write a brilliant application for Windows, it may turn out that you were 'merely doing market research for Microsoft.'

Microsoft should stop doing this.

Every morning when a MS developer wakes up, she should say to herself:

Then the developer should take a long deep breath, look in the mirror and add:

3. People don't upgrade their software often, and they don't buy new computers very often anymore.

So true. We let our computers and our software get woefully, woefully out of date. And often we don't upgrade the Operating System, or our biggest applications (like Office), until we buy a brand new computer.

But when we do buy a new computer we almost always stick with the same platform and we're usually amazed by the improvements. Ever seen someone go from Windows 95 to Windows XP? There's a lot of ooohing and ahhhing. Some cursing too, but mostly ooohing.

I think the shelf-life of a given home or business PC's will still be considerably less than that of a mainframe. Upgrades still happen, even if they're not as fast as microsoft wants.

4. The biggest trouble with [VB/Java/.net] is shipping the [runtime/JVM/.net framework]

Amen to that. This is something MS is going to have to make easier and easier if they want desktop Win Forms to take off.

But notice that this is identical to the biggest problem with HTML 4 (and SVG), i.e. 'How do you get people to upgrade their browser?'

5. Software Development is made waaaay more productive by Automatic Memory Management

Amen to that too.

I like how he points out that C# owes more to VB than it does to C++. With a little rebadging it could be called "VB.net: Squiggly Bracket Edition".

6. Asp.net is years ahead of other server-based software apps

You're right! You're so damn right! Asp.Net is brilliant! It leaves Asp, Php and every other damn thing so far behind in the dust that they look as useful as a frothy cup-full of goat's teeth*.

7. A "whole generation of developers" chose to write web apps over windows apps

Oh. That's pretty sucky. Web Apps are difficult to write well, so I pity us. Luckily we should all start moving to asp.net pretty soon now.

People who choose to write asp.net applications find it easy to write .net windows desktop applications as and when the need arises. This is because Asp.net applications are really a special, quite tricky, subset of Windows Applications. So the next generation of developers will automatically start falling back into the Windows Development world, even if they do only write asp.net apps.

And in a XAML world (at the moment i tend to believe that the XAML world will get here eventually) the conceptual gap between Web Forms and XAML Forms will be smaller. Don't hold your breath waiting for that. But it may pan out to be true.

Now, to get on with the anti-joel point of this blog entry. There are several points he raises that I'm not convinced of:

  1. Microsoft's crown strategic jewel [is] the Windows API
  2. Sharepoint [is] a veritable panoply of external dependencies each one of which is going to be a huge headache when you ship your application to a paying customer and it doesn't work right. the technical name for this is DLL Hell.
  3. The new winners in the application development marketplace will be the people who can make HTML sing.

1. Microsoft's crown strategic jewel [is] the Windows API

No, their crown strategic jewel is their gigantic user base. The user base is the asset. Until they lose that, they've still got the crown strategic jewel.

And no, it wasn't the API that got them there. I don't buy that for a second. They got there through lots of things: clever marketing, hard work on the office suite, industrial might, backroom deals, competitivness to the brink of criminality, purchasing other software companies, business savvy, luck, a tight grip on their IP, a user-focused culture (sorry but it's true) -- many crucial things that we will probably never fully learn about, but things that have little to do with the API.

2. Sharepoint [is] a veritable panoply of external dependencies each one of which is going to be a huge headache when you ship your application to a paying customer and it doesn't work right. The technical name for this is DLL Hell.

Joel is quick to spread a little FUD against the competition.

Sharepoint simply doesn't lead to 'DLL Hell'. But it is a rocking great product and a potential threat to sales of his CityDesk product. Sharepoint is a category-killer in the knowledge management/intranet portal space, if you can afford it.

[Disclaimer: the company I work at sells Sharepoint (and sells competitors to it, too). Sharepoint sales aren't related to my own role as a developer; and notably, my employers don't read this blog.]

3. The new winners in the application development marketplace will be the people who can make HTML sing.

Some of the winners may make HTML sing. But that's not where I'd look for most of the innovation.

The most innovative new consumer applications tend to be new desktop/server applications. Some recent examples of this include:

  • P2P software
  • Instant messaging software
  • RSS aggregators
and so on. Even though these are all TCP-IP based examples, they all rely on stepping outside the browser.

A lot of new categories, and new winners in the desktop app arena are yet to be invented. Please, developers, Think outside the browser. This is true regardless of what platform you work on, what rank you are, what size your organization is.

Actually, I like that point so much I'm going to repeat it in BIG letters and stop there.

Please Think Outside The Browser

cheers

Leon

[* Apologies for the Goat-Teeth similie. I've been reading too much Scott Adams lately.]

 

MMMS: A Map of My Mind-Space

crap wot's on my mind

  1. CleanSweep.Org

    A 100 point test for your life.

  2. Book Lust

    I love a good book. And a book about good books is extra loveable.

  3. Joel API

    Yes, i'll write about this laaaater...

  4. Rss 4 Everything

    The realization that 'Hey... I can use RSS to publish changes to any document management system, any database table, any file system, any store of any sort... and not changes -- but additions, or better yet, deletions too!' inspired by Greg Reinacker's Event Log Rss Feed

  5. Browser Apps -- the leon test

    done.

  6. Instant-Messenger App as AI Interface

    Greg Reinacker again and travelmessenger (who combine a fascinating idea with a shockingly bad promotional website).

  7. 'Boycott Bad Browsers' day

    An annual day when web sites deliberately fail for browser's that don't correctly implement w3c standards. (invented by my inner-nazi)

  8. 'Boycott Bad Html' day

    An annual day when we (the web surfers) deliberately avoid websites that don't correctly implement w3c standards [helped by some kind of browser plug in]. (also invented by my inner-nazi)

  9. Smoking cigarettes has now become so thoroughly evil, so universally despised and so commonly lambasted as wrong, stupid and rude, that I am utterly amazed that there is a single 13 year old girl on the planet who isn't partaking of a cigarette at this very moment.
 

The um, Leon Test?

Joel is asking, (ostensibly on behalf of the WHATWG) what new features will allow HTML4 to make better web applications.

To try and fix a stake in the shifting sands, i'd like to propose a milestone for measuring 'better' web applications.

Web applications will be better when you can write (and deploy to all competing new browsers) compelling implementations of all of the following:

  1. A spreadsheet
  2. A paint program
  3. A wysiwyg word processor
  4. An integrated development environment

[continues]

What features does HTML <4 lack for writing such applications?

Many bloggers have made excellent suggstions. Stand outs include richer event models, and joel's mention of 'platform neutral' device contexts (for thing's like painting). One thing I'm keen for:

  • A simple, reliable and unobtrusive way of performing 'background-save' during form editing.

The question of Why you'd want to write such applications in a browser is a valid one -- but not something i'm willing to discuss (or argue about) just yet, by the way. This is just a thought game for me anyhow. (by 'this' i mean 'life itself').

cheers
 

For the Love of God, Enter this Damn Competition Already!

Free Prizes for the Taking!

Roy's Gettin' Cranky! Only TEN people have entered the VS.Net Add-in competition he's hosting.

Given the low number of entries, and the excellent prizes, the expected Return on Investment (or 'Return to Player' in gambling parlance) is very very high.

If you know how to write a VS.net add-in, (however simple), whack it together and send it in!

If you don't know how to write a VS.net add-in, learn!

As Woody Allen says:

Ninety percent of success in life is just showing up.

I've already posted some ideas for this competition.

I've seen in the past that for some strange psychological reason developers are very reluctant to enter competitions. Hence you get a huge ROI when you do. (For example, Scott Hanselman won $2K for 15 minutes work in the Tablet PC competition).

So Please For the Love of God, Enter this Damn Competition Already!

[yes i'm trying to convince myself mostly]
 

Hot New Feature!

I'm slowly adding more features to this website. Last month I changed the format so that comments appear at the bottom of each article, rather than in their own page. Now your comments are much more likely to be seen.

But I'm not resting there. No siree. What I'm interested in is backwards-compatability. What if your browser is offline? Or not internet-enabled? Thanks to a quite complicated network of postal services throughout the world, you can now leave a comment no matter what.

To leave a special backwards-compatible comment, please print out the form below, write your message on it by hand, put it inside an envelope, affix postage-stamps and send it to:

  Leon Bambrick
c/o PO Box 551
Indooroopilly Qld 4068
AUSTRALIA

I've updated the About page to include that address, so that generations of future Luddites can benefit from the miracles of postage.

Or if you prefer, you can use the on-line version... it's your choice....

 

Lowering the ceiling instead of the floor

David Truxal points out how Visual Studio Hampers VB.Net

This again brings to mind a quote from Simpson's episode "You Only Move Twice", where Bart is stuck in a remedial class:

Teacher: Okay. Now, everyone take out your safety pencil and a circle of
paper. This week, I hope we can finish our work on the letter
"A".
Bart: Let me get this straight. We're behind the rest of our class
and we're going to catch up to them by going slower than they
are? [making "crazy" gesture] Cuckoo.
Kids: [imitating him] Cuckoo. Cuckoo. Cuckoo. Cuckoo.

The "My" namespace, by contrast, is a much cleverer solution to essentially the same problem.

Yes, i had to do a parody of this dialog.... okay, here it is... sorry paul! yet another difference between VB and C#
 

Y2-GAY: Government Approves Third Gender; DBA's Panic!

(don't you hate it when you think of a y2k parody five years too late?)

The IT world is in shock today, after an amended piece of legislature officially classified homosexual males as a new, third, gender.

Chongo-developers and cowboy-hackers who previously hard-coded only two genders into their applications are now reaping the benefits as they are called out of retirement to alter software algorithms written as many as forty years ago.

Database Administrators throughout the Nation are swinging into action adding the new row to their lookup tables, or dropping and recreating CHECK constraints.

Meanwhile, the Association of Future-Proof Software, who have long advocated the inclusion of three 'Spare' entries at the end of every look up table, have issued a steady stream of smug press releases.

A special shuttle mission will make the perilous mission beyond Mars to track down and re-program the 'Angel-1' deep space probe, whose internal lookup tables erroneously contain only two genders. Although the oversight is considered unlikely to cause any problems during the unmanned probe's exploration of the furthest reaches of the solar system, officials are not willing to take any chances. And a team of specialist navy seals will journey deep into the Atlantic trench, over four miles beneath sea level, risking lethal pressures and unknown beasts with shiny dangly things on their foreheads, in a desperate mission to refresh the EPROM of a twenty-six year-old fissure monitoring system.

Leading insurance companies have already announced that they will not cover software malfunctions in any tech agency that doesn't immediately address the so-called Y2-Gay bug.

The legislature in question, originally designed to deal with lengthy waiting times at gymnasiums adjoining hair salons in ritzy suburbs, was amended to include the new gender at the last moment by radical left Senator Chasey Rhoderum. Chasey, a long time activist on issues regarding database-integrity, is already warning about the possible inclusion of a fourth, fifth and possibly a sixth and seventh gender. The days of the week have fled in terror, as have the months 'June' through 'September'. 'Unknown' continues it lengthy campaign for equality with 'True' and 'False'.

 

Embedded-Sql without Sql-Injection

Do this and you can be legally shot:

So do this instead, at the **absolute** minimum:

(You should still be smacked around for not encapsulating your functionality, not using tiers, and not using a sproc, but you will not be shot)

To learn why the first example is so much worse than the second, read about Sql-Injection.

 

Microsoft Crumbles Under Blogging Pressure

In a stunning backdown by Microsoft, a new single-developer edition of Visual Studio has been announced which specifically includes support for Test Driven Development.

While the blogging community are rejoicing that they have forced the software-giant's hand, some analysts fear that this new sense of power amongst bloggers could corrupt them in the same way that a young Anakin Skywalker was corrupted by the 'force'.

Meanwhile, the name of the newly-announced product may indicate sour grapes on the part of microsoft.

(leaked via my usual sources*)

Amongst other custom features, the splash screen is accompanied by the sound of a baby crying, and the "readme" file explains how to launch a denial of service attack against Peter Provost.


[since sarcasm is officially dead, i have to point out that the above post is actually a hoax.]

[my actual opinion, since you're still reading, is that unit-testing should have been slated for all editions from the start, and (despite their excuses to the contrary) the fact it wasn't indicates some kind of fundamental misunderstanding about what test-Driven development is, and who performs it (i.e. the same developer who writes the code)]

[By 'usual sources' i mean ms-paint and expression 3.]

 

Einstein Quiz -- Winners Announced

  1. CPresson
  2. Grant Queenin
  3. Lance Ahlberg

Thanks to those who sent me answers...

Sorry the winnners weren't announced sooner: this entry was written, but lost, during the moved from the previous domain.

cpressonIntellectual giant CPresson is the winner of the very challenging Einstein Quiz, published in January.

I've included a cross-section of C Presson's brain, in which you should note his obvious mental prowess:

analysis of C Presson's brain, demonstrating extreme mental prowess.

Runner-up is mental heavyweight Grant Queenin.

And third by a whisker is the clever Lance Ahlberg.

There is no actual prize -- but should I ever invent a faster than light spaceship, then I promise that CPresson will be allowed to borrow my old car for a week. Grant can have it for a day. And Lance, well, he can drive it up and down the driveway for about ten minutes. Third is, after all, third.

If you are searching for the answer to the Einstein Quiz, well, I'm not going to give it to you. It is, however, available on the comment page of the quiz itself.