Simon Willison’s Weblog

24ways 2d 37signals 3d 4chan 500startups aaronstraupcope 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 android 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 australia authentication autocomplete autoescaping avibryant aws backbone backups badges bandwidth barackobama barcamp barcamplondon basecamp bash bayeux bazaar bbauth bbc bbcnews beautifulsoup benchmarking benchmarks bengoldacre benlaurie benward berkeleydb beta bigdata bigtable billdehora billgates binary blainecook blocks blogger blogging boardgames bobippolito boingboing bookmarklet bookmarklets books bradfitzpatrick bradneuberg branching branding brandonaaron brendaneich brettaylor brighton brothercake browsers bruceschneier bsd buckettesting bugs bunniehuang business buzz c cache caching cairo calendars calhenderson callbacks camino canon canvas cappuccino captcha cardspace careers cassandra cdn cern cfp chaining charlesbabbage charlesmiller cheese cherrypy chicagocrime china chrismessina chrisshiflett christianheilmann christopherlenz chrome chromeframe chromium classes clayshirky clickjacking closure closures cloud cloudcomputing cloudfront co2 code codecs coffeescript collaboration colour comcast comet cometd commandline commentspam community compilers compression computers computerscience computervision concurrency conditionalcomments conference conferences contentapi contenttypes continuousdeployment continuousintegration cookies copy 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 datagovuk dataportability datastore datastructures datauri dates datetime daveshea davethomas davewiner davidcramer davidmbeazley davidrecordon dconstruct deanedwards debian debugger debugging decorators delicious deployment derekwillis design development devfort dewittclinton dickcostolo diff digg dionalmaer directedidentity django djangobook djangocon djangocon08 djangodebugtoolbar djangoorm djangopeople djangopony djangosnippets djugl dns documentary documentation documentcloud dojo dojox dom domains domcontentloaded dontbeevil dopplr dotnet douglascrockford draganddrop dragndrop drawing dreamhost drewmclellan drizzle drm dropbox drupal duncanrobertson dustindiaz dynamiclanguages ebs ec2 ecmascript ecommerce edddumbill edeliot edfelten education effbot elasticsearch elections electronicvoting elementtree elliotterustyharold email encoding encryption enterprise entrepreneurship ericflorenzano ericholscher ericmeyer erlang escaping etags etech etherpad etiquette eurooscon europython eventio eventlet eventmachine events everyblock evoting extensions fabric facebook facebookgraphsearch facetedsearch fakestevejobs faq fastcgi feedburner feeds ffs firebug fireeagle firefox firefox3 flash flask flex flickr flickrplaces fluiddb follow fonts foocamp food forms fowa fowa2007 fowa2008 framebusting frameworks fredriklundh freebase friendfeed friends frontend fulltext fulltextsearch functional funding funny fuse futureofwebapps games gaming garethrushgrove gcap gearman gears gecko geeks generators geo geocoding geodata geodjango geoip geolocation geonames geoplanet geospatial getlatlon gif gis git github gmail go google googleappengine googlecharts googlechrome googlecode googledocs googledoctype googlegears googlemaps googlemapsapi googlereader googlevideo googlewave government gpl gps grahamdumpleton graphics graphing graphs greasemonkey gregwilson guardian guidovanrossum gwt gzip h264 hack hackathons hackday hackdaylondon hackernews hacking hacks hadoop haproxy hardware hashbanghell hashes hashing haystack hcard heatmaps henrisivonen heroku highlights highrise history hixie homebrew hosting hotmail hotstandby html html5 http httponly https i18n ia ianbicking ianhickson ianmansfield ibm ical ideas identity identitytheft idproxy ie ie6 ie7 ie8 ietf iframe iframes images infographics inheritance innodb internationalisation internet internetarchive internetexplorer interview interviews introspection investing io ios ip ipad iphone iphones iplayer ipod irc ironpython iso it itunes ixr jacobkaplanmoss jamesbennett jamestauber janrain jargon jasoncalacanis jasonscott java javafx javascript javascriptlibraries jeffatwood jeffcroft jeffreyzeldman jeremiahgrossman jeremykeith jeremyzawodny jetty jinja jit jobs joegregorio joelspolsky joelveitch joewalker johngrahamcumming johngruber johnresig johnsiracusa jonhicks jonudell joshberkus journalism jpstacey jquery jqueryui jruby json jsonhead jsonp jvm jwz jython kansas kapingyee kellanelliottmccrea kevinyank keynote keyvaluepairs keyvaluestores kml korea kriszyp l10n language lanyrd largehadroncollider lastfm latex law lawrence leahculver leanstartups legal lego leonardlin leopard lesorchard libevent libraries licenses lifehacks lightningtalks lighttpd lilypond lindenlab linkedin links linustorvalds linux lisp livejournal ljworld loadbalancing loading local location lockin logging login logincsrf london london2 longpolling lua lucene lugradio lugradiolive lxml mac macbook macbookpro macfuse machinetags maciejceglowski magic magnolia mailinator make malcolmtredinnick management manyeyes mapping mapreduce maps marketing marknottingham markpilgrim markramm markshuttleworth markup marsphoenix martinatkins martinbelam mashup mashups masterslave mathml mattbiddulph mattcroydon matthewsomerville mattmullenweg mattwebb mattwestcott md5 me mediawiki meetings meetup meetups megpickard memcache memcached memcachedb memes memory memoryleaks mercurial messagequeue messagequeues messaging metaclasses metadata metafilter michaeltrier michalmigurski michalzalewski microformats microsoft middleware migrations migueldeicaza mikebutcher mikelmaron mikemalone mikeshaver military minification mit mobile mobileweb models modpython modwsgi mongodb mongrel monitoring monkeypatching mono moonlight mootools motivation movies 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 nlp node nodejs noscript nose nosql nyc nytimes oauth objectivec ocr offline ogg olpc onload ooxml opacity open-source opencv opendata openid openid2 openlibrary openplatform openrightsgroup opensocial opensource openstreetmap opentech opentech2008 openweb opera operations ops optfunc optimisation oracle orange orbited ordnancesurvey oreilly org orm ormcaching oscon oscon07 osx owasp oxford oxfordgeeknight2 oxfordgeeknights oxfordgeeks packaging pagerank panels parallels parrot parsing passwordantipattern passwords paste patents patterns paulford paulgraham paypal pdb pdf performance perl perlbal personal petermichaux petervandijck philgyford phishing photography photos photosynth php php5 physics pil pingback pip pipes piracy pitching placemaker play plugin plugins plurk png pngs podcast politics popfly portablesocialnetworks post postelslaw postgis postgresql power powerpoint pownce ppk pr presentations presenting pricing privacy process processes productivity profiling programmers programming programminglanguages progressiveenhancement projectmanagement projects protocolbuffers prototype proxy psychology pubs pubsub pubsubhubbub pycon pyconuk pylons pyobjc pypy python python3 queryset querysetrefactor queue queues quora rabbitmq radio rafecolburn rails rdbms rdf react realtime realtimeweb recovered recruiting reddit redhat redis regex registration regularexpressions releases replication rest restaurants restful revcanonical rfc richardcrowley richardjones richskrenta richtext robertocallahan robots royalmail rss ruby rubyonrails russellbeattie ryantomayko s3 saas safari samedomain samruby sanfrancisco sanfranciscobayarea sanic scala scalability scaling science scottkveton scottschiller screencast screencasts screenscraping scribd search searchengines secondlife security securitytheatre selectors semantic semanticweb seo servers sessions settings setuptools sha1 sharding sharecropping shell signedcookies signing siliconvalley silverlight simonwardley simpledb sinatra sitepen sitepoint sitespecificbrowsers sixapart sizzle skillswap skype slidecast slides slideshare sms snowleopard soap social socialgraph socialmedia socialnetworks socialsoftware socialwhitelisting software softwareengineering solr sourceforge south soviet space spam speaking specification sphinx spidermonkey spongmonkeys sports 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 technology technorati techstars ted tedleung templates templating testing textmate tf2 thebigpicture theguardian theoschlossnagle threading threads ticketing timbernerslee timbray timemachine timezones timoreilly tinyurl tokyocabinet tokyotyrant tomarmitage tomcoates tomsteinberg tomtaylor tomwatson tools torchbox tornado trac trackback translation travel tunisia turbogears tutorial tutorials tv twisted twitter typography ubuntu ui uk ukgovernment undo unicode unittesting unittests unix unladenswallow unobtrusivejavascript unobtrusivescripting upcoming uploads urls usa usability ux 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 webapis webapps webdevelopers webdevelopment webfonts webhooks webkit weblog webperformance webrunner webserver webservers webservice webservices websocket websockets webstandards webstock whatwg whereonearth whitelisting whoosh whytheluckystiff widgets wifi wii wiki wikileaks wikinear wikipedia wildlife wildlifenearyou wilsonminer windows wired wordpress wordpresscom workers workflow worm writing wsgi wsstar xfn xhtml xhtml2 xkcd xml xmlhttprequest xmlrpc xmpp xrds xss xtech xtech2007 xuacompatible xulrunner yadis yahoo yahoopipes ycombinator ydn yelp youtube yql yrb yui yui3 zacharyvoase zeppelins zeromq

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