Simon Willison’s Weblog

Subscribe

February 2010

Feb. 1, 2010

HTML 5 audio player demo. Scott Andrew’s experiments with the HTML5 audio element (and jQuery)—straight forward and works a treat in Safari, but Firefox doesn’t support MP3. Presumably it’s not too hard to set up a fallback for Ogg.

# 9:58 am / mp3, ogg, firefox, safari, html5, audio, scott-andrew, javascript, jquery

jQuery source viewer. A neat way of browsing the source code of jQuery itself, complete with hyperlinks to other jQuery methods. Kind of a single-purpose IDE. I can see myself using this a lot.

# 10:01 am / james-padolsey, jquery, javascript

Plurk: Instant conversations using Comet (via) Plurk’s comet implementation sounds pretty amazing. They’re using a single quad-core server with 32GB of RAM running 8 Node.js instances to serve long-polled comet to 100,000+ simultaneous users. They switched to Node from Java JBoss/Netty and found the new solution used 10 times less memory.

# 10:13 am / plurk, comet, javascript, node, netty, java, jboss

Distributed lock on top of memcached. A simple Python context manager (taking advantage of the with statement) that implements a distributed lock using memcached to store lock state: “memcached_lock can be used to ensure that some global data is only updated by one server”. Redis would work well for this kind of thing as well.

# 10:15 am / redis, memcached, python, contextmanager, with, locking, concurrency, plurk

Follow a Museum day. It’s follow a museum on Twitter day. Useful directory of museum Twitter accounts around the world, organised by country.

# 11:15 am / twitter, museums

Feb. 2, 2010

They Write For You. I helped put together this visualisation of stories written by MPs for various newspapers at last Friday’s ’Hackers and Hacks" hack day.

# 9:27 am / hackday, mps, politics, newspapers, visualisations, projects

SublimeVideo—HTML5 Video Player. Still a fair way to go (no Firefox support yet, and they plan to add a Flash fallback for IE) but in Safari this is pretty extraordinary. Smooth video, beautiful UI, full window mode and full screen mode in the latest WebKit nightlies. I’d go as far as saying that this is the nicest online video implementation I’ve seen (at least on the Mac).

# 9:50 am / html5, video, webkit, safari, flash

HipHop for PHP: Move Fast. Facebook have open-sourced their internally developed PHP to C++ compiler. They serve 400 billion PHP pages a month (that’s more than 150,000 a second) so any performance improvement dramatically reduces their hardware costs, and HipHop drops the CPU usage on their web servers by an average of 50%. “We are serving over 90% of our Web traffic using HipHop, all only six months after deployment”.

# 6:59 pm / facebook, php, optimisation, performance, hiphop, traffic

Feb. 3, 2010

Comet (long polling) for all browsers using ScriptCommunicator. More Comet from the Plurk team: 80 lines of dependency free JavaScript implementing long polling using script tags (hence working cross-domain) across IE6+, Firefox, WebKit and Opera. The clever bit is the code to detect loading errors. It doesn’t try to fix the infinite loading indicator problem—is that still a cromulent usability concern?

# 12:37 am / comet, longpolling, javascript, plurk, usability

dogproxy. Another of my experiments with Node.js—this is a very simple HTTP proxy which addresses the dog pile effect (also known as the thundering herd) by watching out for multiple requests for a URL that is currently “in flight” and bundling them together.

# 1:05 pm / scaling, node, nodejs, projects, javascript, dogproxy, dogpile, thunderingherd

Feb. 4, 2010

Symbian Operating System, Now Open Source and Free. With Symbian now open source, are there any widely used operating systems left (besides Windows) that don’t have an open source core?

# 8:38 am / open-source, operatingsystems, windows, symbian

WildlifeNearYou can now tag your Flickr photos for you. I’m really excited about this feature: if you opt-in, WildlifeNearYou will now write name and latin name tags to your Flickr photos after you’ve marked the species in the photo. This is even more interesting when you combine it with our suggest-a-species feature (the photo won’t get tagged until you’ve approved the suggestion). We also set the location on photos which don’t yet have one, but the real fun is the machine tags we’ve added, which allow developers to use the Flickr API to find photos by their WildlifeNearYou metadata (trip, species and place IDs). As a neat extra touch, the identifiers we use in the machine tags are the same as the ones used by our custom wlny.eu URL shortener, so it’s trivial to turn a machine tag in to the URL for that page on the main site.

# 5:01 pm / wildlifenearyou, machinetags, flickr, metadata, tagging

Feb. 5, 2010

A History of the Sentence “Buffalo buffalo buffalo buffalo buffalo.”. Complete with explorations of the grammar in Lisp.

# 9:50 am / english, grammar, buffalo, lisp

What’s hot? Introducing Zeitgeist. Dan Catt’s first project at the Guardian. “When something appears on the Zeitgeist page, it’s because it performed better (got more attention) than the norm for that content type/section/day”. The application itself is written in Python and runs on Google App Engine.

# 12:17 pm / python, appengine, dan-catt, guardian, zeitgeist

Feb. 6, 2010

