- Return time machine to rightful owner.
September 2009
The more I look at Google Chrome Frame, the more I'm struck by how clever it is.
For those coming in late, Google Chrome Frame is a plugin for Internet Explorer that embeds the entire Chrome web rendering engine inside IE. Site authors can include a simple meta tag in their HTML that will tell the browser to use Chrome to render the page instead of IE.
(Let's ignore for a moment that when Microsoft introduced a meta tag that changed IE8s rendering mode, the web went apeshit.)
Ask any web developer and they'll tell you the biggest millstone around the neck of the web is Internet Explorer 6. Ask browser users, and they'll tell you the overwhelming reason why they can't upgrade to a more modern, standards-compliant browser is because their work won't let them. Ask IT departments why this is the case and they'll point to the six- to seven-figure costs of upgrading turn-of-the-century Intranets written to work in, and only in, Internet Explorer 6.
Google have provided a way for websites to opt out of IE6 (and even IE7) support without requiring enterprise-wide, Intranet-breaking browser upgrades, something Microsoft occasionally promised but never managed to deliver. In doing so, they've cheekily cut Microsoft out of the upgrade path of their own web browser.
Dear corporate IT departments. Your last tie to IE6 has just been neatly routed around. At my most conservative estimate you have twelve to eighteen months to either bite the bullet and adopt a real modern browser, or make Google Chrome Frame part of your default desktop image. Beyond that, I guarantee large chunks of the public web are going to stop working for you.
Woke up this morning to found the entire city shrouded in creepy orange fog. These photos are not corrected in any way, the colours are exactly as they came off the camera.
‘They’ are trying to keep us calm by telling us it's a dust storm, but I'm not so sure…
Next day, the dawn was a brilliant, fiery red and I wandered through the weird and lurid landscape of another planet; for the vegetation which gives Mars its red appearance had taken root on Earth. As Man had succumbed to the Martians, so our land now succumbed to the Red Weed. (*)
Back in 2002, I wrote the following about the proposal for an ‘enhanced for loop’ in Java 1.5.
Foreach takes probably the most common use of Smalltalk blocks, the internal iterator, and creates a syntactic special-case for them. Once again, it's a band-aid solution. Foreach removes the annoying duplicated syntax for the simplest case, but it does nothing to give programmers the chance to remove duplication on the more complex cases.
So it seems now for Java 7, closures having been dropped from the roadmap, it's time to apply the next band-aid. This time the recipient is the next in the line of usual suspects, resource management:
Absent a language change, you must close resources manually. That is why Java’s competitors have automatic resource management constructs (C# has using blocks and C++ has destructors).
Back to me from seven years ago:
Once foreach is implemented, the precedent has been set: whenever the lack of [closures] causes us to lag behind C#, don't fix the underlying problem, work around it with a variant on what we have already.
The funniest part, of course, is that C# 3.0 has had closures (or at least succinct lambda expressions with type inference) since 2007.

