A Flash Horror Story
Monday, March 17th, 2008
Sometimes deadlines make you do things… terrible things. Things that you wouldn’t want associated with your name because they could single-handedly ruin your career. Systems and classes that you hope against hope will never ever have a problem or need an update. But the whole time, something in you is telling you this is wrong. This will come back to haunt me. Sometimes you’re lucky. But usually you’re not, and it does come back to haunt you- with a vengeance.
I want to tell you a story about a man- a desperate man. We’ll call him Ted. Ted was a graphic designer who was just getting into Flash, and so he took a freelance job with a local Flash development house to put his new skills to use. This company tasked him with creating a fun little app that allowed the user to customize a car image. The user, they said, should be able to add logos, spoilers, “dubs,” etc. and then download his/her fantastic creation as a wallpaper. In fact, they continued, we’ve already finished the layout and the car images- here’s an FLA and a zip of all 170 possible combinations.
At this point, many developers are already putting this app together in their own minds. Twenty lines of code, maybe a splash of XML, a big image directory- call it a day. That is, in fact, what the development company expected. However, the days turned to weeks and Ted had not turned in his project. Phone calls became less frequent and more harried. Finally, hours before deadline, Ted emailed a link to the project. It loaded a bit more slowly than anticipated, but it was assumed that it was just because of the size of the graphics. Which, as we were to find, it was.
However, the client soon decided that a small change was needed. Because of the rather lengthy turnaround time with Ted (who was now slogging through another project), the development company gave it to an in-house guy this time, who was confident that he could make the change in a half hour. How complicated could an app like that possibly be? He downloaded Ted’s source from the development server and opened it… and that part of his soul that every human is born with, that sings because the Earth is beautiful and its people are good- that part died within him.
![]()
The source files bore the unmistakable mark of a madman, drunk with desperation. The project contained one hundred seventy keyframes, each containing one of the car images. To view one image, in other words, required downloading its 169 siblings as well. Furthermore, each keyframe held five buttons for adding the various options to the car. Five completely new instances per keyframe, each with a unique instance name (redSpoiler155_btn, redSpoiler156_btn, etc.). Furthermore, each of the five buttons had a variant of the following code attached directly to it:
on(release){gotoAndStop(51)}
170 x 5 = 850 identical lines of code. In 170 unlabeled keyframes. Attached to 850 separate and unique button instances. In a project with 170 wallpaper-sized images that, when compiled, produced a 20MB SWF. The reason neither the development house or the client noticed the download time was because they were operating on A) industrial-strength Internet connections and B) the assumption that the freelancer hired was not a complete sociopath.
To be fair, we all know what happened. The guy had gained a couple skills and went with what he knew, rather than doing a ten-minute Google search, without ever thinking seriously, there has to be a better way. Nonetheless, the second his “techniques” came to light, the development house called him to request that he invoice them immediately and go work for someone else.
They say on certain nights, when the moon is full, you can still hear the feverish and half-insane clicking of a man attaching code to onstage objects.