Simon Willison’s Weblog

Subscribe

June 2009

June 7, 2009

TOSBack | The Terms-Of-Service Tracker. Fantastic idea (and implementation) from the EFF—a site that currently tracks 44 website policy documents and highlights changes to them using a diff engine (from Drupal). A global RSS feed is available—it would be useful if individual feeds for different sites and organisations were also provided.

# 10:49 am / tosback, eff, privacy, diff, drupal

Let's try to imagine what a Google Silverlight would have been. It would have been a fully open source product from Google, with a very liberal open source license (BSD or Apache). It would have all the technical specifications published openly. They would pledge to have the Silverlight VM interoperate with Javascript and HTML5. And a company like Zoho would have a ton of developers working on Google Silverlight based applications by now - as opposed to having exactly ZERO developers working on Microsoft Silverlight.

Sridhar Vembu

# 11:32 am / open-source, google, microsoft, silverlight, zoho, sridharvembu

Mapstraction API Sandbox. Andrew Turner’s new tool for exploring the Mapstraction JavaScript library, which provides a unified code interface to 12 different mapping services

# 11:41 am / mapstraction, andrew-turner, javascript, mapping

MongoDB—Capped Collections. Collections with a size limit that automatically expire older entries are interesting—useful for things like a “recent searches on this site” feature.

# 12:50 pm / mongodb, cappedcollections, search

Daniel’s Daily Monster (via) Jon Hicks: “Every week day I draw a little monster card to go in my son’s lunchbox.” Geek dads rock.

# 1:30 pm / jon-hicks, geekdads, monsters

walking papers lives. Round trip mapping: print out a map from OpenStreetMap, walk around annotating it with a pen, then scan the result back in (a QR code ensures the area and orientation is recognised) . Specifically targeted at eye-level stuff which can’t be collected using GPS or aerial imagery alone. When I grow up, I want to be Mike Migurski.

# 1:47 pm / michal-migurski, walkingpapers, openstreetmap, papernet, mapping

Installing Django, Solr, Varnish and Supervisord with Buildout. Useful, detailed instructions... but I still think this stuff is Way Too Difficult at the moment. I’m a big fan of the idea of sites that are assembled from multiple smaller web services talking HTTP to each other, but ensuring all the moving parts stay running is massively more painful than just running Apache and MySQL.

# 1:54 pm / apache, mysql, sysadmin, operations, rest, django, solr, varnish, supervisord, buildout, python, bertrandmathieu

June 8, 2009

The Straight Choice | The election leaflet project. Nice crowdsourcing app by Richard Pope, Francis Irving and Julian Todd—UK political leaflets are hard to keep tabs on due to the way they are distributed over small geographical areas, so this site encourages you to take photos of leaflets delivered to your home and tag them with postcode, party and key topics.

# 4:23 pm / thestraightchoice, ukpolitics, politics, crowdsourcing, richard-pope, francisirving, julian-todd

June 9, 2009

The Twitpocalypse is Near: Will Your Twitter Client Survive? Twitter tweet IDs will shortly tick over past the maximum signed 32 bit integer, potentially breaking applications. I learnt this lesson when the same thing happened to Flickr photo IDs: never store numeric IDs from external systems as integers, always use strings.

# 10:52 am / twitter, flickr, apis, ids, maxint

Augmenting photos—with OSM! “You climbed up a mountain and took a photo ... but it’s 2009! Why doesn’t it have all kind of magic over the top of it.”—Marmota matches your landscape photos to height field data, then overlays data from OpenStreetMap mapped to the contours of the photograph.

# 11:34 am / photography, gps, magic, marmota, openstreetmap, steve-coast

June 10, 2009

Styling buttons to look like links. Nat has a neat trick for styling submit buttons to look like regular links—so there’s absolutely no excuse for using a “delete” link when you should be using a POST request.

# 2:11 am / natalie-downe, css, buttons, getpost, forms, post, http, links

June 11, 2009

Exclusive: The Future of Facebook Usernames. I have to admit I was planning to just let Facebook get on with it, assuming that the OpenID provider part would show up of its own accord—but maybe I should write a thoughtful and persuasive essay about it after all.

# 9:46 am / facebook, anil-dash, openid, funny, urls

Exactly how well did the BNP do where you live? Guardian journalists spent a day and a half calling round different local authorities to get a proper breakdown of the European election results (which are only officially published in aggregate) and published the results as a spreadsheet on the Datablog.

# 11:37 am / datablog, guardian, elections, datastore, bnp

Cryptographic Right Answers. Best practise recommendations for cryptography: “While some people argue that you should never use cryptographic primitives directly and that trying to teach people cryptography just makes them more likely to shoot themselves in their proverbial feet, I come from a proud academic background and am sufficiently optimistic about humankind that I think it’s a good idea to spread some knowledge around.”

# 10:16 pm / cryptography, colinpercival, security, aes, hashing

