Simon Willison’s Weblog

Subscribe
Atom feed

Blogmarks

Filters: Sorted by date

Using Git as a versioned data store in Python. gitshelve supports the same interface as Python’s built-in shelve module but stores things to a versioned Git repository instead of just a pickled dictionary. I’ve been casually wondering what a Git-powered CMS would look like.

# 15th May 2008, 3:25 pm / cms, git, gitshelve, python

Cubescape. Beautiful isometric cube building tool by Cameron Adams, written in JavaScript and jQuery.

# 15th May 2008, 8:40 am / cameronadams, cubescape, isometric, javascript, jquery

Crossdomain.xml Invites Cross-site Mayhem. A useful reminder that crossdomain.xml files should be treated with extreme caution. Allowing access from * makes it impossible to protect your site against CSRF attacks, and even allowing from a “circle of trust” of domains can be fatal if just one of those domains has an XSS hole.

# 15th May 2008, 8:06 am / crossdomainxml, csrf, flash, javascript, jeremiah-grossman, security, xss

Engineering @ Facebook: Facebook Chat. The new Facebook Chat uses Comet (long polling with a hidden iframe) against a custom web / chat server written in Erlang, designed to handle a launch to all 70 million users at once. It was tested using a “dark launch” period where live pages simulated chat request traffic without showing any visible UI.

# 15th May 2008, 7:55 am / comet, darklaunch, erlang, facebook, javascript, scaling

goog/useragent/iphoto.js. The Goog library includes code to detect the user’s installed version of iPhoto, based on reverse engineering the Mac.com Gallery RSS feeds. This has Mark Pilgrim written all over it.

# 14th May 2008, 9:21 pm / goog, googledoctyp, iphoto, javascript, mark-pilgrim

Doctype: /trunk/goog. Google’s newly released JavaScript library (pure JavaScript, so more along the lines of YUI and jQuery than GWT). I haven’t found the documentation for it yet, but the code is extremely well commented. UPDATE: The documentation is spread throughout Doctype.

# 14th May 2008, 9:12 pm / dojo, goog, google, googledoctype, gwt, javascript, jquery, libraries, yui

Doctype on Google Code. Alternative way of browsing Google Doctype—if you link to articles here instead of using the permalinks in the official version non-JavaScript user agents will be able to access the content you’ve linked to.

# 14th May 2008, 8:34 pm / google, googledoctype, javascript

Google Doctype. So now we know what Mark Pilgrim’s been doing at Google... heading up a project to create an encyclopaedia of web development. The JavaScript UI for browsing it is a bit weird (though you do at least get real pages if you disable JavaScript in your browser).

# 14th May 2008, 8:30 pm / documentation, google, googledoctype, mark-pilgrim

Google Maps now shows photos and Wikipedia articles. Click the “More...” button. My first thought was “how do they get so many photo markers on the map?”—Firebug shows that they’re generating tiles on the server containing multiple photo markers, then when you click on one an Ajax call checks which photo is in that particular spot.

# 14th May 2008, 7:10 pm / ajax, google-maps, javascript, wikipedia

Django: security fix released. XSS hole in the Admin application’s login page—updates and patches are available for trunk, 0.96, 0.95 and 0.91.

# 14th May 2008, 7:49 am / django, django-admin, security, xss

Session variables without cookies. Brilliant but terrifying hack—you can store up to 2 MB of data in window.name and it persists between multiple pages, even across domains. Doesn’t work with new tabs though, and storing JSON in it and eval()ing it is a bad idea—a malicious site could populate it before sending the user to you.

# 13th May 2008, 9:59 pm / crossdomainstorage, javascript, json, security, sessions

Graffletopia. Huge collection of free OmniGraffle stencils.

# 13th May 2008, 5:58 pm / omnigraffle

Django admin OmniGraffle stencil. Alex Lee put together a beautiful stencil for OmniGraffle containing all of the common UI elements seen in the Django admin interface, as a tool for wireframing.

# 13th May 2008, 5:58 pm / alex-lee, django, django-admin, omnigraffle

Persevere adds Comet Support. Persevere sounds neat: a RESTful HTTP/JSON data store (the interface reminds me of CouchDB) which recently gained the ability to “subscribe” to a resource and receive notifications of updates via comet.

# 13th May 2008, 8:09 am / comet, couchdb, javascript, json, persevere, rest, restful

django-db-log. Middleware that logs Django exceptions to the database, using a clever scheme based on an MD5 of the traceback text to group duplicate errors in to batches.

