What part of Instapaper’s infrastructure are you most proud of?
interviewThe bookmarklet has a mechanism to save pages from sites that require logins for full content, such as the Wall Street Journal and Harper’s, by sending a copy of the page’s HTML from the customer’s browser to the server. It’s like automating the “Save as…” menu item: if you have your own account for these sites and can see the page in your browser, you can save it to Instapaper.
The way it does this is ridiculous: instead of calling a simple GET request to save the page, since an entire page’s contents would quickly overrun any URL-length limits in the stack, it injects a FORM with a POST action and populates a hidden value with the page contents.
But form-data requests from browsers aren’t Gzip-compressed, so the resulting data is huge and needs to be sent over people’s (often slow, often mobile) upstream connections. So I found an open-source DEFLATE implementation in Javascript — really — and the bookmarklet compresses the page data right there in the browser before sending it.
The whole procedure is hideously complex, but works incredibly well.