Five years ago, I wrote a dumb little article about "two-way, cross-domain communication in the <script> tag". It was something I hacked up at work one day while trying to solve a problem. My solution didn't do anything much new; I was standing on the shoulders of all kinds of people who had written about cross-domain XMLHttpRequest workarounds before. All I did was put two or three people's ideas together, and then I wrote an article about it.

I think the technique my article describes is more or less obsolete now, since you've been able to do cross-domain XHR at least since 2009 in the case of Firefox, and it sounds like the situation is similar in all the other modern browsers. But even so, people are still bookmarking the thing. It's kind of a bummer that far more people seem to have paid attention to it than have ever paid attention to, say, any particular song on my podcast. I'm particularly amused that somebody tagged it with 'gwt'. Because, you know, my dumb little workaround hack that I did in 2006 has everything to do with the Java-to-JavaScript compiler that the innards of freakin' AdWords is made of.

What I'm happy with, though, is that I think my writing has aged well. I've become a better writer over the last decade or so, mostly because of this blog, and when I look back at my own writing now, 2006 seems to be just about the time when it starts to become tolerable. If I were writing the same article now, I'd probably be less cutesy, but honestly, I don't think I'd change much. Most of all, I'm glad that the demo still works after five years. How many five-year-old software demos on the web are even still there, let alone working? Most of the links in my article to other people's blogs and such -- all the people I borrowed ideas and code from -- are broken now. Bidynodes is actually the one defensible reason that I keep on renewing the registration on shoeboxfulloftapes.org (which I actually bought specifically for the purposes of this article; in order to demo cross-domain stuff, I wanted a second domain that I knew I could keep around indefinitely!) year after year.

So, there's that. I'll be pretty happy if I ever write an academic paper that more than 20 people cite, or if I ever write a song that more than 20 people on the Internet admit to liking. I guess I'm happy to be appreciated for whatever it is people want to appreciate me for, but it would be nice if it were something I'm actually decent at! I mean, seriously, people, my JavaScript is awful.

What's funny about this, to me, is that I'm the same way with the stories I write. One of the more recent ones has a scene that people were RAVING about, it was so great, so hilarious, etc. And I am so glad that they enjoyed it, but man, it took me five minutes and I didn't think it was any good. The rest of the story is SO MUCH BETTER. But no, no, the knock-off piece I didn't try hard on and am not good at, that's the part people like. Oh well!

in case of time travel, or violating the prime directive

freyley tried to explain to me last year how horrible JSONP was (which I guess is what we're calling this now), but I didn't have a use for it at the time, and it didn't really sink in. It wasn't until a few weeks ago when I went to a calagator hackathon that I appreciated what a shining example this is of how the web is a terrible application platform.

Now one of the things I wonder about is what I'd do to fix it if I got a time machine. Interaction with the server is limited by the number of physical telephone lines you have and your users willingness to pay long distance fees. Mail packets are exchanged between BBSs in batches in the middle of the night. Data transfer speeds are measured in "baud", and you can watch each line -- if not each character -- as it arrives.

How do you explain to timbl, as he's working on his SGML doctype for hypertext documents, that this document markup language is going to be what application user interfaces are defined in? What do you say to the people with grand visions of thin client terminals when you come from a world where client/server communication takes place over the stateless document-oriented HTTP protocol?

Or, maybe a little later, you describe modern web applications, and people say "ah, the promise of Java's write-once, run-anywhere applications has come true" and you have to try to explain that no, while these run-anywhere web applications are taking over the market, they're not in Java, they're written in Netscape's hastily designed JavaScript. (Java is relegated almost entirely to server-side applications.)

And you don't get to just start the software stack over but keep your always-on wireless megabit bandwidth, your multicore gigahertz processors, and your marketing and distribution channels. You have to somehow evolve this thing, from a time when phonebooks were the extent of household information technology, up to now, where 150 kilobytes seems like a pretty modest request size for your five-hundred word post here.

I hope that time machine is reusable. It'll probably take a few tries.

Re: in case of time travel, or violating the prime directive

You could check with Jesse about your time-travel needs, but in the meantime, it's a good thing we get to evolve, isn't it? That's why my colleagues at Mozilla (and elsewhere) are working very hard on EcmaScript. JavaScript was hastily designed, but "hasty" is not the word I'd pick for how the language designers are working today.

Don't all systems hit problems of scale? Representative democracy doesn't seem to scale up all that well, either (not that I have a better idea offhand), and the framers of the Constitution couldn't possibly have anticipated the problems of scale we face now.