Simon Willison’s Weblog

Subscribe

March 2009

March 2, 2009

Database Sharding at Netlog, with MySQL and PHP. Detailed MySQL sharding case study from Netlog, who serve five billion page requests a month using thousands of shards across more than 80 database servers.

# 10:22 am / mysql, sharding, scaling, netlog, php, databases

How search.twitter.com uses Varnish. Includes examples of the configuration options they use.

# 5:08 pm / twitter, varnish, search, caching

March 3, 2009

Django snippets: Smart {% if %} template tag. Chris Beaven's drop-in replacement for Django's {% if %} tag that adds comparison operators (less than, greater than, not equal etc) while staying backwards compatible with the less able original. I love it. This is one place where I no longer favour Django's stated philosophy: I think it's perfectly reasonable to use comparisons in presentation logic, and I've found that in my own code the lack of an advanced if tag frequently leads to pure presentation logic sneaking in to my view functions.

# 3:03 pm / django, python, templating, if, chris-beaven

Combine JSONP and jQuery to quickly build powerful mashups. jQuery’s JSONP support is one of my favourite little-known features of the library.

# 3:17 pm / jquery, json, jsonp, javascript

March 4, 2009

Panda Tuesday; The History of the Panda, New APIs, Explore and You. Flickr’s Rainbow Vomiting Panda of Awesomeness now has a family of associated APIs.

# 11:49 am / pandas, flickr, apis

It’s time for a change. Jacob Kaplan-Moss is joining Revolution Systems, who will now be offering professional Django support “to companies who need a Django expert on staff, but can’t afford someone full-time.”

# 10:30 pm / jacob-kaplan-moss, django, python, support

March 5, 2009

Imminent Death of the Net Predicted. Well, maybe not, but the way Windows Vista deals with round-robin DNS A records (using a new IPv6 algorithm from RFC3484 backported to IPv4) means that domains that serve up multiple A records to load balance between data centres will find that the IP nearest to the 192.168.* range will get the vast majority of Vista traffic.

# 9:50 am / vista, dns, windows, microsoft, networking

March 7, 2009

Lovecraftian School Board Member Wants Madness Added To Curriculum. “West says the school inadequately prepares students for the black seas of infinity.”

# 11:11 am / lovecraft, the-onion, funny

March 8, 2009

What happened to Hot Standby? Hot Standby (the ability to have read-only replication slaves) has been dropped from PostgreSQL 8.4 and is now scheduled for 8.5. “Making hard decisions to postpone features which aren’t quite ready is how PostgreSQL makes sure that our DBMS is ”bulletproof“ and that we release close to on-time every year”.

# 9:28 am / postgresql, replication, hotstandby, josh-berkus, scaling, databases

The Internet Archive should actively partner with bit.ly / tinyurl.com / icanhaz.com etc. and maintain a mirror database of their redirects

Me, on Twitter

# 2:59 pm / bitly, icanhaz, internet-archive, me, tinyurl, twitter, urlshorteners

[Drizzle] won’t be a get-out-of-jail-free card for very write-heavy applications but I bet it will do wonders for heavily replicated, heavily federated, read-heavy architectures (you know, normal stuff).

Richard Crowley

# 6:05 pm / databases, drizzle, mysql, replication, richardcrowley

March 9, 2009

django-gae2django. An implementation of the Google App Engine API (datastore, memcache, urlfetch, users and mail) that runs on Django, allowing you to take an existing application written for App Engine and deploy it on your own server on top of Django.

# 3:37 pm / django, appengine, google, gae2django

March 10, 2009

A few notes on the Guardian Open Platform

This morning we launched the Guardian Open Platform at a well attended event in our new offices in Kings Place. This is one of the main projects I’ve been helping out with since joining the Guardian last year, and it’s fantastic to finally have it out in the open.

[... 839 words]

I’m not bowled over much these days. But Guardian Open Platform is a chasmic leap into the future. It is a work of simplistic beauty that I’m sure will have a dramatic impact in the news market. The Guardian is already a market leader in the online space but Open Platform is revolutionary. It makes all of their major competitors look timid.

Tom Watson

# 2:30 pm / guardian, openplatform, tom-watson

March 11, 2009

Guardian + Lucene = Similar Articles + Categorisation. Alf Eaton loaded 13,000 Guardian articles tagged Science in to Solr and Lucene and is using Solr’s MoreLikeThisHandler to find related articles and automatically apply Guardian tags to Nature News articles.

# 12:53 pm / alf-eaton, solr, lucene, guardian, openplatform, naturenews, morelikethishandler, search, fulltext

Get our full university data. “The Guardian’s university rankings are the most visited part of Education Guardian”—and now they’re available as a spreadsheet.

# 1:52 pm / university, leaguetables, guardian, openplatform, datastore

March 12, 2009

Practical, maintainable CSS (via) Nat’s posted slides and a video from her latest talk at last week’s Brighton Girl Geeks evening.

# 12:46 am / natalie-downe, css, girlgeeks

