A life’s work…

What were you doing 20 year’s ago… and where will you be 20 years from now… and how is what you’re doing today going to get you there?

It’s not often you can see a direct line between aspects of your past with aspects of your present, and if you can, it’s not usually a direct “golden path”, more a meandering curve perturbed by major random events of one’s life.  Looking at the ‘biographies’ of great people it’s also rare to find such direct callings.  But recently I’ve seen video of such a journey.

Recently I’ve become obsessed with the TED videos.  Great talks by great people, which will leave you inspired…  The range of topics covered is amazing, as are the presentations themselves.  Microsoft unveiled it’s Photosynth (seadragon) technologies at one such talk, and if you look at a talk from a few years ago you can see where Microsoft’s Surface technologies came from, but Microsoft is just a minor player in the history of TED talks.  Other amazing ones include talks that introduce string theory, chronicling the spread of aids in Africa – and making remarkable predictions as to the epidemic’s future, coverage of news coverage, how to inspire creativity, amazing presentations on statistics of world economies- and how we can eliminate poverty with them.  One of the most thought provoking ones I’ve seen recently was about how the US needs to re-structure it’s military to handle situations like Iraq. (Al Gore’s movie An Inconvenient Truth supposedly came from his TED presentation)

So it was with some interest that I watched a video of a TED talk from 1984, by the the guy who would later create the One Laptop Per Child project (OLPC).  The OLPC project has recently become mired in infighting and bickering, but they’ve also recently unveiled plans for version 2.0.  The goal is to produce a small computer for children, that can replace Text books in remote and developing countries, as well as connect to the Internet so people from around the world can self teach… all for a budget of at or under $100 USD… Considering that countries like China and Brazil now spend on the order of ~$50 per child  for text books for children, this meta text book would be not that unfeasible.   Think of a hitchhiker’s guide but for school children.


Think about what’s being shown in this video, and when it was created.  In 1984 Steve Jobs introduced the world to the Macintosh.  A revolutionary computer that showed the world how to use a mouse, and the beginnings of digital video on a computer (the Mac’s famous Welcome screen), and really- it was most people’s introduction to a computer that could fit inside your house, let alone one that could fit on your desk.   The Internet, world wide web, and wikipedia weren’t even conceived of yet, but looking at that video we can see the start of hyer-linking, interactive learning, and touch based computing.  Don’t forget the touch based surface that that Microsoft Surface is based on was shown at TED in 2006… Yet here its shown in a video from 25 years ago!

Peak WEB

Incase you didn’t realize the title of this post and the previous one – PEAK CRUFT – are a reference to Peak Oil, and in all 3 we can expect drastic changes.

Again I’m referencing the Joel on Software article about Martian Headsets… which recently has received quite a bit of flack.

There’s a certain (large) segment of web developers who are feeling full of Schadenfreude at IE8’s (potential) troubles, and I must admit I myself am among them (see one of my previous posts).  The upcoming free for all that will be IE8’s introduction will cause mass amounts of confusion (if current plans are carried out), but those of us who are forced to work in webdesign, figure that Microsoft has really just made it’s bed, and now it has to sleep in it.

Quickly now how many web browser can you name?

  1. Telnet
  2. Netscape 3
  3. Netscape 3.1
  4. Netscape 4
  5. Netscape 4.2
  6. Netscape 6
  7. IE 3
  8. IE 4
  9. IE 5
  10. IE 5.5
  11. IE 6
  12. IE 7
  13. IE 8
  14. Mozilla
  15. Firefox 1
  16. Firefox 2
  17. Firefox 3
  18. Flock
  19. Camino
  20. Safari 1
  21. Safari 2 (WebKit)
  22. Safari 3
  23. Safari Mobile (iphone)
  24. Firefox light
  25. Opera
  26. Opera Light
  27. Assorted Mobile device and cellphone browsers
  28. oh… and Lynx

And that’s just off the top of my head… essentially there are for all intensive (math) purposes an infinite-1 number (-1) of web browsers, and for each web browser there’s been basically an infinite number of web pages designed and tested ().  Using my horrible analysis of algorithm’s knowledge from Uni that works out at:

Ω(∞) *  Ω(∞-1) = Ω(∞^2) = ∞ 

(and yes I realize I should use n instead of ∞, but it’s Ω notation ie. worst case)

That’s right, there’s an Order infinite number of combinations of web pages and browsers.  Looking at the graphs in the Martian Headset article this is quickly apparent by the lines in the pictures.  And since all the above browsers implement the same things slightly differently (there’s no compiler to tell you you’ve created a mal form web page).  Granted a large fraction of the above web pages can be removed by attrition, as well as limited support of the differing web standards (html/xml/xhtml), but it doesn’t change the big-O Order (magnitude) of the problem.

