Simon Willison’s Weblog

Subscribe
Atom feed

Blogmarks

Filters: Sorted by date

querySelectorAll in Firefox 3.1. John Resig benchmarks the various JavaScript libraries’ support for querySelelectorAll, and finds an impressive 2-6x performance improvement over native DOM traversal. It’s worth clicking through to John’s experimental plugin for adding support to jQuery, which does a clever trick using __proto__ to convert the collection returned by querySelectorAll in to a jQuery object in browsers that support it.

# 21st August 2008, 9:50 am / firefox, javascript, john-resig, jquery, proto, queryselectorall, selectors

SecondLife rolls out Mono-powered servers. Most of the work on this was done in Linden Lab’s Brighton UK office. If you’re interested in Mono and want to live in Brighton, they’re hiring!

# 21st August 2008, 9:45 am / brighton, jimpurbrick, lindenlab, miguel-de-icaza, mono, secondlife

Facebook engineering notes on Scaling Out. Jason Sobel explains a couple of tricks Facebook use to deal with consistency between their California and Virginia data centres. The first is to hijack the MySQL replication stream to include information about memcached records to invalidate; the second is to use Layer 7 load balancers which inspect a “last modification time” cookie and send users to the masters in California if they have updated their profile in the past 20 seconds.

# 20th August 2008, 11:51 pm / facebook, jason-sobel, memcached, mysql, replication, scaling

UnicodeDictWriter—write unicode strings out to Excel compatible CSV files using Python. Stuart Langridge and I spent quite a while this morning battling with Excel. The magic combination for storing unicode text in a CSV file such that Excel correctly reads it is UTF-16, a byte order mark and tab delimiters rather than commas.

# 20th August 2008, 12:19 pm / byteordermark, csv, excel, i18n, python, stuart-langridge, unicode, unicodedictwriter, utf16

Cyberstar. Adrian made the front cover of the Chicago Tribune magazine!

# 18th August 2008, 11:56 pm / adrian-holovaty, django, everyblock

Dare left something out (and it’s important). Dave Winer: “You should at least learn the lessons and add to REST what it needs to catch up with XML-RPC. Seriously. What’s missing in REST, btw, is a standard method of serializing structs, lists and scalar types.” That would be JSON.

# 18th August 2008, 9:39 am / dare-obasanjo, dave-winer, json, rest, xml-rpc

Explaining REST to Damien Katz. I didn’t know that it was Mark Baker back in 2002 who first pointed out that SOAP was flawed because it ignored the architecture of the Web as defined by Roy Fielding’s Ph.D thesis.

# 17th August 2008, 11:19 pm / damien-katz, dare-obasanjo, history, mark-baker, rest, royfielding, soap

АЭРОКРАТ КОНЦЕПТ (via) Another great Airship blog. I don’t speak Russian, but the photos and videos speak for themselves.

# 16th August 2008, 11:50 pm / airships, russian, zeppelins

Domain-Driven Design in an Evolving Architecture. How the team at guardian.co.uk used Domain-Driven Design in their recent two year rebuild. The core of DDD is having end users involved with domain modeling, which results in a shared domain language that should be understood by everyone involved.

# 16th August 2008, 1:35 pm / domain-driven-design, guardian, modeling

minidetector. Neat piece of Django middleware that adds a “mobile = True” attribute to the request object if the request’s user-agent matches a list of strings of known low-power browsers in mobiles, PDAs or game consoles.

# 15th August 2008, 8:21 am / django, middleware, minidetector, mobile, python, user-agents

REST, I just don’t get it. Read the comments for some excellent practical reasons to care about REST, including cache management (PUT and DELETE can expire the cache entries for the corresponding GET), the ability to add or move parts of the server API without redeploying client libraries and the idempotency of GET / PUT / DELETE and HEAD (repeated POST operations may have side-effects).

# 15th August 2008, 8:20 am / caching, damien-katz, delete, get, idempotency, post, put, rest

This Week in Django. After 33 episodes Django’s usually-weekly podcast finally has its own website.

# 14th August 2008, 2:57 pm / django, podcasts, python, thisweekindjango

YUI 3.0 Preview Release 1. YUI sandboxing is a really good idea, which cleverly addresses both the need to run multiple versions of the library at once and the complaints about how verbose traditional YUI code can get.

# 14th August 2008, 10:03 am / javascript, sandboxing, yui, yui3

ECMAScript Harmony. John Resig explains the outcome of the recent “Oslo meeting” where proponents of ECMAScript 3.1 (incremental improvements to JS as it exists today) and 4 (massive, sweeping changes including many new programming constructs) harmonised their differences. The combined effort is closer to 3.1 than it is to 4, which I think is the right decision.

# 14th August 2008, 9:37 am / ecmascript, harmony, javascript, john-resig, oslomeeting

