How do they <i>do</i> that?

blog,

Technically, this does not seem possible.

You attend a two day course -- and they give you a pen to use.

The pen is a beauty. It looks nice. It works well.

Everyone's happy. No one gets hurt.

The course finishes and you pocket the pen. Naturally.

Next day, the pen stops working.

I can't find any kind of microchip inside it. And it doesn't seem to be out of ink.

Yet they do this trick every time I get a free pen!

Explain that, ye wise blog-reading public.

 

Using Books for Support and Technical Elevation

Maintaining a technical library in your office can elevate more than just your mind. What book do you use to prop up your monitor?

It's important to find the fattest book, giving the most lift, which is used least frequently, resulting in the least disturbance.

The general solution to the Monitor-Prop problem can be found by seeking a maximum to this equation:

Suitability(Book) = Thickness(Book) * Estimated_Days_Since_Last_Used(Book)

When I crunched the numbers through Excel Lite, the hands down winner was:

"Special Edition Using Access 95 - The Most Complete Reference"

(from QUE publishing.)

At 1300 pages, with over 1500 days passing during which the book was called into action exactly zero times, I challenge you to find a better Monitor-Stand.


After-blog-mint:

Rory is alive! Good news.

 

Triggers: Very Good, or Very Bad?

A colleague said this morning "I try to steer clear of triggers"

Part of me immediately thought: "That's stupid! Triggers are powerful and they should be used wherever they're the best tool."

But then a calm inner-voice rose up and reminded me of the dangers of triggers:

"With great power comes great responsibility."

(more on trigger-thinking...)

Testing and maintaining a trigger-happy database is comparable to waltzing through a jungle full of trip-wires, booby-traps and landmines.

Hence, as a general rule of thumb we should try to steer clear of triggers.

Before implementing a trigger, ask yourself this much, at least:

  1. "Is there an alternative technique?" (i.e. a technique that doesn't require a trigger)
  2. "Is the alternative technique no more than twice* as complex as the trigger technique?"

[* 'twice' may not be the figure you prefer -- determine a suitable factor for your own methods.]

If the answer is "no" to either of those questions then it's Trigger Time baby!

I do love a good trigger!

One little tip: you might want to have some nice strongly-typed methods in your DAL for turning the triggers on and off at will. [Note to self: this is particularly important when working on a HR system with a trigger that sends email notifications for application-level events (such as termination of employees) to board-level executives. Forgetting to disarm such a trigger during testing might cause undue stress to your boss, their boss, their boss's boss, and in turn, to yourself.]

 

Congratulations Greece!

A fantastic result for Greece in the Euro Cup. It's impossible not to be happy for them.

Several hundred cheering Greek Australians surrounded my bus in the city this morning. Any boss who fires a Greek for celebrating today instead of working, is a right bastard.

Just busy cleaning certain jokes out of my mental cache, for example:

Q: Why can't Greece ever win a game of football?

A: Because every time they get a corner they build a fruitshop.

Such thoughts have no place in my mind anymore.

Good work Greece; Bring on the Olympics!

 

A Case of the Scobles

blog,

I've caught a strong case of the Scobles.

Thanks Robert -- now I almost feel bad about referring to you as "the blogging-equivalent of a hyperactive, ginger-haired tap-dancing 10-year-old".

Welcome to any visitors who've arrived via Robert.

 

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.