My own URL shortener

So I guess the modern equivalent of the vanity email address is the vanity URL shortener. I registered because it was available and cheapish and because’s links keep getting longer and longer. I tried both Google’s and’s BYO domain shorteners and didn’t like them at all. Google forces you to use a …

Twitter Translation

My friend Britt mentioned today that he was about to launch How exciting! But I don’t understand Japanese. If only I could easily translate all those tweets in languages I don’t understand. I played around with Google’s new AJAX Translation API before and I wondered how hard it would be to use that from …

A simpler mobile OpenID workflow?

Chris Messina posted today about the problems with current OpenID work-flows for mobile users. In spite of a long list of chores I was intending to complete today I had a bit of an experiment with an approach to solving this. The main problem I wanted to solve was to allow a user to prove …

The Making Of LOL Feeds

Last week I wrote and released my LOL Feeds site. It takes RSS or Atom feeds from the web and makes a series of lolcat-style images on a web page. It’s really way funnier than it sounds.

Initially I wanted to be able to auto-generate Jerk City comic strips based on my friends’ twitters, but when that seemed hard I opted for lolcats style images. After all we’d been seeing a lot of the lolcats on twitter – they’re displayed when the site is undergoing maintenance.

The original version of the script was very very clever. It used the Google AJAX Feed API and the Flickr API to pull in feeds and random images of cats from Flickr, combine them together with a PHP script I wrote to generate transparent PNGs of text live onto the page. It used the browser’s own text-flowing algorithms to lay out the text. It was however amazingly slow.

Browsers only allow a low number of concurrent connections to one site – four or eight I think – and this made the text crawl in. Also while the Google AJAX Feed API and Flickr API are pretty snappy they’re way slower than doing it server side. I was sad about this because I’m kind of in love with fully dynamic client-side applications (just look at my home page) but I actually wanted this to see the light of day.