The GIF Pronunciation Page. It’s jiff. Here’s evidence.

# 10:50 pm / gif, images, pronunciation

June 12, 2009

Dealing with election results data. Alf Eaton loaded the Guardian’s European election results spreadsheet in to Google’s new Fusion Tables tool.

# 6:06 pm / guardian, datablog, datastore, elections, alf-eaton, google, fusiontables

Mr. Penumbra’s Twenty-Four-Hour Book Store. Enormously entertaining short story about data visualisation and creepy San Francisco bookshops by Robin Sloan.

# 6:07 pm / robin-sloan, bookshops, san-francisco, visualisation, shortstory

And that is why, in 2009, when developing in Microsoft .NET 3.5 for ASP.NET MVC 1.0 on a Windows 7 system, you cannot include /com\d(\..*)?, /lpt\d(\..*)?, /con(\..*)?, /aux(\..*)?, /prn(\..*)?, or /nul(\..*)? in any of your routes.

Benjamin Pollack

# 11:48 pm / aspdotnet, benjamin-pollack, microsoft, backwardscompatibility

June 13, 2009

Facebook Usernames and OpenID

Today’s launch of Facebook Usernames provides an obvious and exciting opportunity for Facebook to become an OpenID provider. Facebook have clearly demonstrated their interest in becoming the key online identity for their users, and the new usernames feature is their acknowledgement that URL-based identities are an important component of that, no doubt driven in part by Twitter making usernames trendy again.

[... 760 words]

June 16, 2009

Opera Unite. Opera’s big announcement: a developer preview (“labs release”) of their new web-server-in-your-browser feature, Unite. Includes an Opera-hosted proxy to help break through your firewall. The web server can be customised using server-side JavaScript running in an Opera Widget.

# 11 am / unite, operaunite, opera, javascript, webservers, widgets

SWFUpload jQuery Plugin. Nice looking plugin around an invisible Flash shim that provides multiple file uploads and client-side progress indicators.

# 11:46 am / jquery, swfupload, upload, flash, javascript

Jython 2.5.0 Final is out! It’s been a long time coming—congratulations to the team.

# 11:21 pm / jython, python, java

June 17, 2009

C64 Twitter client. Awesome.

# 9:14 am / c64, twitter

June 18, 2009

Investigate your MP’s expenses. Launched today, this is the project that has been keeping me ultra-busy for the past week—we’re crowdsourcing the analysis of the 700,000+ scanned MP expenses documents released this morning. It’s the Guardian’s first live Django-powered application, and also the first time we’ve hosted something on EC2.

# 11:16 pm / django, ec2, guardian, mpexpenses, projects, python, crowdsourcing

June 19, 2009

Unimpressed by NodeIterator. John Resig, one of the most talented API designers I’ve ever come across, posts some well earned criticism of the document.createNodeIterator DOM traversal API.

# 9:53 pm / javascript, api-design, dom, john-resig, nodeiterator

Towards a Standard for Django Session Messages. I completely agree that Django’s user.message_set (which I helped design) is unfit for purpose, but I don’t think sessions are the right solution for messages sent to users. A signed cookie containing either the full message or a key referencing the message body on the server is a much more generally useful solution as it avoids the need for a round trip to a persistent store entirely.

# 9:57 pm / django, sessions, messages, flash, signedcookies, cookies, python

The breakneck race to build an application to crowdsource MPs’ expenses. Charles Arthur wrote up a very nice piece on the development effort behind the Guardian’s crowdsourcing expenses app.

# 10:16 pm / charles-aurthur, mpsexpenses, crowdsourcing, guardian

June 20, 2009

Google asked people in Times Square:“What is a browser?”. Stuff like this makes me despair for creating a secure web—what chance do people have of surfing safely if they don’t understand browsers, web sites, operating systems, DNS, URLs, SSL, certificates...

# 1:25 am / security, usability, browsers, realhumans, google

June 22, 2009

You can buy an iPod nano on Apple, Best Buy, etc. for about $149. Amazon sells it for $134. That’s probably cost price. It turns out that Amazon can sell almost everything at cost price and still make a product because of volume. It’s all down to the Negative Operating Cycle. Amazon turns over its inventory every 20 days whereas Best Buy takes 74 days. Standard retail term payments take 45 days. So Best Buy is in debt between day 45 and day 74. Amazon, on the other hand, are sitting on cash between day 20 and day 45. In that time, they can invest that money. That’s where their profit comes from.

Jared Spool, via Jeremy Keith

# 5:13 pm / amazon, investing, jared-spool, jeremy-keith, aneventapart, bestbuy

June 24, 2009

To Sprite Or Not To Sprite. CSS sprite images are decompressed to full bitmaps by browsers before they are rendered, so sprite files with large numbers of pixels will dramatically increase the memory footprint of your site.

# 10:33 am / csssprites, performance, css, velocityconference

2009 » June

MTWTFSS
1234567
891011121314
15161718192021
22232425262728
2930