I expect to burn some karma for this, but there's another extant pocket of optimization driven development: banner ads. If there is such a thing as a "good" banner ad, I'm referring to those (unobtrusive, non-autoexpanding, subtle animations resulting from interaction [no seizure-inducing manic blinking]). Good banner ads use almost no bandwidth (15k-40k) and go easy on the user's processor. They are built for big companies who care about their reputation and trafficked by platforms that respect the user.<p>I don't get to build as many of them as I once did, but they're incredibly fun little puzzles to solve. Cramming largish photographs, animation, copy (including fonts, which usually result in the bulk of filesize), and animation into such a tiny package is no small feat, and requires a lot of time (the productivity tradeoff Jacques referred to) and tons of little optimization tricks you need to spend a few years collecting and perfecting, like:<p>* becoming a vector artist. Sometimes its necessary to have a partially transparent image, which means 32 bit PNGs, which are super expensive. Flash allows you to create vector masks (vector illustrations are incredibly size efficient), which means you can use a PNG-8 or JPG and mask out the areas that need to be transparent. Which means getting really good, and fast, at tracing outlines. The next level being<p>* learning how to do photo-realistic illustrations. In the old days of 12k for a banner, I did a lot of car banners, which meant a lot of car illustrations that needed to look exactly like the photos. Even then, you'd have to reuse your assets a lot, in creative ways, in order to make the filesize. (Like using a tire illustration for the windshield [by scaling and masking]).<p>* writing really tight code. In the early days, our basic animation engines were a few KB, but you could rewrite your own using only the chunks of code you needed, and save a few K. My newest library is about 800 bytes and is powerful enough to use on most of my banners.<p>* learning that people really aren't as detail oriented as you might think, and blurs, rotations, tints, and speed are usually all the tools you need to make a convincing animation