Free licenses upheld by US “IP” court. Free software and CC licenses which dictate conditions that, when violated, turn you in to a copyright infringer now have precedence in US law.

# 14th August 2008, 9:33 am / copyright, creativecommons, freesoftware, law, lawrence-lessig, licensing, open-source, uslaw

Around the world and back again. Flickr are using data from OpenStreetMap to provide street-level detail of Beijing for the Olympics.

# 13th August 2008, 11:05 pm / beijing, china, flickr, mapping, olympics, openstreetmap

Keyczar (via) New open source cryptography toolkit from Google, designed to get algorithm selection, key rotation and versioning right so you don’t have to. Java and Python versions are available; the Python version depends on PyCrypto.

# 13th August 2008, 1:20 pm / ben-laurie, encryption, google, java, keyczar, keyrotation, pycrypto, python

Underscores are now word separators, proclaims Google. I missed this story last year—the change was announced by Matt Cutts at WordCamp 2007.

# 13th August 2008, 1:06 pm / google, hyphens, matt-cutts, seo, underscores, wordcamp, wordpress

Fire Eagle has launched! No need for an invite any more, hooray!

# 12th August 2008, 9:33 pm / fireeagle, location, yahoo

Django snippets: RequestFactory. I’ve been wanting this for ages; when I finally got around to writing it it turned out to only be a dozen or so lines of code. Makes it easy to create mock request objects in Django, which you can then use for testing view functions directly (bypassing the current test client mechanism which requires views to be assigned to a URLconf before they can be tested).

# 12th August 2008, 12:40 pm / code, django, httprequest, python, requestfactory, testing

Carphone crackdown on phone insurance scam. Story from 2005 but relevant today: I’ve been pestered by scam calls about phone insurance since buying my iPhone from Carphone Warehouse yesterday—the scammers apparently wardial against Carphone Warehouse’s assigned blocks of numbers. Caused a bit of a scene on Twitter until I figured out Carphone Warehouse weren’t actually at fault.

# 12th August 2008, 11:45 am / insurance, iphone, scams

Reviews of the Pownce app on the iPhone app store on Flickr. I had to stitch together a screenshot because you can’t actually link to content in the App Store (unless you don’t care that people without iTunes won’t be able to follow your link). Three out of the four reviews complain about the OAuth browser authentication step, which is frustrating because Pownce have implemented it so well.

# 12th August 2008, 11:05 am / appstore, flickr, iphone, itunes, oauth, phishing, pownce, security, usability

IMG-2-JSON (via) I’m not the only person deploying simple JSON-P APIs on App Engine: Adam Burmister’s tool extracts dimension, mimetype and EXIF metadata when provided the URL to an image file.

# 12th August 2008, 9:43 am / adam-burmister, api, exif, google-app-engine, img2json, json, jsonp, mimetype

Exposure (iPhone app) behaves suspiciously. Exposure on the iPhone does OAuth-style authentication incorrectly—it asks the user to authenticate in an embedded, chromeless browser which provides no way of confirming that the site being interacted with is not a phishing attack. Ben Ward explains how the Pownce iPhone app gets it right in the comments. Exposure author Fraser Spiers also responds.

# 12th August 2008, 7:47 am / ben-ward, exposure, flickr, iphone, oauth, phishing, pownce, security

MapIconMaker. Extension API that lets you programatically construct a Google Maps bubble marker icon with a custom size, gradient and stroke colour. Under the hood it uses the Google Chart API with the (undocumented?) “mm” chart type.

# 11th August 2008, 8:48 am / googlechartapi, google-maps, javascript, mapiconmaker, markers

Why I can’t put Tibet in my Hotmail address. Apparently it’s because “TIB” is name of a bank in Florida, and Microsoft are trying to prevent phishers from creating e-mail addresses that include the names of financial institutions.

# 10th August 2008, 10:41 pm / hotmail, microsoft, phishing, tibet

Changeset 8266—Added ModelAdmin.save_model() and ModelAdmin.save_formset() methods. One of those small changes that opens up enormous possibilities—it’s now incredibly easy to customise exactly how a model is saved in the Django admin interface by over-riding the save_model method.

# 10th August 2008, 1:17 pm / admin, django, django-admin, python

Facebook Security Advice: Never Ever Enter Your Passwords On Another Site, Unless We Ask You To. Nice to see TechCrunch highlighting the hypocrisy of Facebook advising their users to never enter their Facebook credentials on another site, then asking them for their webmail provider password so they can scrape their address book.

# 9th August 2008, 10:18 am / facebook, hypocrisy, passwordantipattern, passwords, security, techcrunch

Open Web Podcast Episode 1. I haven’t listened yet, but Alex Russell, John Resig and Dion Almaer all at once? Awesome.

# 8th August 2008, 11:59 pm / alex-russell, dion-almaer, john-resig, openweb, podcasts

Years

Tags