Robin Berjon

The Next Next Thing

There Is Still A Frontier

I stumbled across Garann Means's excellent blog post “no country for old hackers” and sure enough it resonates deeply. Web hacking used to be a pretty damn daft calling when you consider what you could actually do, but it sure was fun. It's certainly true that with great power comes, well, stuff that's a bit too easy. Code that works the first time over. Tricks that, erm, what tricks? You just google what you want to do, download the right library, and your problem's solved before you even knew you had one. But all is not lost!

I can't say that there isn't a part of me that doesn't miss getting that table seven times nested to render just right so as to produce the perfect pseudo-3D rollover. It's unlikely that so much effort will ever have to be expended again on results so puny (and, in many ways, so wrong). Still. There's a whole lot of hacking out there waiting to claim hours as yet unborn, filled with the mirthful tension of making hard things easy and making that useless tweak hold still and work on top of a tiny pinhead in an ocean of bugs.

You want both the Google goodness and the pushState snap? How do you write code for a complete site that runs the same on both server and client? Shared routing, shared templating, data access that knows what to do. This client-server thing could be shaken up a whole lot more, code should run where it makes most sense to run it. We're inching closer but still barely in infancy.

And if we're fuzzing the server, it's worth remembering that there's peer-to-peer web technology in the pipeline. The cloud as marketed today is a sham. Instead of putting your code and data on a lot of boxes you own and operate, you're putting them on a lot of boxes that someone else owns and operates. Sure enough, it's very nice that it is presented like just one box and that it scales magically. But that's no cloud. The cloud is when you're putting your code and data everywhere and it works. No one has access to it thanks to crypto, and it's spread redundantly so as not to fail, but you're not at the mercy of a single provider. For starters, a TAHOE file system written in Javascript, running on arbitrary strangers' browsers sounds fun, and that's just one of the simplest use cases.

The mobile shift has pretty much been digested. It's still hard in many cases but we're over the hill in terms of the pain/gain ratio. So what's next? The home network beckons. The web on your fridge door isn't cool, Node.js inside your fridge is. Devices so dumb you'll pull that old 486 out of the cupboard with glee. Domotics have been promised for ages, and now that they're coming there's going to be a complete world of screwing up that won't just be about light bulbs. Are the Joshfire folks doing it right? They may well be, but will that be enough to make things truly easy? Probably not. How do you debug the JSON-RPC endpoint in the porch lamp light switch? Why won't my Noirot heater's REST service react properly to the mood events it's receiving from my Yamaha hi-fi — can't those guys read the damn same specs in the damn same way for a change? Can I route them through some code adapting one to the other that I've decided to run in my printer since it's there and always on? I really need the heat to go up as the mixplaylist reaches its climax.

Speaking of climax — teledildonics were amusing for about thirty seconds. Open source Web-hackable teledildonics? Hmmm.

These might just be stupid examples, I don't know. But then again, I remember a time when once you'd changed the background colour and animated the title with JS, and made your font the perfect point size of Comic Sans, the rest of the examples were pretty stupid too. It's a world of devices out there. I want a web of devices.

Want something that you can tweak for ages and still get wrong most of the time? How about a JS API to control your camera's optics, coupled with what it takes to do graphics processing right on the device? Can someone remind me why we don't have that already?

I have yet to see a phone that doesn't suck. Or a mail client. Or an IRC client. Or a desktop UI for that matter. Or the perfect text editor. Or a decent Twitter client. Yes, I want all of this, in HTML, JS, and friends. Yes I want to write a bloody OS that doesn't suck, making all of this possible. No, we're not there by any margin yet. We're getting closer, but there's room for truckloads of tweaking, hacking, and finding new ways of doing old things that don't really work. And new things that don't really work, too.

HTML used to be so featureless (and mostly, so presentation-free) that almost every single web page you, the user, could visit would look exactly the way that you, the user, wanted it to. The right font, the best screen width, the nice shade of grey in the background. Nowadays, everything looks down to subpixel perfection exactly how the web designer wanted it to look. We've gained a lot in this but, especially as more UI elements are rendered in HTML, we've lost a lot as well. Take picture slideshows for instance. Every site out there has a slightly different one, and they're all pretty bad. The pictures don't take up enough real estate here, the animation is too fast or too slow there. More often than not they preventDefault all keyboard input, even that which they don't need, so that keyboard navigation becomes impossible. It's about time we web people fought a war against ourselves to return the end user to her rightful place. I want to be able to see a slideshow component that I think really works for me, tell my browser that it's the one I want by default, and have every site that wants to pop up a slideshow use that. How? Using a web of intents (as in Android intents). The component tells the browser that it can handle a VIEW_SLIDESHOW intent with a list of pictures, the website says it wants the user to VIEW_SLIDESHOW with its list of pictures, the browser does its act, we all browse happily ever after. Technically it's not even all that hard (except for the security model, but that's solvable) and I even think that we can make it user-friendly. Hell, I even think that we could find a way for hackers to make money from it. Forget JS libraries — put the user first.

We haven't really cracked the security and privacy nut just yet. A few days ago I was in a conversation about programmable cars. Using web technology. And just last month on the Device APIs mailing list someone was planning to start one of those sweet new W3C Community Groups (check them out if you haven't already, they're very much about openness and hacking) about access to health and wellness devices. We're going to need a smarter, finer-grained, more powerful approach to security. No one knows exactly what it will be, but it's going to be interesting.

We also need to figure out micropayment that makes sense, makes money, and doesn't destroy the web. Is it PaySwarm? I don't claim to know but part of the problem that I think Garann is outlining stems from the fact that the primary vector for making money with web savvy is by making web sites for other people, and that this fosters an ecosystem in which a lot of the cool new stuff isn't used until it has been tamed and gentrified. Adding a new income vector could change that game.

I want office suite apps that are both simpler and way more powerful than what currently exists, and don't make me want to shoot someone in the face with arsenic-and-salt buckshot. Please don't say Google Docs. If you've even so much as thought about OpenOffice I am going to have to ask you to leave this blog and to please never return. I have a plan for this that is delightfully simple and webby but I'm still wondering if I might not make a company of it so I'll only reveal those secrets over beer.

In many ways I think we're in brat shock due to the massive speed increase in web innovation over the past few years. We barely scratch the surface of what we can do with the new tech we have in our hands — not to mention what's right around the corner — because we just skip from one cool demo to the next without really playing with the stuff. As the dust settles, I think we'll find those less obvious gems. In some cases it might involve moving to slightly different positions. Writing standards here, perhaps hacking democracy there. But there's plenty left to hack.

Having said all this, I can't deny that the nostalgic melancholy surfaced by Garann's post stays with me. But it's excited nostalgic melancholy. Pretty much the kind of confused feeling I like to find a comfort zone in.