twitter-text-conformance (via) This is a neat idea: Twitter have released open source libraries for parsing standard tweet syntax in Ruby and Java, but they’ve also released a set of YAML unit tests aimed at anyone who wants to implement the same parsing logic in other languages.

# 3:39 pm / twitter, ruby, java, testing, yaml

Feb. 7, 2010

Regarding crashing, I can tell you that we don't ship Flash with any known crash bugs, and if there was such a widespread problem historically Flash could not have achieved its wide use today.

Kevin Lynch

# 10:19 am / flash, crashing, kevinlynch, orly

As has been pointed out by the community, there is an existing crash bug that was reported by Matthew Dempsky in the Flash Player bugbase (JIRA FP-677) in September of 2008 that still exists in the release players. It is fixed in Flash Player 10.1 beta, and has been since we launched the beta in early November 2009. [...] So what happened here? We picked up the bug as a crasher when it was filed on September 22, 2008, and were able to reproduce it. Remember that Flash Player 10 shipped in October 2008, so when this bug was reported we were pretty much locked and loaded for launch.

Emmy Huang, PM for Flash Player

# 10:21 am / flash, crashing, kevinlynch, orly

svg-edit. Click the “Try out SVG-edit 2.4” link—this is an impressive, full featured open source vector graphics editor that runs in the browser.

# 10:30 am / svgedit, svg, html5, demos

Sketchpad—Online Paint/Drawing application (via) Impressive canvas based bitmap drawing tool with an extremely smooth UI.

# 10:45 am / canvas, sketchpad

Feb. 8, 2010

Integrate Tornado in Django. A handy ./manage.py runtornado management command for firing up a Tornado server that serves your Django application.

# 11:12 am / django, tornado, python

Lou’s Pseudo 3d Page. Spectacularly detailed exploration of the road graphics used in racing games prior to true 3D. This is a potential gold mine for anyone looking for a fun project to try out with canvas. Bonus points for comet integration—I’m still looking forward to the first real-time multiplayer game in the browser using comet and canvas.

# 11:21 am / graphics, comet, 3d, canvas, javascript, html5

Feb. 9, 2010

Redis Virtual Memory: the story and the code. Fascinating overview of the virtual memory feature coming to Redis 2.0, which will remove the requirement that all Redis data fit in RAM. Keys still stay in RAM, but rarely accessed values will be swapped to disk. 16 GB of RAM will be enough to hold 100 million keys, each with a value as large as you like.

# 3:59 pm / redis, virtualmemory, keyvaluestores, databases, salvatore-sanfilippo

Feb. 10, 2010

Presenting django-devserver, a better runserver. I really like this—it’s a Django management command (./manage.py rundevserver) which adds SQL logging and cache access summaries to the console output of Django’s local development server. It solves a similar set of problems to the debug toolbar, but requires slightly less setup and doesn’t inject additional HTML in to your pages. You can add your own custom modules to it as well.

# 11:33 am / david-cramer, django, python, runserver, devserver, debugging

glitch zen. Glitch is the upcoming online game from Tiny Speck, many of whom are ex Flickr and indeed ex Game Never Ending before that. Glitch Zen is the first fan site.

# 11:36 am / glitch, glitchzen, tinyspeck, gne, flickr

Glitch is built in an entirely new and different way for a game. The back end (java at the lowest level, with game logic scripted in Javascript) is designed for maximum flexibility and ease of deployment. That means we'll be able to push new content — new items, new places, new characters — on a daily basis. It also means that we'll have lots of APIs with which the game can be expanded and extended.

Glitch

# 11:40 am / glitch, java, javascript, rhino

Plupload (via) Fantastic new open source project from the team behind TinyMCE. Plupload offers a cross-browser JavaScript File uploading API that handles multiple file uploads, client-side progress meters, type filtering and even client-side image resizing and drag-and-drop from the desktop. It achieves all of this by providing backends for Flash, Silverlight, Google Gears, HTML5 and Browserplus and picking the most capable available option.

# 12:53 pm / plupload, tinymce, uploads, flash, silverlight, html5, gears, browserplus, javascript

5 Questions for Simon Willison. I got interviewed about WildlifeNearYou for the Flickr code blog, in particular the way the site uses machine tags.

# 2:31 pm / interviews, flickr, wildlifenearyou

On walking into a disaster zone. Schuyler Erle: “The World Bank was looking for technical GIS professionals, ideally French-speaking, to go and advise the government [...] I can sort of speak French. Sure, why not?”

# 3:45 pm / schuylererle, haiti, openstreetmap, worldbank, gis

The Net is the greatest listening engine ever devised. These days anyone can choose, with its help, to be well-informed. You have to make the effort to figure out which key people are really on top of what you care about, so that you can start listening to them. Plus, you need to deploy some saved searches. Once you’ve done these things, then when you turn your computer on in the morning, it’ll tell you if anything’s happened that you need to know about.

Tim Bray

# 5:40 pm / tim-bray, internet, blogging, information

Feb. 11, 2010

An Easy Way to Make a Treemap. The second in Flowing Data’s handy series of R tutorials.

# 10:29 am / flowingdata, visualisations, treemap, r

2010 » February

MTWTFSS
1234567
891011121314
15161718192021
22232425262728