Simon Willison’s Weblog

Subscribe
Atom feed

Blogmarks

Filters: Sorted by date

Poorly Macbook, ineffective error message design. Nat’s MacBook died the other day, throwing out some impressively meaningless error symbols. How exactly are you meant to Google for a circle with a line through it?

# 13th January 2008, 11:31 pm / apple, errors, google, macbook, natalie-downe, searchability, usability

The Art & Science of JavaScript. The JavaScript book I contributed to is now shipping! My chapter describes how to build a Flickr / Google Maps mashup entirely using client-side code (via JSON-P).

# 12th January 2008, 7:05 pm / books, flickr, google-maps, javascript, json, jsonp, sitepoint, theartandscienceofjavascript, writing

bunnie’s blog: OLPC XO-1 (via) Bunnie Huang critiques the hardware design of the OLPC XO-1.

# 12th January 2008, 9:39 am / bunnie-huang, hardware, olpc, xo1

RubyForge: Starling. “Starling is a light-weight persistent queue server that speaks the MemCache protocol. It was built to drive Twitter’s backend, and is in production across Twitter’s cluster.”

# 11th January 2008, 9:47 pm / blaine-cook, memcached, message-queues, messaging, queue, ruby, rubyforge, starling, twitter

Is your Rails app XSS safe? SafeErb is an interesting take on auto-escaping for Rails: it throws an exception if you try to render a string that hasn’t been untainted yet.

# 10th January 2008, 6:46 pm / rails, ruby, safeerb, security, xss

Cross-Site XMLHttpRequest (via) “Firefox 3 implements the W3C Access Control working draft, which gives you the ability to do XMLHttpRequests to other web sites”—you can mark a document as available for cross-domain requests using either an Access-Control HTTP header or an XML processing instruction.

# 9th January 2008, 11:57 pm / accesscontrol, ajax, crossdomain, firefox, firefox3, http, javascript, john-resig, mozilla, w3c, xml, xmlhttprequest

pysolr. Python wrapper for Solr, the search web service wrapper for Lucene. One thing I’m not clear on: do you need to configure Solr with the fields you’ll be indexing in advance, or can Solr create new fields on the fly to match the data you send it?

# 9th January 2008, 8:50 pm / apache, lucene, pysolr, python, search, solr

Good architectural layering, and Bzr 1.1. Mark Shuttleworth on the growing importance of plug-in architectures as an open source project evolves, as they allow new developers to release their own components without needing commit access to the project. Django is pretty good for this, but more hooks (and a faster event dispatch system) would be useful.

# 9th January 2008, 2:06 pm / bazaar, bzr, dispatch, django, events, hooks, mark-shuttleworth, open-source, programming, python

$.comet (via) The first Comet (with Bayeux) plugin I’ve seen for jQuery—currently only handles long-polling over XMLHttpRequest, but still a promising start.

# 9th January 2008, 8:31 am / ajax, bayeux, comet, javascript, jquery, long-polling

daemon.py (via) Neat little Python module for daemonizing a process; handles logging and pid files out of the box.

# 8th January 2008, 9:58 pm / daemon, daemonizing, logging, pid, python

Why we switched to Jetty. Zimbra (recently acquired by Yahoo!) are using Jetty for Comet. It sounds like they are using Bayeux as well.

# 8th January 2008, 5:12 am / ajax, bayeux, comet, java, javascript, jetty, yahoo, zimbra

Flickr to Authenticate OpenID. Flickr /photos/username/ pages are now (almost) OpenIDs—they point at a new Yahoo!-wide OpenID server, but it hasn’t been switched on yet. It’s OpenID 2 only, presumably so Yahoo! can protect their users’ privacy by using directed identity to hide individual screen names.

# 7th January 2008, 10:48 pm / flickr, openid, openid2, yahoo

Job: Django developer in London. I’m consulting with GCap Media at the moment, who are looking to hire full-time Django developers in London for some really interesting projects. Please feel free to contact me directly with questions.

# 7th January 2008, 9:37 pm / django, gcapmedia, jobs, python

Announcing StaticGenerator for Django. Simple but powerful static file generator for Django applications—just tell it about your model instances and it will create an entire static site based on calling get_absolute_url() on each one. Uses signals to repopulate the cache when a model changes.

# 7th January 2008, 9:26 pm / caching, django, jared-kuolt, orm, performance, static, static-generator

Google apps for your newsroom. How the LJ World team use online tools like Google Spreadsheet, Swivel, ManyEyes and Google MyMaps to collaborate with the newsroom and build data-heavy applications even faster.

