Macromedia Flash

For about 4 or 5 years, roughly from 1999 to 2004, Macromedia Flash was a big part of my career. I started making Flash movies for fun around 1998, but by 1999 I was already making them as part of my day-to-day job. The founder of that company even used some of those movies to pitch to investors… successfully… so I get they worked fine after all.

Most of my work actually involved standard web technologies, but I did attend some Macromedia events in Buenos Aires; the Flash galaxy was strong in Argentina back then; comes to mind the now legendary (and 100% politically incorrect) webcomic “El Mono Mario”, entirely built with Flash.

After moving back to Europe, I made a few websites in Flash for some customers, but that was it. Around 2004 I stopped using Flash for my websites or those of my customers. I did get back to Flash for a short while in 2008, attempting to make screen savers for the Mac with Flash, something I wrote about on this blog back then, but nothing else.

The Developer Experience

At a time when browsers didn’t bundle a developer console (something that Joe Hewitt would invent as the Firebug extension for Firefox) and when the saint trinity of CSS, HTML, and JavaScript (or even Java applets) didn’t have any groundbreaking APIs such as SVGs or CSS animation, Flash offered an integrated development environment (which looked more like a non-linear video editor) for creating vector-based content that somehow was simultaneously cross-platform, widely available, and visually appealing.

The cross platform thing meant that the Flash player was available for the two big browsers of its time:

At some point, I don’t remember exactly when, the ActionScript language used by Flash became a dialect of JavaScript, which made it much more approachable for web developers.

But to be honest, even if the whole experience was decades beyond whatever W3C standard technology and Java applets could offer, it was frankly quite cumbersome to maintain Flash movies after their first development.

And to make things even worse, in a world where Google was rising to stardom… Flash movies weren’t really searchable until it was too late (around 2009)1.

The Inspiration

How did I get so enthusiastic about Flash? One of the culprits was, without any doubt, the Balthaser Studios website, long gone since but somebody recorded a video showing it in action. Back in 1999, all of us doing Macromedia Flash dreamt of repeating this experience. This was the golden standard.

The Impact

Flash was both loved and hated. As much as people hate to admit it, it played a crucial role in the development of newer standards.

Take, for example, YouTube. It literally started its life thanks to the video streaming capabilities of the Flash player, making video accessible to millions of users around the world. This was seven or eight years before HTML video became a possibility.

Arguably, without Flash, there might never have been a YouTube in 2005. No wonder Adobe absorbed Macromedia that year.

Flash was a so ubiquitous part of the standard browsing experience, that when we co-organized the first conference about the iPhone in Geneva in October 2008, one of the questions in the audience was, when are Mobile Safari or the Android Browser (Chrome for Android wasn’t a thing yet) going to have Flash support? Could a project like Gnash provide it?

The answer would come in 2010.

The End

Steve Jobs wrote in April 2010 a (now legendary) open letter called “Thoughts on Flash” where he stated the various reasons (some technical, some based in security concerns, and some more related to platform reach and ownership) about the lack of Flash on iOS.

It was the stuff of legends, but it is said that Google also tried to bring Flash to the Android phones of that era (way less powerful than those of today) and failed.

The writing was (literally) on the wall. By 2011, Adobe started moving away from Flash, in particular open sourcing PhoneGap, a framework created by a Canadian company called Nitobi they had bought in 2009. PhoneGap became Apache Cordova, and together with responsive designs and SPAs, the race for the standard-compliant web-based mobile app was officially launched.

In January 2021, a “kill switch” in all Flash player plugins rendered them unusable, even though by that time, nobody cared anymore about the platform.

The Legacy

Unfortunately, the demise of Flash meant that there’s a lot of content on the web that simply can’t be watched anymore.

Well, almost. Thanks to the open source community, and the (partial) open sourcing of the SWF format, many projects saw the light, trying to replicate the Flash plugin with less security holes and better performance. Among those early efforts, come to mind Shumway and Gnash.

Revival via Ruffle

But the winner nowadays is Ruffle, built with Rust and compiled into WebAssembly, providing a way for us to replay those old Flash movies from yesteryear, on today’s hardware and software platforms.

As proof, here’s one of the last websites I made with Flash in 2002 (for a customer in Geneva), running flawlessly and securely on your modern browser of 2023:

Ruffle is trivially simple to use:

Ruffle will automatically replace any old-style Flash embeds on websites with Ruffle elements. This is ideal for someone looking to preserve a legacy website with a minimum amount of work.

That means that the HTML required to display the movie above is literally the same I used in the original website 21 years ago (note the <EMBED> tag inside of the <OBJECT> tag, so that this code would work respectively in both Netscape and Internet Explorer!)

<script src="https://unpkg.com/@ruffle-rs/ruffle"></script>
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
 codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0" WIDTH=550 HEIGHT=400>
 <PARAM NAME=movie VALUE="qm.swf">
 <PARAM NAME=menu VALUE=false>
 <PARAM NAME=quality VALUE=high>
 <PARAM NAME=bgcolor VALUE=#000000>
 <EMBED src="qm.swf" menu=false quality=high bgcolor=#000000
 WIDTH=550 HEIGHT=400 TYPE="application/x-shockwave-flash"
 PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></EMBED>
</OBJECT>

Here’s another movie, used as a background animation during the presentation of the Martin Ennals Award, regularly updated from 2002 to 20072, and featuring all the winners and the sponsoring organizations involved in the award ceremony.

Here goes another Flash movie from 1999, a quick shot at a screensaver for my company–but you might want to turn the volume of your device down. You’ve been warned!

Very cheesy and corny, I know. But this was top-notch technology back in 1999, I tell ya.

Finally, an introduction to my GaMMA website, also done in Flash (and it would be a good idea to turn your volume down):

And you know what’s the most ironic part of all this? Ruffle works perfectly well on iOS and Android. The circle is closed.


  1. Interestingly enough, HTML pages generated by the Flash IDE would include all the texts and links in the movie as comments, for crawlers to read and index. ↩︎

  2. I used to be the webmaster of the Martin Ennals Foundation from 2002 to 2007. ↩︎