Simon Willison’s Weblog

Subscribe
Atom feed

Blogmarks

Filters: Sorted by date

.first() and .last() methods for jQuery. I got fed up of expecting these to exist, so I wrote them as a couple of one-liner plugins.

# 16th January 2008, 9:41 pm / javascript, jquery, plugins

Flickr: The Commons. Exciting pilot collaboration with the Library of Congress to release images with “no known copyright restrictions”. The header photo (of a bench) is one of my favourite spots in the world, in Mission Dolores Park, San Francisco.

# 16th January 2008, 9:38 pm / flickr, libraryofcongress, missiondolores, photos, publicdomain, san-francisco, the-commons

Sun To Acquire MySQL. Sun also employ Josh Berkus, one of the lead developers of PostgreSQL.

# 16th January 2008, 1:55 pm / databases, josh-berkus, mysql, open-source, postgresql, sun, sunmicrosystems, tim-oreilly

jQuery 1.2.2: 2nd Birthday Present. The API stays the same, but there are some healthy speed improvements, a new way of adding custom events and (most importantly) .ready() now waits for the CSS to be ready in addition to the DOM.

# 15th January 2008, 8:59 am / css, documentready, dom, javascript, jquery, libraries, ondomcontentloaded

A little something I’ve been working on. Paul Bissex has been working on a Django book with Jeff Forcier and Wesley Chun, to be published by Prentice Hall. It sounds like they’re a good way along the process.

# 14th January 2008, 10:47 pm / django, jeff-forcier, paul-bissex, prenticehall, python, wesley-chun

twauth: simple mobile openid using twitter (via) Brilliant proof of concept by Ian McKellar: an OpenID provider that authenticates you by sending you a Twitter direct message.

# 14th January 2008, 10:28 pm / ian-mckellar, openid, twitter

Javascript CSS Selector Engine Timeline. It’s not every day you see a piece of code you wrote compared to a Ford Pinto :)

# 14th January 2008, 1:25 pm / css, fordpinto, funny, javascript

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

Years

Tags