# 7th January 2008, 9:24 pm / collaboration, data-journalism, django, google, google-calendar, google-docs, google-maps, journalism, ljworld, manyeyes, matt-croydon, mymaps, news, newsroom

Naming twins in Python and Perl. Simple anagram problem solved in Perl and Python, with a bunch more solutions in the comments. The C# solution provides an interesting example of LINQ in action.

# 7th January 2008, 11:03 am / anagrams, brad-fitzpatrick, csharp, linq, perl, programming, python

FUD and TurboGears. Not cool: the TurboGears guys have been targeted by some (hopefully not deliberate) FUD along the lines of “the author of the TurboGears book is using Django now”, based on Mark posting about his research in to other frameworks.

# 7th January 2008, 9:02 am / django, fud, mark-ramm, python, turbogears

20,000 Reasons Why Comet Scales. Greg Wilkins coaxes Jetty and Bayeux in to supporting 20,000 simultaneous users per server while maintaining sub-second latency, using Amazon EC2 to run the benchmark.

# 7th January 2008, 8:32 am / bayeux, benchmarks, comet, ec2, greg-wilkins, java, javascript, jetty, performance

IE7.js version 2.0 (beta). Dean Edwards has updated IE7, shifting enhancements that weren’t fixed by the real IE7 in to a new script called IE8. You can also now hotlink the library directly from Google’s servers, though I don’t know how intended Google Code’s subversion repository is for that purpose.

# 6th January 2008, 11:15 pm / dean-edwards, goode, google-code, ie7, ie8, javascript

Django Tip: Complex Forms. Malcolm demonstrates some advanced tricks with newforms.

# 6th January 2008, 10:14 pm / django, malcolm-tredinnick, newforms, python

Filtering foreign key choices in newforms-admin. A nice introduction to the Django newform-admin branch, including an example of how to easily implement row-level permissions.

# 6th January 2008, 8:31 pm / christian-joergensen, django, django-admin, newforms, newformsadmin, python

XSS Vulnerabilities in Common Shockwave Flash Files. Is the word “shockwave” still relevant to Flash? Regardless, it turns out Flash can be a serious vector for XSS attacks, and many commonly used components have recently fixed holes (and hence should be updated ASAP).

# 6th January 2008, 9:35 am / flash, security, shockwave, xss

Encoded Polyline Algorithm Format. Google Maps does some pretty crazy bit mangling to create compressed versions of lat/long pairs.

# 4th January 2008, 4:12 pm / encoding, google-maps, latlong, polyline

HTTP Cache Channels (via) Interesting extension to the HTTP caching model by Mark Nottingham: caches can be told to subscribe to an Atom feed which alerts them to cached data that has gone stale. Group invalidation is also supported.

# 4th January 2008, 12:48 pm / atom, cachechannels, caching, http, mark-nottingham, squid

The Dark Side Of The Moon (via) Robert O’Callahan believes that Moonlight is a strategic mistake, because it gives credibility to Microsoft’s entry to a new market which they will use to “keep the competition on a treadmill”; Moonlight can also never be entirely free due to the need for a proprietary codec (VC-1) available only as a binary blob.

# 4th January 2008, 12:41 pm / binaryblob, codecs, microsoft, miguel-de-icaza, moonlight, open-source, roberto-callahan, silverlight, video, wc1

Django on Jython (via) Outstanding work from Jim Baker and the Jython team: Django now runs on the modern branch of Jython, with a couple of patches and some failed doctests due to dictionary order (a problem with Django’s test suite).

# 4th January 2008, 12:35 pm / django, doctest, jython, testing

Do not treat Flickr photo IDs as integers (via) “The good news is, Flickr reached photo number 2147483647 yesterday. Go Flickr! The bad news is that number 2147483647 is the limit for signed integer data type.”

# 3rd January 2008, 10:46 pm / flickr, integers, unsigned

DataPortability.org. “Standardized Data Portability is the next great frontier for the web. As users, our identity, photos, videos and other forms of personal data should be discoverable by, and shared between our chosen tools or vendors.”

# 3rd January 2008, 4:49 pm / data-portability, portablesocialnetworks

Undo commit in subversion. svn merge -r 1708:1707—I can never remember how to do this.

# 3rd January 2008, 4:43 pm / merge, subversion, svn, undo

Damien Katz: New Gig. IBM have employed Damien Katz to work full time on CouchDB. The work will be under the Apache license with the ASF owning the copyright.

# 2nd January 2008, 8:35 pm / apache, asf, couchdb, damien-katz, ibm

Years

Tags