# 13th May 2008, 8:07 am / david-cramer, django, djangodblog, exceptions, logging, middleware

Yahoo! Internet Location Platform. As an ex-Yahoo! this is really exciting—WhereOnEarth (a London company acquired by Yahoo! in 2005) provide the incredibly detailed geographical data used by Flickr, Upcoming and FireEagle—and now it’s available as an external API.

# 12th May 2008, 9:02 pm / apis, fireeagle, flickr, geocoding, location, upcoming, whereonearth, yahoo

Airship Ventures (via) New startup providing tours of Silicon Valley in a frickin’ Zeppelin. Strangely enough I’ve been complaining about the lack of Zeppelins over Silicon Valley for several years. Really.

# 12th May 2008, 6:41 pm / airships, pubchat, siliconvalley, zeppelins

Beanstalkd. This is the light-weight cross-language queue I’ve been waiting for. Similar to Starling but your workers don’t need to poll for new jobs; you can call the blocking “reserve” call instead.

# 12th May 2008, 9:12 am / beanstalkd, lightweightqueue, queue, starling

Python with a modular IDE (Vim). Great tips—I’d use these if I wasn’t still scarred from the time vim encrypted my file instead of saving it because I had caps lock on by mistake.

# 12th May 2008, 7:09 am / capslock, ide, python, vim

Byteflow Blog Engine. This looks like the most full-featured of the Django blog engines by a pretty big margin, including OpenID client and server support. A product of the growing Russian/Ukrainian Django community.

# 11th May 2008, 7:41 pm / byteflow, django, openid, python, russia

Processing.js. John Resig’s outstanding port of the Processing visualisation language to JavaScript and Canvas. Runs amazingly well in Firefox 3. One hell of a hack.

# 9th May 2008, 8:24 am / canvas, javascript, john-resig, processing

Opera Dragonfly. Opera’s new Firebug-style developer console. Out in alpha and it shows (slow to load and the interactive console leaves a lot to be desired) but still looks incredibly promising, especially the remote debugging tools for working with Opera on phones and games consoles.

# 6th May 2008, 7:04 pm / debugging, dragonfly, firebug, opera

Unobtrusive JavaScript with jQuery. The online handout for the tutorial I gave this morning at XTech.

# 6th May 2008, 6:53 pm / handout, javascript, jquery, unobtrusive-javascript, xtech, xtech08

Sneaking Ruby Through Google App Engine (and Other Strictly Python Places). In a characteristic stroke of genius, _why makes a solid initial attempt at compiling Ruby 1.9 source to Python 2.5 bytecode.

# 5th May 2008, 10:13 pm / bytecode, google-app-engine, python, ruby, whytheluckystiff

Making Time Machine work with the ReadyNAS. Finally, a decent set of instructions on using a ReadyNAS with Time Machine. The trick is to create a local sparse disk image with a magic name (based on hostname and eth0 MAC address), then move it to the NAS.

# 4th May 2008, 5:55 pm / backups, macos, readynas, timemachine

twistori. Lovely implementation of a neat idea for a Twitter app from Amy Hoy and Thomas Fuchs.

# 4th May 2008, 8:20 am / amyhoy, thomas-fuchs, twistori, twitter

James B. on Pownce (via) James Bennett has started using Pownce for sort of medium-format blog entries, longer than a tweet but shorter than a blog essay and delivered with a healthy dose of snark.

# 2nd May 2008, 9:15 pm / blogging, james-bennett, pownce, snark

How one site dealt with SQL injection attack (via) Horrifying story of developer incompetence from Autoweb: “The contractor had no idea how to find and fix the Web page vulnerability that allowed the SQL injection attack code to execute successfully.”

# 2nd May 2008, 9:01 pm / autoweb, incompetence, security, sql-injection

Django Users Group London meetup, 19th of May. The inaugural meeting of DJUGL will be on the 19th of May at the Capital Radio building in Leicester Square, sponsored by GCap Media. Three presentations starting at 7pm (I’ll be giving one of them), then on to the pub. Sign up on EventWax; there are only 70 places.

# 2nd May 2008, 12:19 pm / django, djugl, events, gcap, gcapmedia, london, python

SourceForge Allows OpenID Logins. Excellent—SourceForge is the kind of site that I log in to infrequently enough to always forget my password (and indeed username) making OpenID a great fit.

# 1st May 2008, 1:05 pm / openid, sourceforge

Years

Tags