Ken Kovash taught me to love

to within 3.5%, 19 times out of 20.

being open about being closed

I saw an article float by on the newscurrent yesterday, in which Adobe evangelist James Ward talks about misconceptions about Flex. This one definitely caught my eye:

Flash Player is 100% Proprietary.

The core of Flash Player is the Tamarin Virtual Machine, which is an open source project under Mozilla. While the SWF file format is not fully open, it is documented by the community on There are numerous open source products that read and write SWF files. The Flash Player’s product direction has traditionally been heavily influenced by the community and their needs. The core language for Flash Player is an implementation of ECMAScript 262, which is the specification for JavaScript. Flex also uses CSS for styling of components / applications. Adobe AIR uses web standards as the basis for desktop applications as well as Open Source technologies like Tamarin, Webkit, and SQLite.

We’ll ignore the wordsmithing genius involved in choosing “100% proprietary” as the misconception to address, and even let the non sequiturs about open source elements in other Adobe products go without much comment. Normally those things would rankle a bit, but in the light of the other gems present, I can’t really be bothered.

Gem the first:

The core of Flash Player is the Tamarin Virtual Machine, which is an open source project under Mozilla.

It is indeed true that Tamarin is a major piece of Flash Player 9, as it’s what runs the ActionScript language — but not the objects of the API! — and we’re quite glad that Adobe opened it up for us to develop together into an implementation of JS2. But I think it’s pretty misleading to imply that the majority of Flash is provided by Tamarin: it’s quite possible to have Flash that doesn’t use ActionScript, but everything relies on the implementation of the Flash VM itself — with its own bytecodes, graphics semantics, object model implementation and data management. The Flash VM is a huge piece of engineering, and one that Adobe has not opened up at all, though Flash artists have been clamoring for years to know more about the platform they invest so heavily in, to say nothing of people wanting to bring Flash capabilities to other operating systems and devices. Ryan Stewart also seems to think very little of the Flash VM, as he wrote back in October:

But I look at Adobe and what we’ve done. We’ve open sourced the guts of our runtime, the virtual machine. All that’s left is pretty much just the proprietary codecs and we’ve even addressed that somewhat with H.264 support.

All that’s left is pretty much the most significant piece of the Flash runtime, I would say, which is the engine that drives the complex graphics, provides the interaction model for ActionScript, manages data, and provides access to multimedia input and output. When they’re marketing Flash as a platform, Adobe likes to list out all the amazing graphical and video capabilities, but when they don’t want people to think too hard about the fact that writing to Flash is committing yourself to proprietary platform, I guess they aren’t such a big deal. Ryan’s comment on that very post indicate how important he thinks the graphical capabilities are for “RIAs”, but I suppose it’s more convenient to minimize them when people start asking questions about the mystery meat they baked into their applications.

Adobe doesn’t even permit people to use the specification to implement anything other than FLV tools, though the specification is written and published — just be sure you don’t read it, because then you’re tainted and can’t work on an open implementation of Flash, or open tools, etc.

Which brings us to gem the second:

While the SWF file format is not fully open, it is documented by the community on

This is quite the brazen comment. “The community” here are people who reverse-engineered the behaviour of Flash so that they could write tools to make the Flash Player’s platform more valuable, while Adobe’s license terms tried to stop them! They have put themselves in legal jeopardy in some jurisdictions (and Adobe has in the past had people arrested for producing tools that manipulate their license-protected technology) and James has the nerve to call them “the community” and indicate that their work is a remedy for Adobe simply not being willing to remove the field-of-use restrictions on their existing documentation. (I haven’t read the specifications, and I won’t, because I was warned off of them when I was working on gameswf, precursor to gnash.)

Mike Chambers called Mozilla’s announcement of Prism “disingenuous”, I think largely because he misunderstood the difference between “a more convenient way to launch a web app” and “a way to build non-web apps using the same technologies”. Maybe more about that craziness later, but for now I’ll be interested to see to what extent Mike’s concern for disingenuity extends to his own colleagues.

a difference in degree

We recently had to hyper-spin an update (Firefox, because of a regression introduced into the <canvas> code in the previous release. Never something you want to do, but, then, it could have been worse.

My heart goes out to the guys at CCP, who are no doubt having the worst week they can remember.

Edit: I would bet a decent sum that this patcher change was some “tiny super-safe patch” that went in between the last time they did end-to-end testing and the time they released it to servers. This is why we have release candidates, and why they are bit-for-bit the same as what we ship when the time comes. If a developer ever tells you “this is 100% safe, don’t need to retest”, they can’t do math, and should be ignored. If I am the developer in question, doubly so.

Edit 2: A great (candid, clear, detailed) post about this boot.ini issue has appeared on the EVE developer blog. Recommended reading!

time to go raise goats on a mountain

Yesterday, the provider that hosts one of my personal machines fell off the network for about 12 hours, and topped it with a power outage from which my machine didn’t come back up on its own. (Never heard why, hardware was fine when it did come up; suspect some mismanagement in the colo space.) The network that came back after the outage was materially slower than before, making it increasingly hard to actually migrate the remaining services off of that machine, onto the new one, which now had replacement fans.

I left, as you might imagine, quite a few voice mails on the tech support box, mails to the support@ address, and even a voice mail on the cell phone of the president of the hosting provider (he had insisted previously that I should call him if there were ever a problem). When I finally heard back from someone at the hosting provider, I was told that I could move my machine to their cabinet at 151 Front for improved reliability. They were doing this for me as a favour!

“No, that’s fine, I’ll take care of it.” Well, actually…they were doing this to reduce the load on the now-weaker uplink from the colo space.

“I won’t be running out of there for long, and I can keep the bandwidth down just fine for a few days, but thanks.” Well, actually…they were doing this because they were shutting that colo space down because their remaining colo customers didn’t need all that space.

“Cool, I’ll be done in a week or so and then I can remove the box entirely, don’t worry about it.” Well, actually…they need to be out of that space in 48 hours or they’ll have to pay rent, or something. I was unable to avoid mentioning that I’d been told I would need to give 60 days notice to cancel my own hosting, a few weeks earlier; I was weak in that regard.

So a wonderful friend of mine moved the old machine to some rack space he has, and then he and other wonderful friends worked all night to get the routing unscrewed. In the process, one of my new machines had to be rebooted, and my friends’ respect for my sleep trumped the possibility of calling me to help fix things when the services on that machine didn’t talk to the network post-reboot. Once I got up this morning, I spent about 30 mins figuring out what state the various bridges were in and then Google led me to victory in about another 30.

For a period of a few hours, I had no DNS service, as the machine I was using as a secondary DNS server was experiencing related but not identical failure; a failure of redundancy that I will soon remedy. That led to a bit of mail bouncing, if it was sent to or, so please do resend if you were thusly victimized. My blog was also down for a bit, not that anyone is likely to care about that.

I’m not sure if it’s irony or demand creation, but the same company that I have now put behind me offers a high-availability network access service — clearly, I should have availed myself of it.