Note: I wrote this a few days ago. I can't figure out what my point actually was, but I'm posting it anyway. If you're looking for my best post ever, this probably isn't it.
Back when OS X was brand new, and Windows Vista was just a prolonged joke called Longhorn, a tech writer or blogger who I've since forgotten made a prediction which turned out to be very accurate. At the time, the graphics processing power now standard on modern computers was new. It was a huge, staggering leap forward from what had been normal up to that point. The conventional wisdom was that Photoshop would never crash again, at least never again on a Mac. But if you made the mistake I did, you went and bought Photoshop Elements, and you found out how wrong this conventional wisdom was.
Photoshop Elements is a Mac "Universal binary" which runs under the Rosetta interpreter. It's terrible. It's really very, very bad. I'm not sure whether to blame the Universal binary or not. It gets window placement very, very wrong, occasionally putting toolbars that are supposed to span the top of the screen about a hundred pixels lower than normal. It also occasionally merges portions of the chrome which were supposed to be distinct. These are code problems, but it's not just Adobe's coders and quality control who didn't do their jobs well. Elements' UI is so aggressively dumbed-down that if you resize a window, choose some other window, and then go back to the window you resized, the mere act of selecting the window auto-resizes it to some Adobe default, throwing out the size you chose. A feature like that isn't just useless, it's also annoying and aggressive.
Two years ago I got a DVD authoring package from Adobe. It suffered from the same problems - bad code, bad UI decisions, and unnecessary "features" which only annoyed you and never served any useful purpose. At the time, I took this to indicate that Adobe had reached a point in its lifespan as a corporation where it no longer had the clout to demand competent people, and further, had gotten so infested with incompetence that most features were added by people who simply wanted to prove that they had been awake during the workday. You can take Photoshop Elements as a sign that the problem has gotten worse, so much so that I would strenuously avoid accepting any job offers from Adobe, if you get them, or even bothering to consider Adobe Web development technologies for even a second. I would also be very careful about wasting any money on Adobe software.
Photoshop hasn't received any new features worth writing home about since version 5 or version 6. Indeed the only reason I bought Elements was because I switched from the PC to the Mac and couldn't keep installing the version 6 or 7 I've been using for at least five years. But even though it hasn't gotten any new *useful* features, it's gotten a ton of new features. Adobe comes from the old school, the shrinkwrap era. In that market, you have to keep adding features to stay afloat, even when those features are total unnecessary bullshit.
This brings back to the power of modern graphics processors, or at least brings us in sight of it. Adobe today mostly just adds total unnecessary bullshit to quality software. With Elements, they're approaching a point where the bullshit outweighs the quality. If or when that happens, the result is customers abandon the software. I'm certainly going to look into my options before replacing Elements with anything from Adobe. Elements is so bad it's insulting that they charged me money for it at all, and insulting your customers doesn't build brand loyalty.
Basically, everybody who works at Adobe today is coasting off work that Adobe did five, ten, or fifteen years ago. They're the Paris Hiltons of the software world, living off the inheritance they lucked into. Inevitably, they'll spend that inheritance down.
The normal response here, among geeks, is blaming marketing. Marketing added unnecessary bullshit to sell the new version. This is exactly what the tech writer above did, when explaining why Photoshop would still crash sometimes, even with the graphics power on modern machines. Marketing will add drop shadows on the active application window, he or she said, and transparent Terminal windows. This extra processing will eat up all the extra power, and application performance will therefore remain about the same.
Although that's exactly what happened, blaming marketing isn't entirely fair. In the case of Photoshop Elements, adding bullshit features to once-great software is inevitable in the context of the shrinkwrap business model. That's just how the business model works. In the case of graphics processing power being wasted on gratuitous eye candy, there's a certain inevitability there as well. Economists call it the tragedy of the commons.
The tragedy of the commons, essentially, is that resources which are freely available to anyone will be squandered by everyone. It's pretty easy to apply that to transparent Terminal windows and adding gratuitous drop shadows to active application windows. Processing power which is freely available to any application will be squandered by every application.
So, here's my argument so far:
1. Fuck you right back, Adobe
2. The tragedy of the commons
Let's move on.
What does all this have to do with Web apps, shell scripts, and robots? The commonality is economic analysis. Web apps are becoming inexpressibly cheap. When I first looked into Ruby on Rails, I had already heard of it, but not paid a lot of attention to it. I checked it out as a favor to a friend. She was nontechnical, hiring somebody to develop a Web site for her, and one candidate was selling her on Ruby on Rails. She needed to know if it was good.
She and I had worked before at a small Web design shop where the owner would charge three days' work to set up an admin interface to a database. It was literally the same thing as Rails' scaffolding. Three days' work replaced with one line of text on the Unix command line. I told her, yeah, it's good. It's really fucking good.
Reducing three days' work to one Unix command is the core use case for technological innovation. Suddenly things which were expensive become cheap. That means you can do new stuff.
You might think that the incredible ease and grace of developing with Rails would lead to a world where Web developers have incredibly easy, graceful lives, building incredibly beautiful Web apps that sparkle in the breeze like some Elven tower out of Lothlorien or the Lands of the East. You might think powerful graphics processors would mean an end to Photoshop crashing. Think again.
Web apps, today, are as cheap as shell scripts. This means people will start to throw them at problems as casually as they throw shell scripts at problems. If you want to see what the future holds for Web apps, ask yourself where incredibly cheap application generation technologies could be useful.
This is where the robots come in.
A couple years ago a robotics research project used a Web app as the user interface to a small fleet of tiny robot helicopters. Each helicopter had an onboard Linux box, and they chose one helicopter, made it the researchers' liason, and put a Web app on its Linux box. They didn't do it because it was nifty, or cutting-edge, or exciting. They did it because it was cheap. You get standard UI, standard request/response handling, accessible to any number of computers, all of which are guaranteed to have the client software, all over WiFi, practically free.
A lot of people are predicting a robotics boom, and if it happens, these things are going to eat up computing resources like fat kids gobbling down Cheetos. For instance, IPv6 is supposed to give us all the IP addresses we'll need for years, but the very nature of IPv6 - it makes IP addresses freely available to anyone - means that IP addresses will be subject to the tragedy of the commons. If there's a robotics boom, cheap robots will squander cheap IP addresses by the millions. At the same time, putting Web servers on a cheap robot will mean that anybody with a laptop or a mobile phone can access the UI. Their ubiquity and cheapness make Web apps inevitable as the UI platform of choice for robotics.
You can get a Linux box the size of a pack of chewing gum for $100 - they're called Gumstix. They're made for the robotics hobbyist community, and they ship with Ruby installed. The Lego Mindstorms robotics kit - marketed to ages 11 and up - already has enough processing power to host a miniature JVM which supports APIs for graphics, sound, navigation, mapmaking, and subsumption architecture. You can connect it to the Web using Bluetooth and an open-source remote control package called iCommand, or, for that matter, using low-level Bluetooth or USB libraries. And this is just in a Lego kit marketed to children ages 11 and up.
1. Robots are cool.
2. Web apps are becoming incredibly cheap.