Feed Sign in with OpenID OpenID

Simon Willison’s Weblog

24ways 2d 37signals 3d 4chan abtesting accessibility accounts acid3 actionscript activemq adamgomaa adobe adrianholovaty ads advertising agile airships ajax ajaxian alexpayne alexrussell alfeaton algorithms alistapart alpha amazon amazonwebservices ami amqp andrewgodwin andrewturner andybudd anildash animation annevankesteren aol apache api apidesign apis apollo appengine apple appstore aprilfools aralbalkan architecture archive arstechnica aspdotnet aspnet assafarkin astronomy async atmedia atmedia07 atmedia2007 atom audio authentication autoescaping avibryant aws backups bandwidth barackobama barcamp barcamplondon basecamp bash bayeux bazaar bbauth bbc bbcnews benchmarking benchmarks bengoldacre benlaurie berkeleydb beta bigtable billdehora billgates binary blainecook blocks blogger blogging bobippolito boingboing bookmarklet bookmarklets books bradfitzpatrick bradneuberg branching brandonaaron brendaneich brettaylor brighton brothercake browsers bruceschneier bsd buckettesting bugs bunniehuang buzz c cache caching cairo calhenderson callbacks camino canon canvas cappuccino captcha cardspace cassandra cdn cern cfp chaining charlesmiller cheese cherrypy chicagocrime china chrismessina chrisshiflett christianheilmann christopherlenz chrome chromeframe chromium classes clayshirky clickjacking closures cloud cloudcomputing co2 code codecs collaboration colour comcast comet cometd commandline commentspam community compilers computerscience computervision concurrency conditionalcomments conferences contenttypes cookies copyright corydoctorow couchdb counters cplusplus creativecommons crossdomain crossdomainxml crowdsourcing cryptography csharp csrf css css3 cssaintrocketscience csv ctypes curse cursegaming cvs dabbledb damienkatz danahboyd dancatt dannyobrien danwebb dareobasanjo data databasejournalism databases datablog dataportability datastore dates datetime davethomas davewiner davidcramer davidmbeazley davidrecordon dconstruct deanedwards debian debugger debugging decorators delicious deployment derekwillis design development dewittclinton dickcostolo diff digg dionalmaer directedidentity django djangobook djangocon djangocon08 djangodebugtoolbar djangoorm djangopeople djangopony djangosnippets djugl dns documentary documentation dojo dojox dom domains domcontentloaded dontbeevil dopplr douglascrockford draganddrop drawing dreamhost drewmclellan drm drupal duncanrobertson dustindiaz dynamiclanguages ebs ec2 ecmascript edddumbill edeliot edfelten education effbot elasticsearch elections electronicvoting elementtree elliotterustyharold email encoding enterprise ericflorenzano ericholscher ericmeyer erlang escaping etags etech etherpad etiquette eurooscon europython eventio eventlet eventmachine events everyblock evoting extensions fabric facebook fakestevejobs faq fastcgi feedburner feeds ffs firebug fireeagle firefox firefox3 flash flex flickr flickrplaces follow fonts foocamp food forms fowa fowa2007 fowa2008 framebusting frameworks fredriklundh freebase friendfeed friends fulltext fulltextsearch functional funny fuse futureofwebapps games garethrushgrove gcap gearman gears gecko generators geo geocoding geodjango geolocation geonames geoplanet geospatial gis git github gmail google googleappengine googlecharts googlechrome googlecode googledocs googledoctype googlegears googlemaps googlemapsapi googlereader googlevideo government gpl gps grahamdumpleton graphics graphing graphs greasemonkey gregwilson guardian guidovanrossum gwt h264 hack hackday hackdaylondon hackernews hacking hacks hadoop haproxy hardware hashes hashing haystack hcard heatmaps henrisivonen highrise history hixie hosting hotmail hotstandby html html5 http httponly i18n ia ianbicking ianhickson ianmansfield ibm ical identity identitytheft idproxy ie ie6 ie7 ie8 ietf iframe images infographics inheritance innodb internationalisation internet internetarchive internetexplorer interview interviews introspection io ip ipad iphone iplayer ipod irc ironpython iso it itunes ixr jacobkaplanmoss jamesbennett jamestauber janrain jargon jasoncalacanis java javascript javascriptlibraries jeffatwood jeffcroft jeffreyzeldman jeremiahgrossman jeremykeith jeremyzawodny jetty jit jobs joegregorio joelspolsky joelveitch joewalker johngruber johnresig johnsiracusa jonhicks jonudell joshberkus journalism jpstacey jquery jruby json jsonp jvm jwz jython kansas kapingyee kellanelliottmccrea kevinyank keynote keyvaluepairs keyvaluestores kml l10n language largehadroncollider lastfm law lawrence leahculver legal lego leonardlin leopard lesorchard libevent libraries licenses lightningtalks lighttpd lindenlab linustorvalds linux lisp livejournal ljworld loadbalancing loading local location lockin logging logincsrf london london2 longpolling lua lucene lugradio lugradiolive lxml mac macbook macbookpro macfuse machinetags magic magnolia mailinator make malcolmtredinnick manyeyes mapping mapreduce maps marketing marknottingham markpilgrim markramm markshuttleworth markup marsphoenix martinatkins martinbelam mashup mashups masterslave mattbiddulph mattcroydon matthewsomerville mattmullenweg mattwebb mattwestcott md5 me mediawiki megpickard memcache memcached memcachedb memory memoryleaks mercurial messagequeue messagequeues messaging metaclasses metadata metafilter michaeltrier michalmigurski michalzalewski microformats microsoft middleware migrations migueldeicaza mikebutcher mikelmaron mikemalone mikeshaver military mit mobile models modpython modwsgi mongodb mongrel monitoring monkeypatching mono moonlight mootools mozilla mp3 multidb music mvc mymaps myopenid mysociety myspace mysql namespaces nasa nataliedowne nathanborror nedbatchelder neilfraser netscape networking newforms newformsadmin news newspapers newyorktimes nginx niallkennedy node nodejs noscript nose nosql nytimes oauth objectivec ocr offline ogg olpc onload ooxml opacity opendata openid openid2 openlibrary openplatform openrightsgroup opensocial opensource openstreetmap opentech opentech2008 openweb opera ops optfunc optimisation orange orbited oreilly org orm ormcaching oscon oscon07 osx owasp oxford oxfordgeeknight2 oxfordgeeknights oxfordgeeks packaging pagerank parallels parrot parsing passwordantipattern passwords paste patents patterns paulford paulgraham paypal pdb pdf performance perl perlbal personal petermichaux petervandijck phishing photography photos photosynth php php5 physics pil pingback pip pipes piracy placemaker plugin plugins plurk png pngs podcast politics popfly portablesocialnetworks post postelslaw postgis postgresql power pownce ppk pr presentations presenting pricing privacy process processes productivity profiling programming progressiveenhancement projects protocolbuffers prototype proxy psychology pubsubhubbub pycon pyconuk pylons pyobjc pypy python python3 queryset querysetrefactor queue queues rabbitmq radio rafecolburn rails rdf realtime realtimeweb reddit redhat redis regex registration regularexpressions releases replication rest restful revcanonical rfc richardcrowley richardjones richskrenta richtext robertocallahan robots royalmail rss ruby rubyonrails russellbeattie ryantomayko s3 safari samedomain samruby sanfrancisco scalability scaling science scottkveton scottschiller screencast screencasts screenscraping search secondlife security securitytheatre selectors semantic semanticweb seo sessions settings setuptools sha1 sharding sharecropping shell signedcookies signing silverlight simonwardley simpledb sinatra sitepen sitepoint sitespecificbrowsers sixapart sizzle skillswap slidecast slides slideshare snowleopard soap social socialgraph socialmedia socialnetworks socialsoftware socialwhitelisting software solr sourceforge south soviet space spam speaking specification sphinx spidermonkey spongmonkeys sql sqlalchemy sqlinjection sqlite sqlserver squid squirrels ssh ssl sso stackoverflow standards starling startup startups starwars staticmaps stdlib steampunk stevejobs stevesouders steveyegge storage streetview stuartcolville stuartlangridge subversion sun sunmicrosystems svg swf sxsw syndication syntaxhighlighting sysadmin tagging tags talks tamarin teamfortress2 techcrunch technorati tedleung templates templating testing textmate tf2 thebigpicture theguardian threading threads timbray timemachine timezones timoreilly tinyurl tokyocabinet tokyotyrant tomarmitage tomcoates tomsteinberg tomtaylor tomwatson tools torchbox tornado trac trackback translation travel turbogears tutorial tutorials tv twisted twitter typography ubuntu ui uk ukgovernment undo unicode unittesting unittests unix unladenswallow unobtrusivejavascript unobtrusivescripting upcoming uploads urls usability v8 validation validator valve varnish verisign versioncontrol versioning video views virtualenv virtualisation virtualization vista visualisation visualisations vml vmware vox vps vulnerability w3c washingtonpost wasp web web2 web20 web2expo webhooks webkit weblog webrunner webservice webservices webstandards webstock whatwg whereonearth whitelisting whoosh whytheluckystiff widgets wifi wii wiki wikinear wikipedia wildlife wildlifenearyou wilsonminer windows wired wordpress wordpresscom workers worm writing wsgi wsstar xfn xhtml xhtml2 xkcd xml xmlhttprequest xmlrpc xmpp xrds xss xtech xtech2007 xuacompatible xulrunner yadis yahoo yahoopipes ydn youtube yql yrb yui yui3 zeppelins

You can view the intersection of up to three tags by navigating to /tags/tag1+tag2/.
A django site