Flash in my life

2012-08-22

My life is pretty much JS right now. So it's kind of ironic that Flash is still also a pretty important factor of my (digital..) life. It's ironic because "we" consider flash the closed source system that "we"'d like to see being eradicated by the open powers of html5.

Yet, for the past year my life has pretty much been dominated by flash. This is quite a bit obvious in my professional life. I've been working on a SWF decoder for half a year and spent most of the remaining time on an as3 vm. The swf was easy once I figured out that the skeleton was the only thing to be trusted. But my gawd, the documentation for it is horrible. How can Adobe get away with such crap :( So many errors!

The docs for AS3 are slightly better, in that they seem to contain fewer mistakes. Of course AS3 suffers from different problems. Not in the least that the default compiler seems to be an utter piece of shit and doesn't optimize at all. It actually compiles in dead code that 's easyily eliminated by analysis. Not to mention the numerous sequential push and pop operations that serve no other purpose than... well, no purpose at all actually.

It's quite annoying though that both the flash player and its as3 engine support way more tags/ops than are actually specced. That might be one of the most annoying things about them; you'll never know about a problem until you find a test case that uses them. The spec won't help you because it's incomplete. Shame on you, Adobe.

While I mostly worked by myself on the swf parser (with a few life lines to Tobias Schneider, who had already gone through most of the pain for the Gordon project) my part in our as3 vm was modest. The most difficult parts were done by Stephan Seidt (though I think it's fair to say I did decide on the architecture after deciding to go for a vm rather than transpiler) and later David Aurelio. Inheritance, auto-closures, classes, typing, the whole shibang. I did work on the vm and know quite a bit about it, but unfortunately still can't fix an inheritance bug when I find one.

And of course the vm is nothing without shimming the built-in flash environment. I've had no part in that and little clue in how they work. No that's not true. I know how they work. But I didn't work on them. That was mostly John-David Dalton, Tobias Reiss, and (I believe) James Padolsey's work.

A swf parser, an as3 vm, and some shims walk into a bar and ... well... nothing. We also got some glue project to stick it all together. I kind of started that but the (sub) project was quickly taken over by Jens Arps who mainly led that part. It has grown since and while I can still recognize small parts of the architecture, I think it has been completely revamped and improved to heck since then :)

(For completeness sake I think it's worth noting that the entire project was governed and led by Nikolai Onken, Tobias Klipstein, and Wolfram Kriesing :)

Anyways. Our work paid off. We shipped! See pixelplant.com to see the parser and all the rest in action. The "stats" you can get are a product of the parser ;)

Apart from my work flash is pretty dominantly present in my life still. And while I could turn youtube into an html5 mode, we all know that won't suffice. There are a few video channels out there that still don't offer html5. On top of that I can be pretty lazy and probably wouldn't even search for those settings.

Video isn't the main reason I go through the trouble of keeping flash around on my system, though. It's gaming. I play lots of flash games. I mostly contain myself to the one game posted on onemorelevel.com. But they are usually of pretty high quality. Sometimes I'll spend half an hour. Sometimes a few hours. I consider it "my fix" ;)

At the same time I think flash is currently the main reason why my (ubuntu!) environment keeps crashing on me. Ever since I botched a system upgrade (thought it might fix a problem but then discovered a different fix and have been left with a semi-upgraded system ever since) "compiz" keeps freezing on me for no reason. And while I can't use the other tty's (ctrl-alt-f2 etc, wont work) because I can't see those terminal on my monitors, I can still ssh to the machine and kill compiz to force a restart. Which then works. Until it fails again. I'm pretty positive that flash plays an important role in these freezes. I'm just saying this because it emphasizes how much it takes for me to keep flash around regardless.

So while I'm looking forward to a time without flash you've got to wonder whether when we'll get to a point where we can package an app so tightly as you can do with flash. There might be downsides, but there are certainly upsides to it. I hope our pixelplant project can be a good step into making this happen.

Fun fact; even though I've learned a lot about swf and as3, I still couldn't create a flash game to save my life :p Most of us went into this project with very little knowledge about flash. I think that might actually be the biggest achievement; we dove into this flash translating project knowing very well that we were lacking a bit of knowledge, and still we pulled off pixelplant within a year. And I think I'm proud of that :)