Right now is a good time for futures hog-calling; there are lots of changes that we’re in the middle of, where it’s hard to see what’s on the other side.
Item: Millions of people are directing online energy away from the wide-open Web into walled gardens like Facebook. At what seems like every social gathering I’ve attended in months, there’s a conversation that ends up with the FBers evangelizing the service and bugging others to get on. Some of the arguments make my blood run cold: “It’s like the Net, but safe because you know who everyone is.” I don’t think so. But still, I’m not immune to Facebook’s charms.
Meanwhile, geeks everywhere are thinking Erlang. Yep, that book’s sitting here on my desk too, and since I used Webserver logfile analysis as my Beautiful Code testbed, I’m thinking of seeing how fast ten thousand Erlang processes can crunch my logs, compared to linear Ruby or Python.
Item: The WS-* project is imploding amusingly and while we can all stand in a circle and chant “REST! REST! REST!” as long as we want, the tools and best-practices landscape is distinguished mostly by its emptiness. What’s the RESTful future look like? Beats me.
Item: Nobody I know, who switches from mainstream static languages to Ruby or Python or equivalent, wants to go back. Yet as of today, the dynamic-language practitioners, compared to the Java/.NET mainstream, are off to the right of the decimal point, if you count heads. It’s nice to be the fastest-growing member of the ecosystem, but you still get the feeling that some big horny hoof could descend from on high and squash us like bugs, and nobody would notice.
Item: It is now within our power to equip every significant locus of digital creativity with a “Publish” button. So, what happens then?
Sam’s List · Surprisingly, while I would have agreed with probably four out his five futuristic bullet points, last time, I think I’m down to three at best on this one.
REST, well, yeah; I don’t invest three years of my life unless I’m pretty bought in.
Hadoop? Halfway there. If by Hadoop you mean “Large-scale functional-programming infrastructure that doesn’t rely on conventional database thinking, as first seen in Google’s Map/Reduce”, I’m down with that. But Hadoop itself? We still don’t know, it’s really the first attempt outside Google, and I’d be entirely unsurprised if it turns out to have some sort of horrible flaw that shows up under Internet-scale loads. I still think the direction’s important.
Erlang? I just don’t think so. Once again, if we’re really talking symbolically, saying its message-passing, lightweight-threading, functional-programming, live-patching virtues are important, well, then, yes. But Erlang itself? It’s too weird, and in my brief experiments, the implementation shows its age; we have in fact learned some things about software since way back then. And anyhow, I worry less about concurrency these days. The right way get the most mileage out of something like our T2 is load it up with a bunch of process-granular PHP or Rails or Django jobs. Which burns memory, but who cares? Or alternatively, to run something like Java EE, stay away from application-level threads, and let the JVM sweat the concurrency.
Jabber? Yep. Wire open a connection to wherever and send one start tag followed by an infinite number of XML chunklets. I seem to stumble across another good application for this every month or so, on average.
Microformats? Color me unconvinced. It’s like RDF and the SemWeb; sounds great in theory, but I’ve been hearing the theory for years and I’m still not using any applications. I could be convinced; but only by a killer app.
My List · A few of these are very specific. Hmm... risky.
Green infrastructure, both for public-spirited reasons and because the juice is pricey and we can’t swing the HVAC. (This may be bigger than the rest put together.)
The Atom Protocol, and REST.
Ruby and Python. The Web frameworks will lead them there, and they’ll get a taste, and they won’t come back.
AJAX, by which I mean the browser getting smarter and better and quicker and richer, incrementally month by month, until the increments become qualitative change. Which happened two or three times already in the last decade.
Jabber, like Sam said.
Ubiquitous functional programming. But I’m far from convinced we’ve seen the actual instantiation that gets us there from here.
Self-Indulgent Postscript · Writing this kind of thing makes me nervous, because last month Jeff Atwood asked Yes, But What Have You *Done*? and I don’t wanna be an airhead pundit. And it’s years since I spent a whole week doing nothing but code. And it’s worse than that; not only am a bloviating commentator, I’m also intermittently a standards iron-butt, writing rules from on high, the things that turn respectable geeks into morons and assholes.
Whatever... I do find time to code, even if it’s not getting Internet-scale deployment. And I’m an OK coder, but I’ve worked with a few of the great ones and more than a few who weren’t great but still better than me, so my engineering ego is well under control. And I’m a decent writer, but I doubt I’ll ever achieve my childhood dream of publishing a slim book of verse, or anything at all in a good serious magazine. I think I’ve basically lucked into following Scott Adams’ career advice.
At the end of the day, I think Atwood is overly harsh; the world needs loudmouths (at least on a part-time basis) as well as engineers. Having said that, he’s got a damn fine blog, for example Measuring Font Legibility, which is entirely irresistible to a typography geek named Bray.