<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: io</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/io.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2010-09-05T19:41:00+00:00</updated><author><name>Simon Willison</name></author><entry><title>ZeroMQ: Modern and Fast Networking Stack</title><link href="https://simonwillison.net/2010/Sep/5/zeromq/#atom-tag" rel="alternate"/><published>2010-09-05T19:41:00+00:00</published><updated>2010-09-05T19:41:00+00:00</updated><id>https://simonwillison.net/2010/Sep/5/zeromq/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.igvita.com/2010/09/03/zeromq-modern-fast-networking-stack/"&gt;ZeroMQ: Modern and Fast Networking Stack&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I get ZeroMQ now. I was having trouble figuring out how it differed from things like RabbitMQ—it turns out it’s an entirely new low-level socket abstraction, designed to make common socket programming tasks like message sending/receiving and publish/subscribe a whole lot easier than dealing with raw BSD sockets.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/io"&gt;io&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/messaging"&gt;messaging&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/networking"&gt;networking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sockets"&gt;sockets&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/zeromq"&gt;zeromq&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;&lt;/p&gt;



</summary><category term="io"/><category term="messaging"/><category term="networking"/><category term="sockets"/><category term="zeromq"/><category term="recovered"/></entry><entry><title>Understanding node.js</title><link href="https://simonwillison.net/2010/May/18/node/#atom-tag" rel="alternate"/><published>2010-05-18T18:44:00+00:00</published><updated>2010-05-18T18:44:00+00:00</updated><id>https://simonwillison.net/2010/May/18/node/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://debuggable.com/posts/understanding-node-js:4bd98440-45e4-4a9a-8ef7-0f7ecbdd56cb"&gt;Understanding node.js&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
A king providing orders to his army of servants is a much better analogy than my hyperactive squid.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/async"&gt;async&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/eventio"&gt;eventio&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/io"&gt;io&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/nodejs"&gt;nodejs&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;&lt;/p&gt;



</summary><category term="async"/><category term="eventio"/><category term="io"/><category term="javascript"/><category term="nodejs"/><category term="recovered"/></entry><entry><title>Reexamining Python 3 Text I/O</title><link href="https://simonwillison.net/2010/Jan/28/python3/#atom-tag" rel="alternate"/><published>2010-01-28T13:28:07+00:00</published><updated>2010-01-28T13:28:07+00:00</updated><id>https://simonwillison.net/2010/Jan/28/python3/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&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;&lt;/strong&gt;&lt;/p&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;Tags: &lt;a href="https://simonwillison.net/tags/david-beazley"&gt;david-beazley&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/io"&gt;io&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/performance"&gt;performance&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python3"&gt;python3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/text"&gt;text&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/unicode"&gt;unicode&lt;/a&gt;&lt;/p&gt;



</summary><category term="david-beazley"/><category term="io"/><category term="performance"/><category term="python"/><category term="python3"/><category term="text"/><category term="unicode"/></entry><entry><title>node.js</title><link href="https://simonwillison.net/2009/Nov/9/node/#atom-tag" rel="alternate"/><published>2009-11-09T23:25:47+00:00</published><updated>2009-11-09T23:25:47+00:00</updated><id>https://simonwillison.net/2009/Nov/9/node/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://nodejs.org/"&gt;node.js&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
“Evented I/O for V8 JavaScript”—a JavaScript environment built on top of the super-fast V8 engine which provides event-based IO functionality for building highly concurrent TCP and HTTP servers. The API design is superb—everything is achieved using JavaScript events and callbacks (even regular file IO) and the small standard library ships with comprehensive support for HTTP and DNS. Overall it’s very similar to Twisted and friends, but JavaScript’s anonymous function syntax feels more natural than the Python equivalent. It compiles cleanly on Snow Leopard. Definitely a project to watch.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/dns"&gt;dns&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/eventbasedio"&gt;eventbasedio&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/http"&gt;http&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/io"&gt;io&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/nodejs"&gt;nodejs&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/twisted"&gt;twisted&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/v8"&gt;v8&lt;/a&gt;&lt;/p&gt;



</summary><category term="dns"/><category term="eventbasedio"/><category term="http"/><category term="io"/><category term="javascript"/><category term="nodejs"/><category term="twisted"/><category term="v8"/></entry><entry><title>Offline Processing on App Engine: a Look Ahead</title><link href="https://simonwillison.net/2009/May/20/google/#atom-tag" rel="alternate"/><published>2009-05-20T12:40:12+00:00</published><updated>2009-05-20T12:40:12+00:00</updated><id>https://simonwillison.net/2009/May/20/google/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://code.google.com/events/io/sessions/OfflineProcessingAppEngine.html"&gt;Offline Processing on App Engine: a Look Ahead&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
A session at IO next week: “App Engine was designed to run request-driven web applications, although this will change in the coming year with the release of a number of offline computing components. In this session, we’ll explore the task queue/executor model of computation and some of the more interesting applications.”


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/google"&gt;google&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/google-app-engine"&gt;google-app-engine&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/io"&gt;io&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/message-queues"&gt;message-queues&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/offlineprocessing"&gt;offlineprocessing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/workers"&gt;workers&lt;/a&gt;&lt;/p&gt;



</summary><category term="google"/><category term="google-app-engine"/><category term="io"/><category term="message-queues"/><category term="offlineprocessing"/><category term="workers"/></entry><entry><title>Eventlet - Second Life Wiki</title><link href="https://simonwillison.net/2007/Nov/26/eventlet/#atom-tag" rel="alternate"/><published>2007-11-26T15:21:02+00:00</published><updated>2007-11-26T15:21:02+00:00</updated><id>https://simonwillison.net/2007/Nov/26/eventlet/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://wiki.secondlife.com/wiki/Eventlet"&gt;Eventlet - Second Life Wiki&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Seriously powerful non-blocking IO library for Python, currently maintained by Linden Lab as part of the server architecture used for Second Life.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/eventlet"&gt;eventlet&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/io"&gt;io&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/lindenlab"&gt;lindenlab&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/secondlife"&gt;secondlife&lt;/a&gt;&lt;/p&gt;



</summary><category term="eventlet"/><category term="io"/><category term="lindenlab"/><category term="python"/><category term="secondlife"/></entry><entry><title>skipdb</title><link href="https://simonwillison.net/2007/Feb/4/skipdb/#atom-tag" rel="alternate"/><published>2007-02-04T13:09:59+00:00</published><updated>2007-02-04T13:09:59+00:00</updated><id>https://simonwillison.net/2007/Feb/4/skipdb/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.dekorte.com/projects/opensource/SkipDB/"&gt;skipdb&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Small, fast BerkeleyDB style database using skip lists, by the creator of the Io programming language.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://programming.reddit.com/info/12prr/comments"&gt;programming.reddit.com&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/berkeleydb"&gt;berkeleydb&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/io"&gt;io&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/skipdb"&gt;skipdb&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/skiplists"&gt;skiplists&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/steve-dekorte"&gt;steve-dekorte&lt;/a&gt;&lt;/p&gt;



</summary><category term="berkeleydb"/><category term="io"/><category term="skipdb"/><category term="skiplists"/><category term="steve-dekorte"/></entry></feed>