March 14, 2009

List of SxSW 2009 panels with “social” in the title

  • A Hard Sell? Social Media & Your Boss
  • Can Social Media End Racism?
  • Digital Urbanites: How To Become Part of the New Social Capital
  • The Future Of Social Networks
  • How Social Networks Are Killing the Revolution
  • Making Whuffie: Raising Social Capital in Online Communities
  • The Mix at Six Hosted by Social Media Group
  • Mobile Social SXSW BBQ
  • My Boss Doesn’t Get It: Championing Social Media to the Man
  • PBS’ Interactive Social Media & Online Video Studio
  • The Search for a More Social Web
  • Security for the Social Set
  • Social Engineering: Scam Your Way Into Anything or From Anybody
  • Social Gamers: Away From the Keyboard
  • Social Media For Social Good
  • Social Media Marketing
  • Social Media Marketing: An Hour a Day
  • Social Media Nonprofit ROI Poetry Slam
  • Social Media: If You Liked it, Then You Should Have Put a Digg on it...
  • Social Networking in Health: e-Patients, Data & Privacy
  • Social Patterns and Antipatterns For the Win
  • Suxorz ’09: The Ten Worst Social Media Campaigns
  • Twitter for Marketers: Is It Still Social Media?
  • Using GPS & Location to Enhance Social Networking
  • Using the New Digital Social Media to Accelerate Sustainability

March 15, 2009

Understanding Bidirectional (BIDI) Text in Unicode. It turns out you need to sanitise user input to ensure there are no unicode characters that switch your site’s regular text to RTL.

# 4:37 am / unicode, security, bidi, filtering, userinput, calhenderson

It makes increasingly less sense even to talk about a publishing industry, because the core problem publishing solves - the incredible difficulty, complexity, and expense of making something available to the public - has stopped being a problem.

Clay Shirky

# 5:09 am / clay-shirky, newspapers, publishing

Southerly Breezes. Andrew Godwin is slowly assimilating the best ideas from other Django migration systems in to South—the latest additions include ORM Freezing from Migratory and automatic change detection. Exciting stuff.

# 1:17 pm / andrew-godwin, django, south, migrations, orm, databases

maps from scratch. An idea whose time has come: using EC2 AMIs for tutorial sessions to give everyone a pre-configured environment.

# 1:20 pm / tutorials, ec2, cloud-computing, michalmigurski, mapping

Ruby on Rails 2.3 Release Notes. I’m impressed with how thoroughly Rails has embraced Rack (Ruby’s standardised web framework API, inspired by Python’s WSGI).

# 1:22 pm / rack, ruby, rails, python, wsgi

Concurrence. Exciting: a Python framework for “creating massively concurrent network applications” (the tutorial benchmarks a Hello World web server at over 8,000 requests a second). It’s implemented on top of libevent using pyrex, can run on either Stackless Python or Greenlets from the py library and ships with a WSGI server, an HTTP client and a DBAPI 2.0 compliant MySQL driver.

# 1:28 pm / concurrence, python, libevent, pyrex, stacklesspython, greenlets, wsgi, http, mysql

redis (via) An in-memory scalable key/value store but with an important difference: this one lets you perform list and set operations against keys, opening up a whole new set of possibilities for application development. It’s very young but already supports persistence to disk and master-slave replication.

# 1:32 pm / redis, keyvaluepairs, scaling, replication, masterslave, salvatore-sanfilippo

Fixing IE by porting Canvas to Flash. Implementing canvas using Flash is an obvious step, but personally I’m much more interested in an SVG renderer using Flash that finally brings non-animated SVGs to IE.

# 1:34 pm / svg, flash, canvas, ie

Parallel merge sort in Erlang. Thoughts on an Erlang-y way of implementing a combined activity stream (e.g. Facebook and Twitter). Activity streams are a Really Hard Problem—as far as I know there’s no best practise for implementing them yet.

# 1:36 pm / erlang, activitystreams, facebook, twitter

slippy faumaxion, take two. Mike Migurski made a slippy map using triangular tiles, based on the same principle as Buckminster Fuller’s famous Dymaxion World Map.

# 3:40 pm / michalmigurski, mapping, faumaxion, buckminsterfuller

March 16, 2009

Load spikes and excessive memory usage in mod_python. “The final answer? Stop using mod_python, use mod_wsgi and run it with daemon mode instead. You will save yourself a lot of headaches by doing so.”

# 5:26 pm / grahamdumpleton, python, modpython, modwsgi, wsgi, apache

March 19, 2009

Streams, affordances, Facebook, and rounding errors. I asked Kellan about scaling activity streams the other day. Here he suggests the best technique is not to promise a perfect stream (like Twitter does)—Facebook used to get away with 80% loss of update messages, but their new redesign has changed the contract with their users.

# 2:02 pm / facebook, activitystreams, scaling, twitter, kellan-elliott-mccrea

2009 » March

MTWTFSS
      1
2345678
9101112131415
16171819202122
23242526272829
3031