Today, I removed the last references to Flash from ClickspaceTV. The platform is now entirely HTML powered. I’m overjoyed – since it has been a very long road to get here.
In January, I was hired part-time by Clickspace TV for my experience as a Flash Developer. My job is to create content inside of SWF files for our clients. To start, it’s just videos on the Flash timeline. The complex ones have animated textfields where you can add a price in dynamically. This is the big feature as I begin – the ability to have a digital sign at your location, with text added on top of a video dynamically.
In May, I move to full-time with a mandate for more dynamic content, starting with a live Twitter feed. Flash is the only technology we support, and luckily there are several AS3 built APIs for animation, Twitter access, and more. My job is made easy thanks to the Flash community.
I pitch adding YouTube to the platform. YouTube is distributed by Flash, their AS3 documents are amazing, and in almost no development time I’m able to get a sample working. We roll it out in September, in just a few short months.
As the year progresses I build up a code base to help me with my job – functions to size text to a box, or loop videos on a certain frame. And I begin working on the application itself (built in Adobe AIR), not just the content. Everything is built in AS3… even things that shouldn’t be.
The Adobe AIR 3.0 update introduces a bug to the platform that is never resolved; looping videos now stutter. I spend a mountain of time trying to escalate the bug and working on a hack to get around it.
Early in the year, I begin work on an Instagram Feed to go with the now robust Twitter Feed. People can see their text and photos on the screen in real time. An AS3 Instagram library doesn’t exist yet, not in a form that I can use. I have to build my own.
I add support so that content doesn’t have to be wrapped in a Flash file to work. We can now use videos and images directly, instead of videos wrapped in a SWF file with code to run it. We save a ton of time.
I work on Adobe AIR for Android as an alternative to running Adobe AIR on Linux, as Adobe has dropped support for the Linux platform. Performance is devastatingly slow, research is abandoned.
Instagram adds video to their platform; we make heavy design reductions so Flash can keep up with all we need it to do. The platform is running extremely heavy, gigabytes of RAM consumed, and performance is beginning to suffer.
By March, I begin work. I base as much as I can on the architecture that exists in AS3. I hit continual roadblocks because of the need to support existing Flash content. Security sandboxes are different. Google Chrome has their own rules when it comes to Flash. Mimicking the filesystem access I enjoyed in Adobe AIR is nearly impossible. And I have to include an entirely new Flash-built control layer so that I can make it all work. In addition, the requirement to include Flash excludes using Chromeboxes for our platform due to security requirements. We switch to Ubuntu.
I submit bug reports about Chrome’s rendering engine. I discover that multiple video tags are a performance bottleneck, among other things. The profiling and debugging tools I enjoyed with Flash are gone. My application hangs occasionally. I create one of the weirdest work-arounds of my career.
Finally, I hit release – in September, I now have a working Chrome extension that displays the images, videos, and most importantly, the existing dynamic Flash content. I roll it out to our clients.
In November, I publish our first HTML-built slide; a NBA schedule. I learn a tremendous amount about the rendering engine in Chrome. As the year finishes up, I build out a library of code to help with future HTML slides, automatically accounting for Chrome’s quirks.
I set a goal – to kill Flash off by the end of the year. I start by rewriting our very complicated Twitter Feed slide in HTML. I knock it out in just a few weeks with massive improvements to performance and some new features.
I depreciate Flash slides as they become unneeded – each event that passes, I eliminate the related Flash slides – St. Patricks’ Day, the end of the NFL season, old events.
In July, I sit down and evaluate the remaining Flash slides that would need to be converted to HTML. The most complex ones use a lot of Flash tricks; 3D transformations, writing a display object to bitmap for animation, animated movie clips on the display, and much more. I knock them out at the rate of about one an hour. HTML is very easy to write and manipulate.
In August, I tackle the final Flash slides; all relying on Instagram for data, with a lot of moving parts. I rewrite the entire thing in record time, using every trick I’ve built at my disposal. This is the boss fight of killing Flash, and it’s a huge success.
I’m very happy with the results. HTML is running content twice as complex using less than half the computing resources across the board. I work with half the RAM, a slower CPU, and a far smaller hard drive, all with better results. I can support more fonts, and more external resources like Emoji libraries. I use more files stored on the hard drive, and less in RAM. Videos run better, content loads faster, and everything is more versatile – I recently replaced eight background video loops with a single video, a quarter of the size, and added an HTML filter on top to recolour it on the fly. Not a dropped frame to be found.
My first business cards read ‘Flash Developer’; I created the design with a program I made in Flash. It’s special to me; Flash taught me how to be a developer, and I’m proud of what I accomplished with it. And I’m happy to leave it behind me, and look forward to the new technologies on the horizon.