So what to do?  That’s the one point the Martian Headset post is short on… He spends hundreds of words re-iterating the problem, but without proposing a solution.  Joel’s solution? Capitulate, and let the current broken standard of the web continue and fester.

The thing is that, as an IE 8 user he’s oblivious to the prejudices experienced by minority users.  Like racism, it’s very hard for members of the majority to understand the pain that others in a minority experience (ok, racism might be a stretch, but point remains the same).  Members of the majority can ignore problems, and trust that the might makes right argument will prevail with respect to web browsers and web standards.  The problem here is that with IE and the last couple of versions, the mob has been heading for a cliff.

Again back to the Martian Headset post, Joel talks about how there’s no standard implementation and the standards documentation is difficult to follow.  I’m not about to argue that the W3C documentation isn’t hard to follow, it is.  But it’s complicated in the way that a legal contract is complicated: it eliminates all possible forms of wiggle room.  And really that’s what a standards document is.  It’s a contract that you have to follow if you want to properly implement something, the thing is there’s no penalty (besides marketshare) if you don’t follow it.  And by standards documents standards it’s ridiculously easy to read.  Compare it to the TCP/IP RFC (and that’s one of the simpler RFC’s out there).  Standards documents aren’t designed for vanilla web developers.  They’re designed for web browser developers.

The thing is that these browser developers are infact translating these documents into different standard implementations that other browser developers can compare their work to.  The first big step in this direction was the old Netscape standard documentation – that was all but ignored by Microsoft, followed by the more recent Acid tests (Acid 1, Acid 2, Acid 3), and kudos to Microsoft, they’re following suit.  This can only lead to good things, and don’t be fooled by 3 “small” acid tests vs. Microsoft’s 700 unit tests.  The acid tests each have hundreds of sub tests, and only if they all run properly will you see the proper output.


There’s only so much bailing wire and bubble gum you can tack on before the thing is going to just fall apart. And the creaking you’re hearing is Windows.


Yesterday someone who shall remain nameless forwarded me an article about the recent IE flamewar

Joel does a great job explaining what the issues are, and what the problems are as well as where we stand currently.  He also briefly touches on stuff he’s talked about before, mainly why Windows 95 was so great (which coincidently just so happens to be when Joel of Joel on Software last worked for Microsoft).  His argument is that basically 1/3rd of the code in windows 95 was compatibility stuff so that code that worked on older versions of windows still worked on windows 95.  This includes code to make horrible horrible hacks that worked before still work on windows 95.  His rant about the idealists and the pragmatists is basically re-iteration of this point.

And it’s a valid point.  The reason Windows has dominated to this point is because what worked on windows 3.x, worked on windows 95, and what worked on windows 95 worked on XP.  But things are starting to break down…

Eventually in all software you have to give up on what you had before and start fresh.  Microsoft has so far managed to avoid this up to this point.  Other manufacturers have already run smack dab into this problem.  Apple ran afoul of this when they transitioned from OS9 to OSX, Linux hits this on a regular basis, but usually on a much smaller scale every time a new major revision of the kernel is released.  The fact that Microsoft has managed to avoid this to this point is a testament to the people they’ve had working with them, but it’s become the expected behavior.   And that behavior is going to come back and bite them in the ass.

When you do new things, you have to expect some of the old things not to work with your new things.

For all intensive purposes windows has become


on a highway of supercars

There’s only so much bailing wire and bubble gum you can tack on before the thing is going to just fall apart.  And the creaking you’re hearing is Windows.

Vista is a bastard child.  Microsoft realized around windows 2000 that they needed to start fresh and crated a decent operating system, but due to marketing and time they had something that was windows XP underneath and all shiny on top.


To add all the new features they’re going to need for a next generation Operating system they’re going to have to start fresh.

Tabula Rasa (clean slate – not the video game)

With no back ties to previous cruft they can design features that are un-encumbered (new graphics layers, new file system layers, new registry stores, etc).  This is also why Microsoft has been focusing on Virtualization technologies so much lately.

Once again Microsoft is cribbing Apple’s hard earned lessons.   When Apple transitioned to OSX they added an emulation layer that allowed the modern operating system, to run the old broken OS9 inside it.  It wasn’t perfect, and it allowed Adobe (one of their then premier partners) to be lazy and wait 2 years before issuing a new version of Photoshop for the new OS and the new Intel architecture, but it meant that almost all programs worked, (albeit slowly).

Once again to see the future of the windows platform you only need look as far as the closest mac.

The only possible way Microsoft has of preserving functionality with newer and newer versions of Windows it to emulate the previous versions.  In the past that meant running code that had been designed to mimic older code, but windows has become so huge it’s become required that you run the entire operating system as a separate process in a separate emulated environment.

