<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:planet="http://planet.intertwingly.net/" xmlns:indexing="urn:atom-extension:indexing" indexing:index="no"><access:restriction xmlns:access="http://www.bloglines.com/about/specs/fac-1.0" relationship="deny"/>
  <title>Planet 9</title>
  <updated>2010-03-18T16:00:27Z</updated>
  <generator uri="http://intertwingly.net/code/venus/">Venus</generator>
  <author>
    <name>Uriel</name>
    <email>uriel99@gmail.com</email>
  </author>
  <id>http://planet9.cat-v.org/atom.xml</id>
  <link href="http://planet9.cat-v.org/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://planet9.cat-v.org" rel="alternate"/>

  <entry>
    <id>tag:blogger.com,1999:blog-8082954141980125536.post-8625278130945886355</id>
    <link href="http://research.swtch.com/feeds/8625278130945886355/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=8082954141980125536&amp;postID=8625278130945886355" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default/8625278130945886355" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default/8625278130945886355" rel="self" type="application/atom+xml"/>
    <link href="http://research.swtch.com/2010/03/zip-files-all-way-down.html" rel="alternate" type="text/html"/>
    <title>Zip Files All The Way Down</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p class="lp">
Stephen Hawking begins <i><a href="http://www.amazon.com/-/dp/0553380168">A Brief History of Time</a></i> with this story:
</p>

<blockquote>
<p class="pp">
A well-known scientist (some say it was Bertrand Russell) once gave a public lecture on astronomy. He described how the earth orbits around the sun and how the sun, in turn, orbits around the center of a vast collection of stars called our galaxy. At the end of the lecture, a little old lady at the back of the room got up and said: “What you have told us is rubbish. The world is really a flat plate supported on the back of a giant tortoise.” The scientist gave a superior smile before replying, “What is the tortoise standing on?”  “You're very clever, young man, very clever,” said the old lady. “But it's turtles all the way down!”
</p>
</blockquote>

<p class="lp">
Scientists today are pretty sure that the universe is not actually turtles all the way down,
but we can create that kind of situation in other contexts.
For example, here we have <a href="http://www.youtube.com/watch?v=Y-gqMTt3IUg">video monitors all the way down</a>
and <a href="http://www.amazon.com/gp/customer-media/product-gallery/0387900926/ref=cm_ciu_pdp_images_all">set theory books all the way down</a>,
and <a href="http://blog.makezine.com/archive/2009/01/thousands_of_shopping_carts_stake_o.html">shopping carts all the way down</a>.
</p>

<p class="pp">
And here's a computer storage equivalent: 
look inside <a href="http://swtch.com/r.zip"><code>r.zip</code></a>.
It's zip files all the way down:
each one contains another zip file under the name <code>r/r.zip</code>.
(For the die-hard Unix fans, <a href="http://swtch.com/r.tar.gz"><code>r.tar.gz</code></a> is
gzipped tar files all the way down.)
Like the line of shopping carts, it never ends,
because it loops back onto itself: the zip file contains itself!
And it's probably less work to put together a self-reproducing zip file
than to put together all those shopping carts,
at least if you're the kind of person who would read this blog.
This post explains how.
</p>

<p class="pp">
Before we get to self-reproducing zip files, though,
we need to take a brief detour into self-reproducing programs.
</p>

<h3>Self-reproducing programs</h3>

<p class="pp">
The idea of self-reproducing programs dates back to the 1960s.
My favorite statement of the problem is the one Ken Thompson gave in his 1983 Turing Award address:
</p>

<blockquote>
<p class="pp">
In college, before video games, we would amuse ourselves by posing programming exercises. One of the favorites was to write the shortest self-reproducing program. Since this is an exercise divorced from reality, the usual vehicle was FORTRAN. Actually, FORTRAN was the language of choice for the same reason that three-legged races are popular.
</p>

<p class="pp">
More precisely stated, the problem is to write a source program that, when compiled and executed, will produce as output an exact copy of its source. If you have never done this, I urge you to try it on your own. The discovery of how to do it is a revelation that far surpasses any benefit obtained by being told how to do it. The part about “shortest” was just an incentive to demonstrate skill and determine a winner.
</p>
</blockquote>

