<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.simonwillison.net/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-gb"><title>Simon Willison's Weblog</title><link href="http://simonwillison.net/" rel="alternate" /><id>http://simonwillison.net/</id><updated>2010-02-08T11:21:18Z</updated><author><name>Simon Willison</name></author><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.simonwillison.net/swn-everything" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="swn-everything" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry><title>Lou's Pseudo 3d Page
</title><link href="http://simonwillison.net/2010/Feb/8/pseudo/" rel="alternate" /><updated>2010-02-08T11:21:18Z</updated><id>http://simonwillison.net/2010/Feb/8/pseudo/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://www.gorenfeld.net/lou/pseudo/"&gt;Lou’s Pseudo 3d Page&lt;/a&gt;. 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.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="3d" /><category term="canvas" /><category term="comet" /><category term="graphics" /><category term="html5" /><category term="javascript" /></entry><entry><title>Integrate Tornado in Django
</title><link href="http://simonwillison.net/2010/Feb/8/integrate/" rel="alternate" /><updated>2010-02-08T11:12:46Z</updated><id>http://simonwillison.net/2010/Feb/8/integrate/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://geekscrap.com/2010/02/integrate-tornado-in-django/"&gt;Integrate Tornado in Django&lt;/a&gt;. A handy ./manage.py runtornado management command for firing up a Tornado server that serves your Django application.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="django" /><category term="python" /><category term="tornado" /></entry><entry><title>Sketchpad - Online Paint/Drawing application
</title><link href="http://simonwillison.net/2010/Feb/7/sketchpad/" rel="alternate" /><updated>2010-02-07T10:45:51Z</updated><id>http://simonwillison.net/2010/Feb/7/sketchpad/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://mugtug.com/sketchpad/"&gt;Sketchpad—Online Paint/Drawing application&lt;/a&gt; (&lt;a href="http://www.colorjack.com/blog/" title="Design News @ ColorJack"&gt;via&lt;/a&gt;). Impressive canvas based bitmap drawing tool with an extremely smooth UI.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="canvas" /><category term="sketchpad" /></entry><entry><title>svg-edit
</title><link href="http://simonwillison.net/2010/Feb/7/svgedit/" rel="alternate" /><updated>2010-02-07T10:30:03Z</updated><id>http://simonwillison.net/2010/Feb/7/svgedit/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://code.google.com/p/svg-edit/"&gt;svg-edit&lt;/a&gt;. 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.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="demos" /><category term="html5" /><category term="svg" /><category term="svgedit" /></entry><entry><title>A quote from Emmy Huang, PM for Flash Player
</title><link href="http://simonwillison.net/2010/Feb/7/flash/" rel="alternate" /><updated>2010-02-07T10:21:25Z</updated><id>http://simonwillison.net/2010/Feb/7/flash/</id><summary type="html">



&lt;div class="quote segment"&gt;&lt;blockquote cite="http://blogs.adobe.com/emmy/archives/2010/02/flash_bug_repor.html"&gt;&lt;p&gt;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.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="cite"&gt; - &lt;a href="http://blogs.adobe.com/emmy/archives/2010/02/flash_bug_repor.html"&gt;Emmy Huang, PM for Flash Player&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;


</summary><category term="crashing" /><category term="flash" /><category term="kevinlynch" /><category term="orly" /></entry><entry><title>A quote from Kevin Lynch
</title><link href="http://simonwillison.net/2010/Feb/7/kevin/" rel="alternate" /><updated>2010-02-07T10:19:19Z</updated><id>http://simonwillison.net/2010/Feb/7/kevin/</id><summary type="html">



&lt;div class="quote segment"&gt;&lt;blockquote cite="http://www.pcmag.com/article2/0,2817,2358815,00.asp"&gt;&lt;p&gt;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.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="cite"&gt; - &lt;a href="http://www.pcmag.com/article2/0,2817,2358815,00.asp"&gt;Kevin Lynch&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;


</summary><category term="crashing" /><category term="flash" /><category term="kevinlynch" /><category term="orly" /></entry><entry><title>twitter-text-conformance
</title><link href="http://simonwillison.net/2010/Feb/6/twitter/" rel="alternate" /><updated>2010-02-06T15:39:27Z</updated><id>http://simonwillison.net/2010/Feb/6/twitter/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://github.com/mzsanford/twitter-text-conformance"&gt;twitter-text-conformance&lt;/a&gt; (&lt;a href="http://engineering.twitter.com/2010/02/introducing-open-source-twitter-text.html" title="Twitter Engineering Blog"&gt;via&lt;/a&gt;). 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.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="java" /><category term="ruby" /><category term="testing" /><category term="twitter" /><category term="yaml" /></entry><entry><title>What's hot? Introducing Zeitgeist
</title><link href="http://simonwillison.net/2010/Feb/5/zeitgeist/" rel="alternate" /><updated>2010-02-05T12:17:32Z</updated><id>http://simonwillison.net/2010/Feb/5/zeitgeist/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://www.guardian.co.uk/help/insideguardian/2010/feb/03/zeitgeist"&gt;What’s hot? Introducing Zeitgeist&lt;/a&gt;. 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.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="appengine" /><category term="dancatt" /><category term="guardian" /><category term="python" /><category term="zeitgeist" /></entry><entry><title>A History of the Sentence "Buffalo buffalo buffalo buffalo buffalo."
</title><link href="http://simonwillison.net/2010/Feb/5/buffalo/" rel="alternate" /><updated>2010-02-05T09:50:33Z</updated><id>http://simonwillison.net/2010/Feb/5/buffalo/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://www.cse.buffalo.edu/~rapaport/buffalobuffalo.html"&gt;A History of the Sentence “Buffalo buffalo buffalo buffalo buffalo.”&lt;/a&gt;. Complete with explorations of the grammar in Lisp.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="buffalo" /><category term="english" /><category term="grammar" /><category term="lisp" /></entry><entry><title>WildlifeNearYou can now tag your Flickr photos for you
</title><link href="http://simonwillison.net/2010/Feb/4/wildlifenearyou/" rel="alternate" /><updated>2010-02-04T17:01:09Z</updated><id>http://simonwillison.net/2010/Feb/4/wildlifenearyou/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://www.wildlifenearyou.com/blog/2010/feb/4/tag-flickr-photos/"&gt;WildlifeNearYou can now tag your Flickr photos for you&lt;/a&gt;. 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.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="flickr" /><category term="machinetags" /><category term="metadata" /><category term="tagging" /><category term="wildlifenearyou" /></entry><entry><title>Symbian Operating System, Now Open Source and Free
</title><link href="http://simonwillison.net/2010/Feb/4/symbian/" rel="alternate" /><updated>2010-02-04T08:38:54Z</updated><id>http://simonwillison.net/2010/Feb/4/symbian/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://www.wired.com/gadgetlab/2010/02/symbian-operating-system-now-open-source-and-free/"&gt;Symbian Operating System, Now Open Source and Free&lt;/a&gt;. With Symbian now open source, are there any widely used operating systems left (besides Windows) that don’t have an open source core?&lt;/p&gt;
&lt;/div&gt;




</summary><category term="opensource" /><category term="operatingsystems" /><category term="symbian" /><category term="windows" /></entry><entry><title>dogproxy
</title><link href="http://simonwillison.net/2010/Feb/3/dogproxy/" rel="alternate" /><updated>2010-02-03T13:05:08Z</updated><id>http://simonwillison.net/2010/Feb/3/dogproxy/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://github.com/simonw/dogproxy"&gt;dogproxy&lt;/a&gt;. 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.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="dogpile" /><category term="dogproxy" /><category term="javascript" /><category term="node" /><category term="nodejs" /><category term="projects" /><category term="scaling" /><category term="thunderingherd" /></entry><entry><title>Comet (long polling) for all browsers using ScriptCommunicator
</title><link href="http://simonwillison.net/2010/Feb/3/scriptcommunicator/" rel="alternate" /><updated>2010-02-03T00:37:34Z</updated><id>http://simonwillison.net/2010/Feb/3/scriptcommunicator/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://amix.dk/blog/post/19489#ScriptCommunicator-implementing-comet-long-polling-for-all-browse"&gt;Comet (long polling) for all browsers using ScriptCommunicator&lt;/a&gt;. 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?&lt;/p&gt;
&lt;/div&gt;




</summary><category term="comet" /><category term="javascript" /><category term="longpolling" /><category term="plurk" /><category term="usability" /></entry><entry><title>HipHop for PHP: Move Fast
</title><link href="http://simonwillison.net/2010/Feb/2/facebook/" rel="alternate" /><updated>2010-02-02T18:59:55Z</updated><id>http://simonwillison.net/2010/Feb/2/facebook/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://developers.facebook.com/news.php?blog=1&amp;amp;story=358"&gt;HipHop for PHP: Move Fast&lt;/a&gt;. 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”.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="facebook" /><category term="hiphop" /><category term="optimisation" /><category term="performance" /><category term="php" /><category term="traffic" /></entry><entry><title>SublimeVideo - HTML5 Video Player
</title><link href="http://simonwillison.net/2010/Feb/2/sublime/" rel="alternate" /><updated>2010-02-02T09:50:43Z</updated><id>http://simonwillison.net/2010/Feb/2/sublime/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://jilion.com/sublime/video"&gt;SublimeVideo—HTML5 Video Player&lt;/a&gt;. 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).&lt;/p&gt;
&lt;/div&gt;




</summary><category term="flash" /><category term="html5" /><category term="safari" /><category term="video" /><category term="webkit" /></entry><entry><title>They Write For You
</title><link href="http://simonwillison.net/2010/Feb/2/theywrite/" rel="alternate" /><updated>2010-02-02T09:27:40Z</updated><id>http://simonwillison.net/2010/Feb/2/theywrite/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://dharmafly.com/theywriteforyou/"&gt;They Write For You&lt;/a&gt;. I helped put together this visualisation of stories written by MPs for various newspapers at last Friday’s ’Hackers and Hacks" hack day.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="hackday" /><category term="mps" /><category term="newspapers" /><category term="politics" /><category term="projects" /><category term="visualisations" /></entry><entry><title>Follow a Museum day
</title><link href="http://simonwillison.net/2010/Feb/1/follow/" rel="alternate" /><updated>2010-02-01T11:15:11Z</updated><id>http://simonwillison.net/2010/Feb/1/follow/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://www.followamuseum.com/"&gt;Follow a Museum day&lt;/a&gt;. It’s follow a museum on Twitter day. Useful directory of museum Twitter accounts around the world, organised by country.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="museums" /><category term="twitter" /></entry><entry><title>Distributed lock on top of memcached
</title><link href="http://simonwillison.net/2010/Feb/1/distributed/" rel="alternate" /><updated>2010-02-01T10:15:02Z</updated><id>http://simonwillison.net/2010/Feb/1/distributed/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://amix.dk/blog/post/19386"&gt;Distributed lock on top of memcached&lt;/a&gt;. 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.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="concurrency" /><category term="contextmanager" /><category term="locking" /><category term="memcached" /><category term="plurk" /><category term="python" /><category term="redis" /><category term="with" /></entry><entry><title>Plurk: Instant conversations using Comet
</title><link href="http://simonwillison.net/2010/Feb/1/plurk/" rel="alternate" /><updated>2010-02-01T10:13:14Z</updated><id>http://simonwillison.net/2010/Feb/1/plurk/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://amix.dk/blog/post/19490"&gt;Plurk: Instant conversations using Comet&lt;/a&gt; (&lt;a href="http://news.ycombinator.com/item?id=1088699" title="Hacker News"&gt;via&lt;/a&gt;). 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.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="comet" /><category term="java" /><category term="javascript" /><category term="jboss" /><category term="netty" /><category term="node" /><category term="plurk" /></entry><entry><title>jQuery source viewer
</title><link href="http://simonwillison.net/2010/Feb/1/jquery/" rel="alternate" /><updated>2010-02-01T10:01:20Z</updated><id>http://simonwillison.net/2010/Feb/1/jquery/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://james.padolsey.com/jquery/"&gt;jQuery source viewer&lt;/a&gt;. 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.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="jamespadolsey" /><category term="javascript" /><category term="jquery" /></entry><entry><title>HTML 5 audio player demo
</title><link href="http://simonwillison.net/2010/Feb/1/audio/" rel="alternate" /><updated>2010-02-01T09:58:47Z</updated><id>http://simonwillison.net/2010/Feb/1/audio/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://jszen.blogspot.com/2010/01/html-5-audio-player-demo.html"&gt;HTML 5 audio player demo&lt;/a&gt;. 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.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="audio" /><category term="firefox" /><category term="html5" /><category term="javascript" /><category term="jquery" /><category term="mp3" /><category term="ogg" /><category term="safari" /><category term="scottandrew" /></entry><entry><title>Hot Code Loading in Node.js
</title><link href="http://simonwillison.net/2010/Jan/31/liminal/" rel="alternate" /><updated>2010-01-31T13:57:53Z</updated><id>http://simonwillison.net/2010/Jan/31/liminal/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://romeda.org/blog/2010/01/hot-code-loading-in-nodejs.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A LiminalExistence %28Liminal Existence%29"&gt;Hot Code Loading in Node.js&lt;/a&gt;. Blaine Cook’s patch for Node.js that enables Erlang-style hot code loading, so you can switch out your application logic without restarting the server or affecting existing requests. This could make deploying new versions of Node applications trivial. I’d love to see a Node hosting service that allows you to simply upload a script file and have it execute on the Web.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="blainecook" /><category term="deployment" /><category term="erlang" /><category term="javascript" /><category term="node" /><category term="nodejs" /></entry><entry><title>A quote from John Gruber
</title><link href="http://simonwillison.net/2010/Jan/31/twitter/" rel="alternate" /><updated>2010-01-31T12:05:40Z</updated><id>http://simonwillison.net/2010/Jan/31/twitter/</id><summary type="html">



&lt;div class="quote segment"&gt;&lt;blockquote cite="http://twitter.com/gruber/status/8417800859"&gt;&lt;p&gt;32.38 percent of visitors to DF last week did not have Flash.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="cite"&gt; - &lt;a href="http://twitter.com/gruber/status/8417800859"&gt;John Gruber&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;


</summary><category term="adobe" /><category term="apple" /><category term="flash" /><category term="johngruber" /></entry><entry><title>Who Can Do Something About Those Blue Boxes?
</title><link href="http://simonwillison.net/2010/Jan/31/daring/" rel="alternate" /><updated>2010-01-31T12:05:23Z</updated><id>http://simonwillison.net/2010/Jan/31/daring/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://daringfireball.net/2010/01/blue_boxes"&gt;Who Can Do Something About Those Blue Boxes?&lt;/a&gt;. John Gruber makes the case for the fading significance of Flash, brought about by Apple’s point-blank refusal to support it on the iPhone or iPad. “Flash is no longer ubiquitous. There’s a big difference between “everywhere” and “almost everywhere”.”&lt;/p&gt;
&lt;/div&gt;




</summary><category term="adobe" /><category term="apple" /><category term="flash" /><category term="ipad" /><category term="iphone" /><category term="johngruber" /></entry><entry><title>Dojo 1.4.1 vs jQuery 1.4.2pre on Taskspeed
</title><link href="http://simonwillison.net/2010/Jan/29/competition/" rel="alternate" /><updated>2010-01-29T14:19:24Z</updated><id>http://simonwillison.net/2010/Jan/29/competition/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://www.flickr.com/photos/jeresig/4311864455/"&gt;Dojo 1.4.1 vs jQuery 1.4.2pre on Taskspeed&lt;/a&gt;. John Resig’s reponse. When JavaScript libraries compete on performance, everybody wins.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="benchmarks" /><category term="dojo" /><category term="javascript" /><category term="johnresig" /><category term="jquery" /><category term="performance" /></entry><entry><title>Dojo: Still Twice As Fast When It Matters Most
</title><link href="http://simonwillison.net/2010/Jan/28/dojo/" rel="alternate" /><updated>2010-01-28T22:40:43Z</updated><id>http://simonwillison.net/2010/Jan/28/dojo/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://alex.dojotoolkit.org/2010/01/dojo-still-twice-as-fast-when-it-matters-most/"&gt;Dojo: Still Twice As Fast When It Matters Most&lt;/a&gt;. Alex Russell shows how Dojo out-performs jQuery on the TaskSpeed benchmark, which attempts to represent common tasks in real-world applications and has had code that have been optimised by the development teams behind each of the libraries.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="alexrussell" /><category term="benchmarking" /><category term="dojo" /><category term="javascript" /><category term="jquery" /><category term="performance" /><category term="taskspeed" /></entry><entry><title>Why the iPad may be just what we need for Digital Inclusion
</title><link href="http://simonwillison.net/2010/Jan/28/jaggeree/" rel="alternate" /><updated>2010-01-28T21:03:18Z</updated><id>http://simonwillison.net/2010/Jan/28/jaggeree/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://blog.jaggeree.com/post/357787918/why-the-ipad-may-be-just-what-we-need-for-digital"&gt;Why the iPad may be just what we need for Digital Inclusion&lt;/a&gt;. Chris Thorpe: “It may not be a Jesus phone, a Moses tablet or something that lives up to hype and hyperbole, but if it does something for the digital inclusion agenda it might live up to Steve Jobs saying it’s the most important thing he’s ever done.”&lt;/p&gt;
&lt;/div&gt;




</summary><category term="apple" /><category term="christhorpe" /><category term="inclusion" /><category term="ipad" /><category term="stevejobs" /></entry><entry><title>Introducing docent
</title><link href="http://simonwillison.net/2010/Jan/28/huskorg/" rel="alternate" /><updated>2010-01-28T20:35:22Z</updated><id>http://simonwillison.net/2010/Jan/28/huskorg/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://husk.org/blog/arch/introducing-docent.html"&gt;Introducing docent&lt;/a&gt;. Paul Mison’s clever little Flickr app for viewing galleries that have been added by your contacts. It runs in Python on App Engine and makes extensive use of the Task Queue API.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="appengine" /><category term="docent" /><category term="flickr" /><category term="paulmison" /><category term="python" /><category term="queues" /><category term="taskqueue" /></entry><entry><title>Why I Believe Printers Were Sent From Hell To Make Us Miserable
</title><link href="http://simonwillison.net/2010/Jan/28/believe/" rel="alternate" /><updated>2010-01-28T18:56:47Z</updated><id>http://simonwillison.net/2010/Jan/28/believe/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://theoatmeal.com/comics/printers"&gt;Why I Believe Printers Were Sent From Hell To Make Us Miserable&lt;/a&gt; (&lt;a href="http://twitter.com/thomasbilk/status/8332399393" title="Thomas Bilk"&gt;via&lt;/a&gt;). I just don’t get it. How has no one managed to produce a printer that doesn’t suck yet?&lt;/p&gt;
&lt;/div&gt;




</summary><category term="funny" /><category term="printers" /></entry><entry><title>Reexamining Python 3 Text I/O
</title><link href="http://simonwillison.net/2010/Jan/28/python3/" rel="alternate" /><updated>2010-01-28T13:28:07Z</updated><id>http://simonwillison.net/2010/Jan/28/python3/</id><summary type="html">

&lt;div class="blogmark segment"&gt;&lt;p&gt;&lt;a href="http://www.dabeaz.com/blog/2010/01/reexamining-python-3-text-io.html"&gt;Reexamining Python 3 Text I/O&lt;/a&gt;. Python 3.1’s IO performance is a huge improvement over 3.0, but still considerably slower than 2.6. It turns out it’s all to do with Python 3’s unicode support: When you read a file in to a string, you’re asking Python to decode the bytes in to UTF-8 (the new default encoding) at the same time. If you open the file in binary mode Python 3 will read raw bytes in to a bytestring instead, avoiding the conversion overhead and performing only 4% slower than the equivalent code in Python 2.6.4.&lt;/p&gt;
&lt;/div&gt;




</summary><category term="davidmbeazley" /><category term="io" /><category term="performance" /><category term="python" /><category term="python3" /><category term="text" /><category term="unicode" /></entry></feed>
