<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6234788736740221137</id><updated>2011-11-27T16:47:26.311-08:00</updated><category term='reliable networks'/><category term='BBC radio'/><category term='pen'/><category term='supercomputer'/><category term='vortexbox'/><category term='interaction programming'/><category term='protocols'/><category term='algorithms'/><category term='hi-fi'/><category term='Blue Gene'/><category term='non-signalling'/><category term='floating point'/><category term='exceptions'/><category term='guarantee'/><category term='logitech squeezebox touch'/><category term='free software'/><category term='audio'/><category term='Plan 9'/><category term='devices'/><category term='consumer devices'/><category term='software'/><category term='internet'/><category term='reading list'/><category term='warranty'/><category term='user interfaces'/><category term='open systems'/><title type='text'>Software Magpie</title><subtitle type='html'>P J Brown made a passing reference to "software magpies" in one of his books. The "noisy and mischievous" aspect of the bird is less relevant here than its tendency to take and collect things, particularly shiny new things. I thought it would suit the eclectic nature of my taste and interests in software, and the "borrowing" characteristic of Free Software.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://softwaremagpie.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6234788736740221137/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://softwaremagpie.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>forsyth</name><uri>http://www.blogger.com/profile/00068719978877211213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images3.orkut.com/images/medium/52/136052.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6234788736740221137.post-8588737719399958621</id><published>2011-07-16T04:54:00.000-07:00</published><updated>2011-07-26T03:49:46.553-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open systems'/><category scheme='http://www.blogger.com/atom/ns#' term='vortexbox'/><category scheme='http://www.blogger.com/atom/ns#' term='consumer devices'/><category scheme='http://www.blogger.com/atom/ns#' term='logitech squeezebox touch'/><category scheme='http://www.blogger.com/atom/ns#' term='hi-fi'/><category scheme='http://www.blogger.com/atom/ns#' term='BBC radio'/><category scheme='http://www.blogger.com/atom/ns#' term='audio'/><category scheme='http://www.blogger.com/atom/ns#' term='free software'/><title type='text'>My latest squeeze</title><content type='html'>My last audio CD player failed, and my CDs were taking up too much space. I decided finally to go properly digital with my music. I was anxious to control the software, at least to some extent, and to ensure I could use a good range of formats, not just MP3.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I built a mini-ATX box to run &lt;a href="http://www.vortexbox.org/"&gt;Vortexbox&lt;/a&gt;, to provide my digital jukebox. Vortexbox is based on a Fedora Linux distribution, preconfigured on installation to act immediately as a jukebox, without having to mess with it further. Being Linux-based, and with source available, should allow arbitrary tinkering.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To feed my &lt;a href="http://www.quad-hifi.co.uk/"&gt;Quad&lt;/a&gt; 34/306 hi-fi system, I decided to try the Logitech &lt;a href="http://http//www.logitech.com/en-gb/speakers-audio/wireless-music-systems/devices/5745"&gt;Squeezebox Touch&lt;/a&gt;. Until all the bits arrived for the Vortexbox, I have been playing &lt;a href="http://http//www.bbc.co.uk/radio3/"&gt;BBC Radio 3&lt;/a&gt; on Internet radio, which works well, even though the Squeezebox is currently using a WiFi connection. (I'm just setting up the Vortexbox now.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I was pleased to find that I can &lt;i&gt;ssh&lt;/i&gt; in to the Touch. On doing so for the first time, I read:&lt;div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;root@squeeze1's password: &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;This network device is for authorized use only. Unauthorized or improper use&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;of this system may result in you hearing very bad music. If you do not consent&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;to these terms, LOG OFF IMMEDIATELY. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Ha, only joking. Now you have logged in feel free to change your root password&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;using the 'passwd' command. You can safely modify any of the files on this&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;system. A factory reset (press and hold add on power on) will remove all your&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;modifications and revert to the installed firmware.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Enjoy!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;I found that mildly amusing, but it also emphasises a big change in attitude for consumer devices: this one is clearly &lt;i&gt;my&lt;/i&gt; device, and I can change it as I like, not just in trivial ways.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6234788736740221137-8588737719399958621?l=softwaremagpie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwaremagpie.blogspot.com/feeds/8588737719399958621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6234788736740221137&amp;postID=8588737719399958621' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6234788736740221137/posts/default/8588737719399958621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6234788736740221137/posts/default/8588737719399958621'/><link rel='alternate' type='text/html' href='http://softwaremagpie.blogspot.com/2011/07/latest-squeeze.html' title='My latest squeeze'/><author><name>forsyth</name><uri>http://www.blogger.com/profile/00068719978877211213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images3.orkut.com/images/medium/52/136052.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6234788736740221137.post-8704854504374729234</id><published>2009-10-08T05:49:00.000-07:00</published><updated>2009-10-08T16:18:37.832-07:00</updated><title type='text'>Networking and interprocess communication</title><content type='html'>Last year I implemented a unicast subset of XTP as a plausible attempt at a new transport-level protocol for use on Blue Gene. XTP has some of the flavour of the &lt;a href="http://www.patentstorm.us/patents/4852127/description.html"&gt;Universal Receiver Protocol&lt;/a&gt;: an XTP transmitter can cause the same receiver to execute different protocols (eg, datagram, reliable datagram, transaction, or stream) by sending different sets of orthogonal options. Unfortunately, although XTP  is simpler and more flexible than TCP/IP it still seemed over-complicated. In particular, it has elaborate state transitions to end a conversation. There are other ambiguities in the specification. An INRIA report on a &lt;a href="http://www.google.co.uk/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=2&amp;amp;url=ftp%3A%2F%2Fftp.inrialpes.fr%2Fpub%2Fvasy%2Fpublications%2Fothers%2FBenslimane-Abouaissa-98.pdf&amp;amp;ei=5gDOStfZEIOL4gb2uvX9Ag&amp;amp;rct=j&amp;amp;q=Estelle+specification+and+validation+of+XTP+4.0&amp;amp;usg=AFQjCNF6y_kRtb4US3UmS-ukTYfQeDU9FQ"&gt;formal specification of XTP&lt;/a&gt; (mechanically verified) was helpful in resolving various problems I noticed when doing my implementation, or validating solutions that I developed independently.&lt;br /&gt;&lt;br /&gt;In November, I read the book &lt;a href="http://www.amazon.com/Patterns-Network-Architecture-Return-Fundamentals/dp/0132252422/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1255006480&amp;amp;sr=8-1"&gt;&lt;span style="font-style: italic;"&gt;Patterns in Network Architecture: A Return to Fundamentals&lt;/span&gt;&lt;/a&gt;, by John Day (ISBN-13: 978-0-13-225242-3). The book packs a lot of material into its 400 pages, with many interesting observations along the way. Several simple points are relevant here. Day reviews the history of protocol development and analyses the components of various protocols. He observes that there might be only three types of protocols:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;relaying protocols, including multiplexing protocols&lt;br /&gt;&lt;/li&gt;&lt;li&gt;error- and flow-control protocols ("error control" protocols)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;application protocols&lt;/li&gt;&lt;/ol&gt;In Chapter 6 (&lt;span style="font-style: italic;"&gt;Divining Layers&lt;/span&gt;) Day considers why and how one might structure network protocols, and in particular, the purpose of layers of protocols. He therefore designs a basic internet protocol in stages. He concludes, as Metcalfe observed in 1972, that "networking is interprocess communication", but refines the observation: "networking is distributed IPC and only IPC" (ie, the resulting protocol suite exists only to permit communication between (or amongst) application processes), and "a layer is a distributed IPC facility". Subsequent chapters provide a detailed and more formal construction of a complete new network architecture with those observations in mind. The architecture uses IPC protocols recursively in a way reminiscent of Cheriton's VMTP.&lt;br /&gt;&lt;br /&gt;The relationship between networking and IPC is I suppose fairly obvious, yet easily forgotten. Many protocols quickly form arbitrary stacks, layered elaborately but pointlessly, like pyramids of acrobats. The  essential exchange of data between applications is almost an afterthought. By contrast, specialised protocols such as IBM's &lt;a href="http://portal.acm.org/citation.cfm?id=1188580"&gt;one-sided communication protocol on Blue Gene&lt;/a&gt; can indeed support specific IPC schemes, such as ARMCI. (In earlier posts, I dubbed that protocol "Clint": the protocol with no name.) With care, such a protocol can support several compatible IPC regimes efficiently, as Clint does for both ARMCI and MPI.&lt;br /&gt;&lt;br /&gt;XTP was designed to support a bigger range of IPC options than we need for Plan 9 in this environment. We should do something more specific, and simpler. Unfortunately, Clint is not adequate because one fundamental IPC in Plan 9 is the 9P file serving protocol, which is conversation oriented.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6234788736740221137-8704854504374729234?l=softwaremagpie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwaremagpie.blogspot.com/feeds/8704854504374729234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6234788736740221137&amp;postID=8704854504374729234' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6234788736740221137/posts/default/8704854504374729234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6234788736740221137/posts/default/8704854504374729234'/><link rel='alternate' type='text/html' href='http://softwaremagpie.blogspot.com/2009/10/networking-and-interprocess.html' title='Networking and interprocess communication'/><author><name>forsyth</name><uri>http://www.blogger.com/profile/00068719978877211213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images3.orkut.com/images/medium/52/136052.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6234788736740221137.post-4903142391480254289</id><published>2008-05-02T12:00:00.000-07:00</published><updated>2008-05-02T12:55:04.260-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='warranty'/><category scheme='http://www.blogger.com/atom/ns#' term='guarantee'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='pen'/><title type='text'>no warranty of merchantability</title><content type='html'>&lt;span style="font-size:85%;"&gt;In &lt;span style="font-style: italic;"&gt;&lt;a href="http://www.cs.swan.ac.uk/%7Ecsharold/presson/Site/press%20on.html"&gt;Press On&lt;/a&gt;,&lt;/span&gt; mentioned below, Thimbleby notes that most software, even commercial software, comes with essentially no warranty or guarantee. ("There is no warranty of merchantability nor of fitness for a particular purpose.")&lt;br /&gt;&lt;br /&gt;He compares that to the guarantee for &lt;a href="http://www.cross.com/"&gt;&lt;span style="font-style: italic;"&gt;Cross&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;a href="http://www.cross.com/"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.cross.com/"&gt;pen&lt;/a&gt;&lt;a href="http://www.cross.com/"&gt;s&lt;/a&gt;, which I reproduce below:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Cross Writing Instruments Full Perpetual Warranty Guarantee&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;All Cross writing instruments and desk set penholder mechanisms are unquestionably guaranteed against mechanical failure, regardless of age.&lt;br /&gt;&lt;br /&gt;Any Cross product or part requiring service under this warranty will be repaired or replaced at no charge when received at our factory from the consumer (postage and insurance are the responsibility of the consumer, and shipping and handling fees may apply). Any such product that is no longer in production and cannot be repaired will be replaced by a comparable Cross product. Leads, erasers and ink refills exhausted in the course of normal use, and emblems and other customized decorations, are excluded from this warranty; also excluded are fountain pen nibs and other parts damaged from impact, unreasonable use or obvious abuse. The Cross guarantee extends our assurance of a lifetime of writing pleasure to every owner of a Cross writing instrument.&lt;br /&gt;&lt;br /&gt;This warranty gives you the specific legal rights, and you may have other rights which vary from state to state or jurisdiction to jurisdiction.&lt;br /&gt;&lt;/blockquote&gt;I see there is no mention of "beta". How close can we get to this ideal, for non-trivial programs and systems?&lt;br /&gt;&lt;br /&gt;By the way, they are also excellent pens. I ought to have insured mine against theft.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6234788736740221137-4903142391480254289?l=softwaremagpie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwaremagpie.blogspot.com/feeds/4903142391480254289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6234788736740221137&amp;postID=4903142391480254289' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6234788736740221137/posts/default/4903142391480254289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6234788736740221137/posts/default/4903142391480254289'/><link rel='alternate' type='text/html' href='http://softwaremagpie.blogspot.com/2008/05/no-warranty-of-merchantability.html' title='no warranty of merchantability'/><author><name>forsyth</name><uri>http://www.blogger.com/profile/00068719978877211213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images3.orkut.com/images/medium/52/136052.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6234788736740221137.post-7750326940372345474</id><published>2008-04-30T16:26:00.000-07:00</published><updated>2008-05-01T00:22:35.276-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='non-signalling'/><category scheme='http://www.blogger.com/atom/ns#' term='floating point'/><category scheme='http://www.blogger.com/atom/ns#' term='exceptions'/><title type='text'>Bottled it</title><content type='html'>&lt;span style="font-size:85%;"&gt;Shopping yesterday, I compared prices of bottled water at my local &lt;a href="http://www.sainsburys.co.uk/"&gt;Sainsbury's&lt;/a&gt; (a supermarket chain in the United Kingdom). The &lt;span style="font-style: italic;"&gt;Highland Spring&lt;/span&gt; was exceptionally troublesome. I took &lt;a href="http://www.terzarima.net/tmp/SP_A0003.jpg"&gt;a snapshot&lt;/a&gt; with my mobile phone. I wonder what the shelf-fillers made of it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Note&lt;/span&gt;: the suffix &lt;span style="font-weight: bold;"&gt;p&lt;/span&gt; is "pence" (plural of penny)&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6234788736740221137-7750326940372345474?l=softwaremagpie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwaremagpie.blogspot.com/feeds/7750326940372345474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6234788736740221137&amp;postID=7750326940372345474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6234788736740221137/posts/default/7750326940372345474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6234788736740221137/posts/default/7750326940372345474'/><link rel='alternate' type='text/html' href='http://softwaremagpie.blogspot.com/2008/04/bottled-it.html' title='Bottled it'/><author><name>forsyth</name><uri>http://www.blogger.com/profile/00068719978877211213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images3.orkut.com/images/medium/52/136052.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6234788736740221137.post-7368911403450889170</id><published>2008-04-27T09:58:00.000-07:00</published><updated>2008-04-27T14:33:14.557-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='user interfaces'/><category scheme='http://www.blogger.com/atom/ns#' term='algorithms'/><category scheme='http://www.blogger.com/atom/ns#' term='interaction programming'/><category scheme='http://www.blogger.com/atom/ns#' term='devices'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='reading list'/><title type='text'>Reading List</title><content type='html'>&lt;span style="font-size:85%;"&gt;Here are a few things I've read recently, apart from papers and reports:&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.cs.swan.ac.uk/%7Ecsharold/presson/Site/press%20on.html"&gt;&lt;span style="font-style: italic;"&gt;Press On: principles of interaction programming&lt;/span&gt;&lt;/a&gt;, by Harold Thimbleby: (devices often have frustrating user interfaces, but we can apply intelligent computer science informed by context to get much better ones, and he provides some programs to do it; although the book is not as beautiful as one of&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;a href="http://www.edwardtufte.com/"&gt;Edward Tufte&lt;/a&gt;'s, there is a similar intellectual range and excitement, including relevant historical analogies, and the importance of context to any design)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.eecs.usma.edu/webs/people/okasaki/pubs.html#jfp98"&gt;Chris Okasaki's Publications&lt;/a&gt; (data structures and algorithms for functional programming languages)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Software Engineering for Internet Applications,&lt;/span&gt; which is &lt;a href="http://philip.greenspun.com/seia/"&gt;online&lt;/a&gt;, although I bought &lt;a href="http://www.amazon.co.uk/Software-Engineering-Internet-Applications-Andersson/dp/0262511916/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1209315993&amp;amp;sr=8-1"&gt;the paperback&lt;/a&gt; (only 2006, and the technology is already outdated, but the book is still worthwhile for its extensive design discussions and revelations about the worrying low-level stuff underpinning web applications, and of course the technology is still in use)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;&lt;a href="http://www.amazon.co.uk/Desktop-Metaphor-Designing-Integrated-Environments/dp/026211304X/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1209316140&amp;amp;sr=1-1"&gt;Beyond the Desktop Metaphor&lt;/a&gt;&lt;/span&gt; (as it suggests, looking for alternatives to the over-present desktop, but I didn't find it had much fizz, compared to&lt;span style="font-style: italic;"&gt; Press On&lt;/span&gt;, and although there were a few ideas  worth applying, I thought most of the results were dull compared say to just using &lt;a href="http://plan9.bell-labs.com/sys/doc/acme.html"&gt;Acme&lt;/a&gt; or an iPhone)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6234788736740221137-7368911403450889170?l=softwaremagpie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwaremagpie.blogspot.com/feeds/7368911403450889170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6234788736740221137&amp;postID=7368911403450889170' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6234788736740221137/posts/default/7368911403450889170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6234788736740221137/posts/default/7368911403450889170'/><link rel='alternate' type='text/html' href='http://softwaremagpie.blogspot.com/2008/04/reading-list.html' title='Reading List'/><author><name>forsyth</name><uri>http://www.blogger.com/profile/00068719978877211213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images3.orkut.com/images/medium/52/136052.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6234788736740221137.post-2199635143626426184</id><published>2008-04-06T09:12:00.001-07:00</published><updated>2008-04-13T03:08:53.539-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='supercomputer'/><category scheme='http://www.blogger.com/atom/ns#' term='Blue Gene'/><category scheme='http://www.blogger.com/atom/ns#' term='reliable networks'/><category scheme='http://www.blogger.com/atom/ns#' term='protocols'/><title type='text'>A Fistful of Protocols</title><content type='html'>&lt;span style="font-size:85%;"&gt;With my able assistants, clever Google and slightly less reliable Memory (with a "y"), I considered existing protocols designed for high-speed, highly-reliable networks, including URP (indirectly), NETBLT, LNTP, VMTP, SNR, and XTP, roughly in that order; and read previous reviews of them. I also looked at Plan 9's early Nonet and later IL/IP protocols, RFC1077, SCP, SCMP, and a few "one-sided communication" protocols. (I haven't got a specification for Nonet but &lt;a href="http://swtch.com/cgi-bin/plan9history.cgi?f=1990/1210/port/devnonet.c;v=diff;e=1"&gt;most of the code&lt;/a&gt; is online.) The MPI specification defines a programming interface not a protocol, and so is not directly useful but there are papers about using one-sided protocols for MPI implementation.&lt;br /&gt;&lt;br /&gt;Most of these protocols were designed to include high-speed wide-area internets, except Nonet and IBM's  one-sided &lt;a href="http://portal.acm.org/citation.cfm?id=1188580"&gt;protocol with no name&lt;/a&gt;, which I shall call &lt;span style="font-style: italic;"&gt;Clint.&lt;/span&gt; Clint was designed specifically for the Blue Gene environment. As noted earlier, that environment does not eliminate failures such as loss or data corruption, but greatly reduces their likelihood. For instance, the network is local area only, will not impose arbitrary delays on packets, and will not drop packets because some intervening node is suddenly congested (as might happen on the Internet). It might make a mistake, but rarely. That should allow us to make a few simplifying assumptions, but our project's requirements for fault-tolerance still require us to account for uncommon errors.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;The Clint paper shows that per-packet header overhead matters, because the payload is small: 248 bytes on the Torus, after allowing for an 8-byte header read by the hardware. The hardware likes data on 16-byte boundaries, so an extra 8-byte sofware header fits well. That is too small for a complete message context, so Clint transmits a larger header containing a full context in every initial message until the first response from the receiver provides its own unique identifier for that context, reducing the header to the near minimal 8 bytes in all subsequent messages. The scheme saves the latency of a round trip to establish that context first, and avoids wasting bandwidth on big headers in all packets.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;What do we need from our transport protocol?  We certainly need virtual circuits for 9P connections, and reliable messaging for MPI-like things.&lt;/span&gt;&lt;span style="font-size:85%;"&gt; Of the existing protocols, XTP looked the most promising: it offers fast setup of contexts for message sending, including context key exchange (with a similar effect to Clint). It follows URP in making the receiver reactive, which allows it to support both datagrams and connections in the same structure by having a transmitter drive the receiver appropriately. The receiver state is transmitted only on demand, and promptly, removing the need for most timers at the receiver.&lt;br /&gt;&lt;br /&gt;I am currently implementing a simplified variant of XTP, with a nod or two to Nonet. The packet formats are different, with a view towards a more subtle implementation along x-kernel lines. Some aspects of XTP are replaced by other mechanisms. I think rate-based control is better done at the application level, for instance, and we might do something a little different for multicast, given the special forms of multicast supported by the Tree and Torus. Timers can be rather sloppy and statically-defined, because errors will typically arise only because a node crashes or hangs, or someone is careless with the wire cutters. Out-of-order delivery will occur on the Torus and must not cause needless retransmissions, but how many packet frames might elapse before an obviously missing packet is declared lost? Apart from that, the reliability of the networks allows an early driver to assume error-free networks, with later support for retransmission and other error recovery.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6234788736740221137-2199635143626426184?l=softwaremagpie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwaremagpie.blogspot.com/feeds/2199635143626426184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6234788736740221137&amp;postID=2199635143626426184' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6234788736740221137/posts/default/2199635143626426184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6234788736740221137/posts/default/2199635143626426184'/><link rel='alternate' type='text/html' href='http://softwaremagpie.blogspot.com/2008/04/fistful-of-protocols.html' title='A Fistful of Protocols'/><author><name>forsyth</name><uri>http://www.blogger.com/profile/00068719978877211213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images3.orkut.com/images/medium/52/136052.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6234788736740221137.post-2621410303441723511</id><published>2008-04-05T02:07:00.000-07:00</published><updated>2008-04-13T02:41:47.909-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='supercomputer'/><category scheme='http://www.blogger.com/atom/ns#' term='Plan 9'/><category scheme='http://www.blogger.com/atom/ns#' term='Blue Gene'/><category scheme='http://www.blogger.com/atom/ns#' term='reliable networks'/><category scheme='http://www.blogger.com/atom/ns#' term='protocols'/><title type='text'>Protocols and Plan 9 on Blue Gene</title><content type='html'>&lt;span style="font-size:85%;"&gt;A small group of us is developing &lt;a href="http://domino.research.ibm.com/comm/research_projects.nsf/pages/hare.pubs.html"&gt;new small-scale systems software for large-scale supercomputers&lt;/a&gt;, such as the IBM Blue Gene series, based on the distributed operating system &lt;a href="http://plan9.bell-labs.com/plan9/"&gt;Plan 9 from Bell Labs&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://domino.research.ibm.com/comm/research_projects.nsf/pages/bluegene.index.html"&gt;Blue Gene&lt;/a&gt; has groups of up to 64 CPU nodes, each with several processors, connected to the outside world through an IO node per group. The network provision is unusual (although that itself is not unusual in the supercomputer world). Only the IO node has a conventional Ethernet. The CPU nodes are typically connected in a 2D or 3D structure by a special &lt;span style="font-style: italic;"&gt;Torus&lt;/span&gt; network. CPU nodes within each group are connected to each other and to the IO node for the group by a "class routed" network, commonly called the &lt;span style="font-style: italic;"&gt;Tree&lt;/span&gt;, although routing tables can create other topologies.&lt;br /&gt;&lt;br /&gt;The Ethernet is nothing special and we simply use the existing Internet protocols. Just to get started, we also run IP over the Tree and the Torus, with small MTUs. Given Plan 9's straightforward Medium structure in its Internet stack, it was &lt;a href="http://plan9.bell-labs.com/iwp9/papers/26.lepus.pdf"&gt;short work to add Tree and Torus medium drivers&lt;/a&gt;. A kernel process reads the raw device (&lt;span style="font-weight: bold;font-family:lucida grande;" &gt;/dev/torus&lt;/span&gt; or&lt;span style="font-family:lucida grande;"&gt; &lt;span style="font-weight: bold;font-family:courier new;" &gt;/dev/vc0&lt;/span&gt;&lt;/span&gt;), strips the medium header, and passes the resulting Block up the stack; in the other direction, the medium driver adds the tree or torus driver's header to an IP packet and writes it to the device. A few lines of shell script configure the new media into the IP subsystem.&lt;br /&gt;&lt;br /&gt;Historically, attempts to provide improved replacements for TCP have failed, partly because new protocols are hard to deploy, and partly because some suggested improvements have simply been added as extensions to TCP or its implementations.&lt;/span&gt;&lt;span style="font-size:85%;"&gt; Even so, the Tree and the Torus have properties that make it attractive to consider other transport protocols. Both networks have small payloads per packet&lt;/span&gt;&lt;span style="font-size:85%;"&gt; (240 or 256 bytes)&lt;/span&gt;&lt;span style="font-size:85%;"&gt;, high speed, high reliability (low error rate and retransmission in hardware), and automatic flow control. (The Tree delivers packets in order, but the Torus does not.) Each network provides its own form of multicast, different from IP multicast. The Tree can do certain reduction operations in the network (combining results up the tree).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;Existing a&lt;/span&gt;&lt;span style="font-size:85%;"&gt;pplications commonly use the &lt;a href="http://www-unix.mcs.anl.gov/mpi/"&gt;Message Passing Interface&lt;/a&gt; (MPI) to exchange data and control computations. Much of it is supported at the library level, but we can make good use of suitable primitives at the transport level. We also hope to provide an alternative native messaging interface simpler than MPI's.&lt;/span&gt;&lt;span style="font-size:85%;"&gt; Our system applications will be using Plan 9's &lt;a href="http://plan9.bell-labs.com/sys/man/5/INDEX.html"&gt;9P protocol&lt;/a&gt; extensively to represent and share services and resources. &lt;/span&gt;&lt;span style="font-size:85%;"&gt; It seems we shall need both connectionless and connection-oriented communication.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;The supercomputer environment makes large-scale experiments in protocol design and implementation easier than on a normal LAN or the Internet. For instance, there are hundreds of nodes, but we can readily ensure that all of them are running the same implementation of the same version of the protocol, and we can change the protocol(s) without too much fuss. Being able to inter-operate directly with other systems is not a key requirement (working through a protocol bridge is fine for now).&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;Despite the hardware flow control at the packet level, we still need flow control in the transport protocol:&lt;/span&gt;&lt;span style="font-size:85%;"&gt; network access is multiplexed, and producer and consumer rates are not always matched. (Rate control in the protocol can be avoided by applying it at a higher level in the system.) On the other hand, the networks' highly reliable delivery might reduce and simplify error recovery. Unfortunately the error rate is not zero, so we must still allow for them (at some level, for many applications).&lt;br /&gt;&lt;br /&gt;For several decades, protocols have been designed and sometimes implemented, to suit high-speed, highly-reliable networks. Perhaps something suitable exists, off-the-peg, or even off-the-wall. In the next post, I shall mention a few of them and sketch what I am currently implementing.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6234788736740221137-2621410303441723511?l=softwaremagpie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwaremagpie.blogspot.com/feeds/2621410303441723511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6234788736740221137&amp;postID=2621410303441723511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6234788736740221137/posts/default/2621410303441723511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6234788736740221137/posts/default/2621410303441723511'/><link rel='alternate' type='text/html' href='http://softwaremagpie.blogspot.com/2008/04/needing-transport-protocols-for-plan-9.html' title='Protocols and Plan 9 on Blue Gene'/><author><name>forsyth</name><uri>http://www.blogger.com/profile/00068719978877211213</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images3.orkut.com/images/medium/52/136052.jpg'/></author><thr:total>0</thr:total></entry></feed>