Microsoft is once again trying to shrink the foot print and the noticeably of virtualization with their new HyperV technology…. basically only emulating the parts of the operating system that a program  accesses so that your program thinks it’s running inside windows 95, when it’s actually running on the latest and greatest version of windows, without spinning up a version of Windows 95 inside a VPC.

This is great, but it means in your next install of Windows, you’ll be installing every version before it (in a massive 40Gig or so install – at least that’s my guess of the what the final install will be), but storage is cheap.  The question is will Microsoft charge you for the pleasure of running all their crappy old code?

Karma Police

So today MIX started.

I watched the live keynote, which really was focused on developers like me.

Silverlight 2 beta 1 was released, which is a big deal, but not what I found most interesting.

They had the Team lead for Internet Explorer 8 on stage to present and reveal IE 8 for the first time. Recently IE 8 has been in the news because of announcements in the team blog about standards used, as well as certain design decisions.

(Let alone that I find it extreeeemly interesting how the revision cycle for IE has accelerated dramatically since Firefox has started hitting critical mass)

The man on stage (I’ve forgotten his name already1) mentioned what I believe has to be the best quote about IE and web development evar:

My son knows I work on IE, and he sees these things about security on the web, and he asks me ‘daddy did you break the internet?’. My response is no, but if you’re a web developer you might think differently.


The guy on stage had an agenda of 8 items about IE 8 (get it?, yeah I didn’t laugh either). These prob. don’t match the guy’s slides, but these are the points I came away with:

Part 1 was the announcement that IE 8 would support CSS 2. Which was A) big news, so big they announced it a few weeks back B)Important to web developers C) met by crickets in the audience and D) deserved a better response.

Part 2 was another huge announcement. IE 8 would be changing it’s rendering model so that it defaults to Standards based rendering by default (again met by silence from the crowd). This means that pages that look bad in current versions of Opera, Safari, and Firefox, but look ok in IE 7 will be busted in IE8. This means the web developers should be able to design a web page that would work on 99% of browsers…. this is HUGE, this hasn’t been possible since IE3 and the days of Netscape 3, back in 1996!!!!

Part 3 User interface changes for ajax and HTML 5.

SAY WHAT?!?!?!

The working draft for HTML 5 was only released a few weeks ago and is still undergoing rapid changes (for a list of what changes see here). Fine, great, your starting to implement it, bully to you. But don’t release an incomplete implementation, let alone an incomplete implementation due to an incomplete standard in a full mark version of the browser to the public! This is how Javascript got borked in the version 3.0 browsers!!!!!! Bluetooth was set back a decade due to this (and is still causing issues between MS’s driver implementation and device specific drivers). CD/R vs CD+R is the same thing. Implementing a half finished standard in a public release creates 2 separate similar named but completely different specs. Attempt 1 beta and finalized version. The only way Javascript was fixed was by re-spec’ing the language as EMCA script a decade later. Let alone all the browsers that make attempts to support document.all and the other non standard DOM implementations.

Part 4 and 5 were about Activities and WebSlices… I’m not too sure what to say about these yet, but I’m worried… very worried… There’s no spec for either of these, and they’re designed for integration of feed type data into a web pages like those annoying smart tags you find on certain websites (you know those links that aren’t actually links, but popup context windows with ads in them). The other half of them seems like the return of the old “if we can’t beat them, bundle it with a free automatic update product” strategy. Google maps is arguably superior to MSN maps, but the rest of the Activities seems to be a straight move against Google tools by Live services.

Bad Microsoft! Bad Microsoft!… haven’t you learned anything from the multiple $1,000,000,000 (one billllllliiiioooonnnnn dollars Mr. Powers) fines the EU has been giving you for not playing nice?

Part 6 was performance improvements…. it’s faster.

Part 7 was a Developer tool bar, for doing proper JS debugging…. this looks a tad familiar.

Part 8 was of course a live beta of IE8 that you could (and I have downloaded).

So the final karma tally:
Good Karma

  • Implementing CSS2 properly.. bye bye box model hacks!
  • Defaulting to standards style rendering
  • Donating Tests for Standardization
  • Providing Feedback and Implementation details on Standards
  • Fixing webpage debugging

Bad Karma

  • Webslices and Activites…. are these using hardcoded keywords in the class attribute!?!?!?!?
  • Defaulting to using your personal service instead of the industry standard for activities
  • Implementing a half assed version of a spec
  • Not having Silverlight work in IE8 edit:Stupid installers, have to install them in the right order…. still doesn’t work in Firefox 3.0b3 though

it would appear that the IE team has actually generated some good karma for a change…. too bad it doesn’t make up for the last decade of webdeveloper torture they’re responsible for.

1Apparently his name is Dean Hachamovitch