<p class="lp">
<b>Spoiler alert!</b>
I agree: if you have never done this, I urge you to try it on your own.
The internet makes it so easy to look things up that it's refreshing
to discover something yourself once in a while.
Go ahead and spend a few days figuring out.  This blog will still be here
when you get back.
(If you don't mind the spoilers, the entire <a href="http://cm.bell-labs.com/who/ken/trust.html">Turing award address</a> is worth reading.)
</p>

<center>
<br/><br/>
<i>(Spoiler blocker.)</i>
<br/>
<a href="http://www.robertwechsler.com/projects.html"><img src="http://3.bp.blogspot.com/_ZnVhQ3NyEx0/S5CpW5xdj9I/AAAAAAAAAB8/oSS6FeYZVBU/s400/applied_geometry.jpg"/></a>
<br/>
<i><a href="http://www.robertwechsler.com/projects.html">http://www.robertwechsler.com/projects.html</a></i>
<br/><br/>
</center>

<p class="pp">
Let's try to write a Python program that prints itself.
It will probably be a <code>print</code> statement, so here's a first attempt,
run at the interpreter prompt:
</p>

<pre class="indent">&gt;&gt;&gt; print '<span style="color: #005500;">hello</span>'
hello
</pre>

<p class="lp">
That didn't quite work.  But now we know what the program is, so let's print it:
</p>

<pre class="indent">&gt;&gt;&gt; print "<span style="color: #005500;">print 'hello'</span>"
print 'hello'
</pre>

<p class="lp">
That didn't quite work either.  The problem is that when you execute
a simple print statement, it only prints part of itself: the argument to the print.
We need a way to print the rest of the program too.
</p>

<p class="pp">
The trick is to use recursion: you write a string that is the whole program,
but with itself missing, and then you plug it into itself before passing it to print.
</p>

<pre class="indent">&gt;&gt;&gt; s = '<span style="color: #005500;">print %s</span>'; print s % repr(s)
print 'print %s'
</pre>

<p class="lp">
Not quite, but closer: the problem is that the string <code>s</code> isn't actually
the program.  But now we know the general form of the program:
<code>s = '<span style="color: #005500;">%s</span>'; print s % repr(s)</code>.
That's the string to use.
</p>

<pre class="indent">&gt;&gt;&gt; s = '<span style="color: #005500;">s = %s; print s %% repr(s)</span>'; print s % repr(s)
s = 's = %s; print s %% repr(s)'; print s % repr(s)
</pre>

<p class="lp">
Recursion for the win.
</p>

<p class="pp">
This form of self-reproducing program is often called a <a href="http://en.wikipedia.org/wiki/Quine_(computing)">quine</a>, 
in honor of the philosopher and logician W. V. O. Quine,
who discovered the paradoxical sentence:
</p>
<blockquote>
“Yields falsehood when preceded by its quotation”<br/>yields falsehood when preceded by its quotation.
</blockquote>
<p class="lp">
The simplest English form of a self-reproducing quine is a command like:
</p>
<blockquote>
Print this, followed by its quotation:<br/>“Print this, followed by its quotation:”
</blockquote>
<p class="lp">
There's nothing particularly special about Python that makes quining possible.
The most elegant quine I know is a Scheme program that is a direct, if somewhat inscrutable, translation of that
sentiment:
</p>
<pre class="indent">((lambda (x) `<span style="color: #005500;">(</span>,x <span style="color: #005500;">'</span>,x<span style="color: #005500;">)</span>)
'<span style="color: #005500;">(lambda (x) `(,x ',x))</span>)
</pre>
<p class="lp">
I think the Go version is a clearer translation, at least as far as the quoting is concerned:
</p>
<pre class="indent">/* Go quine */
package main
import "<span style="color: #005500;">fmt</span>"
func main() {
 fmt.Printf("<span style="color: #005500;">%s%c%s%c\n</span>", q, 0x60, q, 0x60)
}
var q = `<span style="color: #005500;">/* Go quine */
package main
import "fmt"
func main() {
 fmt.Printf("%s%c%s%c\n", q, 0x60, q, 0x60)
}
var q = </span>`
</pre>
<p class="lp">(I've colored the data literals green throughout to make it clear what is program and what is data.)</p>

<p class="pp">The Go program has the interesting property that, ignoring the pesky newline
at the end, the entire program is the same thing twice (<code>/* Go quine */ ... q = `</code>).
That got me thinking: maybe it's possible to write a self-reproducing program
using only a repetition operator.
And you know what programming language has essentially only a repetition operator?
The language used to encode Lempel-Ziv compressed files
like the ones used by <code>gzip</code> and <code>zip</code>.
</p>

<h3>Self-reproducing Lempel-Ziv programs</h3>

<p class="pp">
Lempel-Ziv compressed data is a stream of instructions with two basic
opcodes: <code>literal(</code><i>n</i><code>)</code> followed by 
<i>n</i> bytes of data means write those <i>n</i> bytes into the
decompressed output,
and <code>repeat(</code><i>d</i><code>,</code> <i>n</i><code>)</code>
means look backward <i>d</i> bytes from the current location
in the decompressed output and copy the <i>n</i> bytes you find there
into the output stream.
</p>

<p class="pp">
The programming exercise, then, is this: write a Lempel-Ziv program
using just those two opcodes that prints itself when run.
In other words, write a compressed data stream that decompresses to itself.
Feel free to assume any reasonable encoding for the <code>literal</code>
and <code>repeat</code> opcodes.
For the grand prize, find a program that decompresses to 
itself surrounded by an arbitrary prefix and suffix,
so that the sequence could be embedded in an actual <code>gzip</code>
or <code>zip</code> file, which has a fixed-format header and trailer.
</p>

<p class="pp">
<b>Spoiler alert!</b>
I urge you to try this on your own before continuing to read.
It's a great way to spend a lazy afternoon, and you have
one critical advantage that I didn't: you know there is a solution.
</p>

<center>
<br/><br/>
<i>(Spoiler blocker.)</i>
<br/>
<a href="http://research.swtch.com/feeds/posts/default"><img src="http://3.bp.blogspot.com/_ZnVhQ3NyEx0/S5Cqy5SlVdI/AAAAAAAAACE/gNPDLO9iJoY/s400/the_best_circular_bike(sbcc_sbma_students_roof).jpg"/></a>
<br/>
<i><a href="http://www.robertwechsler.com/thebest.html">http://www.robertwechsler.com/thebest.html</a></i>
<br/><br/>
</center>

<p class="lp">By the way, here's <a href="http://swtch.com/r.gz"><code>r.gz</code></a>, gzip files all the way down.

</p><pre class="indent">$ gunzip &lt; r.gz &gt; r
$ cmp r r.gz
$
</pre>

<p class="lp">The nice thing about <code>r.gz</code> is that even broken web browsers
that ordinarily decompress downloaded gzip data before storing it to disk
will handle this file correctly!
</p>

<p class="pp">Enough stalling to hide the spoilers.
Let's use this shorthand to describe Lempel-Ziv instructions:
<code>L</code><i>n</i> and <code>R</code><i>n</i> are
shorthand for <code>literal(</code><i>n</i><code>)</code> and
<code>repeat(</code><i>n</i><code>,</code> <i>n</i><code>)</code>,
and the program assumes that each code is one byte.
<code>L0</code> is therefore the Lempel-Ziv no-op;
<code>L5</code> <code>hello</code> prints <code>hello</code>;
and so does <code>L3</code> <code>hel</code> <code>R1</code> <code>L1</code> <code>o</code>.
</p>

<p class="pp">
Here's a Lempel-Ziv program that prints itself.
(Each line is one instruction.)
</p>

<br/>
<center>
<table border="0">
<tbody><tr><th/><th width="30"/><th>Code</th><th width="30"/><th>Output</th></tr>
<tr><td align="right"><i><span style="font-size: 0.8em;">no-op</span></i></td><td/><td><code>L0</code></td><td/><td/></tr>
<tr><td align="right"><i><span style="font-size: 0.8em;">no-op</span></i></td><td/><td><code>L0</code></td><td/><td/></tr>
<tr><td align="right"><i><span style="font-size: 0.8em;">no-op</span></i></td><td/><td><code>L0</code></td><td/><td/></tr>
<tr><td align="right"><i><span style="font-size: 0.8em;">print 4 bytes</span></i></td><td/><td><code>L4 <span style="color: #005500;">L0 L0 L0 L4</span></code></td><td/><td><code>L0 L0 L0 L4</code></td></tr>
<tr><td align="right"><i><span style="font-size: 0.8em;">repeat last 4 printed bytes</span></i></td><td/><td><code>R4</code></td><td/><td><code>L0 L0 L0 L4</code></td></tr>
<tr><td align="right"><i><span style="font-size: 0.8em;">print 4 bytes</span></i></td><td/><td><code>L4 <span style="color: #005500;">R4 L4 R4 L4</span></code></td><td/><td><code>R4 L4 R4 L4</code></td></tr>
<tr><td align="right"><i><span style="font-size: 0.8em;">repeat last 4 printed bytes</span></i></td><td/><td><code>R4</code></td><td/><td><code>R4 L4 R4 L4</code></td></tr>
<tr><td align="right"><i><span style="font-size: 0.8em;">print 4 bytes</span></i></td><td/><td><code>L4 <span style="color: #005500;">L0 L0 L0 L0</span></code></td><td/><td><code>L0 L0 L0 L0</code></td></tr>
</tbody></table>
</center>
<br/>

<p class="lp">
(The two columns Code and Output contain the same byte sequence.)
</p>

<p class="pp">
The interesting core of this program is the 6-byte sequence
<code>L4 R4 L4 R4 L4 R4</code>, which prints the 8-byte sequence <code>R4 L4 R4 L4 R4 L4 R4 L4</code>.
That is, it prints itself with an extra byte before and after.
</p>

<p class="pp">
When we were trying to write the self-reproducing Python program,
the basic problem was that the print statement was always longer
than what it printed.  We solved that problem with recursion,
computing the string to print by plugging it into itself.
Here we took a different approach.
The Lempel-Ziv program is
particularly repetitive, so that a repeated substring ends up
containing the entire fragment.  The recursion is in the
representation of the program rather than its execution.
Either way, that fragment is the crucial point.
Before the final <code>R4</code>, the output lags behind the input.
Once it executes, the output is one code ahead.
</p>

<p class="pp">
The <code>L0</code> no-ops are plugged into 
a more general variant of the program, which can reproduce itself
with the addition of an arbitrary three-byte prefix and suffix:
</p>

<br/>
<center>
<table border="0">
<tbody><tr><th/><th width="30"/><th>Code</th><th width="30"/><th>Output</th></tr>
<tr><td align="right"><i><span style="font-size: 0.8em;">print 4 bytes</span></i></td><td/><td><code>L4 <span style="color: #005500;"><i>aa bb cc</i> L4</span></code></td><td/><td><code><i>aa bb cc</i> L4</code></td></tr>
<tr><td align="right"><i><span style="font-size: 0.8em;">repeat last 4 printed bytes</span></i></td><td/><td><code>R4</code></td><td/><td><code><i>aa bb cc</i> L4</code></td></tr>
<tr><td align="right"><i><span style="font-size: 0.8em;">print 4 bytes</span></i></td><td/><td><code>L4 <span style="color: #005500;">R4 L4 R4 L4</span></code></td><td/><td><code>R4 L4 R4 L4</code></td></tr>
<tr><td align="right"><i><span style="font-size: 0.8em;">repeat last 4 printed bytes</span></i></td><td/><td><code>R4</code></td><td/><td><code>R4 L4 R4 L4</code></td></tr>
<tr><td align="right"><i><span style="font-size: 0.8em;">print 4 bytes</span></i></td><td/><td><code>L4 <span style="color: #005500;">R4 <i>xx yy zz</i></span></code></td><td/><td><code>R4 <i>xx yy zz</i></code></td></tr>
<tr><td align="right"><i><span style="font-size: 0.8em;">repeat last 4 printed bytes</span></i></td><td/><td><code>R4</code></td><td/><td><code>R4 <i>xx yy zz</i></code></td></tr>
</tbody></table>
</center>
<br/>

<p class="lp">
(The byte sequence in the Output column is <code><i>aa bb cc</i></code>, then
the byte sequence from the Code column, then <code><i>xx yy zz</i></code>.)
</p>

<p class="pp">
It took me the better part of a quiet Sunday to get this far,
but by the time I got here I knew the game was over
and that I'd won.
From all that experimenting, I knew it was easy to create
a program fragment that printed itself minus a few instructions
or even one that printed an arbitrary prefix 
and then itself, minus a few instructions.
The extra <code>aa bb cc</code> in the output
provides a place to attach such a program fragment.
Similarly, it's easy to create a fragment to attach
to the <code>xx yy zz</code> that prints itself,
minus the first three instructions, plus an arbitrary suffix.
We can use that generality to attach an appropriate 
header and trailer.
</p>

<p class="pp">
Here is the final program, which prints itself surrounded by an
arbitrary prefix and suffix.
<code>[P]</code> denotes the <i>p</i>-byte compressed form of the prefix <code>P</code>;
similarly, <code>[S]</code> denotes the <i>s</i>-byte compressed form of the suffix <code>S</code>.
</p>

<br/>
<center>
<table border="0">
<tbody><tr><th/><th width="30"/><th>Code</th><th width="30"/><th>Output</th></tr>
<tr>
 <td align="right"><i><span style="font-size: 0.8em;">print prefix</span></i></td>
 <td/>
 <td><code>[P]</code></td>
 <td/>
 <td><code>P</code></td>
</tr>
<tr>
 <td align="right"><span style="font-size: 0.8em;"><i>print </i>p<i>+1 bytes</i></span></td>
 <td/>
 <td><code>L</code><span style="font-size: 0.8em;"><i>p</i>+1</span><code> <span style="color: #005500;">[P] L</span></code><span style="color: #005500;"><span style="font-size: 0.8em;"><i>p</i>+1</span></span><code/></td>
 <td/>
 <td><code>[P] L</code><span style="font-size: 0.8em;"><i>p</i>+1</span><code/></td>
</tr>
<tr>
 <td align="right"><span style="font-size: 0.8em;"><i>repeat last </i>p<i>+1 printed bytes</i></span></td>
 <td/>
 <td><code>R</code><span style="font-size: 0.8em;"><i>p</i>+1</span><code/></td>
 <td/>
 <td><code>[P] L</code><span style="font-size: 0.8em;"><i>p</i>+1</span><code/></td>
</tr>
<tr>
 <td align="right"><span style="font-size: 0.8em;"><i>print 1 byte</i></span></td>
 <td/>
 <td><code>L1 <span style="color: #005500;">R</span></code><span style="color: #005500;"><span style="font-size: 0.8em;"><i>p</i>+1</span></span><code/></td>
 <td/>
 <td><code>R</code><span style="font-size: 0.8em;"><i>p</i>+1</span><code/></td>
</tr>
<tr>
 <td align="right"><span style="font-size: 0.8em;"><i>print 1 byte</i></span></td>
 <td/>
 <td><code>L1 <span style="color: #005500;">L1</span></code></td>
 <td/>
 <td><code>L1</code></td>
</tr>
<tr>
 <td align="right"><i><span style="font-size: 0.8em;">print 4 bytes</span></i></td>
 <td/>
 <td><code>L4 <span style="color: #005500;">R</span></code><span style="color: #005500;"><span style="font-size: 0.8em;"><i>p</i>+1</span></span><code><span style="color: #005500;"> L1 L1 L4</span></code></td>
 <td/>
 <td><code>R</code><span style="font-size: 0.8em;"><i>p</i>+1</span><code> L1 L1 L4</code></td>
</tr>
<tr>
 <td align="right"><i><span style="font-size: 0.8em;">repeat last 4 printed bytes</span></i></td>
 <td/>
 <td><code>R4</code></td>
 <td/>
 <td><code>R</code><span style="font-size: 0.8em;"><i>p</i>+1</span><code> L1 L1 L4</code></td>
</tr>
<tr>
 <td align="right"><i><span style="font-size: 0.8em;">print 4 bytes</span></i></td>
 <td/>
 <td><code>L4 <span style="color: #005500;">R4 L4 R4 L4</span></code></td>
 <td/>
 <td><code>R4 L4 R4 L4</code></td>
</tr>
<tr>
 <td align="right"><i><span style="font-size: 0.8em;">repeat last 4 printed bytes</span></i></td>
 <td/>
 <td><code>R4</code></td>
 <td/>
 <td><code>R4 L4 R4 L4</code></td>
</tr>
<tr>
 <td align="right"><i><span style="font-size: 0.8em;">print 4 bytes</span></i></td>
 <td/>
 <td><code>L4 <span style="color: #005500;">R4 L0 L0 L</span></code><span style="color: #005500;"><span style="font-size: 0.8em;"><i>s</i>+1</span></span><code><span style="color: #005500;"/></code></td>
 <td/>
 <td><code>R4 L0 L0 L</code><span style="font-size: 0.8em;"><i>s</i>+1</span><code/></td>
</tr>
<tr>
 <td align="right"><i><span style="font-size: 0.8em;">repeat last 4 printed bytes</span></i></td>
 <td/>
 <td><code>R4</code></td>
 <td/>
 <td><code>R4 L0 L0 L</code><span style="font-size: 0.8em;"><i>s</i>+1</span><code/></td>
</tr>
<tr>
 <td align="right"><i><span style="font-size: 0.8em;">no-op</span></i></td>
 <td/>
 <td><code>L0</code></td>
 <td/>
 <td/>
</tr>
<tr>
 <td align="right"><i><span style="font-size: 0.8em;">no-op</span></i></td>
 <td/>
 <td><code>L0</code></td>
 <td/>
 <td/>
</tr>
<tr>
 <td align="right"><span style="font-size: 0.8em;"><i>print </i>s<i>+1 bytes</i></span></td>
 <td/>
 <td><code>L</code><span style="font-size: 0.8em;"><i>s</i>+1</span><code> <span style="color: #005500;">R</span></code><span style="color: #005500;"><span style="font-size: 0.8em;"><i>s</i>+1</span></span><code><span style="color: #005500;"> [S]</span></code></td>
 <td/>
 <td><code>R</code><span style="font-size: 0.8em;"><i>s</i>+1</span><code> [S]</code></td>
</tr>
<tr>
 <td align="right"><span style="font-size: 0.8em;"><i>repeat last </i>s<i>+1 bytes</i></span></td>
 <td/>
 <td><code>R</code><span style="font-size: 0.8em;"><i>s</i>+1</span><code/></td>
 <td/>
 <td><code>R</code><span style="font-size: 0.8em;"><i>s</i>+1</span><code> [S]</code></td>
</tr>
<tr>
 <td align="right"><i><span style="font-size: 0.8em;">print suffix</span></i></td>
 <td/>
 <td><code>[S]</code></td>
 <td/>
 <td><code>S</code></td>
</tr>

</tbody></table>
</center>
<br/>

<p class="lp">
(The byte sequence in the Output column is <code><i>P</i></code>, then
the byte sequence from the Code column, then <code><i>S</i></code>.)
</p>


<h3>Self-reproducing zip files</h3>

<p class="pp">
Now the rubber meets the road.
We've solved the main theoretical obstacle to making a self-reproducing
zip file, but there are a couple practical obstacles
still in our way.
</p>

<p class="pp">
The first obstacle is to translate our self-reproducing Lempel-Ziv program,
written in simplified opcodes, into the real opcode encoding.
<a href="http://www.ietf.org/rfc/rfc1951.txt">RFC 1951</a> describes the DEFLATE format used in both gzip and zip: a sequence of blocks, each of which
is a sequence of opcodes encoded using Huffman codes.
Huffman codes assign different length bit strings
to different opcodes,
breaking our assumption above that opcodes have
fixed length.
But wait!
We can, with some care, find a set of fixed-size encodings
that says what we need to be able to express.
</p>

<p class="pp">
In DEFLATE, there are literal blocks and opcode blocks.
The header at the beginning of a literal block is 5 bytes:
</p>

<center>
<img src="http://3.bp.blogspot.com/_ucVxjWlZXr0/S6BtJpZeIKI/AAAAAAAAABs/mroiFOnihK8/s400/zip1.png"/>
</center>

<p class="pp">
If the translation of our <code>L</code> opcodes above
are 5 bytes each, the translation of the <code>R</code> opcodes
must also be 5 bytes each, with all the byte counts
above scaled by a factor of 5.
(For example, <code>L4</code> now has a 20-byte argument,
and <code>R4</code> repeats the last 20 bytes of output.)
The opcode block
with a single <code>repeat(20,20)</code> instruction falls well short of
5 bytes:
</p>

<center>
<img src="http://1.bp.blogspot.com/_ucVxjWlZXr0/S6BtJ3rP9jI/AAAAAAAAAB0/PKxlo2ahTOE/s400/zip2.png"/>
</center>


<p class="lp">Luckily, an opcode block containing two
<code>repeat(20,10)</code> instructions has the same effect and is exactly 5 bytes:
</p>

<center>
<img src="http://2.bp.blogspot.com/_ucVxjWlZXr0/S6BtKNrDYrI/AAAAAAAAAB8/40qJlBobt0Q/s400/zip3.png"/>
</center>

<p class="lp">
Encoding the other sized repeats
(<code>R</code><span style="font-size: 0.8em;"><i>p</i>+1</span> and 
<code>R</code><span style="font-size: 0.8em;"><i>s</i>+1</span>)
takes more effort
and some sleazy tricks, but it turns out that 
we can design 5-byte codes that repeat any amount 
from 9 to 64 bytes.
For example, here are the repeat blocks for 10 bytes and for 40 bytes:
</p>

<center>
<img src="http://1.bp.blogspot.com/_ucVxjWlZXr0/S6BtKbhZ1pI/AAAAAAAAACE/VxnPMWZfnjQ/s400/zip4.png"/>
<br/>
<img src="http://3.bp.blogspot.com/_ucVxjWlZXr0/S6BtLJQEZcI/AAAAAAAAACM/yohYUsJKvLo/s400/zip5.png"/>
</center>

<p class="lp">
The repeat block for 10 bytes is two bits too short,
but every repeat block is followed by a literal block,
which starts with three zero bits and then padding
to the next byte boundary.
If a repeat block ends two bits short of a byte
but is followed by a literal block, the literal block's
padding will insert the extra two bits.
Similarly, the repeat block for 40 bytes is five bits too long,
but they're all zero bits.
Starting a literal block five bits too late
steals the bits from the padding.
Both of these tricks only work because the last 7 bits of
any repeat block are zero and the bits in the first byte
of any literal block are also zero,
so the boundary isn't directly visible.
If the literal block started with a one bit,
this sleazy trick wouldn't work.
</p>

<p class="pp">The second obstacle is that zip archives (and gzip files)
record a CRC32 checksum of the uncompressed data.
Since the uncompressed data is the zip archive,
the data being checksummed includes the checksum itself.
So we need to find a value <i>x</i> such that writing <i>x</i> into
the checksum field causes the file to checksum to <i>x</i>.
Recursion strikes back.
</p>

<p class="pp">
The CRC32 checksum computation interprets the entire file as a big number and computes
the remainder when you divide that number by a specific constant
using a specific kind of division.
We could go through the effort of setting up the appropriate
equations and solving for <i>x</i>.
But frankly, we've already solved one nasty recursive puzzle
today, and <a href="http://www.youtube.com/watch?v=TQBLTB5f3j0">enough is enough</a>.
There are only four billion possibilities for <i>x</i>:
we can write a program to try each in turn, until it finds one that works.
</p>

<p class="pp">
If you want to recreate these files yourself, there are a
few more minor obstacles, like making sure the tar file is a multiple
of 512 bytes and compressing the rather large zip trailer to
at most 59 bytes so that <code>R</code><span style="font-size: 0.8em;"><i>s</i>+1</span> is
at most <code>R</code><span style="font-size: 0.8em;">64</span>.
But they're just a simple matter of programming.
</p>

<p class="pp">
So there you have it:
<code><a href="http://swtch.com/r.gz">r.gz</a></code> (gzip files all the way down),
<code><a href="http://swtch.com/r.tar.gz">r.tar.gz</a></code> (gzipped tar files all the way down),
and
<code><a href="http://swtch.com/r.zip">r.zip</a></code> (zip files all the way down).
I regret that I have been unable to find any programs
that insist on decompressing these files recursively, ad infinitum.
It would have been fun to watch them squirm, but 
it looks like much less sophisticated
<a href="http://en.wikipedia.org/wiki/Zip_bomb">zip bombs</a> have spoiled the fun.
</p>

<p class="pp">
If you're feeling particularly ambitious, here is
<a href="http://swtch.com/rgzip.go">rgzip.go</a>,
the <a href="http://golang.org/">Go</a> program that generated these files.
I wonder if you can create a zip file that contains a gzipped tar file
that contains the original zip file.
Ken Thompson suggested trying to make a zip file that
contains a slightly larger copy of itself, recursively,
so that as you dive down the chain of zip files
each one gets a little bigger.
(If you do manage either of these, please leave a comment.)
</p>

<br/>
<p class="lp"><font size="-1">P.S.  I can't end the post without sharing my favorite self-reproducing program: the one-line shell script <code>#!/bin/cat</code></font>.
</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/8082954141980125536-8625278130945886355?l=research.swtch.com" width="1"/></div></div>
    </content>
    <updated>2010-03-18T16:00:02Z</updated>
    <published>2010-03-18T16:00:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="recursion"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="bit twiddling"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="brute force"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="code"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="storage"/>
    <author>
      <name>rsc</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06357099531993534337</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-8082954141980125536</id>
      <author>
        <name>rsc</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06357099531993534337</uri>
      </author>
      <link href="http://research.swtch.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://research.swtch.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Computer programming links, collected by
<a href="http://swtch.com/~rsc/">Russ Cox</a>.  Updated sporadically.</div>
      </subtitle>
      <title>research!rsc</title>
      <updated>2010-03-18T16:00:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-2298579363204029089</id>
    <link href="http://reneefrench.blogspot.com/feeds/2298579363204029089/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=2298579363204029089" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2298579363204029089" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2298579363204029089" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/03/not-traugott-worthy.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://2.bp.blogspot.com/_va9O40qIhaE/S6HKRHlONzI/AAAAAAAACYo/pviWXQc_EVQ/s1600-h/stone99.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5449859419536766770" src="http://2.bp.blogspot.com/_va9O40qIhaE/S6HKRHlONzI/AAAAAAAACYo/pviWXQc_EVQ/s320/stone99.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 294px; height: 320px;"/></a>not traugott worthy<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-2298579363204029089?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-18T06:42:24Z</updated>
    <published>2010-03-18T06:37:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.anarchyinthetubes.com/blg/2010/03/17/0/</id>
    <link href="http://www.anarchyinthetubes.com/blg/2010/03/17/0/" rel="alternate" type="text/html"/>
    <title>Hello Xgb</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><h2>Hello Xgb</h2>
<p>A new "Hello World!" program. This time, it is an X application, which uses the xgb Go package.</p>
<p><a href="http://www.anarchyinthetubes.com/pub/xh.go">xh.go</a>:</p>
<code><pre>// xh.go JGL (yiyus). 2010
// xgb Hello World
// 8g xh.go &amp;&amp; 8l -o xh xh.8 &amp;&amp; ./xh

package main

import (
	"fmt"
	"os"
	"xgb"
)

func hello(c *xgb.Conn, win, gc xgb.Id) {
	c.ImageText8(win, gc, 50, 50, []byte("Hello World!"))
}

func main() {
	c, err := xgb.Dial("")
	if err != nil {
		fmt.Fprintf(os.Stderr, "cannot connect: %v\n", err)
		os.Exit(1)
	}

	screen := c.DefaultScreen()
	win := c.NewId()

	c.CreateWindow(
		screen.RootDepth, win, screen.Root,
		0, 0, 300, 200, 2,
		xgb.WindowClassCopyFromParent,
		xgb.WindowClassCopyFromParent,
		xgb.CWBackPixel|xgb.CWEventMask,
		[]uint32{screen.BlackPixel, xgb.EventMaskExposure | xgb.EventMaskButtonPress},
	)

	gc := c.NewId()
	font := c.NewId()

	c.OpenFont(font, "7x13")
	c.CreateGC(gc, win,
		xgb.GCBackground|xgb.GCForeground|xgb.GCFont,
		[]uint32{screen.WhitePixel, screen.BlackPixel, uint32(font)},
	)
	c.CloseFont(font)
	r := xgb.Rectangle{0, 0, 300, 200}
	c.PolyFillRectangle(win, gc, []xgb.Rectangle{r})
	hello(c, win, gc)

	c.MapWindow(win)

Loop: for {
		reply, err := c.WaitForEvent()
		switch {
		case err != nil:
			fmt.Printf("error: %v\n", err)
			os.Exit(1)
		}
		switch event := reply.(type) {
		case xgb.ExposeEvent:
			hello(c, win, gc)
		case xgb.ButtonPressEvent:
			fmt.Println("Button", event.Detail, "pressed. Bye!")
			break Loop
		}
	}

	c.Close()
}
</pre></code></div>
    </content>
    <updated>2010-03-17T20:56:35Z</updated>
    <author>
      <name>http</name>
    </author>
    <source>
      <id>http://www.anarchyinthetubes.com/blg/index.atom</id>
      <icon>http://www.anarchyinthetubes.com/favicon.ico</icon>
      <link href="http://www.anarchyinthetubes.com/blg/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.anarchyinthetubes.com/blg/" rel="alternate" type="text/html"/>
      <title>Anarchy in the tubes</title>
      <updated>2010-03-18T16:06:24Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-229022756163227169</id>
    <link href="http://reneefrench.blogspot.com/feeds/229022756163227169/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=229022756163227169" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/229022756163227169" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/229022756163227169" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/03/not-thewlis-4.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S6BZNvF-EpI/AAAAAAAACYg/fK37ltuLYdg/s1600-h/thewlis4.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5449453641632977554" src="http://3.bp.blogspot.com/_va9O40qIhaE/S6BZNvF-EpI/AAAAAAAACYg/fK37ltuLYdg/s320/thewlis4.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 286px; height: 320px;"/></a><br/><div>not thewlis 4</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-229022756163227169?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-17T04:23:39Z</updated>
    <published>2010-03-17T04:23:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="notes"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-624883877136068957</id>
    <link href="http://thenewsh.blogspot.com/feeds/624883877136068957/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/03/textbooks-fingerprints-broadband-and.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/624883877136068957" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/624883877136068957" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/03/textbooks-fingerprints-broadband-and.html" rel="alternate" type="text/html"/>
    <title>Textbooks, Fingerprints, Broadband and some Tunes...</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Politicians in Texas are <a href="http://www.mywesttexas.com/articles/2010/03/16/news/opinion/editorial_tuesday.txt">rewriting school texts with a political slant</a>. And you thought politicians couldn't write!<br/>There's a new and interesting way to fingerprint you even if your fingerprints aren't left behind: l<a href="http://www.npr.org/templates/story/story.php?storyId=124709981&amp;ps=cprs">ook at the bacteria you leave behind</a>.<br/>Americans may finally catch up to countries like Japan, South Korea and Iceland and <a href="http://news.bbc.co.uk/2/hi/technology/8569157.stm">get first world broadband service</a>. At least that's what the FCC is pushing for.<br/><br/>This segment from 60minutes this last weekend is simply amazing! It shows an idiot savant who is a complete genius at the piano.<br/>&lt;object height="300" width="400"&gt;&lt;param name="movie" value="http://www.cbs.com/e/ZWdtgEpyCyJA1Q2vqfD2kV_6tUubt806/cbs/1/"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="300" src="http://www.cbs.com/e/ZWdtgEpyCyJA1Q2vqfD2kV_6tUubt806/cbs/1/" type="application/x-shockwave-flash" width="400"&gt;&lt;/embed&gt;&lt;/object&gt;<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-624883877136068957?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-16T18:18:14Z</updated>
    <published>2010-03-16T18:18:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="news"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="pundit"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6989726062940083922.post-58321618678360657</id>
    <link href="http://robpike.blogspot.com/feeds/58321618678360657/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=6989726062940083922&amp;postID=58321618678360657" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default/58321618678360657" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default/58321618678360657" rel="self" type="application/atom+xml"/>
    <link href="http://robpike.blogspot.com/2010/03/bluebottle.html" rel="alternate" type="text/html"/>
    <title>Bluebottle</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://2.bp.blogspot.com/_Fpj1cqLIn_Y/S57-IuyLDdI/AAAAAAAABuo/oJc518Sdfbs/s1600-h/Bluebottle.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5449072025115758034" src="http://2.bp.blogspot.com/_Fpj1cqLIn_Y/S57-IuyLDdI/AAAAAAAABuo/oJc518Sdfbs/s400/Bluebottle.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 400px; height: 300px;"/></a><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6989726062940083922-58321618678360657?l=robpike.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-16T03:42:33Z</updated>
    <published>2010-03-16T03:42:00Z</published>
    <author>
      <name>rob</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/18259238879445421354</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6989726062940083922</id>
      <author>
        <name>rob</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/18259238879445421354</uri>
      </author>
      <link href="http://robpike.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://robpike.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <title>rob pike</title>
      <updated>2010-03-18T03:38:46Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-7786284881567154282</id>
    <link href="http://reneefrench.blogspot.com/feeds/7786284881567154282/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=7786284881567154282" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/7786284881567154282" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/7786284881567154282" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/03/helmut-monday.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S5773neJKqI/AAAAAAAACYY/20bU-HnjpN8/s1600-h/tower2.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5449069532071668386" src="http://4.bp.blogspot.com/_va9O40qIhaE/S5773neJKqI/AAAAAAAACYY/20bU-HnjpN8/s320/tower2.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 240px; height: 320px;"/></a>helmut monday<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-7786284881567154282?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-16T03:33:07Z</updated>
    <published>2010-03-16T03:32:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="photographs"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-7455882073635451794</id>
    <link href="http://thenewsh.blogspot.com/feeds/7455882073635451794/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/03/bank-hacked-for-nearly-10m.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/7455882073635451794" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/7455882073635451794" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/03/bank-hacked-for-nearly-10m.html" rel="alternate" type="text/html"/>
    <title>Bank hacked for nearly $10M</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Details of a <a href="http://www.dailyrecord.co.uk/news/business-news/2010/03/14/royal-bank-of-scotland-raiders-huge-6m-haul-in-12-hours-86908-22110087/">massive bank hack</a> were reported today.  The losses were nearly $10M in a single day.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-7455882073635451794?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-15T18:37:29Z</updated>
    <published>2010-03-15T18:37:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="news"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="security"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-3068200525784858253</id>
    <link href="http://reneefrench.blogspot.com/feeds/3068200525784858253/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=3068200525784858253" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/3068200525784858253" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/3068200525784858253" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/03/bahrain-10.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S5xjrv1qgLI/AAAAAAAACYI/1EZ_--jUrAg/s1600-h/hdaydogescsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5448339252438532274" src="http://3.bp.blogspot.com/_va9O40qIhaE/S5xjrv1qgLI/AAAAAAAACYI/1EZ_--jUrAg/s320/hdaydogescsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 258px; height: 320px;"/></a>bahrain 10<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-3068200525784858253?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-14T15:18:00Z</updated>
    <published>2010-03-14T15:18:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="f1 days"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6559550810260622787.post-8222131250421808596</id>
    <link href="http://inferno-rus.blogspot.com/feeds/8222131250421808596/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://inferno-rus.blogspot.com/2010/03/deployment-os-inferno.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6559550810260622787/posts/default/8222131250421808596?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6559550810260622787/posts/default/8222131250421808596?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://inferno-rus.blogspot.com/2010/03/deployment-os-inferno.html" rel="alternate" type="text/html"/>
    <title>Deployment вашего софта для OS Inferno</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Не найдя подходящего способа установки сторонних приложений в Inferno, Alex Efros предложил собственный вариант и опубликовал его развернутое описание на <a href="http://habrahabr.ru/blogs/os_inferno/87460/">хабре</a>.<br/><br/>В подтверждение своих слов он создал 4 проекта на google code, каждый из которых использует предложенный им механизм установки:<br/><br/>1. <a href="http://code.google.com/p/inferno-contrib-regmonitor/">regmonitor</a> - модуль, предназначенный для наблюдения за сервисами, зарегистрированными в registry(4).<br/>2. <a href="http://code.google.com/p/inferno-contrib-hashtable/">hashtable</a> - полиморфная версия модуля hash(2).<br/>3. <a href="http://code.google.com/p/inferno-contrib-retrymount/">retrymount</a> - версия команды mount(1), автоматически монтирующая источник в случае ошибок ввода-вывода.<br/>4. <a href="http://code.google.com/p/inferno-contrib-logger/">logger</a> - модуль, выполняющий логирование событий.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6559550810260622787-8222131250421808596?l=inferno-rus.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-14T09:39:27Z</updated>
    <published>2010-03-14T09:24:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="&#x441;&#x441;&#x44B;&#x43B;&#x43A;&#x438;"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="&#x441;&#x43E;&#x444;&#x442;"/>
    <author>
      <name>j1m</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06224950953627370147</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6559550810260622787</id>
      <author>
        <name>j1m</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06224950953627370147</uri>
      </author>
      <link href="http://inferno-rus.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://inferno-rus.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6559550810260622787/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/Inferno-rus" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Все об операционной системе Inferno на русском</subtitle>
      <title>OS Inferno</title>
      <updated>2010-03-14T09:39:27Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-8883876137037296834</id>
    <link href="http://reneefrench.blogspot.com/feeds/8883876137037296834/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=8883876137037296834" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/8883876137037296834" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/8883876137037296834" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/03/bahrain-quali-10.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S5wYcbEn87I/AAAAAAAACYA/0XV5KWlRIHs/s1600-h/citrover.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5448256525794014130" src="http://3.bp.blogspot.com/_va9O40qIhaE/S5wYcbEn87I/AAAAAAAACYA/0XV5KWlRIHs/s320/citrover.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 234px;"/></a><br/><div>bahrain quali 10</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-8883876137037296834?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-13T22:59:26Z</updated>
    <published>2010-03-13T22:57:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="f1 days"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="photographs"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-3554831124714595104</id>
    <link href="http://reneefrench.blogspot.com/feeds/3554831124714595104/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=3554831124714595104" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/3554831124714595104" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/3554831124714595104" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/03/lynde.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://1.bp.blogspot.com/_va9O40qIhaE/S5rYqYYTnKI/AAAAAAAACXo/zJmSepRgw_8/s1600-h/hdaydogpeeksm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5447904921868541090" src="http://1.bp.blogspot.com/_va9O40qIhaE/S5rYqYYTnKI/AAAAAAAACXo/zJmSepRgw_8/s320/hdaydogpeeksm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 257px; height: 320px;"/></a>lynde<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-3554831124714595104?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-13T00:14:14Z</updated>
    <published>2010-03-13T00:13:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-5513566745625686892</id>
    <link href="http://thenewsh.blogspot.com/feeds/5513566745625686892/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/03/20-films.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/5513566745625686892" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/5513566745625686892" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/03/20-films.html" rel="alternate" type="text/html"/>
    <title>20 films</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><span class="Apple-style-span" style="font-family: Arial; font-size: small;"><span class="Apple-style-span" style="font-size: 13px;">A break from our normal programming to watch a few films.  20 of them.  5 seconds each:</span></span><br/><br/>&lt;object height="295" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/saqO_ZqX6uY&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="295" src="http://www.youtube.com/v/saqO_ZqX6uY&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-5513566745625686892?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-12T19:02:11Z</updated>
    <published>2010-03-12T19:01:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="comedy"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-4542417046650914116</id>
    <link href="http://thenewsh.blogspot.com/feeds/4542417046650914116/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/03/informed-investing-enron-accounting-and.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/4542417046650914116" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/4542417046650914116" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/03/informed-investing-enron-accounting-and.html" rel="alternate" type="text/html"/>
    <title>Informed investing, Enron accounting and LEH</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><span class="Apple-style-span" style="font-family: Arial; font-size: small;"><span class="Apple-style-span" style="font-size: 13px;">There's a report out today with a <a href="http://news.bbc.co.uk/2/hi/business/8563604.stm">forensic analysis of the LEH collapse</a>. The report details how the firm used <a href="http://dealbook.blogs.nytimes.com/2010/03/12/the-british-origins-of-lehmans-accounting-gimmick/">Enron-style tricks</a> to put window dressing on their accounting reports. These transactions let them temporarily move bad bets off its balance sheet while they wrote up their quarterly reports for investors. If it doesn't sound quite legal, well, its not, at least not in the USA. They had to go out of country to get a lawyer to sign off on it.</span></span><div><span class="Apple-style-span" style="font-family: Arial; font-size: small;"><span class="Apple-style-span" style="font-size: 13px;">This sort of lack of transparency in publicly traded companies completely undermines the market. There can be no informed investing if the information is manipulated to be misleading. If you thought it ended with Enron, you're kidding yourself.</span></span><br/></div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-4542417046650914116?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-12T18:43:51Z</updated>
    <published>2010-03-12T18:43:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="news"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="pundit"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="consumer"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="economy"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://9souldier.org/blog/2010/03/12/0/</id>
    <link href="http://9souldier.org/blog/2010/03/12/0/" rel="alternate" type="text/html"/>
    <title>Hilarious</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://thenewsh.blogspot.com/2010/03/bankers-progress.html">THIS</a></p></div>
    </content>
    <updated>2010-03-12T17:41:42Z</updated>
    <author>
      <name>lighttpd</name>
    </author>
    <source>
      <id>http://9souldier.org/blog/index.atom</id>
      <icon>http://9souldier.org/favicon.ico</icon>
      <link href="http://9souldier.org/blog/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://9souldier.org/blog/" rel="alternate" type="text/html"/>
      <subtitle>Earth: where poisoning the population is profitable</subtitle>
      <title>Random Rambling</title>
      <updated>2010-03-18T16:06:28Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-3667804733785748793</id>
    <link href="http://thenewsh.blogspot.com/feeds/3667804733785748793/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/03/king-corn-and-subsidized-calories.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/3667804733785748793" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/3667804733785748793" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/03/king-corn-and-subsidized-calories.html" rel="alternate" type="text/html"/>
    <title>King Corn and subsidized calories</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I recently watched the excellent documentary <a href="http://www.kingcorn.net/">King Corn</a>. Watching the movie I couldn't help but think of the maxim that human beings respond to financial incentives. The US government is subsidizing agriculture in a way that maximizes production. Unfortunately it maximizes the production of calories without regard to the production of nutrition. In essence, we're subsidizing junk food. It's no wonder that millions of Americans respond by eating it. In England, doctors are rewarded for making their patients healthier. Perhaps in America we should reward growers for making foods healthier.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-3667804733785748793?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-12T01:30:12Z</updated>
    <published>2010-03-12T01:30:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="economics"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="pundit"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="consumer"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://9souldier.org/blog/2010/03/11/1/</id>
    <link href="http://9souldier.org/blog/2010/03/11/1/" rel="alternate" type="text/html"/>
    <title>some personal news</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Some new pics in <a href="http://9souldier.org/USA">HERE</a></p></div>
    </content>
    <updated>2010-03-11T19:19:39Z</updated>
    <author>
      <name>lighttpd</name>
    </author>
    <source>
      <id>http://9souldier.org/blog/index.atom</id>
      <icon>http://9souldier.org/favicon.ico</icon>
      <link href="http://9souldier.org/blog/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://9souldier.org/blog/" rel="alternate" type="text/html"/>
      <subtitle>Earth: where poisoning the population is profitable</subtitle>
      <title>Random Rambling</title>
      <updated>2010-03-18T16:06:28Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://9souldier.org/blog/2010/03/11/0/</id>
    <link href="http://9souldier.org/blog/2010/03/11/0/" rel="alternate" type="text/html"/>
    <title>ACTA rejected by European parlament</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://yro.slashdot.org/story/10/03/10/1449259/EU-Parliament-Rejects-ACTA-In-a-663-To-13-Vote">WAY TO GO!</a></p></div>
    </content>
    <updated>2010-03-11T19:14:00Z</updated>
    <author>
      <name>lighttpd</name>
    </author>
    <source>
      <id>http://9souldier.org/blog/index.atom</id>
      <icon>http://9souldier.org/favicon.ico</icon>
      <link href="http://9souldier.org/blog/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://9souldier.org/blog/" rel="alternate" type="text/html"/>
      <subtitle>Earth: where poisoning the population is profitable</subtitle>
      <title>Random Rambling</title>
      <updated>2010-03-18T16:06:28Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-8082954141980125536.post-965766124780243969</id>
    <link href="http://swtch.com/~rsc/regexp/regexp3.html" rel="related" type="text/html"/>
    <link href="http://research.swtch.com/feeds/965766124780243969/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=8082954141980125536&amp;postID=965766124780243969" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default/965766124780243969" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default/965766124780243969" rel="self" type="application/atom+xml"/>
    <link href="http://research.swtch.com/2010/03/regular-expression-article-3.html" rel="alternate" type="text/html"/>
    <title>Regular Expression Article #3</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p class="lp">In January 2007 I posted an article on my web site titled “<a href="http://swtch.com/~rsc/regexp/regexp1.html">Regular Expression Matching Can Be Simple And Fast.</a>”  I intended this to be the first of three; the second would explain how to do submatching using automata, and the third would explain how to make a really fast DFA.  I posted the <a href="http://swtch.com/~rsc/regexp/regexp2.html">second article</a> a few months ago.
</p>

<p class="pp">
Today, the <a href="http://swtch.com/~rsc/regexp/regexp3.html">third and final article</a> is available, along with an open source production implementation called <a href="http://code.google.com/p/re2">RE2</a>.
</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/8082954141980125536-965766124780243969?l=research.swtch.com" width="1"/></div></div>
    </content>
    <updated>2010-03-11T18:30:01Z</updated>
    <published>2010-03-11T18:30:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="theory"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="algorithms"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="code"/>
    <author>
      <name>rsc</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06357099531993534337</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-8082954141980125536</id>
      <author>
        <name>rsc</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06357099531993534337</uri>
      </author>
      <link href="http://research.swtch.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://research.swtch.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Computer programming links, collected by
<a href="http://swtch.com/~rsc/">Russ Cox</a>.  Updated sporadically.</div>
      </subtitle>
      <title>research!rsc</title>
      <updated>2010-03-18T16:00:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-8683303211775274915</id>
    <link href="http://reneefrench.blogspot.com/feeds/8683303211775274915/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=8683303211775274915" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/8683303211775274915" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/8683303211775274915" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/03/blog-post.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S5iVxKB5iyI/AAAAAAAACXg/HKI4Irfe05w/s1600-h/thewlis5.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5447268421043063586" src="http://4.bp.blogspot.com/_va9O40qIhaE/S5iVxKB5iyI/AAAAAAAACXg/HKI4Irfe05w/s320/thewlis5.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 281px; height: 320px;"/></a><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-8683303211775274915?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-11T07:53:56Z</updated>
    <published>2010-03-12T07:03:00Z</published>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-7314960751207943195</id>
    <link href="http://reneefrench.blogspot.com/feeds/7314960751207943195/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=7314960751207943195" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/7314960751207943195" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/7314960751207943195" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/03/fluid.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S5iS3npCoxI/AAAAAAAACXY/J4YTB4vd3Oc/s1600-h/doc44sm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5447265233536197394" src="http://3.bp.blogspot.com/_va9O40qIhaE/S5iS3npCoxI/AAAAAAAACXY/J4YTB4vd3Oc/s320/doc44sm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 214px; height: 320px;"/></a>fluid<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-7314960751207943195?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-11T06:51:32Z</updated>
    <published>2010-03-11T06:50:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="waiting room drawings"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="line drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-4875546360588348976</id>
    <link href="http://thenewsh.blogspot.com/feeds/4875546360588348976/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/03/telecoms-crush-plans-for-brighter.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/4875546360588348976" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/4875546360588348976" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/03/telecoms-crush-plans-for-brighter.html" rel="alternate" type="text/html"/>
    <title>Telecoms crush plans for a brighter future</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Once again, the telecoms, cable companies and broadcast companies are <a href="http://www.dailytech.com/FCC+Battles+Telecoms+to+Deliver+Cheap+National+Broadband+to+Citizens/article17861c.htm">crushing the plans to bring you a brighter future</a>. And why wouldn't they? In this brighter future you would pay them less to use a better internet than the one you're using now. And since their power exceeds the political will of their opponents, they're going to succeed.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-4875546360588348976?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-10T18:14:16Z</updated>
    <published>2010-03-10T18:14:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="news"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="pundit"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="consumer"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-8711207045350727549</id>
    <link href="http://reneefrench.blogspot.com/feeds/8711207045350727549/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=8711207045350727549" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/8711207045350727549" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/8711207045350727549" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/03/dean.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S5cX1C0ePnI/AAAAAAAACXA/z6xNuKO2l34/s1600-h/thornbirds1.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5446848474385366642" src="http://4.bp.blogspot.com/_va9O40qIhaE/S5cX1C0ePnI/AAAAAAAACXA/z6xNuKO2l34/s320/thornbirds1.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 163px; height: 320px;"/></a>dean<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-8711207045350727549?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-10T03:54:15Z</updated>
    <published>2010-03-10T03:53:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="line drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-6295365298148817534</id>
    <link href="http://thenewsh.blogspot.com/feeds/6295365298148817534/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/03/lifelock-scam-and-insecure-to-boot.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/6295365298148817534" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/6295365298148817534" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/03/lifelock-scam-and-insecure-to-boot.html" rel="alternate" type="text/html"/>
    <title>Lifelock a scam (and insecure, to boot)</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">It looks like <a href="http://www.lifelock.com/">lifelock </a>is a <a href="http://www.wired.com/threatlevel/2010/03/lifelock-accused-of-running-con-operation">scam</a>, in case you had any doubts. They're selling a lot of promises without much to back it up, and now they're in hot water over it. It also turns out that all that sensitive information they collect on you is insecurely transmitted and stored, despite their promises to the contrary.  Oops!<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-6295365298148817534?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-09T21:03:44Z</updated>
    <published>2010-03-09T21:03:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="security"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="consumer"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-5186865770629035162</id>
    <link href="http://thenewsh.blogspot.com/feeds/5186865770629035162/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/03/apples-iron-grip-on-developers.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/5186865770629035162" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/5186865770629035162" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/03/apples-iron-grip-on-developers.html" rel="alternate" type="text/html"/>
    <title>Apple's iron grip on developers</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">An i<a href="http://www.appleinsider.com/articles/10/03/09/digital_rights_group_blasts_apple_over_iphone_developer_agreement.html">nteresting article</a> in which the EFF calls Apple a "jealous and arbitrary feudal lord." The EFF got a copy of the contract between developers and Apple by way of FOIA to NASA and published the resulting document shedding some light on what Apple developers already know.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-5186865770629035162?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-09T18:11:19Z</updated>
    <published>2010-03-09T18:11:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="news"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="programming"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="consumer"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="apple"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-2340194644247545559</id>
    <link href="http://reneefrench.blogspot.com/feeds/2340194644247545559/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=2340194644247545559" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2340194644247545559" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2340194644247545559" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/03/loop.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S5XR_xhNZlI/AAAAAAAACW4/EeHFafcfcec/s1600-h/hdaymovbed60sm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5446490217929074258" src="http://4.bp.blogspot.com/_va9O40qIhaE/S5XR_xhNZlI/AAAAAAAACW4/EeHFafcfcec/s320/hdaymovbed60sm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 223px;"/></a><br/><div>loop</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-2340194644247545559?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-09T04:44:03Z</updated>
    <published>2010-03-09T04:43:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="line drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-8082954141980125536.post-5277957312261188150</id>
    <link href="http://research.swtch.com/feeds/5277957312261188150/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=8082954141980125536&amp;postID=5277957312261188150" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default/5277957312261188150" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default/5277957312261188150" rel="self" type="application/atom+xml"/>
    <link href="http://research.swtch.com/2010/03/formal-logic-club.html" rel="alternate" type="text/html"/>
    <title>Formal Logic Club</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p class="lp">I've been laughing at this for weeks.  It's too good not to share.</p>
<br/>

<blockquote title="(The most important question about any formal logic system is whether it is consistent.  An inconsistent formal system admits proofs of any statement at all&#x2014;for example, that 2 + 3 = 4&#x2014;which would make it not terribly useful.  G&#xF6;del proved that any interesting formal system can only prove its own consistency if it is in fact inconsistent.)">
<p class="lp">
The first rule of Formal Logic Club is you do not prove the consistency of Formal Logic Club.
</p>
<br/>

<p class="lp">
The second rule of Formal Logic Club is you do not prove the inconsistency of Formal Logic Club.
</p>

<p class="pp">— <a href="http://laboratorium.net/archive/2000/08/14/formal_logic_cl">James Grimmelmann</a>
</p>
<br/>
</blockquote>

<p class="lp">
(Yes, this looks like <a href="http://xkcd.com/703/">http://xkcd.com/703/</a>,
but it beat xkcd to the punchline by ten years, and it's funnier.)
</p>
<br/><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/8082954141980125536-5277957312261188150?l=research.swtch.com" width="1"/></div></div>
    </content>
    <updated>2010-03-08T17:00:00Z</updated>
    <published>2010-03-08T17:00:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="theory"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="self-reference"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="undecidability"/>
    <author>
      <name>rsc</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06357099531993534337</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-8082954141980125536</id>
      <author>
        <name>rsc</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06357099531993534337</uri>
      </author>
      <link href="http://research.swtch.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://research.swtch.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Computer programming links, collected by
<a href="http://swtch.com/~rsc/">Russ Cox</a>.  Updated sporadically.</div>
      </subtitle>
      <title>research!rsc</title>
      <updated>2010-03-18T16:00:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-2401158040778543701</id>
    <link href="http://reneefrench.blogspot.com/feeds/2401158040778543701/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=2401158040778543701" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2401158040778543701" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2401158040778543701" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/03/loud-room.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S5RX_oeyTBI/AAAAAAAACWw/RK6UsZ5sWes/s1600-h/chat1.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5446074600107691026" src="http://3.bp.blogspot.com/_va9O40qIhaE/S5RX_oeyTBI/AAAAAAAACWw/RK6UsZ5sWes/s320/chat1.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 240px; height: 320px;"/></a>loud room<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-2401158040778543701?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-08T01:51:27Z</updated>
    <published>2010-03-08T01:50:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="notes"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-2988139719406634621</id>
    <link href="http://reneefrench.blogspot.com/feeds/2988139719406634621/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=2988139719406634621" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2988139719406634621" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2988139719406634621" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/03/somers-town.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S5H2xE7YYaI/AAAAAAAACWo/rDLZbuH68uk/s1600-h/thewlis3sm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5445404747464466850" src="http://4.bp.blogspot.com/_va9O40qIhaE/S5H2xE7YYaI/AAAAAAAACWo/rDLZbuH68uk/s320/thewlis3sm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 210px; height: 320px;"/></a>somers town<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-2988139719406634621?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-06T06:34:29Z</updated>
    <published>2010-03-06T18:27:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="notes"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://swtools.wordpress.com/?p=212</id>
    <link href="http://swtools.wordpress.com/2010/03/05/nb%e2%80%94search-and-index-notes-in-files-by-keyword/" rel="alternate" type="text/html"/>
    <title>nb—search and index notes in files by keyword</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">[Download a UTF-8 version of this file.]

nb name search index keyword
nb—search and index notes in files by keyword

nb keyword

nb description search keyword path file line acme
Nb searches for the given keyword in each nbindex file listed in
$HOME/nbindexes.  If it finds a match, nb prints the path, filename,
and line number of the indexed file in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=swtools.wordpress.com&amp;blog=201050&amp;post=212&amp;subd=swtools&amp;ref=&amp;feed=1"/></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>[Download a UTF-8 version of <a href="http://dl.dropbox.com/u/502901/nb.1">this file</a>.]</p>
<pre>nb name search index keyword
nb—search and index notes in files by keyword

nb keyword

nb description search keyword path file line acme
Nb searches for the given keyword in each nbindex file listed in
$HOME/nbindexes.  If it finds a match, nb prints the path, filename,
and line number of the indexed file in the format acme uses to refer to
lines in a file.

nb file format store index line path file line acme nbindexes
This file is an example.  Nb searches all files in the current directory
for lines which begin “^nb ”, and copies them into the file nbindex.
Each match is listed with its filename, and line number, e.g. for acme
to show the line on a right-click of the mouse.  It then adds the
path and filename of the current directory’s nbindex file to the file
$HOME/nbindexes.

By convention I use 1 blank line to separate paragraphs after an nb
line, and 2 blank lines to separate nb lines, but nb doesn’t care about
this.

nb nbindex example search keyword
This is the nbindex file for this file.

	nb.1:1 name search index keyword
	nb.1:5 keyword
	nb.1:8 description search keyword path file line acme
	nb.1:15 file format store index line path file line acme nbindexes
	nb.1:28 nbindex example search keyword
	nb.1:50 source plan9port rc script
	nb.1:70 port plan9port rc shell script grëp
	nb.1:75 author jason.catena@gmail.com
	nb.1:78 bugs

This is the output of the command “nb keyword”.  It lists the full
path since it may refer to files anywhere in the filesystem.

	/usr/local/plan9/bin/nb.1:1 name search index keyword
	/usr/local/plan9/bin/nb.1:5 keyword
	/usr/local/plan9/bin/nb.1:8 description search keyword path file line acme
	/usr/local/plan9/bin/nb.1:28 nbindex example search keyword

nb source plan9port rc script
#!/usr/local/plan9/bin/rc
flag e +

catalog=$HOME^'/nbindexes'
if(test -r $catalog &amp;&amp; ! ~ $1 ''){
	list=`{cat $catalog}
	grëp $* $list | sed 's,nbindex:[0-9]+: ,,'
}

grep -n '^nb ' * &gt;[2]/dev/null | sed 's,: ?nb +, ,' &gt; nbindex
echo `{pwd}^'/nbindex' &gt;&gt; $catalog
if(~ $TMPDIR ''){
	TMPDIR=/var/tmp
}
tmp=$TMPDIR^'/nbindexes.'^$USER^'.'^$pid
sort -u $catalog &gt; $tmp
mv $tmp $catalog

nb port plan9port rc shell script grëp
Nb in written in plan9port’s rc, but should be straightforward to port
to any shell.  Use grep instead of grëp.

nb author jason.catena@gmail.com

nb bugs
Nb generates the index after it searches, to present results immediately,
so it does not show changes since its last run.  If you want to see
the latest changes, then run nb with no parameters before you supply a
keyword (e.g. in acme, middle-click on nb after you edit an nb line or
following text).
</pre>
<br/>  <a href="http://feeds.wordpress.com/1.0/gocomments/swtools.wordpress.com/212/" rel="nofollow"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/swtools.wordpress.com/212/"/></a> <a href="http://feeds.wordpress.com/1.0/godelicious/swtools.wordpress.com/212/" rel="nofollow"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/swtools.wordpress.com/212/"/></a> <a href="http://feeds.wordpress.com/1.0/gostumble/swtools.wordpress.com/212/" rel="nofollow"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/swtools.wordpress.com/212/"/></a> <a href="http://feeds.wordpress.com/1.0/godigg/swtools.wordpress.com/212/" rel="nofollow"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/swtools.wordpress.com/212/"/></a> <a href="http://feeds.wordpress.com/1.0/goreddit/swtools.wordpress.com/212/" rel="nofollow"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/swtools.wordpress.com/212/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=swtools.wordpress.com&amp;blog=201050&amp;post=212&amp;subd=swtools&amp;ref=&amp;feed=1"/></div>
    </content>
    <updated>2010-03-05T19:34:12Z</updated>
    <category term="Uncategorized"/>
    <author>
      <name>catena</name>
    </author>
    <source>
      <id>http://swtools.wordpress.com</id>
      <logo>http://www.gravatar.com/blavatar/1b0e7838e53455cdcc9f41b08c0f496d?s=96&amp;d=http://s2.wp.com/i/buttonw-com.png</logo>
      <link href="http://swtools.wordpress.com/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://swtools.wordpress.com" rel="alternate" type="text/html"/>
      <link href="http://swtools.wordpress.com/osd.xml" rel="search" type="application/opensearchdescription+xml"/>
      <link href="http://swtools.wordpress.com/?pushpress=hub" rel="hub" type="text/html"/>
      <subtitle>Do one thing well, and work together.</subtitle>
      <title>Software Tools</title>
      <updated>2010-03-05T21:00:22Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-8082954141980125536.post-1448279655084128167</id>
    <link href="http://research.swtch.com/feeds/1448279655084128167/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=8082954141980125536&amp;postID=1448279655084128167" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default/1448279655084128167" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default/1448279655084128167" rel="self" type="application/atom+xml"/>
    <link href="http://research.swtch.com/2010/03/utf-8-bits-bytes-and-benefits.html" rel="alternate" type="text/html"/>
    <title>UTF-8: Bits, Bytes, and Benefits</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p class="pp">
UTF-8 is a way to encode Unicode code points—integer values from
0 through 10FFFF—into a byte stream,
and it is far simpler than many people realize.
The easiest way to make it confusing or complicated
is to treat it as a black box, never looking inside.
So let's start by looking inside.  Here it is:
</p>

<center>
<table border="0" cellpadding="0" cellspacing="5">
<tbody><tr height="10"><th colspan="4"/></tr>
<tr><th align="center" colspan="2">Unicode code points</th><th width="10"/><th align="center">UTF-8 encoding (binary)</th></tr>
<tr height="10"><td colspan="4"/></tr>
<tr><td align="right">00-7F</td><td>(7 bits)</td><td/><td align="right">0<i>tuvwxyz</i></td></tr>
<tr><td align="right">0080-07FF</td><td>(11 bits)</td><td/><td align="right">110<i>pqrst</i> 10<i>uvwxyz</i></td></tr>
<tr><td align="right">0800-FFFF</td><td>(16 bits)</td><td/><td align="right">1110<i>jklm</i> 10<i>npqrst</i> 10<i>uvwxyz</i></td></tr>
<tr><td align="right" valign="top">010000-10FFFF</td><td>(21 bits)</td><td/><td align="right" valign="top">11110<i>efg</i> 10<i>hijklm</i> 10<i>npqrst</i> 10<i>uvwxyz</i></td>
</tr><tr height="10"><td colspan="4"/></tr>
</tbody></table>
</center>

<p class="lp">
The convenient properties of UTF-8 are all consequences of the choice of encoding.
</p>

<ol>
<li><i>All ASCII files are already UTF-8 files.</i><br/>
The first 128 Unicode code points are the 7-bit ASCII character set,
and UTF-8 preserves their one-byte encoding.
</li>

<li><i>ASCII bytes always represent themselves in UTF-8 files.  They never appear as part of other UTF-8 sequences.</i><br/>
All the non-ASCII UTF-8 sequences consist of bytes
with the high bit set, so if you see the byte 0x7A in a UTF-8 file,
you can be sure it represents the character <code>z</code>.
</li>

<li><i>ASCII bytes are always represented as themselves in UTF-8 files.  They cannot be hidden inside multibyte UTF-8 sequences.</i><br/>
The ASCII <code>z</code> 01111010 cannot be encoded as a two-byte UTF-8 sequence
11000001 10111010.  Code points must be encoded using the shortest
possible sequence.
A corollary is that decoders must detect long-winded sequences as invalid.
In practice, it is useful for a decoder to use the Unicode replacement
character, code point FFFD, as the decoding of an invalid UTF-8 sequence
rather than stop processing the text.
</li>

<li><i>UTF-8 is self-synchronizing.</i><br/>
Let's call a byte of the form 10<i>xxxxxx</i>
a continuation byte.
Every UTF-8 sequence is a byte that is not a continuation byte
followed by zero or more continuation bytes.
If you start processing a UTF-8 file at an arbitrary point,
you might not be at the beginning of a UTF-8 encoding,
but you can easily find one: skip over
continuation bytes until you find a non-continuation byte.
(The same applies to scanning backward.)
</li>

<li><i>Substring search is just byte string search.</i><br/>
Properties 2, 3, and 4 imply that given a string
of correctly encoded UTF-8, the only way those bytes
can appear in a larger UTF-8 text is when they represent the
same code points.  So you can use any 8-bit safe byte at a time 
search function, like <code>strchr</code> or <code>strstr</code>, to run the search.
</li>

<li><i>Most programs that handle 8-bit files safely can handle UTF-8 safely.</i><br/>
This also follows from Properties 2, 3, and 4.
I say “most” programs, because programs that
take apart a byte sequence expecting one character per byte
will not behave correctly, but very few programs do that.
It is far more common to split input at newline characters,
or split whitespace-separated fields, or do other similar parsing
around specific ASCII characters.
For example, Unix tools like cat, cmp, cp, diff, echo, head, tail, and tee
can process UTF-8 files as if they were plain ASCII files.
Most operating system kernels should also be able to handle
UTF-8 file names without any special arrangement, since the
only operations done on file names are comparisons
and splitting at <code>/</code>.
In contrast, tools like grep, sed, and wc, which inspect arbitrary
individual characters, do need modification.
</li>

<li><i>UTF-8 sequences sort in code point order.</i><br/>
You can verify this by inspecting the encodings in the table above.
This means that Unix tools like join, ls, and sort (without options) don't need to handle
UTF-8 specially.
</li>

<li><i>UTF-8 has no “byte order.”</i><br/>
UTF-8 is a byte encoding.  It is not little endian or big endian.
Unicode defines a byte order mark (BOM) code point FFFE,
which are used to determine the byte order of a stream of
raw 16-bit values, like UCS-2 or UTF-16.
It has no place in a UTF-8 file.
Some programs like to write a UTF-8-encoded BOM
at the beginning of UTF-8 files, but this is unnecessary
(and annoying to programs that don't expect it).
</li>
</ol>

<p class="lp">
UTF-8 does give up the ability to do random
access using code point indices.
Programs that need to jump to the <i>n</i>th
Unicode code point in a file or on a line—text editors are the canonical example—will
typically convert incoming UTF-8 to an internal representation
like an array of code points and then convert back to UTF-8
for output,
but most programs are simpler when written to manipulate UTF-8 directly.
</p>

<p class="pp">
Programs that make UTF-8 more complicated than it needs to be
are typically trying to be too general,
not wanting to make assumptions that might not be true of
other encodings.
But there are good tools to convert other encodings to UTF-8,
and it is slowly becoming the standard encoding:
even the fraction of web pages
written in UTF-8 is
<a href="http://googleblog.blogspot.com/2010/01/unicode-nearing-50-of-web.html">nearing 50%</a>.
UTF-8 was explicitly designed
to have these nice properties.  Take advantage of them.
</p>

<p class="pp">
For more on UTF-8, see “<a href="http://plan9.bell-labs.com/sys/doc/utf.html">Hello World
or
Καλημέρα κόσμε
or
こんにちは 世界</a>,” by Rob Pike
and Ken Thompson, and also this <a href="http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt">history</a>.
</p>

<br/>

<font size="-1">
<p class="lp">
Notes: Property 6 assumes the tools do not strip the high bit from each byte.
Such mangling was common years ago but is very uncommon now.
Property 7 assumes the comparison is done treating
the bytes as unsigned, but such behavior is mandated
by the ANSI C standard for <code>memcmp</code>,
<code>strcmp</code>, and <code>strncmp</code>.
</p>
</font><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/8082954141980125536-1448279655084128167?l=research.swtch.com" width="1"/></div></div>
    </content>
    <updated>2010-03-05T18:03:46Z</updated>
    <published>2010-03-05T17:00:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="bit twiddling"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="Bell Labs"/>
    <author>
      <name>rsc</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06357099531993534337</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-8082954141980125536</id>
      <author>
        <name>rsc</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06357099531993534337</uri>
      </author>
      <link href="http://research.swtch.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://research.swtch.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Computer programming links, collected by
<a href="http://swtch.com/~rsc/">Russ Cox</a>.  Updated sporadically.</div>
      </subtitle>
      <title>research!rsc</title>
      <updated>2010-03-18T16:00:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-3922464996068172394</id>
    <link href="http://reneefrench.blogspot.com/feeds/3922464996068172394/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=3922464996068172394" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/3922464996068172394" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/3922464996068172394" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/03/thewlis-2.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://2.bp.blogspot.com/_va9O40qIhaE/S5DHmO9_pvI/AAAAAAAACWg/DDS7f3bwdY8/s1600-h/thewlis2sm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5445071409158006514" src="http://2.bp.blogspot.com/_va9O40qIhaE/S5DHmO9_pvI/AAAAAAAACWg/DDS7f3bwdY8/s320/thewlis2sm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 204px; height: 320px;"/></a>thewlis 2<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-3922464996068172394?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-05T14:57:00Z</updated>
    <published>2010-03-05T14:57:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="notes"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-2964933986624951539</id>
    <link href="http://reneefrench.blogspot.com/feeds/2964933986624951539/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=2964933986624951539" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2964933986624951539" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2964933986624951539" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/03/8349000-po.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://1.bp.blogspot.com/_va9O40qIhaE/S5CJ2TLhITI/AAAAAAAACWY/Qo_kpq7FG5I/s1600-h/stones82sm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5445003515445453106" src="http://1.bp.blogspot.com/_va9O40qIhaE/S5CJ2TLhITI/AAAAAAAACWY/Qo_kpq7FG5I/s320/stones82sm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 278px;"/></a>8349000 po<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-2964933986624951539?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-05T04:35:07Z</updated>
    <published>2010-03-05T04:33:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-2374953854561228991</id>
    <link href="http://thenewsh.blogspot.com/feeds/2374953854561228991/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/03/youtube-education.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/2374953854561228991" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/2374953854561228991" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/03/youtube-education.html" rel="alternate" type="text/html"/>
    <title>Youtube education</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">In today's episode we watch a cartoon explaining the operation of the Fed and then a short commentary on Goldman's participation.  Enjoy!<br/><br/>&lt;object height="265" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Kj9-kRv0e6s&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="265" src="http://www.youtube.com/v/Kj9-kRv0e6s&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" width="320"&gt;&lt;/embed&gt;&lt;/object&gt;<br/><br/>&lt;object height="295" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/7SFywA_LQuU&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="295" src="http://www.youtube.com/v/7SFywA_LQuU&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-2374953854561228991?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-04T18:39:08Z</updated>
    <published>2010-03-04T18:39:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="consumer"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="economy"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-7271053592768591031</id>
    <link href="http://reneefrench.blogspot.com/feeds/7271053592768591031/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=7271053592768591031" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/7271053592768591031" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/7271053592768591031" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/03/earnow.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S49sVvwHZvI/AAAAAAAACWQ/APdNsKNpnzo/s1600-h/assnakescape.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5444689595365549810" src="http://3.bp.blogspot.com/_va9O40qIhaE/S49sVvwHZvI/AAAAAAAACWQ/APdNsKNpnzo/s320/assnakescape.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 296px; height: 320px;"/></a>earnow<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-7271053592768591031?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-04T08:16:47Z</updated>
    <published>2010-03-03T09:16:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6559550810260622787.post-7206407142815482198</id>
    <link href="http://inferno-rus.blogspot.com/feeds/7206407142815482198/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://inferno-rus.blogspot.com/2010/03/mysql.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6559550810260622787/posts/default/7206407142815482198?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6559550810260622787/posts/default/7206407142815482198?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://inferno-rus.blogspot.com/2010/03/mysql.html" rel="alternate" type="text/html"/>
    <title>[софт] mySQL-клиент</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">На <a href="http://code.google.com/p/imakerobots/wiki/infernomysql">странице</a> опубликован код Inferno-модуля, предназанченного для коммуникации с удаленным MySQL-сервером. Поддерживается аутентификация и MySQL 4.x и выше.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6559550810260622787-7206407142815482198?l=inferno-rus.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-04T05:20:11Z</updated>
    <published>2010-03-03T13:37:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="&#x441;&#x441;&#x44B;&#x43B;&#x43A;&#x438;"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="&#x441;&#x43E;&#x444;&#x442;"/>
    <author>
      <name>j1m</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06224950953627370147</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6559550810260622787</id>
      <author>
        <name>j1m</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06224950953627370147</uri>
      </author>
      <link href="http://inferno-rus.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://inferno-rus.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6559550810260622787/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/Inferno-rus" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Все об операционной системе Inferno на русском</subtitle>
      <title>OS Inferno</title>
      <updated>2010-03-14T09:39:27Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-3572284592825852374</id>
    <link href="http://reneefrench.blogspot.com/feeds/3572284592825852374/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=3572284592825852374" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/3572284592825852374" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/3572284592825852374" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/03/1231111.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S411hJIIcfI/AAAAAAAACWI/uw7RFSVFDRs/s1600-h/snowbeesm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5444136736806957554" src="http://4.bp.blogspot.com/_va9O40qIhaE/S411hJIIcfI/AAAAAAAACWI/uw7RFSVFDRs/s320/snowbeesm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 225px;"/></a>1231111<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-3572284592825852374?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-02T20:31:44Z</updated>
    <published>2010-03-02T20:25:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-261037472283732641</id>
    <link href="http://reneefrench.blogspot.com/feeds/261037472283732641/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=261037472283732641" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/261037472283732641" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/261037472283732641" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/03/broken-citroen.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://1.bp.blogspot.com/_va9O40qIhaE/S41zSMxJDoI/AAAAAAAACWA/B5FhcP8RkBE/s1600-h/dwcampion.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5444134281062977154" src="http://1.bp.blogspot.com/_va9O40qIhaE/S41zSMxJDoI/AAAAAAAACWA/B5FhcP8RkBE/s320/dwcampion.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 240px; height: 320px;"/></a>broken citroen<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-261037472283732641?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-02T20:25:10Z</updated>
    <published>2010-03-01T20:21:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="notes"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-649001962724967759</id>
    <link href="http://thenewsh.blogspot.com/feeds/649001962724967759/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/03/bankers-progress.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/649001962724967759" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/649001962724967759" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/03/bankers-progress.html" rel="alternate" type="text/html"/>
    <title>A Banker's Progress</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://www.doonesbury.com/strip/dailydose/index.html?uc_full_date=20100228">Doonesbury </a>by way of <a href="http://www.ritholtz.com/blog/2010/03/bankers-progress/">Ritholtz</a>:<br/><div><img src="http://www.ritholtz.com/blog/wp-content/uploads/2010/03/doonesbury-100228.gif" width="425/"/><br/><br/></div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-649001962724967759?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-02T18:56:10Z</updated>
    <published>2010-03-02T18:54:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="humor"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="consumer"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="economy"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6559550810260622787.post-2100707047324121707</id>
    <link href="http://inferno-rus.blogspot.com/feeds/2100707047324121707/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://inferno-rus.blogspot.com/2010/03/wiki-linux-inferno.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6559550810260622787/posts/default/2100707047324121707?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6559550810260622787/posts/default/2100707047324121707?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://inferno-rus.blogspot.com/2010/03/wiki-linux-inferno.html" rel="alternate" type="text/html"/>
    <title>[wiki] Перенаправление аудио-вывода по сети используя Linux и Inferno</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Перевод заметки, опубликованной на странице <a href="http://ninetimes.cat-v.org/tips/"/>.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6559550810260622787-2100707047324121707?l=inferno-rus.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-02T11:53:38Z</updated>
    <published>2010-03-02T11:51:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="wiki"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="tips"/>
    <author>
      <name>j1m</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06224950953627370147</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6559550810260622787</id>
      <author>
        <name>j1m</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06224950953627370147</uri>
      </author>
      <link href="http://inferno-rus.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://inferno-rus.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6559550810260622787/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/Inferno-rus" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Все об операционной системе Inferno на русском</subtitle>
      <title>OS Inferno</title>
      <updated>2010-03-14T09:39:27Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-644191305643743365</id>
    <link href="http://reneefrench.blogspot.com/feeds/644191305643743365/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=644191305643743365" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/644191305643743365" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/644191305643743365" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/bacon.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://2.bp.blogspot.com/_va9O40qIhaE/S4sMG0vN73I/AAAAAAAACV4/FxL-LCSJ1eQ/s1600-h/duck44.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5443457885982814066" src="http://2.bp.blogspot.com/_va9O40qIhaE/S4sMG0vN73I/AAAAAAAACV4/FxL-LCSJ1eQ/s320/duck44.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 269px;"/></a><br/><div>bacon</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-644191305643743365?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-03-01T00:37:16Z</updated>
    <published>2010-03-01T00:36:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="notes"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-8854312619478460255</id>
    <link href="http://reneefrench.blogspot.com/feeds/8854312619478460255/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=8854312619478460255" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/8854312619478460255" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/8854312619478460255" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/mizur.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S4miCMQf7zI/AAAAAAAACVw/BOKKUwSRiM0/s1600-h/set3tsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5443059783187820338" src="http://3.bp.blogspot.com/_va9O40qIhaE/S4miCMQf7zI/AAAAAAAACVw/BOKKUwSRiM0/s320/set3tsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 230px; height: 320px;"/></a><br/><div>mizur</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-8854312619478460255?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-27T22:52:10Z</updated>
    <published>2010-02-27T22:51:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="line drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-5371526077965056347</id>
    <link href="http://reneefrench.blogspot.com/feeds/5371526077965056347/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=5371526077965056347" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/5371526077965056347" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/5371526077965056347" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/95000.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S4mhnqqq8zI/AAAAAAAACVo/rJ8LSJOV9M4/s1600-h/swim.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5443059327494189874" src="http://4.bp.blogspot.com/_va9O40qIhaE/S4mhnqqq8zI/AAAAAAAACVo/rJ8LSJOV9M4/s320/swim.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 268px; height: 320px;"/></a><br/><div>95000</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-5371526077965056347?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-27T22:50:56Z</updated>
    <published>2010-02-26T22:48:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-1758727218421577322</id>
    <link href="http://thenewsh.blogspot.com/feeds/1758727218421577322/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/flash-sucks.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/1758727218421577322" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/1758727218421577322" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/flash-sucks.html" rel="alternate" type="text/html"/>
    <title>Flash Sucks</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://get.adobe.com/flashplayer/">Flash </a>totally sucks.  I know, I'm not saying anything you don't already know.  But why do we keep using this crap?  Can we just route around this damage already?  Do we really need software that makes a modern machine run slower than last decade's model? I can't believe there are <a href="http://www.hulu.com/">entire companies</a> that base their business around software that runs on this crap.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-1758727218421577322?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-27T08:43:54Z</updated>
    <published>2010-02-27T08:40:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="rant"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-4633566926723133810</id>
    <link href="http://reneefrench.blogspot.com/feeds/4633566926723133810/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=4633566926723133810" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/4633566926723133810" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/4633566926723133810" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/s5-ee.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://2.bp.blogspot.com/_va9O40qIhaE/S4dPD4r5cSI/AAAAAAAACVg/0C2MroPcZRk/s1600-h/dogbarsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5442405602875240738" src="http://2.bp.blogspot.com/_va9O40qIhaE/S4dPD4r5cSI/AAAAAAAACVg/0C2MroPcZRk/s320/dogbarsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 220px;"/></a>s5 ee<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-4633566926723133810?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-26T04:39:14Z</updated>
    <published>2010-02-26T04:32:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="line drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-2569670767058045824</id>
    <link href="http://thenewsh.blogspot.com/feeds/2569670767058045824/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/model-su-27-jet.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/2569670767058045824" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/2569670767058045824" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/model-su-27-jet.html" rel="alternate" type="text/html"/>
    <title>Model SU-27 jet</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">This is truely one of the most amazing things I've ever seen. A guy builds an amazing model of a SU-27 jet and flies it. Here's a video of him flying the thing:<br/>&lt;object height="265" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/6IKnZ_tkecU&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="265" src="http://www.youtube.com/v/6IKnZ_tkecU&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" width="320"&gt;&lt;/embed&gt;&lt;/object&gt;<br/><br/>But as impressive as the video is, it doesn't come close to the <a href="http://www.su27.de/seite1.htm">build log he has on his website</a>. It's just incredibly amazing. It's 83 pages long and every time you think he's getting close to being done, or can't possibly make it more detailed, he does. The process includes him making a metal model of the skin (complete with fake rivet holes), making carbon graphite forms, building a frame, putting the skin on the frame, making plastic models for the various weapons and antennas and cockpit parts, putting together landing gear systems and installing jet engines and fuel tanks. Just completely amazing!<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-2569670767058045824?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-25T20:08:00Z</updated>
    <published>2010-02-25T20:08:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="diy"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-8382649207764800820</id>
    <link href="http://reneefrench.blogspot.com/feeds/8382649207764800820/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=8382649207764800820" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/8382649207764800820" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/8382649207764800820" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/458-thursday.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S4YRSd798HI/AAAAAAAACVQ/OLecVCaDoLs/s1600-h/halfhaus.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5442056208695292018" src="http://3.bp.blogspot.com/_va9O40qIhaE/S4YRSd798HI/AAAAAAAACVQ/OLecVCaDoLs/s320/halfhaus.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 219px; height: 320px;"/></a>458 thursday<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-8382649207764800820?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-25T05:58:27Z</updated>
    <published>2010-02-25T05:57:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="notes"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-8271600838209306947</id>
    <link href="http://thenewsh.blogspot.com/feeds/8271600838209306947/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/hacker-v-bankers-round-1.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/8271600838209306947" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/8271600838209306947" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/hacker-v-bankers-round-1.html" rel="alternate" type="text/html"/>
    <title>Hacker v. Bankers, Round 1</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">In a sign of the times, a <a href="http://news.bbc.co.uk/2/hi/technology/8533641.stm">Latvian hacker is leaking important information </a>on the misbehavior of it's bankers.<br/><blockquote><span class="Apple-style-span" style="border-collapse: collapse; color: #464646; font-family: verdana, helvetica, arial, sans-serif; font-size: 13px; line-height: 18px;"><div style="font-size: 13px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">Data leaked so far includes pay details of managers from a Latvian bank that received a bail-out. It reveals that many did not take the salary cuts they promised. Other data shows that state-owned companies secretly awarded bonuses while publicly asking the government for help.</div></span></blockquote>The public is eating it up, despite the legality of the hacks.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-8271600838209306947?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-24T20:40:46Z</updated>
    <published>2010-02-24T20:40:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="news"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="pundit"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="security"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="consumer"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-5538763207903679784</id>
    <link href="http://reneefrench.blogspot.com/feeds/5538763207903679784/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=5538763207903679784" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/5538763207903679784" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/5538763207903679784" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/sold-out-of-labute.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S4UMp_PsMLI/AAAAAAAACVI/1UxnCWozGz0/s1600-h/hdaymovbed39sm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5441769640238526642" src="http://3.bp.blogspot.com/_va9O40qIhaE/S4UMp_PsMLI/AAAAAAAACVI/1UxnCWozGz0/s320/hdaymovbed39sm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 233px;"/></a>sold out of labute<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-5538763207903679784?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-24T11:27:30Z</updated>
    <published>2010-02-23T11:24:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="line drawings"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="story h"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-5261426740659114235</id>
    <link href="http://thenewsh.blogspot.com/feeds/5261426740659114235/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/chip-and-pin.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/5261426740659114235" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/5261426740659114235" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/chip-and-pin.html" rel="alternate" type="text/html"/>
    <title>Chip and Pin</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Chip and Pin, the backstory.  Funny!<br/><br/>&lt;object height="265" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/B80SyRmtbdI&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="265" src="http://www.youtube.com/v/B80SyRmtbdI&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" width="320"&gt;&lt;/embed&gt;&lt;/object&gt;<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-5261426740659114235?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-23T20:07:48Z</updated>
    <published>2010-02-23T20:07:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="security"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="comedy"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-7693914157203429612</id>
    <link href="http://thenewsh.blogspot.com/feeds/7693914157203429612/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/security-and-corporation.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/7693914157203429612" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/7693914157203429612" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/security-and-corporation.html" rel="alternate" type="text/html"/>
    <title>Security and the Corporation</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">A lot of computer security professionals see computer security from the technical perspective. It's enlightening to sit back and consider security from another angle. Here's a <a href="http://www.csoonline.com/article/print/550413">good article that gives the perspective from the point of view of the corporation</a>. If you work in the security industry I highly recommend reading it. I just want to comment on a few things here:<br/><blockquote><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px;">We are laser-focused on increasing sales while cutting costs. You seem to be focused on other things, like security. You're not laser-focused on what matters to us, and that's OK. </span></blockquote>and<br/><blockquote><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px;">One final quote before I wrap: <b>"[T]op information security specialists have been saying for years that our current infrastructure is at grave risk." <span class="Apple-style-span" style="font-weight: normal;">For the sake of argument, I'll accept that the folks saying that really are top experts. And you're right. They've been crying wolf for years. No one's used a cross-site scripting attack to take down the world financial system. No one's blown themselves up in Twitter's headquarters. That failure to throw money at security didn't lead to I-35 collapsing. Millions of Americans lack health care. Your unemployment money is running out. So I'm just going to assume that you, and they, are right. Our information infrastructure is one of the many things we could invest in.</span></b></span></blockquote>Computer security is but one of many things that a corporation thinks about, and honestly, it's not often very high on their list. Our collective inability to "fix" the computer security problem is not a technical problem (although there are definitely technical aspects to it). It is a social challenge. It's a challenge of allocating resources between competing investments... ie. an economics problem. We can't really discuss the problem and its solutions properly until we accept that.<br/>If we, as a society, really think that the computer security of our national infrastructure is really that important (do we?) then we can provide economic incentives to make sure that corporations treat it with the same importance that we think it deserves. For example, we could allow consumers to externalize their costs due to a computer security breach by making the corporations liable for damages.<br/><blockquote><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px;"> <a href="http://www.csoonline.com/article/499527" style="color: #006699; text-decoration: none;">Heartland</a> is still here. <a href="http://www.csoonline.com/article/216775" style="color: #006699; text-decoration: none;">TJX</a> had their best quarters ever after they got hacked.</span></blockquote>We could make software vendors liable for defects in their software that left corporations vulnerable to attack. You might not agree with these particular examples, but I hope you can at least see that the solution must be economic in nature. After all, <a href="http://www.achangeiscoming.net/docs/cssocsci.html">computer science is really a social science</a>.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-7693914157203429612?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-23T18:24:07Z</updated>
    <published>2010-02-23T18:24:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="economics"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="pundit"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="security"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-8082954141980125536.post-3775091129210813871</id>
    <link href="http://research.swtch.com/feeds/3775091129210813871/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=8082954141980125536&amp;postID=3775091129210813871" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default/3775091129210813871" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default/3775091129210813871" rel="self" type="application/atom+xml"/>
    <link href="http://research.swtch.com/2010/02/off-to-races.html" rel="alternate" type="text/html"/>
    <title>Off to the Races</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p class="lp">
Go is defined to be a safe language.
Indices into array or string references must be in bounds;
there is no way to reinterpret the bits of one type
as another, no way to conjure a pointer out of thin air;
and there is no way to release memory, so no
chance of “<a href="http://en.wikipedia.org/wiki/Dangling_pointer">dangling pointer</a>” errors and the
associated memory corruption and instability.
</p>

<p class="pp">In the current Go implementations, though, there are two
ways to break through these safety mechanisms.
The first and more direct way is to use 
<a href="http://golang.org/pkg/unsafe/">package unsafe</a>,
specifically <a href="http://golang.org/pkg/unsafe#Pointer">unsafe.Pointer</a>.
The second, less direct way is to use a data race in a multithreaded program.
</p>

<p class="pp">If you were going to build an environment that ran untrusted
Go code, you'd probably want to change the available packages to restrict
or delete certain routines, like <a href="http://golang.org/pkg/os/#RemoveAll">os.RemoveAll</a>,
and you'd want to disallow access to package unsafe.
Those kinds of restrictions are straightforward.
</p>

<p class="pp">The data races that can be used to break through the
usual memory safety of Go are less straightforward.
This post describes the races and how to rearrange the data
structures involved to avoid them.
Until the Go implementations have been tuned more,
we won't be able to measure whether there is a
significant performance difference between the current
representation and the race-free implementation.
</p>

<h3>Package Unsafe</h3>

<p class="lp">Here's a simple packaging of a type that lets you
edit arbitrary memory locations, built using the standard
<a href="http://golang.org/pkg/unsafe/">package unsafe</a>:
</p>

<pre class="indent">import "unsafe"

type Mem struct {
 addr *uintptr // actually == &amp;m.data!
 data *uintptr
}

// Peek reads and returns the word at address addr.
func (m *Mem) Peek(addr uintptr) uintptr {
 *m.addr = addr
 return *m.data
}

// Poke sets the word at address addr to val.
func (m *Mem) Poke(addr, val uintptr) {
 *m.addr = addr
 *m.data = val
}

func NewMem() *Mem {
 m := new(Mem)
 m.addr = (*uintptr)(unsafe.Pointer(&amp;m.data))
 return m
}
</pre>

<p class="lp">(The Go type <code>uintptr</code> is an unsigned integer
the size of a pointer, like <code>uint32</code> or <code>uint64</code>
depending on the underlying machine architecture.)
</p>

<p class="pp">The key line is near the bottom, the use of 
the special type <code>unsafe.Pointer</code> to convert a
<code>**uintptr</code> into a <code>*uintptr</code>.
Dereferencing that value gives us <code>m.data</code> (actually a <code>*uintptr</code>)
interpreted as a <code>uintptr</code>.
We can assign an arbitrary integer to <code>*m.addr</code>, that changes <code>m.data</code>,
and then we can dereference the integer as <code>*m.data</code>.
In other words, the <code>Mem</code> struct
gives us a way to convert between integers and pointers, just like in C.
There are no races here: this is just something you
can do by importing <code>unsafe</code>.
The <code>Mem</code> wrapper is a bit convoluted—normally you'd just use <code>unsafe</code> directly—but
we're going to drop in a different implementation of <code>NewMem</code>
that doesn't rely on <code>unsafe</code>.
</p>


<h3>A Race</h3>

<p class="lp">The current Go representation of slices and interface values
admits a <a href="http://en.wikipedia.org/wiki/Race_condition">data race</a>:
because they are multiword values, if one goroutine reads the value
while another goroutine writes it, the reader might see half of the old
value and half of the new value.
</p>

<p class="pp">Let's provoke the race using interface values.
In Go, an interface value is <a href="http://research.swtch.com/2009/12/go-data-structures-interfaces.html">represented as two words</a>,
a type and a value of that type.
After these declarations:
</p>

<pre class="indent">var x *uintptr

var i interface{} = &amp;x
var j interface{} = (*uintptr)(nil)
</pre>

<p class="lp">The data structures for <code>i</code> and <code>j</code> look like:
</p>

<center>
<img src="http://4.bp.blogspot.com/_ZnVhQ3NyEx0/S4NfhGfalZI/AAAAAAAAABc/tW8HwS2YeTM/s400/gorace1.png"/>
</center>

<p class="lp">Suppose we kick off a goroutine that alternately assigns <code>i</code> and <code>j</code>
to a new interface value <code>k</code>:

</p><pre class="indent">var k interface{}

func hammer() {
 for {
  k = i
  k = j
 }
}
</pre>

<p class="lp">After each statement executes, <code>k</code> will look like either <code>i</code> or <code>j</code>, but during the assignment, there will be a moment when <code>k</code> is half <code>i</code> and half <code>j</code>, one of these:
</p>

<center>
<img src="http://1.bp.blogspot.com/_ZnVhQ3NyEx0/S4NfhYd6Q0I/AAAAAAAAABk/5yRlfksZmq8/s400/gorace2.png"/>
</center>

<p class="lp">
The top case gives us a <code>**uintptr</code> <code>nil</code>, which
we could obtain more easily via legitimate means,
but the bottom case gives us the value <code>&amp;x</code> (actually
a <code>**uintptr</code>) interpreted as a <code>*uintptr</code>.
If we can catch the interface when it looks like the case on the right,
we'll have rederived the conversion we used above via <code>unsafe</code>.
Based on that insight, we can rewrite <code>NewMem</code> without <code>unsafe</code>:
</p>

<pre class="indent">func NewMem() *Mem {
 fmt.Println("here we go!")

 m := new(Mem)

 var i, j, k interface{}
 i = &amp;m.data
 j = (*uintptr)(nil)

 // Try over and over again until we win the race.
 done := false
 go func(){
  for !done {
   k = i
   k = j
  }
 }()
 for {
  // Is k a non-nil *uintptr?  If so, we got it.
  if p, ok := k.(*uintptr); ok &amp;&amp; p != nil {
   m.addr = p
   done = true
   break
  }
 }
 return m
}
</pre>

<p class="pp">The same kind of race happens in all of
Go's mutable multiword structures: slices, interfaces, and strings.
In the case of slices, the trick is to get a pointer from
one slice and a cap from a different one.
In the case of strings, the trick is to get a pointer from
one string and the len from a different one.
(The string race isn't as interesting, because strings
cannot be written to, so it would only let you read memory, not write it.)
</p>

<h3>The Fix</h3>

<p class="lp">The race is fundamentally caused by
being able to observe partial updates to Go's 
multiword values (slices, interfaces, and strings):
the updates are not atomic.
</p>

<p class="pp">The fix is to make the updates atomic.
In Go, the easiest way to do that is to make the
representation a single pointer that points at an
immutable structure.  When the value needs to be
updated, you allocate a new structure, fill it in
completely, and only then change the pointer
to point at it.  This makes the assignment atomic:
another goroutine reading the pointer at the
same time sees either the new data or the old data,
but not a mix, assuming the compiler is careful to
read the pointer just once and then access
both fields using the same pointer value.</p>

<center>
<img src="http://1.bp.blogspot.com/_ZnVhQ3NyEx0/S4NfhjTBPRI/AAAAAAAAABs/SnNac85wwSg/s400/gorace3.png"/>
</center>

<p class="lp">(The red border indicates immutable data.)</p>

<p class="pp">For slices and strings, it makes sense to keep the
multiword representation but put an immutable
”pointer and cap” stub structure
between the slice and the underlying array.
This keeps the same basic efficiency properties
of slices at the cost of a few extra instructions
on each indexing operation.</p>

<center>
<img src="http://2.bp.blogspot.com/_ZnVhQ3NyEx0/S4NfiL9UgZI/AAAAAAAAAB0/mW2hZr-Ay5k/s400/gorace4.png"/>
</center>

<p class="lp">The idea here is to keep a structure with a 
mutable offset and length to support efficient slicing
but replace the pointer with an immutable base+length pair.
Any access to the underlying data must check the final
offset against the immutable <i>cap</i>.
Copying slice values is still not an atomic operation,
but an invalid <i>len</i> will not keep an out-of-bounds
index from being caught.
</p>

<p class="pp">This representation requires a couple
more assembly instructions, because each index
must be checked against two bounds, first the relative len
and then the absolute cap:
</p>

<center>
<table>
<tbody><tr height="5"><td/></tr>
<tr align="center"><th colspan="5">Compute <code>x[i]</code> in <code>AX</code></th></tr>
<tr><th align="center"><i>Racy</i></th><th/><th align="center"><i>Race-free</i></th></tr>
<tr><td><pre class="smallish">
LEAL x, SI
MOVL i, CX
CMPL CX, 4(SI)
JGE panic




MOVL 0(SI), DI
MOVL (4*CX)(DI), AX
</pre></td><td width="20"/><td><pre class="smallish">
LEAL x, BX
MOVL i, CX
CMPL CX, 4(BX)
JGE panic
ADDL 8(BX), CX
MOVL 0(BX), SI
CMPL CX, 4(SI)
JGE panic
MOVL 0(SI), DI
MOVL (4*CX)(DI), AX
</pre></td><td width="20"/><td><pre class="smallish">
 
 
// i &gt;= len?
 
 
// i+off &gt;= cap?
 
// &amp;x[0] -&gt; SI
// x[i] (or x[i+off]) -&gt; DI
 
</pre></td></tr>
</tbody></table>
</center>

<p class="lp">With suitable analysis, an optimizing compiler
could cache <code>0(BX)</code>, <code>4(BX)</code>, <code>8(BX)</code>,
and <code>4(SI)</code>, so in a loop, it is possible that the 
new representation would run at the same speed
as the original.</p>

<p class="pp">An ambitious implementation might
continue to use the current data structures for
slices, interfaces, and strings stored on the stack,
because data on the stack can only be accessed
by the goroutine running on that stack.
(Local variables whose addresses might escape
to other goroutines are already allocated
on the heap automatically, to avoid dangling pointer bugs
after a function returns.)
</p>

<h3>Garbage Collection</h3>

<p class="lp">This fix is feasible only because Go is
a garbage-collected language: we can treat the
red stub structures as immutable and trust that
the garbage collector will recycle the memory only
when nothing points to them anymore.
It's much harder to build a safe language
without a garbage collector to fall back on.
</p>

<h3>Security Implications</h3>

<p class="lp">It is important to note that these races do not make
the current implementations any less secure than they already are.
The races allow clever programmers to subvert Go's memory safety,
but a less clever programmer can still use 
the aptly-named <a href="http://golang.org/doc/go_spec.html#Package_unsafe">package unsafe</a>.
</p>

<p class="pp">
These races only matter if you are trying to build a Go service
that can safely run arbitrary code supplied by untrusted programmers
(and to the best of my knowledge, there are no such services yet).
In that situation, you'd already need to change the implementations
to disable access to the unsafe package and remove or restrict functions like
os.Remove or net.Dial.
Changing the data representations to be race free is just one more 
change you'd have to make.  Now you know, not just that a change
is needed but also what the change is.
</p>

<p class="pp">The races exist because the data representations 
were chosen for performance: the race-free versions introduce
an extra pointer, which carries with it the cost of extra indirection
and extra allocation.  Once the Go implementations are more mature,
we'll be able to evaluate the precise performance impact of using
the race-free data structures and whether to use them always
or only in situations running untrusted code.
</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/8082954141980125536-3775091129210813871?l=research.swtch.com" width="1"/></div></div>
    </content>
    <updated>2010-02-23T17:00:00Z</updated>
    <published>2010-02-23T17:00:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="data structures"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="brute force"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="Go"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="security"/>
    <author>
      <name>rsc</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06357099531993534337</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-8082954141980125536</id>
      <author>
        <name>rsc</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06357099531993534337</uri>
      </author>
      <link href="http://research.swtch.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://research.swtch.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Computer programming links, collected by
<a href="http://swtch.com/~rsc/">Russ Cox</a>.  Updated sporadically.</div>
      </subtitle>
      <title>research!rsc</title>
      <updated>2010-03-18T16:00:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6989726062940083922.post-5531784633012264008</id>
    <link href="http://robpike.blogspot.com/feeds/5531784633012264008/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=6989726062940083922&amp;postID=5531784633012264008" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default/5531784633012264008" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default/5531784633012264008" rel="self" type="application/atom+xml"/>
    <link href="http://robpike.blogspot.com/2010/02/two-birds.html" rel="alternate" type="text/html"/>
    <title>Two Birds</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_Fpj1cqLIn_Y/S4OiSWCsUBI/AAAAAAAABsk/MWWEAphHmqI/s1600-h/Two+Birds.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5441371210831908882" src="http://3.bp.blogspot.com/_Fpj1cqLIn_Y/S4OiSWCsUBI/AAAAAAAABsk/MWWEAphHmqI/s400/Two+Birds.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 400px; height: 269px;"/></a><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6989726062940083922-5531784633012264008?l=robpike.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-23T09:39:26Z</updated>
    <published>2010-02-23T09:39:00Z</published>
    <author>
      <name>rob</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/18259238879445421354</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6989726062940083922</id>
      <author>
        <name>rob</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/18259238879445421354</uri>
      </author>
      <link href="http://robpike.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://robpike.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <title>rob pike</title>
      <updated>2010-03-18T03:38:46Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-824498351384646817</id>
    <link href="http://reneefrench.blogspot.com/feeds/824498351384646817/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=824498351384646817" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/824498351384646817" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/824498351384646817" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/in-heat-of-night.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://1.bp.blogspot.com/_va9O40qIhaE/S4OfMtxdtqI/AAAAAAAACVA/FlLQUIQ3juE/s1600-h/hdayboatleavingsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5441367815588001442" src="http://1.bp.blogspot.com/_va9O40qIhaE/S4OfMtxdtqI/AAAAAAAACVA/FlLQUIQ3juE/s320/hdayboatleavingsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 293px; height: 320px;"/></a>in the heat of the night<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-824498351384646817?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-23T09:27:02Z</updated>
    <published>2010-02-22T09:25:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="story h"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-3851725080255980406</id>
    <link href="http://thenewsh.blogspot.com/feeds/3851725080255980406/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/goog-hacker.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/3851725080255980406" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/3851725080255980406" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/goog-hacker.html" rel="alternate" type="text/html"/>
    <title>GOOG hacker</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">The guy who wrote the IE exploit used in the GOOG hack has been <a href="http://www.ft.com/cms/s/0/a6f5621c-1f21-11df-9584-00144feab49a.html?nclick_check=1">identified as a security researcher</a>. It sounds like he writes exploits for research and would rather not have them used offensively but has little choice if he wants to keep doing the work he does. I'm glad that doesn't happen in Amerika!  ;-)<br/><br/><b>Edit</b>: The link above seems to be a pay link. I got to it for free by clicking from the ft.com home page, but I think you have a limited number of free articles on that site. You can check out the story from other news sites such as<br/><a href="http://www.lbc.co.uk/us-tracks-down-chinese-google-hacker-20658">http://www.lbc.co.uk/us-tracks-down-chinese-google-hacker-20658</a><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-3851725080255980406?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-22T23:03:35Z</updated>
    <published>2010-02-22T18:01:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="news"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="goog"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="security"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-7357293310145733329</id>
    <link href="http://thenewsh.blogspot.com/feeds/7357293310145733329/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/fuel-cells-for-your-home.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/7357293310145733329" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/7357293310145733329" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/fuel-cells-for-your-home.html" rel="alternate" type="text/html"/>
    <title>Fuel cells for your home?</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">A <a href="http://www.cbsnews.com/video/watch/?id=6228923n">60 minutes story on the Bloom Box</a> talked about <a href="http://en.wikipedia.org/wiki/Home_fuel_cell">small fuel cells</a> that you could easily fit in your home that would generate your home's electrical needs using oxygen and some fuel like natural gas, bio fuel or land fill gas. The <a href="http://www.bloomenergy.com/">company officially launches on Wednesday</a> but already has trial customers using the stuff in production including FedEx, Walmart, Staples, Google and eBay. It uses half the natural gas as traditional power generators. Very interesting...<br/><br/>&lt;embed allowfullscreen="true" flashvars="linkUrl=http://www.cbsnews.com/video/watch/?id=6228923n&amp;amp;releaseURL=http://cnettv.cnet.com/av/video/cbsnews/atlantis2/player-dest.swf&amp;amp;videoId=50083943&amp;amp;partner=news&amp;amp;vert=News&amp;amp;si=254&amp;amp;autoPlayVid=false&amp;amp;name=cbsPlayer&amp;amp;allowScriptAccess=always&amp;amp;wmode=transparent&amp;amp;embedded=y&amp;amp;scale=noscale&amp;amp;rv=n&amp;amp;salign=tl" height="324" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://cnettv.cnet.com/av/video/cbsnews/atlantis2/player-dest.swf" type="application/x-shockwave-flash" width="425"&gt;&lt;/embed&gt;<br/><a href="http://www.cbsnews.com/">Watch CBS News Videos Online</a><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-7357293310145733329?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-22T18:50:10Z</updated>
    <published>2010-02-22T18:39:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="news"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="energy"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-4406086193904129581</id>
    <link href="http://reneefrench.blogspot.com/feeds/4406086193904129581/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=4406086193904129581" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/4406086193904129581" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/4406086193904129581" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/set-3.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S4Ijj0VX0wI/AAAAAAAACUw/oVIfdNHzhuw/s1600-h/set3sm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5440950398067659522" src="http://3.bp.blogspot.com/_va9O40qIhaE/S4Ijj0VX0wI/AAAAAAAACUw/oVIfdNHzhuw/s320/set3sm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 260px; height: 320px;"/></a>set 3<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-4406086193904129581?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-22T06:28:41Z</updated>
    <published>2010-02-22T06:26:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="line drawings"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="story l"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T10:37:59Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6989726062940083922.post-1511102207236100362</id>
    <link href="http://robpike.blogspot.com/feeds/1511102207236100362/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=6989726062940083922&amp;postID=1511102207236100362" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default/1511102207236100362" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default/1511102207236100362" rel="self" type="application/atom+xml"/>
    <link href="http://robpike.blogspot.com/2010/02/poultry.html" rel="alternate" type="text/html"/>
    <title>Poultry</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://1.bp.blogspot.com/_Fpj1cqLIn_Y/S4CR4zHL5dI/AAAAAAAABsc/LlGtN_vg-ac/s1600-h/Poultry.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5440508754842609106" src="http://1.bp.blogspot.com/_Fpj1cqLIn_Y/S4CR4zHL5dI/AAAAAAAABsc/LlGtN_vg-ac/s400/Poultry.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 400px; height: 357px;"/></a><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6989726062940083922-1511102207236100362?l=robpike.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-21T01:52:40Z</updated>
    <published>2010-02-21T01:52:00Z</published>
    <author>
      <name>rob</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/18259238879445421354</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6989726062940083922</id>
      <author>
        <name>rob</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/18259238879445421354</uri>
      </author>
      <link href="http://robpike.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://robpike.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <title>rob pike</title>
      <updated>2010-03-18T03:38:46Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-5403353775600759563</id>
    <link href="http://reneefrench.blogspot.com/feeds/5403353775600759563/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=5403353775600759563" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/5403353775600759563" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/5403353775600759563" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/td-hands.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S4B1Hefg9jI/AAAAAAAACUo/fSxUYQXjM6w/s1600-h/tazhandsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5440477121168340530" src="http://4.bp.blogspot.com/_va9O40qIhaE/S4B1Hefg9jI/AAAAAAAACUo/fSxUYQXjM6w/s320/tazhandsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 260px; height: 320px;"/></a><br/><div>td hands</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-5403353775600759563?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-20T23:50:20Z</updated>
    <published>2010-02-20T23:49:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-18T00:10:44Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6989726062940083922.post-694272046823436478</id>
    <link href="http://robpike.blogspot.com/feeds/694272046823436478/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=6989726062940083922&amp;postID=694272046823436478" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default/694272046823436478" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default/694272046823436478" rel="self" type="application/atom+xml"/>
    <link href="http://robpike.blogspot.com/2010/02/ned-kelly.html" rel="alternate" type="text/html"/>
    <title>Ned Kelly</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_Fpj1cqLIn_Y/S3-lCX4MBGI/AAAAAAAABsU/VeDLq9sI2KM/s1600-h/Ned+Kelly.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5440248335074853986" src="http://3.bp.blogspot.com/_Fpj1cqLIn_Y/S3-lCX4MBGI/AAAAAAAABsU/VeDLq9sI2KM/s400/Ned+Kelly.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 268px; height: 400px;"/></a><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6989726062940083922-694272046823436478?l=robpike.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-20T09:02:27Z</updated>
    <published>2010-02-20T09:01:00Z</published>
    <author>
      <name>rob</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/18259238879445421354</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6989726062940083922</id>
      <author>
        <name>rob</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/18259238879445421354</uri>
      </author>
      <link href="http://robpike.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://robpike.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <title>rob pike</title>
      <updated>2010-03-18T03:38:46Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-2856203954008036118</id>
    <link href="http://thenewsh.blogspot.com/feeds/2856203954008036118/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/more-on-goog-hack.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/2856203954008036118" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/2856203954008036118" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/more-on-goog-hack.html" rel="alternate" type="text/html"/>
    <title>More on the GOOG hack</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">More news is coming out on the GOOG hack. I find this entire story so fascinating. <a href="http://www.nytimes.com/2010/02/19/technology/19china.html?partner=rss&amp;emc=rss">http://www.nytimes.com/2010/02/19/technology/19china.html?partner=rss&amp;emc=rss</a><br/><a href="http://www.nytimes.com/2010/02/19/technology/19china.html?partner=rss&amp;emc=rss"/><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-2856203954008036118?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-19T20:25:15Z</updated>
    <published>2010-02-19T20:25:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="news"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="security"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-7356196735386868841</id>
    <link href="http://reneefrench.blogspot.com/feeds/7356196735386868841/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=7356196735386868841" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/7356196735386868841" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/7356196735386868841" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/not-josephine.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S35Yyy_QNAI/AAAAAAAACUg/4jya4q9Vokw/s1600-h/tazgoatsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5439883029613917186" src="http://4.bp.blogspot.com/_va9O40qIhaE/S35Yyy_QNAI/AAAAAAAACUg/4jya4q9Vokw/s320/tazgoatsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 240px;"/></a><br/><div>not josephine</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-7356196735386868841?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-19T09:24:51Z</updated>
    <published>2010-02-19T09:24:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="photographs"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-16T03:33:07Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-5272062359198208969</id>
    <link href="http://thenewsh.blogspot.com/feeds/5272062359198208969/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/pocketcube.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/5272062359198208969" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/5272062359198208969" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/pocketcube.html" rel="alternate" type="text/html"/>
    <title>PocketCube</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I wrote a rubik's cube type <a href="http://www.thenewsh.com/ninedroid/pocketcube/">game </a>for android.  It was a fun exercise and my first exposure to OpenGL (the ES variety here). I gotta say, I'm not that impressed with the API, especially as it stands in Java. I have previously used <a href="http://www.vtk.org/">VTK</a> which has a really nice high level API for doing this kinda thing.<br/><a href="http://www.thenewsh.com/ninedroid/pocketcube/"><img src="http://www.thenewsh.com/ninedroid/pocketcube/cubemenu.png" width="200/"/></a><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-5272062359198208969?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-18T18:53:28Z</updated>
    <published>2010-02-18T18:53:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="programming"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="android"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-9123749025050012156</id>
    <link href="http://reneefrench.blogspot.com/feeds/9123749025050012156/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=9123749025050012156" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/9123749025050012156" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/9123749025050012156" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/koi.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S30m5y4htxI/AAAAAAAACUQ/2RZBUGGlrpo/s1600-h/xsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5439546699286689554" src="http://4.bp.blogspot.com/_va9O40qIhaE/S30m5y4htxI/AAAAAAAACUQ/2RZBUGGlrpo/s320/xsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 274px;"/></a><br/><div>koi</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-9123749025050012156?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-18T11:39:45Z</updated>
    <published>2010-02-18T11:39:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="notes"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="flies"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-14T15:18:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-978382632444850597</id>
    <link href="http://reneefrench.blogspot.com/feeds/978382632444850597/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=978382632444850597" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/978382632444850597" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/978382632444850597" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/toasters.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S3vxS8cvzUI/AAAAAAAACUI/XVxi9EaD9Nc/s1600-h/mrcollsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5439206282746645826" src="http://4.bp.blogspot.com/_va9O40qIhaE/S3vxS8cvzUI/AAAAAAAACUI/XVxi9EaD9Nc/s320/mrcollsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 299px; height: 320px;"/></a>toasters<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-978382632444850597?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-17T13:39:08Z</updated>
    <published>2010-02-17T13:38:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-14T04:19:47Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-294481685846522416</id>
    <link href="http://reneefrench.blogspot.com/feeds/294481685846522416/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=294481685846522416" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/294481685846522416" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/294481685846522416" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/moon2.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://2.bp.blogspot.com/_va9O40qIhaE/S3qm1MIFw7I/AAAAAAAACUA/PfoaFWH3tWU/s1600-h/flypicnic.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5438842932721730482" src="http://2.bp.blogspot.com/_va9O40qIhaE/S3qm1MIFw7I/AAAAAAAACUA/PfoaFWH3tWU/s320/flypicnic.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 266px;"/></a>moon2<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-294481685846522416?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-16T14:12:07Z</updated>
    <published>2010-02-16T14:07:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="notes"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="flies"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-13T00:14:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-2350108441289570086</id>
    <link href="http://reneefrench.blogspot.com/feeds/2350108441289570086/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=2350108441289570086" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2350108441289570086" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2350108441289570086" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/mission-pile.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S21eQNgEdbI/AAAAAAAACTw/_aPN4R0EdGA/s1600-h/hdaymovbed15sm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5435103957901145522" src="http://4.bp.blogspot.com/_va9O40qIhaE/S21eQNgEdbI/AAAAAAAACTw/_aPN4R0EdGA/s320/hdaymovbed15sm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 266px;"/></a>mission pile<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-2350108441289570086?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-15T12:18:00Z</updated>
    <published>2010-02-15T12:18:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="line drawings"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-11T07:53:56Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-174656073872839394</id>
    <link href="http://thenewsh.blogspot.com/feeds/174656073872839394/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/tracer-tee.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/174656073872839394" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/174656073872839394" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/tracer-tee.html" rel="alternate" type="text/html"/>
    <title>Tracer Tee</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I don't usually disclose the oh-day on a blog, but this is important enough that you should all be aware of it:<br/><br/>&lt;object height="265" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/SXmv8quf_xM&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="265" src="http://www.youtube.com/v/SXmv8quf_xM&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" width="320"&gt;&lt;/embed&gt;&lt;/object&gt;<br/><br/>You can see a more realistic depiction of the attack here: <a href="http://www.youtube.com/watch?v=oDtvuCzDZgk">http://www.youtube.com/watch?v=oDtvuCzDZgk</a><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-174656073872839394?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-15T07:31:13Z</updated>
    <published>2010-02-15T07:31:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="security"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="comedy"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-2396317128089383622</id>
    <link href="http://reneefrench.blogspot.com/feeds/2396317128089383622/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=2396317128089383622" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2396317128089383622" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2396317128089383622" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/walsh.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://2.bp.blogspot.com/_va9O40qIhaE/S21dcJrCz6I/AAAAAAAACTo/_pw84Cx3jas/s1600-h/hdaymovbed24sm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5435103063520235426" src="http://2.bp.blogspot.com/_va9O40qIhaE/S21dcJrCz6I/AAAAAAAACTo/_pw84Cx3jas/s320/hdaymovbed24sm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 235px;"/></a>walsh<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-2396317128089383622?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-14T12:15:00Z</updated>
    <published>2010-02-14T12:15:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="line drawings"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-10T03:54:15Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-4159071858512982896</id>
    <link href="http://reneefrench.blogspot.com/feeds/4159071858512982896/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=4159071858512982896" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/4159071858512982896" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/4159071858512982896" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/hobart.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S21dNIynQUI/AAAAAAAACTg/uVjtO4K5PR4/s1600-h/hdaymov25sm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5435102805585510722" src="http://3.bp.blogspot.com/_va9O40qIhaE/S21dNIynQUI/AAAAAAAACTg/uVjtO4K5PR4/s320/hdaymov25sm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 200px; height: 320px;"/></a>hobart<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-4159071858512982896?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-13T12:12:00Z</updated>
    <published>2010-02-13T12:12:00Z</published>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-10T03:54:15Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-2062573939698904538</id>
    <link href="http://reneefrench.blogspot.com/feeds/2062573939698904538/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=2062573939698904538" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2062573939698904538" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2062573939698904538" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/charlotte.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S21ceTfGDvI/AAAAAAAACTY/i9G8NxhVa7Q/s1600-h/charlotte.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5435102001002581746" src="http://3.bp.blogspot.com/_va9O40qIhaE/S21ceTfGDvI/AAAAAAAACTY/i9G8NxhVa7Q/s320/charlotte.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 260px; height: 320px;"/></a>charlotte<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-2062573939698904538?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-12T12:06:00Z</updated>
    <published>2010-02-12T12:06:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="notes"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-09T18:16:58Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-6010385767212376379</id>
    <link href="http://reneefrench.blogspot.com/feeds/6010385767212376379/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=6010385767212376379" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/6010385767212376379" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/6010385767212376379" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/launceston.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S21alpgNKFI/AAAAAAAACTQ/EDZJsPCgnos/s1600-h/tmusselsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5435099928148650066" src="http://3.bp.blogspot.com/_va9O40qIhaE/S21alpgNKFI/AAAAAAAACTQ/EDZJsPCgnos/s320/tmusselsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 262px;"/></a><br/><div>launceston</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-6010385767212376379?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-11T11:59:00Z</updated>
    <published>2010-02-11T11:59:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-08T04:00:37Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-7114172681493277172</id>
    <link href="http://reneefrench.blogspot.com/feeds/7114172681493277172/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=7114172681493277172" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/7114172681493277172" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/7114172681493277172" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/hey-boo.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S21ZFRHbo5I/AAAAAAAACTI/SIr9KERmdbg/s1600-h/hdaymovbed22sm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5435098272334848914" src="http://4.bp.blogspot.com/_va9O40qIhaE/S21ZFRHbo5I/AAAAAAAACTI/SIr9KERmdbg/s320/hdaymovbed22sm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 223px;"/></a><br/><div>hey boo</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-7114172681493277172?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-10T11:50:00Z</updated>
    <published>2010-02-10T11:50:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="line drawings"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-06T06:34:29Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://swtools.wordpress.com/?p=184</id>
    <link href="http://swtools.wordpress.com/2010/02/10/update-go-scanner-to-accept-non-ascii-operators/" rel="alternate" type="text/html"/>
    <title>Update Go scanner to accept non-ASCII operators</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Read the discussion of this change on the golang-nuts mailing list.  See this notice in UTF-8 format.
For each line, the scanner accepts, in place of the first operator, any of the remaining operators, and outputs a token whose string (set in $GOROOT/src/go/token/token.go) is the first operator.
 ! ¬
 != ≠
 &amp; ∧
 &amp;&amp; ⋀
 &amp;= ∧=
 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=swtools.wordpress.com&amp;blog=201050&amp;post=184&amp;subd=swtools&amp;ref=&amp;feed=1"/></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Read the <a href="http://groups.google.com/group/golang-nuts/browse_thread/thread/502a754f5541a61">discussion</a> of this change on the golang-nuts mailing list.  See <a href="http://dl.dropbox.com/u/502901/myscanner.1">this notice</a> in UTF-8 format.</p>
<p>For each line, the scanner accepts, in place of the first operator, any of the remaining operators, and outputs a token whose string (set in $GOROOT/src/go/token/token.go) is the first operator.</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>!<span style="white-space: pre;"> </span>¬</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>!=<span style="white-space: pre;"> </span>≠</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>&amp;<span style="white-space: pre;"> </span>∧</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>&amp;&amp;<span style="white-space: pre;"> </span>⋀</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>&amp;=<span style="white-space: pre;"> </span>∧=</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>&amp;^<span style="white-space: pre;"> </span>∧¬</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>&amp;^=<span style="white-space: pre;"> </span>∧¬=</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>…<span style="white-space: pre;"> </span>…</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>:=<span style="white-space: pre;"> </span>≔</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>&lt;-<span style="white-space: pre;"> </span>←</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>&lt;&lt;<span style="white-space: pre;"> </span>≪</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>&lt;&lt;=<span style="white-space: pre;"> </span>≪=</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>&lt;=<span style="white-space: pre;"> </span>≤</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>==<span style="white-space: pre;"> </span>=?<span style="white-space: pre;"> </span>≟</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>&gt;=<span style="white-space: pre;"> </span>≥</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>&gt;&gt;<span style="white-space: pre;"> </span>≫</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>&gt;&gt;=<span style="white-space: pre;"> </span>≫=</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>^<span style="white-space: pre;"> </span>⊻</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>^=<span style="white-space: pre;"> </span>⊻=</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>|<span style="white-space: pre;"> </span>∨</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>|=<span style="white-space: pre;"> </span>∨=</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>|| ⋁</p>
<p>To install, copy $GOROOT/src/pkg/go/scanner/scanner.go to another file.</p>
<p>Replace scanner.go with <a href="http://dl.dropbox.com/u/502901/scanner.go">scanner.go</a></p>
<p>Run $GOROOT/src/all.bash and check for 0 unexpected errors.</p>
<p>Changes to scanner.go update gofmt, which accepts UTF-8 operators and outputs their ASCII equivalents.  This mkfile production rule uses gofmt as a preprocessor to create a sharable and compilable file.</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> </span>%.go: %.ℊℴ</p>
<p style="padding-left: 60px;"><span style="white-space: pre;"> </span>cat $stem.ℊℴ | gofmt &gt; $stem.go</p>
<p>See these files for an example of each new operator form in the context of a simple Go program.</p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> <a href="http://dl.dropbox.com/u/502901/myscanner.%E2%84%8A%E2%84%B4">myscanner.ℊℴ</a></span></p>
<p style="padding-left: 30px;"><span style="white-space: pre;"> <a href="http://dl.dropbox.com/u/502901/chan.%E2%84%8A%E2%84%B4">chan.ℊℴ</a></span></p>
<p>Please <a href="mailto:Jason.Catena@gmail.com">mail me</a> privately if something doesn’t work with this code, to avoid noise on the golang-nuts list, since we’re no longer discussing officially-released code.</p>
<br/>  <a href="http://feeds.wordpress.com/1.0/gocomments/swtools.wordpress.com/184/" rel="nofollow"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/swtools.wordpress.com/184/"/></a> <a href="http://feeds.wordpress.com/1.0/godelicious/swtools.wordpress.com/184/" rel="nofollow"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/swtools.wordpress.com/184/"/></a> <a href="http://feeds.wordpress.com/1.0/gostumble/swtools.wordpress.com/184/" rel="nofollow"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/swtools.wordpress.com/184/"/></a> <a href="http://feeds.wordpress.com/1.0/godigg/swtools.wordpress.com/184/" rel="nofollow"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/swtools.wordpress.com/184/"/></a> <a href="http://feeds.wordpress.com/1.0/goreddit/swtools.wordpress.com/184/" rel="nofollow"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/swtools.wordpress.com/184/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=swtools.wordpress.com&amp;blog=201050&amp;post=184&amp;subd=swtools&amp;ref=&amp;feed=1"/></div>
    </content>
    <updated>2010-02-10T06:16:26Z</updated>
    <category term="Uncategorized"/>
    <author>
      <name>catena</name>
    </author>
    <source>
      <id>http://swtools.wordpress.com</id>
      <logo>http://www.gravatar.com/blavatar/1b0e7838e53455cdcc9f41b08c0f496d?s=96&amp;d=http://s2.wp.com/i/buttonw-com.png</logo>
      <link href="http://swtools.wordpress.com/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://swtools.wordpress.com" rel="alternate" type="text/html"/>
      <link href="http://swtools.wordpress.com/osd.xml" rel="search" type="application/opensearchdescription+xml"/>
      <link href="http://swtools.wordpress.com/?pushpress=hub" rel="hub" type="text/html"/>
      <subtitle>Do one thing well, and work together.</subtitle>
      <title>Software Tools</title>
      <updated>2010-03-05T21:00:22Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-2629813730017430194</id>
    <link href="http://reneefrench.blogspot.com/feeds/2629813730017430194/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=2629813730017430194" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2629813730017430194" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2629813730017430194" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/gap.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S21YW-msAEI/AAAAAAAACTA/TR0g60kHeR4/s1600-h/hdaycreatsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5435097477091688514" src="http://3.bp.blogspot.com/_va9O40qIhaE/S21YW-msAEI/AAAAAAAACTA/TR0g60kHeR4/s320/hdaycreatsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 310px; height: 320px;"/></a>gap<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-2629813730017430194?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-09T11:53:00Z</updated>
    <published>2010-02-09T11:53:00Z</published>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-05T14:57:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-4929950041227209263</id>
    <link href="http://reneefrench.blogspot.com/feeds/4929950041227209263/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=4929950041227209263" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/4929950041227209263" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/4929950041227209263" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/sausage-skin-king.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://1.bp.blogspot.com/_va9O40qIhaE/S21XO2Ki0UI/AAAAAAAACS4/5Zw1s2O-fBQ/s1600-h/hdaymov31sm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5435096237875581250" src="http://1.bp.blogspot.com/_va9O40qIhaE/S21XO2Ki0UI/AAAAAAAACS4/5Zw1s2O-fBQ/s320/hdaymov31sm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 207px; height: 320px;"/></a>sausage skin king<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-4929950041227209263?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-07T11:48:00Z</updated>
    <published>2010-02-07T11:48:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="line drawings"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-05T08:58:49Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-4684223483086743509</id>
    <link href="http://reneefrench.blogspot.com/feeds/4684223483086743509/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=4684223483086743509" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/4684223483086743509" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/4684223483086743509" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/blog-post.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://2.bp.blogspot.com/_va9O40qIhaE/S24BXUoYKUI/AAAAAAAACT4/bkpgDDdvHXU/s1600-h/hdaymovbed30sm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5435283300469451074" src="http://2.bp.blogspot.com/_va9O40qIhaE/S24BXUoYKUI/AAAAAAAACT4/bkpgDDdvHXU/s320/hdaymovbed30sm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 229px;"/></a><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-4684223483086743509?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-06T23:55:15Z</updated>
    <published>2010-02-06T23:54:00Z</published>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-04T08:16:47Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-7369486875687078481</id>
    <link href="http://reneefrench.blogspot.com/feeds/7369486875687078481/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=7369486875687078481" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/7369486875687078481" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/7369486875687078481" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/it-wasnt-invented-yet.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://1.bp.blogspot.com/_va9O40qIhaE/S2utUC0_wPI/AAAAAAAACSQ/txKigfM7fLY/s1600-h/hdaydogwatersm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5434627935220777202" src="http://1.bp.blogspot.com/_va9O40qIhaE/S2utUC0_wPI/AAAAAAAACSQ/txKigfM7fLY/s320/hdaydogwatersm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 246px; height: 320px;"/></a>it wasn't invented yet<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-7369486875687078481?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-06T17:31:00Z</updated>
    <published>2010-02-06T17:31:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-03T02:19:31Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:qedragon:98791</id>
    <link href="http://qedragon.livejournal.com/98791.html" rel="alternate" type="text/html"/>
    <link href="http://qedragon.livejournal.com/data/atom/?itemid=98791" rel="self" type="text/xml"/>
    <title>More reading material</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">PL hackery:<br/><br/><a href="http://www.cs.rutgers.edu/~ccshan/prepose/prepose.pdf">http://www.cs.rutgers.edu/~ccshan/prepose/prepose.pdf</a> -- Kiselyov, Oleg and Shan, Chung-chieh.  Functional Pearl: Implicit Conﬁgurations —or, Type Classes Reﬂect the Values of Types.<br/><br/><a href="http://www.cs.rutgers.edu/~ccshan/tagless/jfp.pdf">http://www.cs.rutgers.edu/~ccshan/tagless/jfp.pdf</a> -- Carette, Jacques and Kiselyov, Oleg and Shan, Chung-chieh.  Finally Tagless, Partially Evaluated, Tagless Staged Interpreters for Simpler Typed Languages.<br/><br/>PL Theory:<br/><br/><a href="http://www.cis.upenn.edu/~bcpierce/papers/lti-toplas.pdf">http://www.cis.upenn.edu/~bcpierce/papers/lti-toplas.pdf</a> -- Pierce, Benjamin C. and Turner, David N.  Local Type Inference.<br/><br/><a href="http://www.cis.upenn.edu/~bcpierce/FOOL/papers9/shields.pdf">http://www.cis.upenn.edu/~bcpierce/FOOL/papers9/shields.pdf</a> -- Shields, Mark and Jones, Simon Peyton.  First-Class Modules for Haskell<br/><br/>Formally verified compilers:<br/><br/><a href="http://www.cl.cam.ac.uk/~mom22/jit/jit.pdf">http://www.cl.cam.ac.uk/~mom22/jit/jit.pdf</a> -- Myreen, Magnus O.  Veriﬁed Just-In-Time Compiler on x86.<br/><br/>Logic programming:<br/><br/><a href="http://www.cs.sunysb.edu/~tswift/webpapers/tplp-submit.pdf">http://www.cs.sunysb.edu/~tswift/webpapers/tplp-submit.pdf</a> -- Swift, Terrance and Warren, David S.  XSB: Extending Prolog with Tabled Logic Programming</div>
    </content>
    <updated>2010-02-05T23:59:50Z</updated>
    <published>2010-02-05T23:59:50Z</published>
    <category term="papers"/>
    <source>
      <id>urn:lj:livejournal.com:atom1:qedragon</id>
      <author>
        <name>Quod Erat Dragon</name>
      </author>
      <link href="http://qedragon.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://qedragon.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>... that which was a dragon.</subtitle>
      <title>Quod Erat Dragon</title>
      <updated>2010-02-05T23:59:50Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6989726062940083922.post-2317888286763766146</id>
    <link href="http://robpike.blogspot.com/feeds/2317888286763766146/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=6989726062940083922&amp;postID=2317888286763766146" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default/2317888286763766146" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default/2317888286763766146" rel="self" type="application/atom+xml"/>
    <link href="http://robpike.blogspot.com/2010/02/clouds-jan-30-2010.html" rel="alternate" type="text/html"/>
    <title>Clouds Jan 30, 2010</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://2.bp.blogspot.com/_Fpj1cqLIn_Y/S2vqHpPS_WI/AAAAAAAABsA/Rmn4o1xDR6M/s1600-h/Cloud-2010-01-30.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5434694792402632034" src="http://2.bp.blogspot.com/_Fpj1cqLIn_Y/S2vqHpPS_WI/AAAAAAAABsA/Rmn4o1xDR6M/s400/Cloud-2010-01-30.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 400px; height: 269px;"/></a><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6989726062940083922-2317888286763766146?l=robpike.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-05T09:51:45Z</updated>
    <published>2010-02-05T09:50:00Z</published>
    <author>
      <name>rob</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/18259238879445421354</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6989726062940083922</id>
      <author>
        <name>rob</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/18259238879445421354</uri>
      </author>
      <link href="http://robpike.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://robpike.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <title>rob pike</title>
      <updated>2010-03-18T03:38:46Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-1523194850700052327</id>
    <link href="http://thenewsh.blogspot.com/feeds/1523194850700052327/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/mccain-flip-flop.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/1523194850700052327" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/1523194850700052327" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/mccain-flip-flop.html" rel="alternate" type="text/html"/>
    <title>McCain flip-flop</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">The daily show catches a McCain flip-flop. Four years ago:<br/><blockquote>The day that the leadership of the military comes to me and says "senator, we ought to change the policy" then I think we ought to consider seriously changing it.</blockquote>But today when the leadership of the military asks to repeal don't ask/don't tell:<br/><blockquote>I'm deeply disappointed in your statement [...] In this moment of immense hardship for the armed services we should not be looking to overturn don't ask/don't tell.</blockquote>There's also a good op-ed by John Oliver on why we should have a don't ask/don't tell policy on people approaching old age.<br/><br/><table cellpadding="0" cellspacing="0" height="353" style=""><tbody><tr style="background-color: #e5e5e5;" valign="middle"><td style="padding: 2px 1px 0px 5px;"><a href="http://www.thedailyshow.com/" style="color: #333333; font-weight: bold; text-decoration: none;" target="_blank">The Daily Show With Jon Stewart</a></td><td style="font-weight: bold; padding: 2px 5px 0px 5px; text-align: right;">Mon - Thurs 11p / 10c</td></tr><tr style="height: 14px;" valign="middle"><td colspan="2" style="padding: 2px 1px 0px 5px;"><a href="http://www.thedailyshow.com/watch/wed-february-3-2010/a-few-gay-men---women" style="color: #333333; font-weight: bold; text-decoration: none;" target="_blank">A Few Gay Men &amp; Women</a><a href="http://thenewsh.blogspot.com/feeds/posts/default"/></td></tr><tr style="background-color: #353535; height: 14px;" valign="middle"><td colspan="2" style="overflow: hidden; padding: 2px 5px 0px 5px; text-align: right; width: 360px;"><a href="http://www.thedailyshow.com/" style="color: #96deff; font-weight: bold; text-decoration: none;" target="_blank">www.thedailyshow.com</a></td></tr><tr valign="middle"><td colspan="2" style="padding: 0px;">&lt;embed allowfullscreen="true" allownetworking="all" allowscriptaccess="always" bgcolor="#000000" flashvars="autoPlay=false" height="301" src="http://media.mtvnservices.com/mgid:cms:item:comedycentral.com:263464" style="display: block;" type="application/x-shockwave-flash" width="360" wmode="window"&gt;&lt;/embed&gt;</td></tr><tr style="height: 18px;" valign="middle"><td colspan="2" style="padding: 0px;"><table cellpadding="0" cellspacing="0" height="100%" style="margin: 0px; text-align: center;"><tbody><tr valign="middle"><td style="padding: 3px; width: 33%;"><a href="http://www.thedailyshow.com/full-episodes" style="color: #333333; font: 10px arial; text-decoration: none;" target="_blank">Daily Show<br/>Full Episodes</a></td><td style="padding: 3px; width: 33%;"><a href="http://www.indecisionforever.com/" style="color: #333333; font: 10px arial; text-decoration: none;" target="_blank">Political Humor</a></td><td style="padding: 3px; width: 33%;"><a href="http://www.thedailyshow.com/videos/tag/health" style="color: #333333; font: 10px arial; text-decoration: none;" target="_blank">Health Care Crisis</a></td></tr></tbody></table></td></tr></tbody></table><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-1523194850700052327?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-04T18:08:43Z</updated>
    <published>2010-02-04T18:08:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="news"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="civil rights"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="pundit"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="comedy"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-8369760156686540773</id>
    <link href="http://thenewsh.blogspot.com/feeds/8369760156686540773/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/western-union-man-and-other-great-419.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/8369760156686540773" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/8369760156686540773" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/western-union-man-and-other-great-419.html" rel="alternate" type="text/html"/>
    <title>Western Union Man, and other great 419 heros</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">If you hate 419 scams and you love pranks, you'll probably be a big fan of <a href="http://www.419eater.com/index.php">419eaters</a>. They scam the scammers, tying up their time and ridiculing them. Here's some <a href="http://forum.419eater.com/forum/viewtopic.php?t=177394">brilliance from their forums</a>, it's Western Union Man!<br/><a href="http://forum.419eater.com/forum/viewtopic.php?t=177394"><img src="http://www.thenewsh.com/~newsham/x/art/WUMAN.jpg"/></a><br/>That's a picture of an actual scammer that the scam baiter got him to take of himself.<br/><br/>If you're looking for something elaborate, check out <a href="http://www.419eater.com/html/SkeletonCoast/safari2.html">http://www.419eater.com/html/SkeletonCoast/safari2.html</a>.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-8369760156686540773?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-04T17:48:37Z</updated>
    <published>2010-01-30T05:03:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="comedy"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="consumer"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-8082954141980125536.post-7431555927693868235</id>
    <link href="http://research.swtch.com/feeds/7431555927693868235/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=8082954141980125536&amp;postID=7431555927693868235" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default/7431555927693868235" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default/7431555927693868235" rel="self" type="application/atom+xml"/>
    <link href="http://research.swtch.com/2010/02/names.html" rel="alternate" type="text/html"/>
    <title>Names</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p class="lp">Every programmer has a variable naming philosophy.
This is mine:
</p>

<blockquote>
<p class="pp">
<i>A name's length should not exceed its information content.</i>
For a local variable, the name <code>i</code> conveys
as much information as <code>index</code> or <code>idx</code> and is quicker to read.
Similarly, <code>i</code> and <code>j</code> are a better pair of names for
index variables than <code>i1</code> and <code>i2</code> (or, worse, <code>index1</code> and <code>index2</code>),
because they are easier to tell apart when skimming
the program.
Global names must convey relatively more information,
because they appear in a larger variety of contexts.
Even so, a short, precise name can say more than a long-winded one:
compare 
<a href="http://www.google.com/codesearch?q=acquire"><code>acquire</code></a>
and <a href="http://www.google.com/codesearch?q=take_?ownership"><code>take_ownership</code></a>.
Make every name <a href="http://www.bartleby.com/141/strunk5.html#13">tell.</a>
</p>
</blockquote>

<p class="lp">The information content metric gives a quantitative
argument against long-winded names: they're simply inefficient.
I internalized this metric years ago but only realized this phrasing of it
recently,
perhaps because I have been looking at
<a href="http://www.google.com/codesearch?q=getParametersAsNamedValuePairArray">too</a> <a href="http://www.google.com/codesearch?q=org\.apache\.commons\.httpclient\.MultiThreadedHttpConnectionManager">much</a> <a href="http://www.google.com/codesearch?q=com\.google\.common\.base\.FinalizablePhantomReference">Java</a> <a href="http://www.google.com/codesearch?q=&quot;public+static+void+main&quot;">code</a>.
</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/8082954141980125536-7431555927693868235?l=research.swtch.com" width="1"/></div></div>
    </content>
    <updated>2010-02-04T17:00:01Z</updated>
    <published>2010-02-04T17:00:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="notation"/>
    <author>
      <name>rsc</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/12988172038803189837</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-8082954141980125536</id>
      <author>
        <name>rsc</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06357099531993534337</uri>
      </author>
      <link href="http://research.swtch.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://research.swtch.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Computer programming links, collected by
<a href="http://swtch.com/~rsc/">Russ Cox</a>.  Updated sporadically.</div>
      </subtitle>
      <title>research!rsc</title>
      <updated>2010-03-18T16:00:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-7109128012154254608</id>
    <link href="http://reneefrench.blogspot.com/feeds/7109128012154254608/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=7109128012154254608" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/7109128012154254608" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/7109128012154254608" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/bulb.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S2luAEhMZXI/AAAAAAAACSA/rjnwxN8MOew/s1600-h/hdaymovbed9sm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5433995372891235698" src="http://4.bp.blogspot.com/_va9O40qIhaE/S2luAEhMZXI/AAAAAAAACSA/rjnwxN8MOew/s320/hdaymovbed9sm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 319px; height: 320px;"/></a><br/><div>bulb</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-7109128012154254608?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-04T12:36:19Z</updated>
    <published>2010-02-04T09:00:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="line drawings"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-02T18:49:37Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-1258297973174408821</id>
    <link href="http://reneefrench.blogspot.com/feeds/1258297973174408821/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=1258297973174408821" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/1258297973174408821" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/1258297973174408821" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/horn-4.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://1.bp.blogspot.com/_va9O40qIhaE/S2q832yZjDI/AAAAAAAACSI/85JG0zcib2s/s1600-h/hdaymov18sm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5434363568161655858" src="http://1.bp.blogspot.com/_va9O40qIhaE/S2q832yZjDI/AAAAAAAACSI/85JG0zcib2s/s320/hdaymov18sm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 199px; height: 320px;"/></a>horn 4<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-1258297973174408821?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-04T12:27:36Z</updated>
    <published>2010-02-05T12:25:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="line drawings"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-03-02T18:49:37Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6559550810260622787.post-5854024706612828727</id>
    <link href="http://inferno-rus.blogspot.com/feeds/5854024706612828727/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://inferno-rus.blogspot.com/2010/02/inferno-beagleboard.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6559550810260622787/posts/default/5854024706612828727?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6559550810260622787/posts/default/5854024706612828727?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://inferno-rus.blogspot.com/2010/02/inferno-beagleboard.html" rel="alternate" type="text/html"/>
    <title>Inferno на BeagleBoard</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Собственно вот:<br/><a href="http://1.bp.blogspot.com/_Un5Z9o1exdE/S2nDMgev_9I/AAAAAAAAAB8/-f6p_okfc3o/s1600-h/wm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5434089045043970002" src="http://1.bp.blogspot.com/_Un5Z9o1exdE/S2nDMgev_9I/AAAAAAAAAB8/-f6p_okfc3o/s320/wm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 240px; height: 320px;"/></a><br/>Подробности тут: http://inferno-hell.blogspot.com/2010/02/beagleboard-dviinfernogui.html (если, конечно, кто-нибудь сможет понять).<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6559550810260622787-5854024706612828727?l=inferno-rus.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-03T18:42:07Z</updated>
    <published>2010-02-03T18:37:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="&#x441;&#x441;&#x44B;&#x43B;&#x43A;&#x438;"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="&#x440;&#x435;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x441;&#x442;&#x44C;"/>
    <author>
      <name>j1m</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06224950953627370147</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6559550810260622787</id>
      <author>
        <name>j1m</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06224950953627370147</uri>
      </author>
      <link href="http://inferno-rus.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://inferno-rus.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6559550810260622787/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/Inferno-rus" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Все об операционной системе Inferno на русском</subtitle>
      <title>OS Inferno</title>
      <updated>2010-03-14T09:39:27Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-507603107282083416</id>
    <link href="http://reneefrench.blogspot.com/feeds/507603107282083416/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=507603107282083416" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/507603107282083416" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/507603107282083416" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/pcox.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S2ltsAhEVhI/AAAAAAAACR4/kTqUOdjKAw0/s1600-h/hdaymov11sm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5433995028219581970" src="http://4.bp.blogspot.com/_va9O40qIhaE/S2ltsAhEVhI/AAAAAAAACR4/kTqUOdjKAw0/s320/hdaymov11sm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 174px; height: 320px;"/></a>pcox<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-507603107282083416?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-03T12:36:39Z</updated>
    <published>2010-02-03T12:35:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="line drawings"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-28T02:14:57Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-911307512458983287</id>
    <link href="http://thenewsh.blogspot.com/feeds/911307512458983287/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/dare.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/911307512458983287" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/911307512458983287" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/dare.html" rel="alternate" type="text/html"/>
    <title>A dare</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I dare you to <a href="http://www.pbs.org/wgbh/pages/frontline/digitalnation/view/">watch this Frontline episode</a> all the way through without IRCing, texting, blogging, checking your email, watching a youtube video or calling anyone up. I wasn't able to.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-911307512458983287?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-03T03:34:18Z</updated>
    <published>2010-02-03T03:33:00Z</published>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-7011344946969943877</id>
    <link href="http://thenewsh.blogspot.com/feeds/7011344946969943877/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/firefox-chinese-root-cert-dns-and-trust.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/7011344946969943877" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/7011344946969943877" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/02/firefox-chinese-root-cert-dns-and-trust.html" rel="alternate" type="text/html"/>
    <title>Firefox, Chinese root cert, DNS and trust</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">This <a href="http://lwn.net/Articles/372264/">article alerting us that Firefox trusts a Chinese root certificate</a> has some people worried. There's probably good reason for this. But, the truth is that there are an outrageous number of untrustworthy root certificates in root caches of just about any browser. There is also a legitimate need for China to issue certificates. The more important issue here is that we all put our full trust in every one of these root certificates. Why? This violates the principle of <a href="http://en.wikipedia.org/wiki/Principle_of_least_privilege">least privilege</a>. We would all be better off if SSL certificate authorities were bound to the domain system and limited in scope to a particular subdomain. For example, some certificates authorities should be able to issue certificates for dot-uk addresses, but a Chinese CA definitely shouldn't. But don't hold your breath waiting for this to happen. The certificate authorities make a metric buttload selling certificates for each and every  domain name you want to have an SSL certificate for. If CAs were tied closely to domains it would be possible to buy a single CA cert for your entire domain and you would be able to generate as many site certificates as you wanted to. End of revenue stream.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-7011344946969943877?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-02T19:54:23Z</updated>
    <published>2010-02-02T19:54:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="news"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="pundit"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="security"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="consumer"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-8082954141980125536.post-2078765758467099705</id>
    <link href="http://research.swtch.com/feeds/2078765758467099705/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=8082954141980125536&amp;postID=2078765758467099705" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default/2078765758467099705" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default/2078765758467099705" rel="self" type="application/atom+xml"/>
    <link href="http://research.swtch.com/2010/02/gos-package-name-space.html" rel="alternate" type="text/html"/>
    <title>Go's Package Name Space</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p class="lp">Go organizes programs into individual pieces called packages.
A package gets to pick a short name for itself, like <code>vector</code>,
even if the <code>import</code> statement must use a longer path like <code>"container/vector"</code>
to name the file where the compiled code is installed.
The early Go compilers used the package name as a unique identifier
during linking, so that <code>vector</code>'s <code>New</code> function
could be distinguished from <code>list</code>'s <code>New</code>.
In the final binary, one was <code>vector.New</code> and the other <code>list.New</code>.
As we started to fill out the standard library, it became clear that we needed
to do something about managing the package name space:
if multiple packages tried to be package <code>vector</code>,
their symbols would collide in the linker.
For a while we considered segmenting the name space,
reserving lower-case names for standard packages
and upper-case names for local packages.
(Since package names and object file names are 
conventionally the same, one reason not to do this
is that it would require a case-sensitive file system.)
</p>

<p class="pp">Other languages simply use longer names.
Both Java and Python tie the name to the directory in which
the package is found, as in <code>com.java.google.WebServer</code>
for the code in <code>com/java/google/WebServer.class</code>.
In practice this leads to unnecessarily long identifiers, something
Go tries to avoid.
It also ties the name to a particular mechanism for finding code: a file system.
One of the reasons that import paths are string constants in Go is
so that it is easy to substitute other notations, like URLs.
</p>

<p class="pp">Last spring, during a long discussion about how to divide up the
package name space,
Robert Griesemer cut the Gordian knot by suggesting that
we allow multiple packages to choose a single name and
fix the tool chain to cope.
The <a href="http://golang.org/doc/go_spec.html#Import_declarations">import statement</a> already allows introducing
a local alias for the package during the import, so there's no
linguistic reason package names have to be unique.
We all agreed that this was the right approach, but we weren't
sure how to implement it.
Other considerations, like the open source release,
took priority during most of 2009, but we recently returned to the problem.
</p>

<p class="pp">Ultimately, the linker needs some unique name for
each symbol in the program; the fundamental problem caused by
deciding that package names won't be unique is to find
another source of uniqueness that fits into the tool chain well.</p>

<p class="pp">The best approach* seems to be to use
the package's import path as the unique identifier,
since it must uniquely identify the package in the
import statement already.
Then <code>container/vector</code>'s <code>New</code> is 
<code>container/vector.New</code>.
But!  When you're compiling a package, 
how does the compiler know what the package's import path will be?
The package statement just says <code>vector</code>, and while
every compilation that imports <code>"container/vector"</code> knows the import path,
the compilation of <code>vector</code> itself does not,
because compilation is handled separately from
installing the binary in its final, importable location.
</p>

<p class="pp">Last week I changed the gc compiler suite to do this. 
My solution to the import path question
was to introduce a special
name syntax that refers to “this package's import path.”
Because the import paths
are string literals in the Go compiler metadata, I chose the empty string—<code>""</code>—as the
self-reference name.
Thus, in the object file for package <code>vector</code>, the local symbol
<code>New</code> is written <code>"".New</code>.
When the linker reads the object file, it knows what
import path it used to find the file.  It substitutes that path
for the <code>""</code>, producing, in this case, the unique name
<code>container/vector.New</code>.</p>

<p class="pp">Not embedding a package's final installed location
in its object file makes the object files easy to move
and duplicate.  For example,
consider this trivial package:</p>

<pre class="indent">package seq
var n int
func Next() int {
    n++
    return n
}
</pre>

<p class="lp">It's valid for a Go program to import the same path multiple
times using different local names, but all the names end up referring
to the same package:
</p>

<pre class="indent">package main

import (
    "fmt"
    s "seq" // changed to "seq1" later
    t "seq"
)

func main() {
    fmt.Println(s.Next(), s.Next(), t.Next(), t.Next())
}
</pre>

<p class="lp">prints <code>1 2 3 4</code>, because it all four calls are to the same <code>Next</code> function:</p>

<pre class="indent">$ 6g seq.go
$ 6g -I. main.go
$ 6l -L. main.6
$ 6.out
1 2 3 4
$ 
</pre>

<p class="lp">But if we change one of the imports to say <code>"seq1"</code>
and then merely copy the <code>"seq"</code> binary to <code>"seq1"</code>,
we've created a distinct package, using lowly <code>cp</code> instead of a compiler:
</p>

<pre class="indent">$ cp seq.6 seq1.6
$ ed main.go
120
/seq
 s "seq"
s/seq/seq1
 s "seq1"
wq
121
$ 6g -I. main.go
$ 6l -L. main.6
$ 6.out
1 2 1 2
$ 
</pre>

<p class="lp">Now the <code>s.Next</code> calls refer to <code>seq1.6</code>'s <code>Next</code>,
while the <code>t.Next</code> calls refer to <code>seq.6</code>'s <code>Next</code>.
Duplicating the object actually duplicated the code.
This is very different from the behavior of a traditional C compiler and linker.</p>

<p class="pp">A digression: the explicit <code>"".</code> prefix is not strictly necessary.
It would be cleaner
if the linker treated every symbol as needing to be qualified by the
import path, so that all the <code>"".</code> could be dropped.
But occasionally it's important to be able to break the rules,
for example to define a symbol that is logically in one package
be implemented in another.  For example,
the implementation of <a href="http://golang.org/pkg/unsafe/#Reflect"><code>unsafe.Reflect</code></a> is actually
in the binary for <a href="http://golang.org/pkg/runtime/">package <code>runtime</code></a>,
because that's where all the interface manipulation code lives:
</p>

<pre class="indent">$ 6nm pkg/darwin_amd64/runtime.a|grep Reflect
iface.6: T unsafe.Reflect
$
</pre>

<p class="lp">
Another reason to use an explicit prefix is to admit
names with no prefix at all, as would be generated by legacy C code.
Otherwise, what should C's <code>printf</code> be in?
If the linker enforced a strict boundary between packages,
both of these examples would be impossible.
Most of the time that would be a good thing, but
systems languages do not have the luxury of stopping
at “most of the time.”
Last October, a few weeks before the public release of Go,
I changed the linker to insert import path qualifiers on all names
during linking, but it was too disruptive a change to commit
before the release.
Last week's implementation, which allows for semipermeable package boundaries,
is a much better fit for Go.
</p>

<p class="pp">This week Ian Lance Taylor is working on eliminating the
global package name space assumption in gccgo.
He'd like to avoid making changes to the linker,
which rules out introducing a “this package” notation like <code>""</code>.
Gccgo must be able to write objects that know their own import paths,
which means gccgo must know the import path at compile time.
But how?  There will be a new gccgo command line option, and the build system
will simply tell the compiler what the import path is.
</p>

<p class="pp">In retrospect, I wonder if the effort of <code>""</code> in
the gc tool chain was justified compared to adding an option.
The gc implementation is easier to use,
but it's not clear how important that will be.
Time will tell.
</p>

<br/>
<p class="lp" style="font-size: small;">
* An alternative approach would be to generate a
<a href="http://en.wikipedia.org/wiki/Globally_Unique_Identifier">random identifier</a> each time the compiler
is invoked and to use it for the package compiled by that run.
When other packages import the compiled package, they can
read the identifier and use it to generate references to that
package's symbols.
The most glaring problem with this approach is that
the symbol names you'd see while debugging would
be ugly, like <a href="http://en.wikipedia.org/wiki/Name_mangling">mangled C++ names</a> but worse.
Another problem is that it would break aggressive
incremental compilation: if <code>fmt</code> gets recompiled,
all packages that import it would have to be recompiled to pick
up the new identifier, even if the external interface hadn't changed.
It would be nice to avoid those recompilations, especially in large programs.
</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/8082954141980125536-2078765758467099705?l=research.swtch.com" width="1"/></div></div>
    </content>
    <updated>2010-02-02T17:00:04Z</updated>
    <published>2010-02-02T17:00:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="compilers"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="self-reference"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="Go"/>
    <author>
      <name>rsc</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/12988172038803189837</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-8082954141980125536</id>
      <author>
        <name>rsc</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06357099531993534337</uri>
      </author>
      <link href="http://research.swtch.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://research.swtch.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Computer programming links, collected by
<a href="http://swtch.com/~rsc/">Russ Cox</a>.  Updated sporadically.</div>
      </subtitle>
      <title>research!rsc</title>
      <updated>2010-03-18T16:00:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-8316997055659382774</id>
    <link href="http://reneefrench.blogspot.com/feeds/8316997055659382774/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=8316997055659382774" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/8316997055659382774" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/8316997055659382774" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/yellowtail.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S2gW5bDcVSI/AAAAAAAACRw/VVC-QP7qxcg/s1600-h/yellowtailhead.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5433618126193055010" src="http://4.bp.blogspot.com/_va9O40qIhaE/S2gW5bDcVSI/AAAAAAAACRw/VVC-QP7qxcg/s320/yellowtailhead.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 231px; height: 320px;"/></a><br/><div>yellowtail</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-8316997055659382774?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-02T12:14:11Z</updated>
    <published>2010-02-03T12:13:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="notes"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-26T04:39:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-3220085944709851017</id>
    <link href="http://reneefrench.blogspot.com/feeds/3220085944709851017/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=3220085944709851017" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/3220085944709851017" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/3220085944709851017" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/hairs.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://2.bp.blogspot.com/_va9O40qIhaE/S2ddohzaleI/AAAAAAAACRg/J_MtrMCylPY/s1600-h/hdaygirlstrawsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5433414426295965154" src="http://2.bp.blogspot.com/_va9O40qIhaE/S2ddohzaleI/AAAAAAAACRg/J_MtrMCylPY/s320/hdaygirlstrawsm.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 248px; height: 320px;"/></a><br/>hairs<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-3220085944709851017?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-02T10:02:00Z</updated>
    <published>2010-02-02T10:02:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-26T04:39:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-9148634568550170254</id>
    <link href="http://reneefrench.blogspot.com/feeds/9148634568550170254/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=9148634568550170254" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/9148634568550170254" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/9148634568550170254" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/02/vija.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://2.bp.blogspot.com/_va9O40qIhaE/S2VE69iPC0I/AAAAAAAACRY/q5Tdxxt1Ac8/s1600-h/hdaygirlfallsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5432824305233627970" src="http://2.bp.blogspot.com/_va9O40qIhaE/S2VE69iPC0I/AAAAAAAACRY/q5Tdxxt1Ac8/s320/hdaygirlfallsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 254px; height: 320px;"/></a>vija<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-9148634568550170254?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-02-01T09:00:00Z</updated>
    <published>2010-02-01T09:00:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-25T13:01:37Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-8514002481209274916</id>
    <link href="http://reneefrench.blogspot.com/feeds/8514002481209274916/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=8514002481209274916" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/8514002481209274916" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/8514002481209274916" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/speckle.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://1.bp.blogspot.com/_va9O40qIhaE/S2T6ZZmprVI/AAAAAAAACRQ/9RLfwIQixc4/s1600-h/hdaypicdogsacsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5432742364792335698" src="http://1.bp.blogspot.com/_va9O40qIhaE/S2T6ZZmprVI/AAAAAAAACRQ/9RLfwIQixc4/s320/hdaypicdogsacsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 240px; height: 320px;"/></a><br/><div>speckle</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-8514002481209274916?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-31T09:34:00Z</updated>
    <published>2010-01-31T09:34:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="photographs"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-24T11:27:30Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-5951673959151200165</id>
    <link href="http://reneefrench.blogspot.com/feeds/5951673959151200165/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=5951673959151200165" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/5951673959151200165" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/5951673959151200165" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/roast.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S2TaI8u6I5I/AAAAAAAACRI/J9tSi5aa_yE/s1600-h/maryfacesm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5432706897792344978" src="http://4.bp.blogspot.com/_va9O40qIhaE/S2TaI8u6I5I/AAAAAAAACRI/J9tSi5aa_yE/s320/maryfacesm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 281px; height: 320px;"/></a><br/><div>roast</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-5951673959151200165?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-31T01:17:42Z</updated>
    <published>2010-01-31T01:17:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="notes"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-23T19:34:27Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-1819477259951255662</id>
    <link href="http://reneefrench.blogspot.com/feeds/1819477259951255662/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=1819477259951255662" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/1819477259951255662" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/1819477259951255662" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/miller.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S2LW87Y_w5I/AAAAAAAACRA/wH14NoKFGFU/s1600-h/hdaydogstrawhalfsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5432140442785268626" src="http://3.bp.blogspot.com/_va9O40qIhaE/S2LW87Y_w5I/AAAAAAAACRA/wH14NoKFGFU/s320/hdaydogstrawhalfsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 263px; height: 320px;"/></a>miller<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-1819477259951255662?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-29T12:39:45Z</updated>
    <published>2010-01-29T12:38:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-23T08:09:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-7038214325266808292</id>
    <link href="http://reneefrench.blogspot.com/feeds/7038214325266808292/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=7038214325266808292" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/7038214325266808292" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/7038214325266808292" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/teacup.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://1.bp.blogspot.com/_va9O40qIhaE/S2EbnPNZYUI/AAAAAAAACQ4/gSYZE8ar6e8/s1600-h/hdaydogsantsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5431652986497098050" src="http://1.bp.blogspot.com/_va9O40qIhaE/S2EbnPNZYUI/AAAAAAAACQ4/gSYZE8ar6e8/s320/hdaydogsantsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 281px; height: 320px;"/></a>teacup<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-7038214325266808292?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-28T17:07:00Z</updated>
    <published>2010-01-28T17:07:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-22T02:12:29Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-11523106.post-3730958422960809532</id>
    <link href="http://graverobbers.blogspot.com/feeds/3730958422960809532/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=11523106&amp;postID=3730958422960809532" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/11523106/posts/default/3730958422960809532" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/11523106/posts/default/3730958422960809532" rel="self" type="application/atom+xml"/>
    <link href="http://graverobbers.blogspot.com/2010/01/9p-overview-slides.html" rel="alternate" type="text/html"/>
    <title>9P Overview Slides</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><div style="width: 425px; text-align: left;">&lt;object height="355" style="margin:0px" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=9pvirtfsoverview-12646254344022-phpapp01&amp;amp;stripped_title=9p-overview"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=9pvirtfsoverview-12646254344022-phpapp01&amp;amp;stripped_title=9p-overview" type="application/x-shockwave-flash" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;</div><br/><br/><a href="http://files.getdropbox.com/u/1355632/9p-overview.m4v">MP4 Video Link</a> or Livestream below:<br/><br/>&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" height="340" id="preview-player1" width="340"&gt;&lt;param name="movie" value="http://cdn.livestream.com/grid/LSPlayer.swf?channel=graverobbers&amp;amp;clip=pla_5da534c4-5d1f-460e-adda-836aee4b514e&amp;amp;autoPlay=false"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="340" id="preview-player" src="http://cdn.livestream.com/grid/LSPlayer.swf?channel=graverobbers&amp;amp;clip=pla_5da534c4-5d1f-460e-adda-836aee4b514e&amp;amp;autoPlay=false" type="application/x-shockwave-flash" width="340"&gt;&lt;/embed&gt;&lt;/object&gt;<div style="font-size: 11px; padding-top: 10px; text-align: center; width: 340px;">Watch <a href="http://www.livestream.com/?utm_source=lsplayer&amp;utm_medium=embed&amp;utm_campaign=footerlinks" title="live streaming video">live streaming video</a> from <a href="http://www.livestream.com/graverobbers?utm_source=lsplayer&amp;utm_medium=embed&amp;utm_campaign=footerlinks" title="Watch graverobbers at livestream.com">graverobbers</a> at livestream.com</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/11523106-3730958422960809532?l=graverobbers.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-28T15:27:32Z</updated>
    <published>2010-01-27T21:00:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="Linux 9P"/>
    <author>
      <name>Eric Van Hensbergen</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/14419208305378243103</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-11523106</id>
      <author>
        <name>Eric Van Hensbergen</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/14419208305378243103</uri>
      </author>
      <link href="http://graverobbers.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/11523106/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://graverobbers.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/11523106/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>This blog is now my public notebook.  In it you'll find rough ideas, designs, and implementation notes as I work through various projects that have been publicly funded or done in my free time.</subtitle>
      <title>Grave Robbers From Outer Space</title>
      <updated>2010-03-07T16:24:53Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-8751338936092805807</id>
    <link href="http://reneefrench.blogspot.com/feeds/8751338936092805807/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=8751338936092805807" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/8751338936092805807" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/8751338936092805807" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/shard.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S2EbWCObLnI/AAAAAAAACQw/t1Q98CckWW4/s1600-h/hdaystrawleftsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5431652690953973362" src="http://3.bp.blogspot.com/_va9O40qIhaE/S2EbWCObLnI/AAAAAAAACQw/t1Q98CckWW4/s320/hdaystrawleftsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 263px; height: 320px;"/></a>shard<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-8751338936092805807?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-28T05:07:09Z</updated>
    <published>2010-01-28T05:06:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-20T01:45:32Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.9gridchan.org/blog/2010/01/03/1_blog_post/</id>
    <link href="http://www.9gridchan.org/blog/2010/01/03/1_blog_post/" rel="alternate" type="text/html"/>
    <title>Saturday, 3 January 2010 - coming soon, updated Qemu image with many new tools</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><h2>Saturday, 3 January 2010 - coming soon, updated Qemu image with many new tools</h2>

<p>Now that recent projects like writable /proc/pid/ns and rootless post kernel load startup have been announced on 9fans, its time to make a new version of the Qemu preinstalled image with all the new stuff. It will include the latest updates of the previous grid software as well as hubfs, grio, and the new startup process - all available optionally, along with the traditional default kernels and configs. However, I am going to try to make the customized environment as compelling as possible, because I'd like to make a good case for the idea that using multiple system nodes, virtualized or not, has practical benefits. Some goals:</p>

<ul>
<li><p>multi-machine aware startup to bind in fileserver and cpu resources early if available</p></li>
<li><p>easier to make use of 9gridchan.org hosted resources - and 9gridchan registry needs more real services</p></li>
<li><p>easy to set up highly unconventional namespace structures coexisting on a single machine (rootless boot helps)</p></li>
<li><p>simple, scripted data replication and machine backup operations</p></li>
<li><p>easy bootstrapping from grid of VMs to physical machines or mixed grid</p></li>
</ul>

<p>Release goal is by the end of January, with a rough spin available for interested testers a week before or so.</p></div>
    </content>
    <updated>2010-01-28T04:50:42Z</updated>
    <author>
      <name>www-data</name>
    </author>
    <source>
      <id>http://www.9gridchan.org/blog/index.atom</id>
      <icon>http://www.9gridchan.org/favicon.ico</icon>
      <link href="http://www.9gridchan.org/blog/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.9gridchan.org/blog/" rel="alternate" type="text/html"/>
      <subtitle>Building a decentralized grid with Plan 9 and Inferno</subtitle>
      <title>The /9/grid</title>
      <updated>2010-03-18T16:00:18Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.9gridchan.org/blog/2009/10/21/1_blog_post/</id>
    <link href="http://www.9gridchan.org/blog/2009/10/21/1_blog_post/" rel="alternate" type="text/html"/>
    <title>Wednesday 21 October 2009 - Overdue Hubfs announcement - improved "screen" utility</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><h2>Wednesday 21 October 2009 - Overdue Hubfs announcement - improved "screen" utility</h2>

<p>Since this has been up on sources for several months now, I really should have announced this here already. Hubfs is an 
improved screen-like tool for Plan 9, implemented as a 9p fs with client. It is much more resource efficient than iosrv and, as 
a 9p fs, much better integrated into the overall system. The user interface is also much more sane. It can be installed from 
the source tarball contrib/mycroftiv/hubfs.tgz, or with contrib/install mycroftiv/hubfs. Basic usage is just 'hub NAME' to 
either start a new shell/hub session or connect to an existing. The manpage explains most of the details. Following completion 
of a solid version of hubfs I hit the burnout threshold as a result of several months of 16 hours a day of Plan 9 and retreated 
to a remote corner of namespace for a couple months. With the arrival of the winter months, however, I have a good excuse to 
turn on all my computers in the service of home heating, and undoubtedly this will result in a renewed burst of development 
energy.</p></div>
    </content>
    <updated>2010-01-28T04:50:42Z</updated>
    <author>
      <name>www-data</name>
    </author>
    <source>
      <id>http://www.9gridchan.org/blog/index.atom</id>
      <icon>http://www.9gridchan.org/favicon.ico</icon>
      <link href="http://www.9gridchan.org/blog/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.9gridchan.org/blog/" rel="alternate" type="text/html"/>
      <subtitle>Building a decentralized grid with Plan 9 and Inferno</subtitle>
      <title>The /9/grid</title>
      <updated>2010-03-18T16:00:18Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.9gridchan.org/blog/2009/07/08/1_blog_post/</id>
    <link href="http://www.9gridchan.org/blog/2009/07/08/1_blog_post/" rel="alternate" type="text/html"/>
    <title>Wednesday 8 July 2009 - Announcing Iosrv - "screen without a screen"</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><h2>Wednesday 8 July 2009 - Announcing Iosrv - "screen without a screen"</h2>

<p>After several weeks of isolation in their underground lab, the /9/grid's
craziest researchers are now unleashing upon the world our 
latest weapon in the struggle for an open collaborative 
decentralized worldwide grid:</p>

<p><strong>Iosrv.tgz</strong></p>

<p>Available on Bell Labs sources - <strong>contrib/install mycroftiv/iosrv</strong> or as a
tarball <em>contrib/mycroftiv/iosrv.tgz</em> to <strong>mk install</strong> at your pleasure, 
or <a href="http://www.9gridchan.org/iosrv/iosrvtarball.tgz">here</a> - this is what happened
when we decided to get serious about screen-like functionality for Plan 9 
while also trying to pursue some tantalizing hints about some of Doug McIlroy's
original ideas that led to the creation of UNIX pipes. <em>Iosrv</em> (which is
controlled via a wrapper scrip called <strong>io</strong> for both the clients and server)
does not emulate a terminal in the manner GNU screen does - instead, it
follows the Plan 9 principle of staying close to file i/o fundamentals and
provides multiplexed buffered pipes that can be attached to the three standard
file descriptors used by textual environment programs such as the <em>rc</em> shell.</p>

<p>As a consequence of this, we have some new tricks, and here's the best one:</p>

<p><em>The clients attached to an iosrv can all share locally executing shells with 
each other in addition to using the shells on the iosrv host</em></p>

<p>The standard model of usage that corresponds to how GNU screen works is for
clients to attach to an existing iosrv in an imported /srv 
(started with a command like <em>io rcjul15</em> on the iosrv remote host )
using the io wrapper script:</p>

<p><strong>io SRVNAME</strong></p>

<p>This command connects to an existing /srv/srvname. Once connected, additional commands will be trapped by the client. To create and attach to new shells hosted by the iosrv remote machine with
the command <em>remote</em> # where '#' is a multiple of 3. The first new shell might be created with:</p>

<p><strong>remote 3</strong></p>

<p>followed by subsequent shells created by replacing '3' with successively larger multiples of 3 as the number of backed shells increases. (Each shell uses 3 file descriptors)
To move between shells after they have been created, <em>attach</em> # will connect to previously created <em>rc</em> shell Hubs.</p>

<p><strong>attach 0</strong></p>

<p>will move back to the set of file descriptors beginning at Hub 0. (More on Hubs in a moment).
The new trick is to start a new shell like this:</p>

<p><strong>local 6</strong></p>

<p>which will start a new rc shell on the CLIENT machine, but connect its i/o
file descriptors to the remote iosrv HOST. The consequence is that the locally
executing rc becomes <em>shared</em> back to the iosrv, and other clients of the remote
host can attach to it using</p>

<p><strong>attach 6</strong></p>

<p>and the shell running on your machine is available to them exactly as a shell
running on the <em>iosrv</em> host. In other words, <em>iosrv</em> really does 'serve i/o' and
doesn't care what's considered the client or server from the viewpoint of the user, it just pipes data back and forth to whatever its pipe Hubs are connected to.</p>

<p>Ok, there's that word again - Hub - the Hub is the low level data structure iosrv
uses to organize connections. Following Pike's classic dictum that "data dominates", we are
offering a new variant of an old abstraction, the pipe. A Hub is a pipe, but it has multiple nozzles on each end. It accepts multiple simultaneous
readers and writers and allows them to connect and disconnect independently to and from
the flow of data in real time. The core <em>iosrv</em> knows nothing of rc, or shells, it simply manages a set of file descriptors connected to Hubs.
A standard shell has 3 open file descriptors, so 3 Hubs allow an arbitrary number of 
clients to all make use of the same shell. Adding a new shell simply means creating 3 new Hubs and then starting an <em>rc</em> using file descriptors managed by that iosrv.
This why standard <em>attach</em>, <em>remote</em>, and <em>local</em> commands always take a multiple of 3 as their numeric parameter.</p>

<p>On the client side, a smaller program called <em>ioshell</em> navigates the forest of
piped file descriptors for the user, acting to connect the file descriptors of
the initiating client to the Hubs provided by <em>iosrv</em>. It also monitors user
input for command strings and then takes actions or passes them to <em>iosrv</em>s ctl
file as appropriate.</p>

<p>The <em>iosrv</em> is completely parallel, forking off independent processes for reading
and writing each connected file descriptor. It is not uncommon for a busy <em>iosrv</em> to
be coordinating 50-100 running processes and holding double that many file descriptors.
This will not however clog the host system, because all processes use QLocks and/or blocking reads to control
execution, yield execution frequently, and each Hub has individually tunable process cycle sleeptime. Testing shows that even a low resource Qemu based
virtual machine can easily handle multiple simultaneous clients and servers to multiple local and remote <em>rc</em> shells.</p>

<p>The <em>iosrv</em> also provides fine-grained control over resources for the user, although the interface to this is a work in progress.
Using <em>iosrv</em> for screen-like functionality is its main intended purpose, but the design is deliberately open-ended.
It is already possible to use <em>iosrv</em> as a kind of greatly expanded 'tee' for data streams
and we will be trying to prototype some multinode applications that pipe data around
in constant loops between them.</p>

<p>We have been using <em>iosrv</em> heavily and testing it extensively. It is not perfectly
polished but we have found it to be stable, reliable, and functional in its current state. Suggestions for features and code improvements always welcome.</p>

<p><em>Look for shared public shell exports as services in the 9gridchan.org 9p service registry soon, also.</em></p></div>
    </content>
    <updated>2010-01-28T04:50:42Z</updated>
    <author>
      <name>www-data</name>
    </author>
    <source>
      <id>http://www.9gridchan.org/blog/index.atom</id>
      <icon>http://www.9gridchan.org/favicon.ico</icon>
      <link href="http://www.9gridchan.org/blog/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.9gridchan.org/blog/" rel="alternate" type="text/html"/>
      <subtitle>Building a decentralized grid with Plan 9 and Inferno</subtitle>
      <title>The /9/grid</title>
      <updated>2010-03-18T16:00:18Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.9gridchan.org/blog/2009/06/18/1_blog_post/</id>
    <link href="http://www.9gridchan.org/blog/2009/06/18/1_blog_post/" rel="alternate" type="text/html"/>
    <title>Thursday 18 June 2009 - screen functionality in a few lines of rc</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><h2>Thursday 18 June 2009 - screen functionality in a few lines of rc</h2>

<p>This is an extension of the earlier post - this is a pair of scripts intended to be used on nodes setup 
similarly to those described in 'reversed remote execution' - it allows shared terminals to have persistent state 
in the background with the ability to be pushed onto the remote clients (which are providing rio as a service).</p>

<pre>#! /bin/rc
# start up an rc with its i/o connected to pipes set
# this monitors and its window should be set to scroll if not backgrounded

mkdir /tmp/wpin
mkdir /tmp/wpinclone
mkdir /tmp/wpout1
mkdir /tmp/wpout2
mkdir /tmp/wpout3
bind '#|' /tmp/wpin
bind '#|' /tmp/wpinclone
bind '#|' /tmp/wpout1
bind '#|' /tmp/wpout2
bind '#|' /tmp/wpout3
window -m
rc &lt;{tee /tmp/wpinclone/data &lt; /tmp/wpin/data1} | tee /tmp/wpout1/data /tmp/wpout2/data /tmp/wpout3/data


#! /bin/rc
# attach to a copy of grc using wpout $1 and push to a second wsys also

mount $wsys /mnt/wsys new
bind -b /mnt/wsys /dev
read -m /tmp/wpout$1/data1 | tee /dev/cons &amp;
read -m /dev/cons | tee /tmp/wpin/data &amp;
cat &gt;&gt; /tmp/wpin/data

</pre>

<p>The usage model is probably not exactly transparent from these scripts - the first script is named <strong>grc</strong> 
and it creates a set of pipes and starts an rc with its input and output redirected to them. This is what creates
the 'screen' like functionality - any number of processes can control the shell by writing to /tmp/wpin/data, and 
as many clients can read the output as there are teed output pipes. Window -m is started after binds to provide a 
seed window - you will probably want to start more than one additional window -m to preserve access to the pipes 
in the namespace.</p>

<p>The second script I name <strong>getgrc</strong> and it assumes that you have set $wsys to a traget window system, then starts a new window on it and 
connects the i/o of both the remote and the local window to the specified output pipe. It should be noted that the 
quasi-screen functionality is independent of the idea of mounting a remote window system and using i/o from both/either location. If you want a simple screen equivalent, simply making the pipes and starting the rc with i/o redirections allows multiple clients to use it by connecting to the piped files.</p></div>
    </content>
    <updated>2010-01-28T04:50:42Z</updated>
    <author>
      <name>www-data</name>
    </author>
    <source>
      <id>http://www.9gridchan.org/blog/index.atom</id>
      <icon>http://www.9gridchan.org/favicon.ico</icon>
      <link href="http://www.9gridchan.org/blog/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.9gridchan.org/blog/" rel="alternate" type="text/html"/>
      <subtitle>Building a decentralized grid with Plan 9 and Inferno</subtitle>
      <title>The /9/grid</title>
      <updated>2010-03-18T16:00:18Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.9gridchan.org/blog/2009/06/17/1_blog_post/</id>
    <link href="http://www.9gridchan.org/blog/2009/06/17/1_blog_post/" rel="alternate" type="text/html"/>
    <title>Tuesday 16 June 2009 - Reversed remote execution connections and shared sub rios</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><h2>Tuesday 16 June 2009 - Reversed remote execution connections and shared sub rios</h2>

<p>An experience I continually have with Plan 9 is discovering that everything I have ever wanted to do with computers but have never been able to effectively before can be done with about 3 lines of rc and the standard Plan 9 toolkit. Right now I am gleefully exploring what I find to be an incredibly rich and useful set of possibilities created by rio-as-fileserver. First, let me describe the setup I'm using so you can follow along - you want two plan 9 systems for this, with at least one setup as a CPU server. A pair of Qemu VMs will work fine. Let's just assume you have a pair of CPU servers running, machines A and B, each with a graphical display, rio running, and with a standard exportfs listener on port 17007.</p>

<p>You are working using cpu server A, and your friend is using cpu server B. For convenience, we will describe this as if you have full privileges on each other's machines, but these tricks can also work fine between parties with more limited trust with appropriate modifications to how the filesystem exports are set up. Your goal is to use Plan 9 for some lightweight interactive resource sharing for real time communication and collaboration. Each of you opens a subrio within your main rio session. To start off, you need access to some of machine B's resources. You are working using cpu server A, and you start with:</p>

<p><strong>import -c cpuB /srv /n/cpuBsrv</strong></p>

<p>Now you want to write a message to your friend that will appear on his screen in a new window briefly.</p>

<p><strong>wsys = /n/cpuBsrv/rio.friend.68962</strong></p>

<p><strong>window -m rc -c 'echo hi fred &amp;&amp; sleep 5'</strong></p>

<p>And up on Fred's screen on machine B pops a window saying 'hi fred' that sticks around for 5 seconds, then vanishes. How and why? Because rio is a fileserver, and the window command mounts whatever rio is specified in the $wsys. The window command is actually an rc script that can show us the principles involved for a lot of nice tricks. How about just popping up a window to talk back and forth:</p>

<p><strong>mount /n/cpuBsrv/rio.friend.68962 /mnt/wsys new</strong></p>

<p><strong>bind -b /mnt/wsys /dev</strong></p>

<p><strong>cat /dev/cons &amp;</strong></p>

<p><strong>cat &gt;/dev/cons</strong></p>

<p>And you have created a window on your friends screen, with each of you able to see whatever the other types. This is a perfectly functional and usable way to communicate, and the ability to initiate the connection by making the window appear on demand in the 'shared' rio is an improvement over other simple equivalents like telnet or netcat based direct chat.</p>

<p>Another very simple and useful application is to allow your friend to run an interactive rc on your machine, with the display on his system, while you watch. In other words, he is using your machine in a manner similar to a telnet/ssh login, even though you 'pushed' the window onto his machine. The first two setup lines are the same as before:</p>

<p><strong>mount /n/cpuBsrv/rio.friend.68962 /mnt/wsys new</strong></p>

<p><strong>bind -b /mnt/wsys /dev</strong></p>

<p><strong>exec rc -v &lt; /dev/cons |tee /dev/cons</strong></p>

<p>Now you can watch in real time as your friend uses your system. You can also easily invert this - and let your friend watch what you are doing. Just change the final line to:</p>

<p><strong>exec rc &lt;{tee /dev/cons} |tee /dev/cons</strong></p>

<p>This changes the source of the controlling input to the shell from the remote /dev/cons to the local standard input. I believe both of these simple interaction models provide useful functionality in very direct ways. The real-time mirroring of the textual input and output in a shell window is provided without any of the usual overhead of a tool like VNC viewing and the use of a sub rio session as a container for the shared windows makes sandboxing via namespace manipulation very easy - and it should be noted that sharing a rio service is very different than providing full cpu server functionality, as only the functionality of rio is being exposed to the remote client. These simple filesystem and i/o based operations provided fine grained real time connectivity options with lower overhead and potentially greater security than the predominating methods. </p>

<p>The above commands are very simple and can certainly be improved upon - in particular the standard error is being abused and the prompt and errors will be suppressed for the remote user. I'm certain a lot of Plan 9 users out there have nifty improved versions of these tricks or similar. Using the fileserver properties of rio to create a sandboxed dynamic shared environment is a good fit for the goals of the /9/grid so we'll be posting an example of a scripted 'shared workspace' setup script and commands soon - its a pretty clear upgrade from the current 'grid graffiti wall' to a real-time 'grid graffiti rio!'</p></div>
    </content>
    <updated>2010-01-28T04:50:42Z</updated>
    <author>
      <name>www-data</name>
    </author>
    <source>
      <id>http://www.9gridchan.org/blog/index.atom</id>
      <icon>http://www.9gridchan.org/favicon.ico</icon>
      <link href="http://www.9gridchan.org/blog/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.9gridchan.org/blog/" rel="alternate" type="text/html"/>
      <subtitle>Building a decentralized grid with Plan 9 and Inferno</subtitle>
      <title>The /9/grid</title>
      <updated>2010-03-18T16:00:18Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.9gridchan.org/blog/2009/06/07/1_blog_post/</id>
    <link href="http://www.9gridchan.org/blog/2009/06/07/1_blog_post/" rel="alternate" type="text/html"/>
    <title>Sunday 7 June 2009 - Planning for demo grid setup</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><h2>Sunday 7 June 2009 - Planning for demo grid setup</h2>

<p>We are trying to determine the best way to have a larger set of public services - more nodes, and a demonstration of ideas like the High Availability Grid, an attempt to make a redundant and failproof environment that still maximizes the utility of the attached resources and can be flexibly reconfigured on the fly. Most of the following are things that we have already protyped and tested, but haven't been available through our public portals. Things we'd like to implement (perhaps not all at once):</p>

<ul>
<li><p>A high availability configuration of resources using about 6-8 functional nodes divided between 2-3 physical machines.</p></li>
<li><p>On-demand temporary single VMs </p></li>
<li><p>"The proving grounds" - a combination of both of the above, but with the intention of stability and stress testing for various multimachine configurations.The only way to test 'failproofing' is to force failures and test the ability of the systems to recover.</p></li>
</ul>

<p>We've been doing some testing of VMware server in addition to our normal Qemu/9vx/p9p based setups. We prefer free open source personally, but some people prefer to VMware to qemu so we may begin providing vmware .vmdk images as well as Qemu qcow2s. For anyone who wants to try using vmware now, it is possible to use qemu-img convert to make a vmdk from a .qcow2, but there were a few additional adjustments we needed to make for best results, notably recompiling the included pccpuf kernel.</p></div>
    </content>
    <updated>2010-01-28T04:50:42Z</updated>
    <author>
      <name>www-data</name>
    </author>
    <source>
      <id>http://www.9gridchan.org/blog/index.atom</id>
      <icon>http://www.9gridchan.org/favicon.ico</icon>
      <link href="http://www.9gridchan.org/blog/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.9gridchan.org/blog/" rel="alternate" type="text/html"/>
      <subtitle>Building a decentralized grid with Plan 9 and Inferno</subtitle>
      <title>The /9/grid</title>
      <updated>2010-03-18T16:00:18Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.9gridchan.org/blog/2009/06/03/1_blog_post/</id>
    <link href="http://www.9gridchan.org/blog/2009/06/03/1_blog_post/" rel="alternate" type="text/html"/>
    <title>Wednesday 3 June 2009 - Documentation added for new tools</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><h2>Wednesday 3 June 2009 - Documentation added for new tools</h2>

<p>Well, <em>some</em> <a href="http://www.9gridchan.org/docs">documentation</a> for <em>some</em> of the new tools at least, but its a start. Writing documentation is hard. The organization of knowledge is the tricky thing. The balance of conceptual explanation and task-oriented how-to is hard to get right. The docs in the docs directory still need to be supplemented with some specific task-oriented recipes for doing things like making a fully customized local grid, which requires a bit of coordination of action at the host os level and the VM interiors. As a warmup, I'll try to summarize the process here:</p>

<p>The base system image is designed to serve as the seed for a multisystem grid. It includes a variety of /cfg directories to use as base roles for new systems, and the confighelper script is designed to help do customization quickly. If you want to create a personalized local grid of machines from the base image, here is how to do it:</p>

<ul>
<li><p>Test the base image in its default configuration to verify functionality before customizing.</p></li>
<li><p>login as bootes in cpu server mode and start up the confighelper</p></li>
<li><p>choose to (r)eset machine key and passwords, and answer the prompts. Your chosen authdom is particularly essential - it can be your domain if you have one, or just an arbitrary name for 'your grid turf'.</p></li>
<li><p>reboot the vm to cpu server mode and answer the prompts to create the new machine key. You only get once chance to set bootes' password here, be careful. Then run auth/changeuser bootes and enter the same password you just did, and then run auth/changeuser for your other users and set their new passwords. Run auth/changeuser -n for each user also to update the netkeys.</p></li>
<li><p>at this point your new auth setup should be complete and you should be able to drawterm/cpu in, 9fs if the port 564 listener is running, use netkey auth, etc. Please test whatever functions are important to you.</p></li>
<li><p>this is your new seed image. If you use it as a base for cloning your additional grid systems, they will all include copies of the auth information and keys and users.</p></li>
<li><p>now you can manufacture as many customized systems as you want using the confighelper tools. to make a new customized system, first create a new blank qemu qcow2 for it. <strong>qemu-img create -f qcow2 newsysname.qcow2.img 1G</strong> creates a qcow2 blank disc that can expand up to 1gb of storage. A venti backed fossil is very small so you probably wont use much of that space.</p></li>
<li><p>now boot qemu with the blank disk attached as -hdb. in windows for instance, you might do <strong>qemu -L . -hda g9.qcow2.img -hdb newcpu.qcow2.img -redir tcp:567::567 -redir tcp:17010::17010 -m 256</strong>, then drawterm in as bootes. Run the confighelper script and choose to (a)dd new system to grid. It will prompt you for a system name and other info and a config from /cfg to clone - it will then transform the disk on drive 2 into a customized clone of your seed system on drive 1.</p></li>
<li><p>continue this process to make as many customized VMs as you want. A very common customization to apply would be changing the venti server IP so you could boot additional nodes on other machines using your existing venti server.</p></li>
<li><p>these cloned VMs are bootable in exactly the same way as the parent images, and can make 'children' of their own. </p></li>
<li><p>Making a new blank qcow and booting and running the configscript takes about 1 minute once you are familiar with the process, so you can make two VMs for every computer on your LAN more or less instantaneously. Note that you might want to 'preload' your /lib/ndb/local with the new machines using confighelper's nbd updater prior to starting the cloning process, so all children have all their peers in their ndb.</p></li>
</ul></div>
    </content>
    <updated>2010-01-28T04:50:42Z</updated>
    <author>
      <name>www-data</name>
    </author>
    <source>
      <id>http://www.9gridchan.org/blog/index.atom</id>
      <icon>http://www.9gridchan.org/favicon.ico</icon>
      <link href="http://www.9gridchan.org/blog/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.9gridchan.org/blog/" rel="alternate" type="text/html"/>
      <subtitle>Building a decentralized grid with Plan 9 and Inferno</subtitle>
      <title>The /9/grid</title>
      <updated>2010-03-18T16:00:18Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.9gridchan.org/blog/2009/06/01/1_blog_post/</id>
    <link href="http://www.9gridchan.org/blog/2009/06/01/1_blog_post/" rel="alternate" type="text/html"/>
    <title>Monday 1 June 2009 - New Release Cycle begins!</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><h2>Monday 1 June 2009 - New Release Cycle begins!</h2>

<p>Well, we've got a <a href="http://www.9gridchan.org/9grid_node_img">new version of the qemu-based grid tools</a> up - it provides a lot of new functionality, flexibility, and hopefully ease-of-use. We haven't really started documenting everything that's going on with it, and we are going to be rolling out new services related to its design during the upcoming weeks. The image and tools itself should start getting more frequent updates and we are hoping to leverage Venti and other Plan 9 based tools to do so.</p>

<p>If you already have access to a linux machine, the new base version of the image provides what we hope is pretty neat out-of-the box functionality - you extract the .tgz, cd into your new gridtools directory, and run (as root) a simple iptables script to redirect some low ports to high ports for the qemu VM to access <em>without</em> root privileges. The <strong>gridlord</strong> script (run as normal user inside the extraced directory, no install required) then provides a simple menu-based interface to control a full distributed plan9 system all on your local machine. Fire up a VM and let it boot in cpu server mode, then drawterm in as bootes, glenda, or gridna with password: gridpass. The VM image itself is meta-pre-configured - check out the /cfg directory, which holds relatively self-descriptive configurations for multiple machine roles. /usr/bootes/bin/rc contains <strong>confighelper</strong> -- a wrapper for an set of configuration helper scripts designed to let you quickly and easily control some administrative variables. Please note that right now this is an ad-hoc set of recipes based on the base configuration we provide. We hope to develop it into a more general purpose Plan 9 configuration utility, but it is currently not recommended for use with anything other than the 9gridchan.org preconfigured qemu image.</p>

<p>There are several other customizations and extras included in the image - and source code to everything, of course. /usr/grid is a 'non-login' user whose directories contain some of the grid tools. /usr/grid/src and /usr/bootes/lib have most of the additonal materials, along with /usr/grid/bin/rc and /usr/grid/bin/386 - these directories are bound in during most user's profiles, except glenda. We left Glenda basically untouched from the Bell Labs setup in this image. Thanks to everyone who helped test and offered suggestions for this version of the tools, and we look forward to improving it further according to user suggestions. As of the time of this posting, the surrounding documentation and web resources are still mostly un-updated so things like the walkthrough screenshots gallery still apply to the old version of the image.</p></div>
    </content>
    <updated>2010-01-28T04:50:42Z</updated>
    <author>
      <name>www-data</name>
    </author>
    <source>
      <id>http://www.9gridchan.org/blog/index.atom</id>
      <icon>http://www.9gridchan.org/favicon.ico</icon>
      <link href="http://www.9gridchan.org/blog/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.9gridchan.org/blog/" rel="alternate" type="text/html"/>
      <subtitle>Building a decentralized grid with Plan 9 and Inferno</subtitle>
      <title>The /9/grid</title>
      <updated>2010-03-18T16:00:18Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.9gridchan.org/blog/2009/05/13/1_blog_post/</id>
    <link href="http://www.9gridchan.org/blog/2009/05/13/1_blog_post/" rel="alternate" type="text/html"/>
    <title>Wednesday 13 May 2009 - Self-assembling high availability grids</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><h2>Wednesday 13 May 2009 - Self-assembling high availability grids</h2>

<p>Currently under testing and development: the amazing "infinite rabbits from a single venti-hat" High Availability Grid. The past few weeks we've been exploring ideas triggered by the possibility of storing entire sets of machines in both virtual machine and fossil vacroot form in a set of arenas and isect data for a venti server. Before your eyes glaze over from the seeming over-complexity, lets cut to the chase, the goal for the end user.</p>

<p>The end product is a relatively small file distributed as a .tgz that contains a complete set of files for a venti server and a large collection of .vac files. The venti data includes the rootscores of many different machine fossils, and also entire preinstalled qemu virtual machine images that correspond to those rootscores. Using either a native or plan9port venti, the user can choose from a large number of differentlty configured machines to instantiate on either native hardware or as a virtual machine. The venti has data corresponding to machines ranging from an untouched default install to a large grid of dozens of machines. Due to the nature of venti, storing an arbitrarily large number of differently configured virtual machines and fossils has almost no overhead.</p>

<p>The system images included are configured to act as an integrated plan 9 network with a few tricks designed to provide a high availability 'cloud' environment out of the resources available. This is the system employed on the 9gridchan version of the grid which will be opened for public use soon. Our current setup uses one master and one backup venti, three fossil file servers, three cpu servers, and an arbitrary number of terminals. The creation of a single unified environment for the user along with failsafe reliability is accomplished via simple scripted filesystem imports and binds.</p>

<p>Any of the 3 fossils can boot backed by either of the two ventis, which use venti/rdarena and venti/wrarena to make scores available on both. Each CPU server boots with a TCP root from a different fossil. However, all the fossils are basically identical, and when the user logs into any cpu server, 9fs imports of the other fossils are imported, and the primary fossil's $home is bound over the boot $home by the cpu. A simple backgrounded script then mirrors the data from the active $user to the backup fossils. </p>

<p>The user interaction model is to dial each of the three cpu servers from a different window on their terminal. Each window will behave identically and binds $home from the same primary fossil, but is using a different CPU with a different tcp root and venti backup. Once the user has dialed in their three windows, they can work freely in any of them and see the same file data. If that fossil fails, the backup fossils, no more than 5 minutes out of date, can be bound to $home. A standard usage model is to run rio on one cpu, acme on another, and rc shell only on the third. The user experience should be identical to working with a single all-in-one machine with the difference of enhanced reliability and the increased performance of truly independent multiple CPUs.</p>

<p>A public release of a first version of these tools along with some updates to the g/scripts and preconfigured qemu images should be arriving soon. Feel free to stop in #plan9chan on irc.freenode.net if you want to explore this system in its development state. Standard public resources such as omni are unaffected by the current development environment but will become integrated at the time of an initial public distribution.</p></div>
    </content>
    <updated>2010-01-28T04:50:42Z</updated>
    <author>
      <name>www-data</name>
    </author>
    <source>
      <id>http://www.9gridchan.org/blog/index.atom</id>
      <icon>http://www.9gridchan.org/favicon.ico</icon>
      <link href="http://www.9gridchan.org/blog/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.9gridchan.org/blog/" rel="alternate" type="text/html"/>
      <subtitle>Building a decentralized grid with Plan 9 and Inferno</subtitle>
      <title>The /9/grid</title>
      <updated>2010-03-18T16:00:18Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.9gridchan.org/blog/2009/04/12/1_blog_post/</id>
    <link href="http://www.9gridchan.org/blog/2009/04/12/1_blog_post/" rel="alternate" type="text/html"/>
    <title>Apr 12 2009 - Just checking in</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><h2>Apr 12 2009 - Just checking in</h2>

<p>No big news on the grid past few weeks - had a service interruption for a few days, but it was resolved. Shockingly, the brief absence of 9gridchan services did not cause any significant rioting or result in the overthrow of any governments. We are greatly relieved.</p></div>
    </content>
    <updated>2010-01-28T04:50:42Z</updated>
    <author>
      <name>www-data</name>
    </author>
    <source>
      <id>http://www.9gridchan.org/blog/index.atom</id>
      <icon>http://www.9gridchan.org/favicon.ico</icon>
      <link href="http://www.9gridchan.org/blog/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.9gridchan.org/blog/" rel="alternate" type="text/html"/>
      <subtitle>Building a decentralized grid with Plan 9 and Inferno</subtitle>
      <title>The /9/grid</title>
      <updated>2010-03-18T16:00:18Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.9gridchan.org/blog/2009/02/19/1_blog_post/</id>
    <link href="http://www.9gridchan.org/blog/2009/02/19/1_blog_post/" rel="alternate" type="text/html"/>
    <title>Feb 19 2009 - Random update</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><h2>Feb 19 2009 - Random update</h2>

<p>Random blog update to make sure people know the project is healthy and ongoing. An actual public announcement of some kind on a known Plan 9 forum such as 9fans has been something we've been waiting a long time to do. </p></div>
    </content>
    <updated>2010-01-28T04:50:42Z</updated>
    <author>
      <name>www-data</name>
    </author>
    <source>
      <id>http://www.9gridchan.org/blog/index.atom</id>
      <icon>http://www.9gridchan.org/favicon.ico</icon>
      <link href="http://www.9gridchan.org/blog/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.9gridchan.org/blog/" rel="alternate" type="text/html"/>
      <subtitle>Building a decentralized grid with Plan 9 and Inferno</subtitle>
      <title>The /9/grid</title>
      <updated>2010-03-18T16:00:18Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.9gridchan.org/blog/2009/02/02/1_blog_post/</id>
    <link href="http://www.9gridchan.org/blog/2009/02/02/1_blog_post/" rel="alternate" type="text/html"/>
    <title>Feb 02 2009 - Explanatory captions for the walkthroughs.</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><h2>Feb 02 2009 - Explanatory captions for the walkthroughs.</h2>

<p>Thanks to the ceaseless flow of innovation and progress in free and open source software, the 
walkthrough screenshots tutorial galleries now feature captions and better navigation! Additionally, 
we are working to provide new services and content on the dynamic 9p registry system. Nothing too 
thrilling, but as an example, the omniguest user is now exporting /bin. After connecting to that 
service, binding the imported directory over the local /bin in an rc window allows testing of any of 
the installed software on the public cpu server without actually logging in.</p></div>
    </content>
    <updated>2010-01-28T04:50:42Z</updated>
    <author>
      <name>www-data</name>
    </author>
    <source>
      <id>http://www.9gridchan.org/blog/index.atom</id>
      <icon>http://www.9gridchan.org/favicon.ico</icon>
      <link href="http://www.9gridchan.org/blog/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.9gridchan.org/blog/" rel="alternate" type="text/html"/>
      <subtitle>Building a decentralized grid with Plan 9 and Inferno</subtitle>
      <title>The /9/grid</title>
      <updated>2010-03-18T16:00:18Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.9gridchan.org/blog/2009/01/31/1_blog_post/</id>
    <link href="http://www.9gridchan.org/blog/2009/01/31/1_blog_post/" rel="alternate" type="text/html"/>
    <title>Jan 31 2009 - Setup screenshots gallery</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><h2>Jan 31 2009 - Setup screenshots gallery</h2>

<p>Created a couple galleries with screenshots of starting up the image, connecting with drawterm, and running configscript. 
Hopefully having a visual reference will make it easier for people trying plan 9 for the first time to see if they are 
seeing what they are supposed to see. More screenshot galleries will be added to demonstrate making use of the g/script 
toolkit and 9gridchan.org resources.</p></div>
    </content>
    <updated>2010-01-28T04:50:42Z</updated>
    <author>
      <name>www-data</name>
    </author>
    <source>
      <id>http://www.9gridchan.org/blog/index.atom</id>
      <icon>http://www.9gridchan.org/favicon.ico</icon>
      <link href="http://www.9gridchan.org/blog/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.9gridchan.org/blog/" rel="alternate" type="text/html"/>
      <subtitle>Building a decentralized grid with Plan 9 and Inferno</subtitle>
      <title>The /9/grid</title>
      <updated>2010-03-18T16:00:18Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.9gridchan.org/blog/2009/01/30/2_blog_post/</id>
    <link href="http://www.9gridchan.org/blog/2009/01/30/2_blog_post/" rel="alternate" type="text/html"/>
    <title>Jan 30 2009 - post #2: more on 1.1</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><h2>Jan 30 2009 - post #2: more on 1.1</h2>

<p>The preinstalled qemu node image has several purposes. Most importantly is to provide an easy-to-use form of Plan 9 for every platform. Qemu runs on everything and a 
preinstalled image means that once the download is complete, the user can be inside a fully functional Plan 9 enivornment instantly. Another goal is to provide easy 
access to the key component of Plan 9: a CPU server. Another is is to provide a user-driven, decentralized platform for grid computing research and development. The 
latest version of the image makes bootup easier with a single menu for boot choices. There are more variant versions of plan 9 software and some customizations like 
the default font, taken from quanstro's subpixel fonts. A small sampler collection of .vac scores for downloading additional docs and collections of Plan 9 pictures 
from venti.9gridchan.org is also included. Thanks as always to the Plan 9 contributors whose work is included such as fgb (contrib and abaco), andrey (irc7 and links 
port), and others.</p></div>
    </content>
    <updated>2010-01-28T04:50:42Z</updated>
    <author>
      <name>www-data</name>
    </author>
    <source>
      <id>http://www.9gridchan.org/blog/index.atom</id>
      <icon>http://www.9gridchan.org/favicon.ico</icon>
      <link href="http://www.9gridchan.org/blog/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.9gridchan.org/blog/" rel="alternate" type="text/html"/>
      <subtitle>Building a decentralized grid with Plan 9 and Inferno</subtitle>
      <title>The /9/grid</title>
      <updated>2010-03-18T16:00:18Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.9gridchan.org/blog/2009/01/30/1_blog_post/</id>
    <link href="http://www.9gridchan.org/blog/2009/01/30/1_blog_post/" rel="alternate" type="text/html"/>
    <title>Jan 30 2009 - Development blog post #1</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><h2>Jan 30 2009 - Development blog post #1</h2>

<p>A big day of upgrades - along with release 1.1 of the /9/grid qemu image and toolkit, we've upgraded www.9gridchan.org with Uriel's latest Werc + Soul9's image 
gallery application plugin. Thanks to them for their development efforts. The new 1.1 image features more stuff and a smaller download and installed size, along with 
default user accounts for instant drawterm/cpu access for testing. (CHANGE THOSE PASSWORDS before allowing access from external networks, everyone!)</p>

<p>Ongoing projects include adding scripts for managing venti servers and databases of .vac files to the g/toolkit and a grid game based on namespace manipulation. 
Future blog posts will also provide some tips and tricks for using grid resources and tools. </p></div>
    </content>
    <updated>2010-01-28T04:50:42Z</updated>
    <author>
      <name>www-data</name>
    </author>
    <source>
      <id>http://www.9gridchan.org/blog/index.atom</id>
      <icon>http://www.9gridchan.org/favicon.ico</icon>
      <link href="http://www.9gridchan.org/blog/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.9gridchan.org/blog/" rel="alternate" type="text/html"/>
      <subtitle>Building a decentralized grid with Plan 9 and Inferno</subtitle>
      <title>The /9/grid</title>
      <updated>2010-03-18T16:00:18Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-11523106.post-1141640513512359502</id>
    <link href="http://graverobbers.blogspot.com/feeds/1141640513512359502/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=11523106&amp;postID=1141640513512359502" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/11523106/posts/default/1141640513512359502" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/11523106/posts/default/1141640513512359502" rel="self" type="application/atom+xml"/>
    <link href="http://graverobbers.blogspot.com/2010/01/linux-9p-trace-and-walkthrough.html" rel="alternate" type="text/html"/>
    <title>Linux 9P Trace and Walkthrough</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><div style="width: 425px; text-align: left;">&lt;object height="355" style="margin:0px" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=9pvirtfscode-12646254287829-phpapp02&amp;amp;stripped_title=9p-virtfs-code-walkthrough"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=9pvirtfscode-12646254287829-phpapp02&amp;amp;stripped_title=9p-virtfs-code-walkthrough" type="application/x-shockwave-flash" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;</div><br/><br/>Unfortunately video didn't come out.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/11523106-1141640513512359502?l=graverobbers.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-28T03:35:26Z</updated>
    <published>2010-01-28T03:34:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="Linux 9P"/>
    <author>
      <name>Eric Van Hensbergen</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/14419208305378243103</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-11523106</id>
      <author>
        <name>Eric Van Hensbergen</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/14419208305378243103</uri>
      </author>
      <link href="http://graverobbers.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/11523106/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://graverobbers.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/11523106/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>This blog is now my public notebook.  In it you'll find rough ideas, designs, and implementation notes as I work through various projects that have been publicly funded or done in my free time.</subtitle>
      <title>Grave Robbers From Outer Space</title>
      <updated>2010-03-07T16:24:53Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-1415684878376904744</id>
    <link href="http://thenewsh.blogspot.com/feeds/1415684878376904744/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/dirty-tricks-china-censorship-high.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/1415684878376904744" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/1415684878376904744" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/dirty-tricks-china-censorship-high.html" rel="alternate" type="text/html"/>
    <title>Dirty tricks, China censorship, High speed rail and other news...</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">2010 and the dirty trick committee is at it again!<br/><blockquote>Federal officials accused four men, including a conservative activist, of posing as telephone repairmen to tamper with phones at the New Orleans offices of Democratic Sen. Mary Landrieu. [...] Late Monday morning, according to an FBI affidavit, Messrs. Flanagan and Basel, dressed in blue work shirts, fluorescent green vests and construction hard hats, entered Sen. Landrieu's offices and told a staffer they had come to fix the phone lines. By then, Mr. O'Keefe already had arrived at the offices, according to the FBI. -- <span style="font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px;"><span style="font-family: 'Times New Roman'; font-size: medium; line-height: normal;"><a href="http://online.wsj.com/article/SB20001424052748703906204575027500584356116.html">http://online.wsj.com/article/SB20001424052748703906204575027500584356116.html</a></span></span><br/></blockquote><br/>Microsoft is <a href="http://online.wsj.com/article/SB10001424052748703410004575028931978304078.html?mod=WSJ_latestheadlines">defending China's internet censorship program</a> proving that they're still pretty good at being evil. Take that, Google! Also <a href="http://www.cbronline.com/news/microsoft_admits_ie_flaw_caused_google_hack_china_150110">thanks for all the bugs</a>!<br/><br/>That rabble rouser Obama wants to <a href="http://www.onearth.org/node/1831">give us high speed rail</a>! That is just pure awesome. I bet there are lots of people who want his head. Oh, and in other news <a href="http://news.bbc.co.uk/2/hi/business/8482654.stm">"2009 goes into the history books as the worst year the [airline] industry has ever seen."</a> Yay! In my opinion no other industry treats its customers as poorly as the airline industry. They've received numerous bailouts in the past and seem to have decided that they do not need to earn their dollars. Oh, and they'd rather sequester hundreds of people on the tarmac for hours on end to save a few bucks. Please rot in hell.<br/><br/>I'm starting to get that "<a href="http://www.investopedia.com/terms/d/doublediprecession.asp">double-dip</a>" feeling. Here's some new <a href="http://news.bbc.co.uk/2/hi/business/8483301.stm">housing data</a>.<br/><br/>Industry anti-piracy groups are still using heavy handed methods and <a href="http://news.bbc.co.uk/2/hi/technology/8481790.stm">harassing innocent people</a>. Now laywers who were beaten up for their lunch money in school can get back at society as hired thugs for the music industry.<br/><br/>And going a little deeper on the headlines, check out <a href="http://rdist.root.org/2010/01/27/how-the-ps3-hypervisor-was-hacked/">Nate's wrapup on the PS3 hack</a>.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-1415684878376904744?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-27T18:37:20Z</updated>
    <published>2010-01-27T18:25:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="news"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="msft"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="pundit"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="consumer"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="economy"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-16T18:18:14Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-8082954141980125536.post-5939128919700624000</id>
    <link href="http://research.swtch.com/feeds/5939128919700624000/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=8082954141980125536&amp;postID=5939128919700624000" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default/5939128919700624000" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default/5939128919700624000" rel="self" type="application/atom+xml"/>
    <link href="http://research.swtch.com/2010/01/generating-good-syntax-errors.html" rel="alternate" type="text/html"/>
    <title>Generating Good Syntax Errors</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p class="lp">
One of the great religious debates in compiler writing is whether
you should use parser generators like yacc and its many 
descendants or write parsers by hand, usually using 
recursive descent.  
On the one hand, using parser generators means you
have a precise definition of the language that you are
parsing, and a program does most of the grunt work for you.
On the other hand, the proponents of hand-written
recursive descent parsers argue that parser generators
are overkill, that parsers are easy enough to write by hand,
and that the result is easier to understand, more efficient, and
can give better error messages when presented with
syntactically invalid programs.
</p>

<p class="pp">
Like in most religious debates, the choice
of side seems to be determined by familiarity more than anything else.
I knew how to use yacc before
I knew how to write a parser by hand,
which put me solidly on the parser generator side of the fence.
Now that I do know how to apply both techniques, I'd still
rather use a parser generator.
In fact, I've worked on projects where I've written parser
generators rather than write a parser by hand.
Good notation counts for a lot, as we shall see.
</p>

<p class="pp">
In <i><a href="http://books.google.com/books?id=nneBa6-mWfgC&amp;printsec=frontcover&amp;dq=coders+at+work&amp;ei=RNRfS5fzMIO-zATqi-WlBw&amp;cd=1#v=onepage&amp;q=yacc&amp;f=false">Coders at Work</a></i>,
Ken Thompson talks to Peter Seibel about <i>yacc</i> and <i>lex</i>:
</p>

<blockquote>
<p class="lp">
<b>Seibel:</b> And are there development tools that just make you happy to program?</p>

<p class="lp">
<b>Thompson:</b> I love yacc.  I just love yacc.  It just does exactly what you
want done.  Its complement, lex, is horrible.  It does nothing you want done.
</p>

<p class="lp">
<b>Seibel:</b> Do you use it anyway or do you write your lexers by hand?
</p>

<p class="lp">
<b>Thompson:</b>  I write my lexers by hand.  Much easier.
</p>
</blockquote>

<p class="lp">
Many of the objections raised by the hand-written parser camp
are similar to Thompson's objection to lex—the tool doesn't do what you want—but
there's no fundamental reason a tool can't.
For example, the spurious conflicts that an LALR(1) algorithm produces
are definitely hard to understand, but if you replace it with 
LR(1) or GLR(1), you get a more useful tool.
And if you do learn how to work within the LALR(1) algorithm,
even yacc is very powerful.
</p>

<p class="pp">
The objection to parser generates that seems to resonate most is that 
generators like yacc produce inadequate error messages,
little more than “syntax error.”
Better error messages were one of the key benefits hoped for
when <a href="http://gcc.gnu.org/ml/gcc/2000-10/msg00573.html">g++ converted</a>
from a yacc-based C++ parser to a hand-written one
(and to be fair, C++ syntax is nearly impossible to parse
with any tool; the many special cases cry out for hand-written code).
Here the objection seems harder to work around: the parser
internally gets compiled into an automaton—usually a big table of numbers—that
moves from state to state as it processes input tokens.
If at some point it can't find a next state to go to, it reports an error.
How could you possibly turn that into a good message?
</p>

<p class="pp">
Clinton Jeffery showed how in a paper published in ACM TOPLAS in 2003
titled “<a href="http://people.cs.vt.edu/~haebang//coursework/PL/summary.pdf">Generating LR Syntax Error Messages from Examples</a>.”  As you can guess from the title,
the idea is to introduce a training stage after the parser is generated
but before it is used for real.
In that stage, you feed examples of syntax errors into the parser
and look at what state it ends up in when it detects the error,
and maybe also what the next input token is.
If the automaton hits an error in that state (and with that input token) during real use,
you can issue the message appropriate to the example.
The important part is that the parser states are basically
an abstract summary of the surrounding context, so it's
reasonable to treat errors in a particular state with a single message.
For example, suppose you find that this Go program
</p>

<pre class="indent">package main

import (
 "fmt",
 "math"
)
</pre>

<p class="lp">causes a syntax error at the comma, in state 76.
In the parser, that state means that you're in the middle of
an import block and expecting to see a string constant.
The state abstracts that context, so you'd end up in the same
state if you were parsing this erroneous program:
</p>

<pre class="indent">package fmt

import ( "strings"; "testing", "xgb" )
</pre>

<p class="lp">
Having told the parser that the appropriate error message
for the first program is “unexpected , during import block,”
the parser will use the same message for the second program.
</p>

<p class="pp">
It's an elegant idea, and the implementation can be kept
on the side, without adding any complexity to the grammar itself.
I heard about this idea through the grapevine years ago
(in 2000, I think) but had never gotten a chance to try it
until this week.
</p>

<p class="pp">
There are three Go parsers: Ian Lance Taylor wrote a hand-written
recursive descent parser in C++ for gccgo,
Robert Griesemer wrote a hand-written recursive descent parser
in Go (<code>import "<a href="http://golang.org/pkg/go/parser">go/parser</a>"</code>)
for <a href="http://golang.org/cmd/godoc/">godoc</a> and 
<a href="http://golang.org/cmd/gofmt/">gofmt</a>,
and Ken Thompson wrote a yacc-based parser in C for the
gc compiler suite.
</p>

<p class="pp">
On Monday night, I <a href="http://code.google.com/p/go/source/detail?r=7427b07b504271532d96c630d3dc37aef4d06c7d">implemented Jeffery's idea in the gc compiler suite</a>.
The gc compilers use bison, the GNU implementation of yacc.
Bison doesn't support this kind of error management natively,
but it is not hard to adapt.
Changing bison would require distributing a new version
of bison; instead, my implementation post-processes bison's output.
</p>

<p class="pp">
The examples are in a new file <code><a href="http://code.google.com/p/go/source/browse/src/cmd/gc/go.errors?spec=svn7427b07b504271532d96c630d3dc37aef4d06c7d&amp;r=7427b07b504271532d96c630d3dc37aef4d06c7d">go.errors</a></code>.
Because the lexer is written by hand, it's not available in the
simulation, so the examples are token name sequences
rather than actual program fragments.  In token lists, the
program above and its corresponding error message are:
</p>

<pre class="indent">% loadsys package LIMPORT '(' LLITERAL import_package import_there ','
"unexpected , during import block",
</pre>

<p class="lp">
Understanding the tokens on the first line requires knowing what the various 
grammar token names mean, but they basically mimic the
syntax, and this tool is targeted at the people working on
the grammar anyway.
An <a href="http://code.google.com/p/go/source/browse/src/cmd/gc/bisonerrors?spec=svn7427b07b504271532d96c630d3dc37aef4d06c7d&amp;r=7427b07b504271532d96c630d3dc37aef4d06c7d">awk program</a> loads bison's tables 
from its debugging dump <code>y.output</code> and
then processes the <code>go.errors</code> file, replacing
each line like the above with the number of the offending
state and input token.
That produces a table that can be linked into the compiler
and consulted when a syntax error is encountered.
If the state and input token match an entry in the table,
the better error is used instead of a plain <code>syntax error</code>.
</p>

<p class="pp">
That was an outsized amount of work to <a href="http://code.google.com/p/go/issues/detail?id=522">close one bug</a>, but now
it's easy to add better messages for other common situations.
For example, the fact that only the short <code>:=</code> declaration
form is allowed in <code>for</code> initializers sometimes trips up 
new Go programmers.  When presented with this program:
</p>

<pre class="indent">package main

import "fmt"

func main() {
 fmt.Printf("hello, world\n")
 for var i = 0; i &lt; 10; i++ {
  fmt.Println(i)
 }
}
</pre>

<p class="lp">the compiler used to just say there was a syntax error on line 7, but
now it explains:</p>

<pre class="indent">$ 6g x.go
x.go:7: syntax error: var declaration not allowed in for initializer
</pre>

<p class="lp">because of this stanza in <code>go.errors</code>:</p>

<pre class="indent">% loadsys package imports LFUNC LNAME '(' ')' '{' LFOR LVAR LNAME '=' LNAME
"var declaration not allowed in for initializer",
</pre>

<p class="lp">Gccgo and gofmt give more traditional
token-based errors:
</p>

<pre class="indent">$ gccgo x.go
x.go:7:6: error: expected operand
...

$ gofmt x.go
x.go:7:6: expected operand, found 'var'
</pre>

<p class="lp">
What's interesting isn't that neither has bothered to handle this
as a special case yet.  What's interesting is to consider the work
required to do so.  Changing either would require 
understanding the corresponding hand-written parser well enough to
find the right place to put the special case.
With the example-based approach, you just write an example,
and the tool figures out where in the parser it needs to go.
</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/8082954141980125536-5939128919700624000?l=research.swtch.com" width="1"/></div></div>
    </content>
    <updated>2010-01-27T17:00:01Z</updated>
    <published>2010-01-27T17:00:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="compilers"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="theory"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="notation"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="Go"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="code"/>
    <author>
      <name>rsc</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/12988172038803189837</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-8082954141980125536</id>
      <author>
        <name>rsc</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06357099531993534337</uri>
      </author>
      <link href="http://research.swtch.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://research.swtch.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/8082954141980125536/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Computer programming links, collected by
<a href="http://swtch.com/~rsc/">Russ Cox</a>.  Updated sporadically.</div>
      </subtitle>
      <title>research!rsc</title>
      <updated>2010-03-18T16:00:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-5863572361926474430</id>
    <link href="http://reneefrench.blogspot.com/feeds/5863572361926474430/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=5863572361926474430" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/5863572361926474430" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/5863572361926474430" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/malgorium.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S1-7dedAUDI/AAAAAAAACQo/Y-36xoU813Q/s1600-h/hdaydogheadsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5431265790697426994" src="http://3.bp.blogspot.com/_va9O40qIhaE/S1-7dedAUDI/AAAAAAAACQo/Y-36xoU813Q/s320/hdaydogheadsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 274px; height: 320px;"/></a>malgorium<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-5863572361926474430?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-27T04:05:36Z</updated>
    <published>2010-01-27T04:04:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="line drawings"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-18T11:39:45Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-4894823689221219267</id>
    <link href="http://thenewsh.blogspot.com/feeds/4894823689221219267/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/some-news-today.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/4894823689221219267" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/4894823689221219267" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/some-news-today.html" rel="alternate" type="text/html"/>
    <title>Some news today</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">China is <a href="http://news.bbc.co.uk/2/hi/americas/8478005.stm">denying it had anything to do with the Google hack</a> and pointing the finger back at the US saying that certain unnamed intelligence agencies have hacked a number of email accounts. I believe half of that statement.<br/><br/>The lady who was fined $2M for illegal file sharing of music has <a href="http://news.bbc.co.uk/2/hi/technology/8478305.stm">had her fine reduced to $52k</a>. The judge simply thought the original fine was too "monstrous and shocking" and reduced it to the largest value he thought was no longer so. $52k sounds more appropriate for sharing 24 songs with no profit motive.<br/><br/>There's been <a href="http://news.bbc.co.uk/2/hi/technology/8478764.stm">progress on hacking the PS3</a> to open up the platform (and support piracy). The headline says "hacked" but it sounds like there's still a bit of work to be done.<br/><br/>Its looking more likely that <a href="http://en.wikipedia.org/wiki/Ben_Bernanke">the guy in charge of making sure our economy doesn't tank</a> during the biggest recession of our lifetime is <a href="http://online.wsj.com/article/SB10001424052748703808904575025062981287040.html?mod=googlenews_wsj">going to get to keep his job</a>. It must be nice working in the financial industry where you can be popular and even make tons of money even if you destroy the wealth of your clients or constituents. Some people are happy at the job he did to get us out of the recession, and I think he deserves credit for that, but <a href="http://www.ritholtz.com/blog/2010/01/dude-wheres-my-recession-bar/">now that we're out of recession</a>, he should still be shown the door for letting us get into the mess in the first place.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-4894823689221219267?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-25T18:55:38Z</updated>
    <published>2010-01-25T18:55:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="news"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="pundit"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="goog"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="consumer"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="economy"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-15T18:37:29Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-4434349628613665828</id>
    <link href="http://reneefrench.blogspot.com/feeds/4434349628613665828/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=4434349628613665828" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/4434349628613665828" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/4434349628613665828" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/slim.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S1pBS9Pvg0I/AAAAAAAACQg/mCrJEiEWqvY/s1600-h/hdaycreat2sm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5429724094682596162" src="http://3.bp.blogspot.com/_va9O40qIhaE/S1pBS9Pvg0I/AAAAAAAACQg/mCrJEiEWqvY/s320/hdaycreat2sm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 210px;"/></a>slim<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-4434349628613665828?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-25T12:22:00Z</updated>
    <published>2010-01-25T12:22:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="line drawings"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-18T02:40:46Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6989726062940083922.post-7562564770605596701</id>
    <link href="http://robpike.blogspot.com/feeds/7562564770605596701/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=6989726062940083922&amp;postID=7562564770605596701" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default/7562564770605596701" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default/7562564770605596701" rel="self" type="application/atom+xml"/>
    <link href="http://robpike.blogspot.com/2010/01/yellow-room.html" rel="alternate" type="text/html"/>
    <title>Yellow room</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_Fpj1cqLIn_Y/S1xBm3Ee2AI/AAAAAAAABrw/pnhBVyZpMvw/s1600-h/Yellow.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5430287386575558658" src="http://4.bp.blogspot.com/_Fpj1cqLIn_Y/S1xBm3Ee2AI/AAAAAAAABrw/pnhBVyZpMvw/s400/Yellow.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 400px; height: 267px;"/></a><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6989726062940083922-7562564770605596701?l=robpike.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-24T12:48:35Z</updated>
    <published>2010-01-24T12:47:00Z</published>
    <author>
      <name>rob</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/18259238879445421354</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6989726062940083922</id>
      <author>
        <name>rob</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/18259238879445421354</uri>
      </author>
      <link href="http://robpike.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://robpike.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <title>rob pike</title>
      <updated>2010-03-18T03:38:46Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-662380034536894910</id>
    <link href="http://reneefrench.blogspot.com/feeds/662380034536894910/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=662380034536894910" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/662380034536894910" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/662380034536894910" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/right-enough-son-its-bun.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://2.bp.blogspot.com/_va9O40qIhaE/S1lQF6JTq1I/AAAAAAAACQI/nUhsz24MCxA/s1600-h/hdaydogantsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5429458888209705810" src="http://2.bp.blogspot.com/_va9O40qIhaE/S1lQF6JTq1I/AAAAAAAACQI/nUhsz24MCxA/s320/hdaydogantsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 268px; height: 320px;"/></a>right enough son, it's a bun.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-662380034536894910?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-24T09:12:00Z</updated>
    <published>2010-01-24T09:12:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-16T14:12:07Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-4774113059035619616</id>
    <link href="http://thenewsh.blogspot.com/feeds/4774113059035619616/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/python-marshalling-iterators-and.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/4774113059035619616" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/4774113059035619616" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/python-marshalling-iterators-and.html" rel="alternate" type="text/html"/>
    <title>Python marshalling, iterators and currying</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I dig protocols and as a result I write marshalling code often. When I do, I often take the opportunity to rethink some ideas and try out something new. I'm going to use this post to talk about some marshalling ideas and code that I'm playing with now. The goal here is to write marshallers that are short and concise and easy to use. Performance is not considered.<br/><br/><b>Marshalling</b><br/>Marshalling is the process of converting some structured data into a serial format. One way to think about this in python is a function that maps some structured datum into an iterable that yields characters. The simplest marshallers can be written directly using generators:<br/><pre>def encChar(ch):<br/>    yield ch<br/>def encNum1(x) :<br/>    yield chr(x &amp; 0xff)</pre>More complex marshallers can be written by chaining together simpler encoders. The <i>itertools</i> module provides a <i>chain</i> function which does this. Here we marshall 16-bit and 32-bit numbers in big-endian format:<br/><pre>from itertools import chain<br/>def encNum2(x) :<br/>    return chain(encNum1(x &gt;&gt; 8), encNum1(x))<br/>def encNum4(x) :<br/>    return chain(encNum2(x &gt;&gt; 16), encNum2(x))</pre>Marshalling a fixed list of values can also be accomplished by chaining together several encoders:<br/><pre>def encFixedList_(es, xs) :<br/>    return chain(*(e(x) for e,x in zip(es, xs)))</pre>This function chains together the encoding of each item in <i>xs</i> using the matching encoder in <i>es</i>. In practice you'd want a special <i>zip</i> that results in error if the number of <i>es</i> and <i>xs</i> was not the same, but lets ignore that for now. This function will work just fine, but it has a problem in practice -- usually you'll want to use this function partially applied, providing the <i>es</i> but leaving the <i>xs</i> to be filled in later. Here's where currying comes in handy. We'll make a function that takes just the <i>es</i> and returns a function that takes the <i>xs</i> later:<br/><pre>def encFixedList(*es) :<br/>    return lambda xs : chain(*(e(x) for e,x in zip(es, xs)))</pre>This is much easier to use:<br/><pre>encMyList = encFixedList(encNum4, encChar, encNum2)</pre>You might notice that the encoding of fixed lists is basically an encoding of records. If we presuppose that all of our records have a <i>toList</i> method that returns all of the record's fields as a list, we can write a marshaller for these records:<br/><pre>def encRecord(*es) :<br/>    enc = encFixedList(*es)<br/>    return lambda rec : enc(rec.toList())<br/>class MyRec(object) :<br/>    def __init__(self, a, b, c) :<br/>        self.a, self.b, self.c = a,b,c<br/>    def toList(self) :<br/>        return (self.a, self.b, self.c)<br/>    def __str__(self) :<br/>        return '[MyRec a=%s b=%s c=%s]' % self.toList()<br/>encMyRec = encRecord(encChar, encNum1, encNum1)</pre>To use these marshallers we pass the value we want to encode and then convert the resulting iterable to a string:<br/><pre>def encode(enc, x) :<br/>    return ''.join(enc(x))<br/>x1 = encode(encNum4, 0x01020304)<br/>print '%r' % x1<br/>x2 = encode(encMyList, [31415927, 'x', 257])<br/>print '%r' % x2<br/>x3 = encode(encMyRec, MyRec('A', 5, 10)) <br/>print '%r' % x3 <br/></pre><br/><b>Unmarshalling</b><br/>Unmarshalling is the process of turning a stream of bytes back into structured data. Instead of working with an iterable and converting it to structured data we'll be working with an <i>iterator</i>. The difference is subtle; we'll want to consume bytes and keep track of where we are in the stream. An iterator does just that. Each of our unmarshallers will take in an iterator of characters, consume some of the bytes and return a decoded value. As before our simplest unmarshallers are for characters and single-byte numbers:<br/><pre>def decChar(it) :<br/>    return it.next()<br/>def decNum1(it) :<br/>    return ord(decChar(it))</pre>Unmarshalling larger numbers is just a matter of unmarshalling several smaller numbers and composing them. Here are the unmarshallers for 16- and 32-bit big endian numbers. These definitions make use of the left-to-right order of evaluation:<br/><pre>def decNum2(it) :<br/>    return (decNum1(it) &lt;&lt; 8) | decNum1(it)<br/>def decNum4(it) :<br/>    return (decNum2(it) &lt;&lt; 16) | decNum2(it)</pre>And unmarshall fixed lists is just a matter of decoding each constituent in turn. Here again we use currying: <br/><pre>def decFixedList(*ds) :<br/>    return lambda it : [d(it) for d in ds]<br/>decMyList = decFixedList(decNum4, decChar, decNum2)</pre>To unmarshall a record we need a way to unmarshall the constituent fields and then create the record. The <i>decFixedList</i> function can be used to unmarshall the records if we have a way to construct the record from a list. We'll presuppose that our records have a constructor that take the field values in turn, then unmarshalling is simply:<br/><pre>def decRecord(klass, *ds) :<br/>    dec = decFixedList(*ds)<br/>    return lambda it : klass(*dec(it))<br/>decMyRec = decRecord(MyRec, decChar, decNum1, decNum1)</pre>To use these unmarshallers to decode a binary string we must first get an iterator and then pass it to the decoder:<br/><pre>def decode(dec, binary) :<br/>    return dec(iter(binary))<br/>print decode(decNum4, x1)<br/>print decode(decMyList, x2)<br/>print decode(decMyRec, x3)</pre><br/><b>Records</b><br/>One refinement I often make is to simplify the construction of records since I often have many records in the protocol:<br/><pre>class Record(object) :<br/>    def __init__(self, *args) :<br/>        for f,v in zip(self.__fields__, args) :<br/>            setattr(self, f, v)<br/>    def toList(self) :<br/>        return [getattr(self, f) for f in self.__fields__]<br/>    def __str__(self) :<br/>        fs = ', '.join('%s=%r' % (f, getattr(self, f)) for f in self.__fields__)<br/>        return '[%s %s]' % (self.__name__, fs)</pre>Now defining a new record is done simply by filling in the <i>__name__ </i>and <i>__fields__ </i>values:<br/><pre>class MyRec2(Record) :<br/>    __name__ = 'MyRec2'<br/>    __fields__ = 'code', 'cost', 'quantity'<br/>encMyRec2 = encRecord(encChar, encNum2, encNum1)<br/>decMyRec2 = decRecord(MyRec2, decChar, decNum2, decNum1)<br/>x4 = encode(encMyRec2, MyRec2('X', 2495, 3))<br/>print '%r' % x4<br/>print decode(decMyRec2, x4)<br/></pre><br/><b>Discussion</b><br/>In the past I had used a special buffer class to marshall data into and out of instead of using iterables and iterators. This approach seems to make better use of the mechanisms already existing in Python. This code makes writing marshallers and unmarshallers for records very simple. One downside is that it hurts debugging a little bit. The stack traces you get when something goes wrong are more complicated than they would be if record marshallers were manually written out by the programmer. Another downside is that marshallers and unmarshallers are written separately even though for correct operation they must be kept in synch and basically encode the same information. A more complicated library could define pairs of marshallers and unmarshallers together and in fact I've tried this approach in the past.<br/>All in all, I am happy with this approach and find it concise and very convenient for prototyping. Look what we've accomplished in just a few lines of code!<br/><br/><pre>from itertools import chain<br/><br/>class Record(object) :<br/>    def __init__(self, *args) :<br/>        for f,v in zip(self.__fields__, args) :<br/>            setattr(self, f, v)<br/>    def toList(self) :<br/>        return [getattr(self, f) for f in self.__fields__]<br/>    def __str__(self) :<br/>        fs = ', '.join('%s=%r' % (f, getattr(self, f)) for f in self.__fields__)<br/>        return '[%s %s]' % (self.__name__, fs)<br/><br/>def encode(enc, x) :<br/>    return ''.join(enc(x))<br/>def encChar(ch):<br/>    yield ch<br/>def encNum1(x) :<br/>    yield chr(x &amp; 0xff)<br/>def encNum2(x) :<br/>    return chain(encNum1(x &gt;&gt; 8), encNum1(x))<br/>def encNum4(x) :<br/>    return chain(encNum2(x &gt;&gt; 16), encNum2(x))<br/>def encFixedList(*es) :<br/>    return lambda xs : chain(*(e(x) for e,x in zip(es, xs)))<br/>def encRecord(*es) :<br/>    enc = encFixedList(*es)<br/>    return lambda rec : enc(rec.toList())<br/><br/>def decode(dec, binary) :<br/>    return dec(iter(binary))<br/>def decChar(it) :<br/>    return it.next()<br/>def decNum1(it) :<br/>    return ord(decChar(it))<br/>def decNum2(it) :<br/>    return (decNum1(it) &lt;&lt; 8) | decNum1(it)<br/>def decNum4(it) :<br/>    return (decNum2(it) &lt;&lt; 16) | decNum2(it)<br/>def decFixedList(*ds) :<br/>    return lambda it : [d(it) for d in ds]<br/>def decRecord(klass, *ds) :<br/>    dec = decFixedList(*ds)<br/>    return lambda it : klass(*dec(it))</pre><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-4774113059035619616?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-23T20:57:42Z</updated>
    <published>2010-01-23T20:57:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="python"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="programming"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-12T19:02:11Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-1347527155858962234</id>
    <link href="http://reneefrench.blogspot.com/feeds/1347527155858962234/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=1347527155858962234" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/1347527155858962234" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/1347527155858962234" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/plus.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S1lPBWnvaeI/AAAAAAAACQA/xLBd7Qs6zk8/s1600-h/hdaydogtrapsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5429457710442572258" src="http://4.bp.blogspot.com/_va9O40qIhaE/S1lPBWnvaeI/AAAAAAAACQA/xLBd7Qs6zk8/s320/hdaydogtrapsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 276px; height: 320px;"/></a>plus<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-1347527155858962234?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-23T19:06:00Z</updated>
    <published>2010-01-23T19:06:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-16T05:34:29Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-407469825102391166</id>
    <link href="http://thenewsh.blogspot.com/feeds/407469825102391166/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/dear-microsoft.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/407469825102391166" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/407469825102391166" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/dear-microsoft.html" rel="alternate" type="text/html"/>
    <title>Dear Microsoft</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Dear Microsoft,<br/>  I want to use the software I paid for. More accurately, my niece does. We bought her a laptop a few Christmases ago. Now her computer is unusable, which is partly her fault (in the same sense that having graffiti on your car is your fault if you parked in a bad neighborhood). Now I'm helping her reinstall her system to give her a fresh start. Here's the rub: the <a href="http://www.csd.toshiba.com/cgi-bin/tais/support/jsp/navShell.jsp?cf=su_contact">laptop manufacturer</a> didn't give her an install or recovery DVD with a copy of Windows Vista that we paid for when we bought the computer. (There's even a nice proof-of-authenticity sticker on the bottom of the machine with a license key!) The manufacturer has informed me that they will send me the recovery DVD at no cost, unless you count $24.95 shipping and handling. So this is the situation I'm in: I have to pay $25 and wait a week or two to reinstall a copy of Windows Vista that we already have a legitimate license to use. I'm failing to see what the <a href="http://en.wikipedia.org/wiki/Windows_Genuine_Advantage">Windows Genuine Advantage</a> is here. It would cost me less and be less effort to find a pirated copy of the software on the internet and install that instead. Do you see the perverse incentive structure that exists?<br/>With Love, Tim.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-407469825102391166?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-23T18:19:54Z</updated>
    <published>2010-01-23T18:19:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="msft"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="pundit"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="consumer"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-12T01:30:12Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://ninetimes.cat-v.org/news/2010/01/23/yuk-ethernet-driver/</id>
    <link href="http://ninetimes.cat-v.org/news/2010/01/23/yuk-ethernet-driver/" rel="alternate" type="text/html"/>
    <title>New alpha driver for Marvell Yukon 2 Ethernet</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Erik released a new alpha driver for Marvell Yukon 2 Ethernet NICs.</p>

<pre><code>From: erik quanstrom &lt;quanstro@qua...&gt;
Subject: yukon 2 alpha driver
Date: Sat, 16 Jan 2010 18:15:50 -0500

is anyone interested in testing a marvell yukon 2
driver?  i am currently working with a 88e5057
(1186/4b00, dge-560t).  but most single-port yukon 2
parts should work fine.  if so. please contact me
off list.

- erik
</code></pre>

<p>You can install it from contrib with</p>

<pre><code>term% contrib/install quanstro/yuk
</code></pre>

<p>This will install two files, etheryuk.c and yukdump.h, into your /sys/src/9/pc directory.</p>

<p>Edit /sys/src/9/pc/pcf and add the following line to the list of Ethernet devices:</p>

<pre><code>    etheryuk        pci
</code></pre>

<p>After that compile your new kernel by running</p>

<pre><code>mk 'CONF=pcf'
</code></pre>

<p>Then copy the new kernel into /n/9fat and boot with it.</p>

<p>On my ASUS A8R32-MVP with 88E8053 chip the following new device will now show up:</p>

<pre><code>#l0: yuk: 1000Mbps port 0xDFEFC000 irq 4: 00173137b3d3
</code></pre>

<p>I tested it during the last several days and it works great, good work!</p>

<p>Please send your feedback and bug reports to Erik.</p></div>
    </content>
    <updated>2010-01-23T01:51:52Z</updated>
    <author>
      <name>www-data</name>
    </author>
    <source>
      <id>http://ninetimes.cat-v.org/index.atom</id>
      <icon>http://ninetimes.cat-v.org/favicon.ico</icon>
      <link href="http://ninetimes.cat-v.org/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://ninetimes.cat-v.org/" rel="alternate" type="text/html"/>
      <subtitle>Plan 9, Inferno, Unix and Bell Labs operating systems news</subtitle>
      <title>NineTimes</title>
      <updated>2010-03-18T16:00:10Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://ninetimes.cat-v.org/news/2010/01/23/0-aediks/</id>
    <link href="http://ninetimes.cat-v.org/news/2010/01/23/0-aediks/" rel="alternate" type="text/html"/>
    <title>New alpha driver for Marvell Yukon 2 Ethernet</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Erik released a new alpha driver for Marvell Yukon 2 Ethernet NICs. (See <a href="http://9fans.net/archive/2010/01/265">his post at 9fans</a>)</p>

<p>You can install it from contrib with
    term% contrib/install quanstro/yuk</p>

<p>This will install two files, etheryuk.c and yukdump.h, into your /sys/src/9/pc directory.</p>

<p>Edit /sys/src/9/pc/pcf and add the following line to the list of Ethernet devices:
    etheryuk        pci</p>

<p>After that compile your new kernel by running
    mk 'CONF=pcf'</p>

<p>Then copy the new kernel into /n/9fat and boot with it.</p>

<p>On my ASUS A8R32-MVP with 88E8053 chip the following new device will now show up:
    #l0: yuk: 1000Mbps port 0xDFEFC000 irq 4: 00173137b3d3</p>

<p>Please send your feedback and bug reports to Erik.</p></div>
    </content>
    <updated>2010-01-23T01:51:52Z</updated>
    <author>
      <name>www-data</name>
    </author>
    <source>
      <id>http://ninetimes.cat-v.org/index.atom</id>
      <icon>http://ninetimes.cat-v.org/favicon.ico</icon>
      <link href="http://ninetimes.cat-v.org/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://ninetimes.cat-v.org/" rel="alternate" type="text/html"/>
      <subtitle>Plan 9, Inferno, Unix and Bell Labs operating systems news</subtitle>
      <title>NineTimes</title>
      <updated>2010-01-23T02:00:05Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-8147118389850451583</id>
    <link href="http://thenewsh.blogspot.com/feeds/8147118389850451583/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/goog-hack-msft-vulnerability-and.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/8147118389850451583" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/8147118389850451583" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/goog-hack-msft-vulnerability-and.html" rel="alternate" type="text/html"/>
    <title>GOOG hack, MSFT vulnerability and disclosure</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">It turns out that <a href="http://arstechnica.com/microsoft/news/2010/01/could-microsoft-have-fixed-google-hack-prior-to-attacks.ars">Microsoft knew about the IE vulnerability</a> used in the GOOG hack since last September. They were planning on rolling out a fix in February. If the fix had been rolled out earlier, this particular attack might never have happened (but keep in mind, there are many unfixed vulnerabilities in all software!). So why such a long lead time between report and fix? Its due to a lot of factors, but I'm going to harp on one: <a href="http://en.wikipedia.org/wiki/Responsible_disclosure">responsible disclosure</a>.<br/><br/>The computer security field has been fiercely debating how disclosure should be handled for quite a long time. In the "good old days" there was a cabal of security professionals who shared new found vulnerabilities only with each other and vendors. This was nice if you were in the cabal (think of how easily you can impress your clients if you're a security auditor with access to a large number of unfixed vulnerabilities). Unfortunately it meant many bugs were not fixed for long periods of times. It also made it very hard for newcomers to learn about security and enter the field. In a backlash a large number of security researchers turned to <a href="http://en.wikipedia.org/wiki/Full_disclosure">full disclosure</a> policies: when they found a bug they told everyone about it, often including details of how to perform an exploit. This means vendors, good guys and bad guys all got access to this information. This was great if you were a bad guy, or if you were a good guy without access to the cabal. It also put a lot of pressure on vendors to fix vulnerabilities ASAP. Vendors did not much care for this. They pushed for another model called <a href="http://en.wikipedia.org/wiki/Responsible_disclosure">responsible disclosure</a> in which vendors were given advanced notice and only after a reasonable amount of time or when a fix was available would the full details be given to the public. So these are three prominent points on a continuum of disclosure policies, and where you stand on this line is often a matter of religion. So much so that the proponents come up with loaded terms such as "responsible disclosure" to imply that those who don't hold the same view are some how irresponsible.<br/><br/>So back to my point -- the vulnerability used in the google hack was reported to MSFT back in September. They realized this was a very important bug, but decided to release a fix in February, five months later! Clearly "responsible" disclosure gave MSFT a lot of flexibility in postponing the release of this fix. Once the details of the hack were released, MSFT scrambled to issue a release in a much shorter timeline. Did responsible disclosure work well in this instance?  I would argue "no". Would full disclosure have worked better? Possibly, but keep in mind that while a fix would have been available much quicker, many more attackers would have had access to this information during that shorter amount of time.<br/><br/>By the way, how did the attackers get access to this exploit? Have attackers penetrated MSFT? Do they have insiders working at MSFT who have access to the vulnerability database?  If either of these are true, then I would argue that responsible disclosure gives the advantage to these attackers. I also wonder if a country as powerful as China has insiders working at many of our top software companies. The tech industry employs many Chinese nationals.  I don't mean to imply that they are all agents of their government, but it would not surprise me if there were a few agents in the mix. I'm not sure there's a great way to defend against a threat like this. Software is so full of security holes, and a company usually has a large database full of software bugs found internally or reported by external customers. Often times the full impact of a bug is not known and important security bugs are left unpatched for years.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-8147118389850451583?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-22T18:31:28Z</updated>
    <published>2010-01-22T18:31:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="disclosure"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="news"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="msft"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="pundit"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="goog"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="security"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-12T01:30:12Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-1744352428827534251</id>
    <link href="http://reneefrench.blogspot.com/feeds/1744352428827534251/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=1744352428827534251" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/1744352428827534251" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/1744352428827534251" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/helmoooot-head.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S1lAa1WpCFI/AAAAAAAACP4/r4IgWLZUxM8/s1600-h/dreamsketch2sm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5429441655514662994" src="http://4.bp.blogspot.com/_va9O40qIhaE/S1lAa1WpCFI/AAAAAAAACP4/r4IgWLZUxM8/s320/dreamsketch2sm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 298px; height: 320px;"/></a>helmoooot head<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-1744352428827534251?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-22T09:05:00Z</updated>
    <published>2010-01-22T09:05:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="notes"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-14T12:15:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-2712776677725896801</id>
    <link href="http://reneefrench.blogspot.com/feeds/2712776677725896801/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=2712776677725896801" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2712776677725896801" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2712776677725896801" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/snoop.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S1k_m0M0aOI/AAAAAAAACPw/6dRXuqxV6zw/s1600-h/fishsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5429440761851832546" src="http://3.bp.blogspot.com/_va9O40qIhaE/S1k_m0M0aOI/AAAAAAAACPw/6dRXuqxV6zw/s320/fishsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 240px; height: 320px;"/></a>snoop<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-2712776677725896801?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-22T06:03:37Z</updated>
    <published>2010-01-22T06:02:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="photographs"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-13T16:05:56Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-354257126606728825</id>
    <link href="http://thenewsh.blogspot.com/feeds/354257126606728825/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/big-news-day.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/354257126606728825" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/354257126606728825" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/big-news-day.html" rel="alternate" type="text/html"/>
    <title>Big news day</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Wow, what a news day today.<br/><br/><ul><li><a href="http://news.bbc.co.uk/2/hi/business/8473294.stm">Obama pushes new bank regulation</a> to limit risk taking by banks preventing commercial banks from engaging in proprietary trading<br/></li><li><a href="http://news.bbc.co.uk/2/hi/south_asia/8471789.stm">Pakistan says it won't cooperate with us.</a><br/></li><li><a href="http://news.bbc.co.uk/2/hi/americas/8472937.stm">A commercial flight is diverted</a> when passengers freak out at the sight of jewish prayer!<br/></li><li><a href="http://news.bbc.co.uk/2/hi/americas/8472683.stm">Hillary Clinton asks China to investigate</a> the google hacking incident, upping the pressure on China.</li><li>The music industry is trying to <a href="http://news.bbc.co.uk/2/hi/technology/8471290.stm">blame piracy for the death of culture</a>. Go figure.</li><li>The <a href="http://news.bbc.co.uk/2/hi/americas/8473253.stm">supreme court overturns campaign spending limits</a>. Apparently banning companies from making large donation is some sort of illegal government censorship. Its amazing what sort of constitutional rights you have when you're a corporation. You thought we were a <a href="http://en.wikipedia.org/wiki/Corporatocracy">corporatocracy</a> before; you ain't seen nothin' yet. On the other hand, think of how much more advertising revenue media will get!</li><li>The campaign to bring the bible to heathens at the point of a gun has <a href="http://abcnews.go.com/Blotter/jesus-rifles/story?id=9618791">been brought to an end</a>.</li><li>The <a href="http://www.blogger.com/"><span id="goog_1264097188170"/>wife and daughter of John McCain have come out in favor of gay marriage<span id="goog_1264097188171"/></a>. </li></ul>In lighter news, this is <a href="http://news.bbc.co.uk/2/hi/technology/8471362.stm">pretty cool</a>! Turning your clothes into batteries (and not the matrix way).<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-354257126606728825?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-21T18:24:56Z</updated>
    <published>2010-01-21T18:24:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="news"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="pundit"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-10T18:14:16Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6559550810260622787.post-5268244807601954922</id>
    <link href="http://inferno-rus.blogspot.com/feeds/5268244807601954922/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://inferno-rus.blogspot.com/2010/01/acme.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6559550810260622787/posts/default/5268244807601954922?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6559550810260622787/posts/default/5268244807601954922?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://inferno-rus.blogspot.com/2010/01/acme.html" rel="alternate" type="text/html"/>
    <title>Среда acme на видео</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Всем, кто хотел познать красоту acme, но не мог это сделать, посвящена целая серия видеоуроков, опубликованных в блоге http://thenewsh.blogspot.com. <a href="http://thenewsh.blogspot.com/2010/01/acme-environment-in-plan9.html">Ссылка</a>.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6559550810260622787-5268244807601954922?l=inferno-rus.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-21T05:52:54Z</updated>
    <published>2010-01-21T05:46:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="&#x441;&#x441;&#x44B;&#x43B;&#x43A;&#x438;"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="plan9"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="acme"/>
    <author>
      <name>j1m</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06224950953627370147</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6559550810260622787</id>
      <author>
        <name>j1m</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06224950953627370147</uri>
      </author>
      <link href="http://inferno-rus.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://inferno-rus.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6559550810260622787/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/Inferno-rus" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Все об операционной системе Inferno на русском</subtitle>
      <title>OS Inferno</title>
      <updated>2010-03-14T09:39:27Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-6849644716786781049</id>
    <link href="http://reneefrench.blogspot.com/feeds/6849644716786781049/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=6849644716786781049" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/6849644716786781049" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/6849644716786781049" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/sydnor.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S1fRuOZJswI/AAAAAAAACPo/dDylDppwYqU/s1600-h/tienotes.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5429038467886199554" src="http://3.bp.blogspot.com/_va9O40qIhaE/S1fRuOZJswI/AAAAAAAACPo/dDylDppwYqU/s320/tienotes.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 270px; height: 320px;"/></a><br/><div>sydnor</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-6849644716786781049?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-21T04:05:17Z</updated>
    <published>2010-01-21T04:01:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="notes"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-12T12:06:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-5857526136925518986</id>
    <link href="http://reneefrench.blogspot.com/feeds/5857526136925518986/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=5857526136925518986" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/5857526136925518986" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/5857526136925518986" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/prezbo.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://1.bp.blogspot.com/_va9O40qIhaE/S1Zmd6Z58HI/AAAAAAAACPg/npSi4FtYEGU/s1600-h/hdaydoghillswsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5428639064921862258" src="http://1.bp.blogspot.com/_va9O40qIhaE/S1Zmd6Z58HI/AAAAAAAACPg/npSi4FtYEGU/s320/hdaydoghillswsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 246px; height: 320px;"/></a>prezbo<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-5857526136925518986?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-20T02:13:38Z</updated>
    <published>2010-01-20T02:11:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-12T01:57:24Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-664406817642070725</id>
    <link href="http://reneefrench.blogspot.com/feeds/664406817642070725/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=664406817642070725" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/664406817642070725" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/664406817642070725" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/erasergun.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S1QABfsQNoI/AAAAAAAACPY/HcgvrU1hu60/s1600-h/hdaydogfield3sm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5427963476575270530" src="http://4.bp.blogspot.com/_va9O40qIhaE/S1QABfsQNoI/AAAAAAAACPY/HcgvrU1hu60/s320/hdaydogfield3sm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 258px; height: 320px;"/></a>erasergun<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-664406817642070725?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-18T09:29:00Z</updated>
    <published>2010-01-18T09:29:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-10T11:50:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-5272646203671200718</id>
    <link href="http://reneefrench.blogspot.com/feeds/5272646203671200718/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=5272646203671200718" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/5272646203671200718" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/5272646203671200718" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/helmet-447.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://1.bp.blogspot.com/_va9O40qIhaE/S1P18psx5KI/AAAAAAAACPQ/FiYltA_7J_Y/s1600-h/dogandmousesm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5427952398246208674" src="http://1.bp.blogspot.com/_va9O40qIhaE/S1P18psx5KI/AAAAAAAACPQ/FiYltA_7J_Y/s320/dogandmousesm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 232px;"/></a>helmet 447<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-5272646203671200718?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-18T05:48:05Z</updated>
    <published>2010-01-18T05:47:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="notes"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-09T14:36:18Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-8112971881852154263</id>
    <link href="http://thenewsh.blogspot.com/feeds/8112971881852154263/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/scary-asteroid.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/8112971881852154263" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/8112971881852154263" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/scary-asteroid.html" rel="alternate" type="text/html"/>
    <title>Scary Asteroid</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">The scariest asteroid you've never heard about:<br/>&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" height="264" width="400"&gt;&lt;param name="flashvars" value="webhost=fora.tv&amp;amp;clipid=8779&amp;amp;cliptype=highlight"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="movie" value="http://fora.tv/embedded_player"&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" flashvars="webhost=fora.tv&amp;amp;clipid=8779&amp;amp;cliptype=highlight" height="264" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://fora.tv/embedded_player" type="application/x-shockwave-flash" width="400"&gt;&lt;/embed&gt;&lt;/object&gt;<br/><br/>Have a nice day!<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-8112971881852154263?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-17T18:20:03Z</updated>
    <published>2010-01-17T18:20:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="news"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="disaster"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-09T21:03:44Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-6430725944132973259</id>
    <link href="http://reneefrench.blogspot.com/feeds/6430725944132973259/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=6430725944132973259" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/6430725944132973259" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/6430725944132973259" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/bodie.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S1GAVo66vaI/AAAAAAAACPI/pVzwF1lVJ_g/s1600-h/hdaycloudsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5427260135208304034" src="http://4.bp.blogspot.com/_va9O40qIhaE/S1GAVo66vaI/AAAAAAAACPI/pVzwF1lVJ_g/s320/hdaycloudsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 270px; height: 320px;"/></a>bodie<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-6430725944132973259?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-16T09:02:22Z</updated>
    <published>2010-01-16T09:00:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-08T14:11:07Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-1591963555444917566</id>
    <link href="http://thenewsh.blogspot.com/feeds/1591963555444917566/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/acme-environment-in-plan9.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/1591963555444917566" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/1591963555444917566" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/acme-environment-in-plan9.html" rel="alternate" type="text/html"/>
    <title>The Acme environment in Plan9</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Here's a three part introduction to the Acme environment in Plan9. Acme's an editor, a file browser, a paned text user interface a shell environment, and more. It's small, simple, elegant and extensible. A lot of people are put off by it when they first try it since it is so foreign and its not obvious how to use all of its features. This short video series shows some of the features of Acme and how it fits into the Plan9 environment.<br/><br/>&lt;object height="265" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/dopu3ZtdCsg&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="265" src="http://www.youtube.com/v/dopu3ZtdCsg&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" width="320"&gt;&lt;/embed&gt;&lt;/object&gt;<br/><br/>&lt;object height="265" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/2vjD_B__SbQ&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="265" src="http://www.youtube.com/v/2vjD_B__SbQ&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" width="320"&gt;&lt;/embed&gt;&lt;/object&gt;<br/><br/>&lt;object height="265" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/cR96WQ6OR00&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="265" src="http://www.youtube.com/v/cR96WQ6OR00&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" width="320"&gt;&lt;/embed&gt;&lt;/object&gt;<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-1591963555444917566?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-15T19:05:03Z</updated>
    <published>2010-01-15T19:05:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="os"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="plan9"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="programming"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-09T18:11:19Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-3677530160300069581</id>
    <link href="http://reneefrench.blogspot.com/feeds/3677530160300069581/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=3677530160300069581" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/3677530160300069581" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/3677530160300069581" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/oldshow.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S1BSjg8zueI/AAAAAAAACOw/5xafQtm5G3w/s1600-h/ropeman.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5426928321075329506" src="http://4.bp.blogspot.com/_va9O40qIhaE/S1BSjg8zueI/AAAAAAAACOw/5xafQtm5G3w/s320/ropeman.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 253px; height: 320px;"/></a>oldshow<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-3677530160300069581?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-15T11:34:23Z</updated>
    <published>2010-01-15T10:33:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="portrait"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-07T00:41:40Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-725148813420344448</id>
    <link href="http://reneefrench.blogspot.com/feeds/725148813420344448/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=725148813420344448" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/725148813420344448" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/725148813420344448" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/avon.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S0wBO3OKdEI/AAAAAAAACOg/lXVJxMTZliw/s1600-h/hdaydiamig3sm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5425713005927756866" src="http://4.bp.blogspot.com/_va9O40qIhaE/S0wBO3OKdEI/AAAAAAAACOg/lXVJxMTZliw/s320/hdaydiamig3sm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 300px;"/></a>avon<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-725148813420344448?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-14T09:11:00Z</updated>
    <published>2010-01-14T09:11:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="line drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-06T17:31:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-6152967125720248421</id>
    <link href="http://reneefrench.blogspot.com/feeds/6152967125720248421/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=6152967125720248421" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/6152967125720248421" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/6152967125720248421" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/bilby.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S03Cwc-KEtI/AAAAAAAACOo/wGo8n_AOZfI/s1600-h/hdaydogmanasm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5426207263717724882" src="http://3.bp.blogspot.com/_va9O40qIhaE/S03Cwc-KEtI/AAAAAAAACOo/wGo8n_AOZfI/s320/hdaydogmanasm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 288px; height: 320px;"/></a><br/>bilby<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-6152967125720248421?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-13T12:55:35Z</updated>
    <published>2010-01-12T09:01:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-03T12:38:05Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-3538149587291473072</id>
    <link href="http://reneefrench.blogspot.com/feeds/3538149587291473072/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=3538149587291473072" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/3538149587291473072" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/3538149587291473072" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/bunny.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://4.bp.blogspot.com/_va9O40qIhaE/S0wA8L91skI/AAAAAAAACOY/BE_zIBMDBwE/s1600-h/hdaydiamigsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5425712685078917698" src="http://4.bp.blogspot.com/_va9O40qIhaE/S0wA8L91skI/AAAAAAAACOY/BE_zIBMDBwE/s320/hdaydiamigsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 292px;"/></a>bunny<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-3538149587291473072?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-13T09:54:00Z</updated>
    <published>2010-01-13T09:54:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="line drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-06T12:19:46Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-5831936268885893155</id>
    <link href="http://thenewsh.blogspot.com/feeds/5831936268885893155/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/tectonic-movements.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/5831936268885893155" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/5831936268885893155" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/tectonic-movements.html" rel="alternate" type="text/html"/>
    <title>Tectonic movements</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">This is huge. Google is going to stop censoring in china, which may lead to it closing up shop there. <a href="http://googleblog.blogspot.com/2010/01/new-approach-to-china.html">http://googleblog.blogspot.com/2010/01/new-approach-to-china.html</a><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-5831936268885893155?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-13T00:03:18Z</updated>
    <published>2010-01-13T00:03:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="news"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="security"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-04T18:39:08Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6989726062940083922.post-5852735969555927602</id>
    <link href="http://robpike.blogspot.com/feeds/5852735969555927602/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=6989726062940083922&amp;postID=5852735969555927602" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default/5852735969555927602" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default/5852735969555927602" rel="self" type="application/atom+xml"/>
    <link href="http://robpike.blogspot.com/2010/01/on-ugliness.html" rel="alternate" type="text/html"/>
    <title>On Ugliness</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_Fpj1cqLIn_Y/S0r_GtgItmI/AAAAAAAABrM/oSskiE8Z26U/s1600-h/On+Ugliness.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5425429191879865954" src="http://3.bp.blogspot.com/_Fpj1cqLIn_Y/S0r_GtgItmI/AAAAAAAABrM/oSskiE8Z26U/s400/On+Ugliness.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 400px; height: 271px;"/></a><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6989726062940083922-5852735969555927602?l=robpike.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-11T10:36:15Z</updated>
    <published>2010-01-11T10:35:00Z</published>
    <author>
      <name>rob</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/18259238879445421354</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6989726062940083922</id>
      <author>
        <name>rob</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/18259238879445421354</uri>
      </author>
      <link href="http://robpike.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://robpike.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6989726062940083922/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <title>rob pike</title>
      <updated>2010-03-18T03:38:46Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-5142795186699800130</id>
    <link href="http://reneefrench.blogspot.com/feeds/5142795186699800130/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=5142795186699800130" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/5142795186699800130" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/5142795186699800130" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/malabar3.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://1.bp.blogspot.com/_va9O40qIhaE/S0lsr0wClnI/AAAAAAAACNo/gjzaNZvlEoE/s1600-h/hdayboatbridgesm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5424986726294787698" src="http://1.bp.blogspot.com/_va9O40qIhaE/S0lsr0wClnI/AAAAAAAACNo/gjzaNZvlEoE/s320/hdayboatbridgesm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 278px; height: 320px;"/></a>malabar3<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-5142795186699800130?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-11T09:58:00Z</updated>
    <published>2010-01-11T09:58:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-03T12:38:05Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-3836580994029467779</id>
    <link href="http://reneefrench.blogspot.com/feeds/3836580994029467779/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=3836580994029467779" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/3836580994029467779" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/3836580994029467779" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/mesrine-pt-2.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S0kDMHl33II/AAAAAAAACNg/sFo1k6PYI98/s1600-h/girlslap.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5424870732875684994" src="http://3.bp.blogspot.com/_va9O40qIhaE/S0kDMHl33II/AAAAAAAACNg/sFo1k6PYI98/s320/girlslap.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 290px; height: 320px;"/></a>mesrine pt 2<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-3836580994029467779?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-09T22:48:54Z</updated>
    <published>2010-01-10T09:28:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="notes"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-03T02:37:58Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-1554026529629993025</id>
    <link href="http://reneefrench.blogspot.com/feeds/1554026529629993025/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=1554026529629993025" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/1554026529629993025" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/1554026529629993025" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/poot.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://3.bp.blogspot.com/_va9O40qIhaE/S0gA_NMgyXI/AAAAAAAACNY/qf8MEaRz3GA/s1600-h/hdaydogmannosm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5424586837041662322" src="http://3.bp.blogspot.com/_va9O40qIhaE/S0gA_NMgyXI/AAAAAAAACNY/qf8MEaRz3GA/s320/hdaydogmannosm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 282px; height: 320px;"/></a>poot<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-1554026529629993025?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-09T09:06:00Z</updated>
    <published>2010-01-09T09:06:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="tonal drawings"/>
    <author>
      <name>renee</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04038449165206577034</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5192082</id>
      <author>
        <name>renee</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04038449165206577034</uri>
      </author>
      <link href="http://reneefrench.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://reneefrench.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/5192082/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>click to make them bigger</subtitle>
      <title>renee french</title>
      <updated>2010-02-02T10:02:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6686335686368389743.post-4810129177775911917</id>
    <link href="http://thenewsh.blogspot.com/feeds/4810129177775911917/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/protocol-development-trick.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/4810129177775911917" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default/4810129177775911917" rel="self" type="application/atom+xml"/>
    <link href="http://thenewsh.blogspot.com/2010/01/protocol-development-trick.html" rel="alternate" type="text/html"/>
    <title>A protocol development trick</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I'm working on a new protocol. To ease development I am splitting up the work into two parts. First I'll worry about the protocol semantics and content and then I'll figure out the encoding. (Leave aside for a moment that you should never totally ignore the encoding when developing a protocol; I have some experience, so its in the back of my mind as I go along). I still want to write code to test this thing out. Luckily I can do this pretty easily in python without nailing down a concrete encoding by using dictionaries and the pickling library:<br/><br/><pre>def send(s, **kw) :<br/>      s.send(pickle.dumps(kw))<br/>  def recv(s) : <br/>      return pickle.loads(s.recv(64*1024))<br/></pre><br/>I'm using UDP so I get natural message delimiters. If this was TCP I'd have to wrap the pickled data with a delimiter somehow (ie. prepend a length field). Now sending and receiving messages is straightforward:<br/><br/><pre>send(s, foo=1, bar="test", priority="utmost!", flags=SYN|ACK)<br/>  m = recv(s)<br/>  print m['priority']<br/></pre><br/>And to make field access a little easier I define a message object so I can use field access instead of dictionary indexing. It also gives me pretty printing:<br/><br/><pre>class Msg(object) :<br/>    def __init__(self, *kw) :<br/>        self.__names__ = kw.keys() <br/>        for n,v in kw.items() :<br/>            setattr(self, n, v)<br/>    def __str__(self) :<br/>        attrs = ' '.join("%s=%s" % (n,getattr(self,n)) for n in self.__names__)<br/>        return '[Msg %s]' % attrs<br/>    __repr__ = __str__<br/><br/>def recvMsg(s) :<br/>    return Msg(**recv(s))<br/><br/>m = recvMsg(s)<br/>print m.priority<br/></pre><pre>print m</pre><br/>So now I can write my protocol in terms of message fields, leave the details of field encoding to later and still have an executable prototype to play with.<br/><br/>btw, anyone know good code formatting options that are compatible with blogger.com (besides <a href="http://code.google.com/p/syntaxhighlighter/">http://code.google.com/p/syntaxhighlighter/</a> which looks pretty god awful ugly)?<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6686335686368389743-4810129177775911917?l=thenewsh.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-08T20:49:24Z</updated>
    <published>2010-01-08T20:49:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="python"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="programming"/>
    <author>
      <name>newsham</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/10474447258819808743</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6686335686368389743</id>
      <author>
        <name>newsham</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/10474447258819808743</uri>
      </author>
      <link href="http://thenewsh.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://thenewsh.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6686335686368389743/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>News, programming, logic, the interweb, operating systems, etc.</subtitle>
      <title>thenewsh</title>
      <updated>2010-03-02T18:56:10Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5192082.post-2676436795028050010</id>
    <link href="http://reneefrench.blogspot.com/feeds/2676436795028050010/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=5192082&amp;postID=2676436795028050010" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2676436795028050010" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5192082/posts/default/2676436795028050010" rel="self" type="application/atom+xml"/>
    <link href="http://reneefrench.blogspot.com/2010/01/1111124-dog.html" rel="alternate" type="text/html"/>
    <title/>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://2.bp.blogspot.com/_va9O40qIhaE/S0XSjNPKuhI/AAAAAAAACNQ/3vTzRSU-vZE/s1600-h/hdaymandogsm.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5423972828528163346" src="http://2.bp.blogspot.com/_va9O40qIhaE/S0XSjNPKuhI/AAAAAAAACNQ/3vTzRSU-vZE/s320/hdaymandogsm.jpg" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 291px; height: 320px;"/></a>1111124 dog<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/5192082-2676436795028050010?l=reneefrench.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2010-01-08T09:24:00Z</updated>
    <published>2010-01-08T09:24:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="story z"/>
    <category scheme="http: