<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>The Party Line</title>
    <link rel="alternate" type="text/html" href="http://blog.tobez.org/" />
    <link rel="self" type="application/atom+xml" href="http://blog.tobez.org/atom.xml" />
    <id>tag:blog.tobez.org,2010-01-06://3</id>
    <updated>2009-03-24T10:35:31Z</updated>
    <subtitle>tobez&apos;s personal weblog</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 5.01</generator>

<entry>
    <title>Books giveaway</title>
    <link rel="alternate" type="text/html" href="http://blog.tobez.org/2009/03/books-giveaway.html" />
    <id>tag:blog.tobez.org,2009://3.88</id>

    <published>2009-03-24T10:24:07Z</published>
    <updated>2009-03-24T10:35:31Z</updated>

    <summary>For reasons which I am not going to delve into here (this is a topic for another post), we are going to get rid of about half of our books. There are some (low) hundreds of books for the taking,...</summary>
    <author>
        <name>tobez</name>
        
    </author>
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="books" label="books" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="free" label="free" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="woblomo" label="woblomo" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.tobez.org/">
        <![CDATA[<p>For reasons which I am not going to delve into here (this is a topic for another post),
we are going to get  rid of about half of our books.</p>

<p>There are some (low) hundreds of books for the taking,
slightly more than half in English,
the rest being mostly Russian with a sprinkling of Danish
here and there.</p>

<p>Fiction, non-fiction, textbooks, science fiction, you name it.</p>

<p>So, if you are in Copenhagen area and are interested,
<a href="mailto:tobez@tobez.org?subject=Books">write me a note</a> and consider coming over
to have a look, maybe you&#8217;ll find something you&#8217;d like to keep.
All books are to be had for free, although we would not
mind selling them if you will insist.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Heart-attack date (mis)calculation</title>
    <link rel="alternate" type="text/html" href="http://blog.tobez.org/2009/03/heart-attack-date-miscalculation.html" />
    <id>tag:blog.tobez.org,2009://3.83</id>

    <published>2009-03-18T10:52:41Z</published>
    <updated>2009-03-18T10:56:25Z</updated>

    <summary>Me and my wife are going to Paris in April. So, some time ago we have ordered tickets from a popular Danish travel site, rejsefeber.dk. The tickets are for 2009-04-18. This morning I have got a shiny (HTML) email from...</summary>
    <author>
        <name>tobez</name>
        
    </author>
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Rants" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="date" label="date" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="france" label="france" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="fuckup" label="fuckup" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="paris" label="paris" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rants" label="rants" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="travel" label="travel" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="woblomo" label="woblomo" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.tobez.org/">
        <![CDATA[<p>Me and my wife are going to Paris in April.
So, some time ago we have ordered
tickets from a popular Danish
travel site, rejsefeber.dk.</p>

<p>The tickets are for 2009-04-18.</p>

<p>This morning I have got a shiny (HTML) email from them
which said the following (loosely translated 
from Danish):</p>

<blockquote>
  <p>Bon Vojage.</p>
  
  <p>Hello Anton.</p>
  
  <p>In a moment you will be traveling to Paris!
  There are often many things that should be
  taken care of before the journey, and
  we would like to help you with practical details.
  We hope that you will find in this mail something
  that will make your journey even better.
  Have a good journey!</p>
</blockquote>

<p>After realizing that today is 2009-03-18,
I had my moment of panic, frantically searching
for the PDF with the electronic ticket,
verifying that I have not made a major fuckup
and that our tickets are indeed for April the 18th,
not March the 18th.</p>

<p>So the fuckup is not mine.  Fine.
But it would be nice to be absolutely really positively
sure, so I called their customer service.
The robot helpfully told me that </p>

<ul>
<li>this is a paid call (I don&#8217;t remember the exact amount per minute, but it was not peanuts);</li>
<li>I am number 10 in the queue. </li>
</ul>

<p>And there is no contact E-mail on the website.</p>

<p>So what do you think - is it a simple,
albeit embarrasing programming error
on behalf of rejsefeber.dk programmers,
or a secret plot to get some more money out
of customers induced into a state of panic?</p>

<p>At any rate,
I do not think I will be using their services
again.  If I need some excitement in my life,
there are better ways to obtain it.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>rrdtool legend box rant</title>
    <link rel="alternate" type="text/html" href="http://blog.tobez.org/2009/03/rrdtool-legend-box-rant.html" />
    <id>tag:blog.tobez.org,2009://3.74</id>

    <published>2009-03-05T13:21:41Z</published>
    <updated>2009-03-05T16:21:33Z</updated>

    <summary>Last time I ranted about one thing that is wrong with rrdtool. It turns out that I, unfortunately, have more gripes to share. Let&#8217;s talk today about the legend control. The rrdtool&#8217;s language for controlling how the graph is going...</summary>
    <author>
        <name>tobez</name>
        
    </author>
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Hints" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Rants" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="rants" label="rants" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rrdtool" label="rrdtool" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="unixtools" label="unix tools" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="woblomo" label="woblomo" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.tobez.org/">
        <![CDATA[<p><a href="http://blog.tobez.org/2009/03/rrdtool-cdef-restrictions-rant.html">Last time</a>
I ranted about one thing that is wrong with <a href="http://oss.oetiker.ch/rrdtool/">rrdtool</a>.</p>

<p>It turns out that I, unfortunately, have more gripes
to share.  Let&#8217;s talk today about the legend control.</p>

<p>The rrdtool&#8217;s language for controlling how the graph
is going to look and feel is pretty rich and complex.
Among other things, it has a bunch of graphing commands
that are able to manipulate the legend section of the graph.
Some of those commands do nothing else,
while the other commands only modify the legend
as a side effect, and primarily exist for
doing something else.</p>

<p>Let&#8217;s take as an example the graph below:</p>

<pre><code>rrdtool graph x.png
  --end 1235800000 --start end-150000
  'DEF:data=some.rrd:data:AVERAGE'
  'CDEF:sine=data,POP,1235800000,TIME,-,10000,/,SIN'
  'LINE1:sine#0000ff:a sine of foo\l'
  'CDEF:cosine=data,POP,1235800000,TIME,-,5000,/,COS'
  'LINE1:cosine#00ff00:a cosine of bar'
</code></pre>

<p><img src="http://www.tobez.org/images/blog/rrdtool/sine.png" alt="" /></p>

<p>The trouble is that there is <em>no</em> instruction which
can produce a so called &#8220;legend box&#8221; (a small blue
box next to the &#8220;a sine of foo&#8221; legend text)
without doing something else in the process.
<em>All</em> of the commands that actually graph something
can optionally produce a legend box, but there
is no other way to make it.</p>

<p>If we extend our sine example with some nice
<a href="http://blog.tobez.org/2009/03/rrdtool-cdef-restrictions-rant.html">downtime background</a> (in Soviet Russia sines
can have a downtime!), we get a nice picture like this:</p>

<pre><code>rrdtool graph x.png
  --end 1235800000 --start end-150000
  'DEF:data=some.rrd:data:AVERAGE'
  'CDEF:downtime=data,0,0,IF,
    TIME,1235769489,GE,TIME,1235779489,LE,*,
    TIME,1235689489,GE,TIME,1235729489,LE,*,+,+'
  'CDEF:sine=data,POP,1235800000,TIME,-,10000,/,SIN'
  'LINE1:sine#0000ff:a sine of foo\l'
  'CDEF:cosine=data,POP,1235800000,TIME,-,5000,/,COS'
  'LINE1:cosine#00ff00:a cosine of bar\l'
  <strong>'TICK:downtime#ffe0e0:1.0:downtime'</strong>
</code></pre>

<p><img src="http://www.tobez.org/images/blog/rrdtool/sine-with-downtime.png" alt="" /></p>

<p>But let&#8217;s suppose that we&#8217;d also like to add background
coloring for uptime, and indicate that in a legend.
Let&#8217;s use another CDEF for uptime, which will be just
the opposite of our downtime CDEF:</p>

<pre><code>rrdtool graph x.png
  --end 1235800000 --start end-150000
  'DEF:data=some.rrd:data:AVERAGE'
  'CDEF:downtime=data,0,0,IF,
    TIME,1235769489,GE,TIME,1235779489,LE,*,
    TIME,1235689489,GE,TIME,1235729489,LE,*,+,+'
  <strong>'CDEF:uptime=downtime,0,1,IF'</strong>
  'CDEF:sine=data,POP,1235800000,TIME,-,10000,/,SIN'
  'LINE1:sine#0000ff:a sine of foo\l'
  'CDEF:cosine=data,POP,1235800000,TIME,-,5000,/,COS'
  'LINE1:cosine#00ff00:a cosine of bar\l'
  <strong>'TICK:uptime#e0ffe0:1.0:uptime'</strong>
  <strong>'TEXTALIGN:left'</strong>
  'TICK:downtime#ffe0e0:1.0:downtime'
</code></pre>

<p><img src="http://www.tobez.org/images/blog/rrdtool/uptime-no-sine.png" alt="" /></p>

<p>Oops.  Of course.  The graphing commands are processed
in sequence, so the uptime &#8220;background&#8221; has obscured
our actual sinusoidal data!
We will have to put the uptime TICK before anything else
to avoid this:</p>

<pre><code>rrdtool graph x.png
  --end 1235800000 --start end-150000
  'DEF:data=some.rrd:data:AVERAGE'
  'CDEF:downtime=data,0,0,IF,
    TIME,1235769489,GE,TIME,1235779489,LE,*,
    TIME,1235689489,GE,TIME,1235729489,LE,*,+,+'
  'CDEF:uptime=downtime,0,1,IF'
  'CDEF:sine=data,POP,1235800000,TIME,-,10000,/,SIN'
  <strong>'TICK:uptime#e0ffe0:1.0:uptime'</strong>
  'LINE1:sine#0000ff:a sine of foo\l'
  'CDEF:cosine=data,POP,1235800000,TIME,-,5000,/,COS'
  'LINE1:cosine#00ff00:a cosine of bar\l'
  'TICK:downtime#ffe0e0:1.0:downtime'
</code></pre>

<p><img src="http://www.tobez.org/images/blog/rrdtool/uptime-bad-legend.png" alt="" /></p>

<p>See the problem?  Now the legend boxes are not in the
right order.</p>

<p>Naturally, it is pretty trivial to solve - we just remove
the legend (it is optional) from the uptime TICK,
and add another graphing command in the end with the
right legend text.
We&#8217;ll simply have to make sure that this &#8220;graphing command&#8221;
does not actually graph anything:</p>

<pre><code>rrdtool graph x.png
  --end 1235800000 --start end-150000
  'DEF:data=some.rrd:data:AVERAGE'
  'CDEF:downtime=data,0,0,IF,
    TIME,1235769489,GE,TIME,1235779489,LE,*,
    TIME,1235689489,GE,TIME,1235729489,LE,*,+,+'
  'CDEF:uptime=downtime,0,1,IF'
  'CDEF:sine=data,POP,1235800000,TIME,-,10000,/,SIN'
  <strong>'TICK:uptime#e0ffe0:1.0'</strong>
  'LINE1:sine#0000ff:a sine of foo\l'
  'CDEF:cosine=data,POP,1235800000,TIME,-,5000,/,COS'
  'LINE1:cosine#00ff00:a cosine of bar\l'
  <strong>'TICK:uptime#e0ffe0:0.0:uptime'</strong>
  <strong>'TEXTALIGN:left'</strong>
  'TICK:downtime#ffe0e0:1.0:downtime'
</code></pre>

<p><img src="http://www.tobez.org/images/blog/rrdtool/nice-sine.png" alt="" /></p>

<p>Just like the last time - the problem is easily solvable,
but it annoys me, since rrdtool again forces us to work
against it instead of working with us.
It would be nicer to have a way to put a legend
box where we want it in some more direct way
(maybe a variant of the COMMENT command)?</p>
]]>
        

    </content>
</entry>

<entry>
    <title>rrdtool CDEF restrictions rant</title>
    <link rel="alternate" type="text/html" href="http://blog.tobez.org/2009/03/rrdtool-cdef-restrictions-rant.html" />
    <id>tag:blog.tobez.org,2009://3.73</id>

    <published>2009-03-03T19:40:06Z</published>
    <updated>2009-03-05T13:31:51Z</updated>

    <summary>Last time I spread some rrdtool love around. Love with no hate won&#8217;t do, however. Taking a page from the way the BBC and many other news outlets cover certain conflicts, it seems prudent to present an unbiased view of...</summary>
    <author>
        <name>tobez</name>
        
    </author>
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Hints" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Rants" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="baddesign" label="bad design" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rants" label="rants" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rrdtool" label="rrdtool" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="unixtools" label="unix tools" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="woblomo" label="woblomo" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.tobez.org/">
        <![CDATA[<p><a href="http://blog.tobez.org/2009/03/some-rrdtool-love.html">Last time</a> I spread some <a href="http://oss.oetiker.ch/rrdtool/">rrdtool</a> love
around.
Love with no hate won&#8217;t do, however.
Taking a page from the way the BBC and many other news outlets
cover certain conflicts,
it seems prudent to present an unbiased view of rrdtool.
And what better way to do that if not by spreading some
hate this time?</p>

<p>Some time ago I had a task of adding background coloring
to the portions of a graph, representing downtime of a device.
This information was not available in the RRD archive
itself, but could be obtained from elsewhere.</p>

<p>The information was in the form of epoch ranges, like this:</p>

<pre><code>1235639489-1235646689,1235725889-1235729489
</code></pre>

<p>After some thought, I decided that making a CDEF
with some simple RPN magic, in combination with a
TICK graphing command would do the trick.
The TICK command draws a vertical line of a specified height
when a data point is not
a zero or an UNKNOWN value, so I na&iuml;vely thought
that this simple CDEF will achieve what I want
(one long line here is split into several lines for your browsing convenience):</p>

<pre><code>CDEF:downtime=0,TIME,1235639489,GE,
    TIME,1235646689,LE,*,
    TIME,1235725889,GE,
    TIME,1235729489,LE,*,+,+
</code></pre>

<p>The boolean values in rddtool&#8217;s RPN are represented using
the usual C-like convention (0 = false, 1 = true),
so for any given time point the result of the CDEF above
will be 0 if the point is outside any of the downtime
intervals, 1 if it is inside one of the intervals,
and more than 1 if it is inside several intervals
(which should not happen, but is possible if we specify
overlapping downtime epoch ranges).</p>

<p>If you did not understand how this is supposed to work,
<a href="http://oss.oetiker.ch/rrdtool/doc/rrdgraph_rpn.en.html">go read the rrdgraph_rpn manpage</a>.</p>

<p>Anyway, that was easy enough, even if it was not very clean.
So where is the promised hate, you&#8217;ll ask?  Here it is:</p>

<pre><code>rrdtool graph x.png --end 1235800000 --start end-150000
    'DEF:data=some.rrd:someds:AVERAGE'
    'CDEF:downtime=0,TIME,1235639489,GE,TIME,1235646689,LE,*,
     TIME,1235725889,GE,TIME,1235729489,LE,*,+,+'
    'TICK:downtime#ffe0e0:1.0'

ERROR: rpn expressions without DEF or CDEF variables are not supported
</code></pre>

<p>You&#8217;ve read that right!
Rrdtool insists that everything you put into a graph must ultimately come
from some data source in some RRD archive.
How stupid is that?</p>

<p>And the answer is - very stupid indeed, for at least two reasons.</p>

<p>First, it tries to pretend it knows what I might want to do better than me,
and I really hate that in software.
Whatever has happened to the idea that a tool must not get in the way of its user?</p>

<p>Secondly, this check is easily circumvented by adding a real DEF somewhere in
the CDEF and then (mis)using RPN language to get rid of any value which comes
from the DEF.
There are many ways to do it, some more creative than others, but even this
ham-fisted &#8220;solution&#8221; will do the job:</p>

<pre><code>CDEF:downtime=data,0,0,IF,TIME,1235639489,GE,
    TIME,1235646689,LE,*,
    TIME,1235725889,GE,
    TIME,1235729489,LE,*,+,+
</code></pre>

<p>So we have a pointless restriction, and we are forced to work around it.
Some might say that working against the tool to reach the goal is somehow
challenging and maybe even fun.
If you ask me, this is akin to programming in <a href="http://en.wikipedia.org/wiki/Brainfuck">Brainfuck</a> -
a kind of activity better performed as a hobby, if that&#8217;s your idea of
how to spend your copious free time.</p>

<p>To rephrase the Perl&#8217;s motto, <em>rrdtool makes simple things hard</em>.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Some rrdtool love</title>
    <link rel="alternate" type="text/html" href="http://blog.tobez.org/2009/03/some-rrdtool-love.html" />
    <id>tag:blog.tobez.org,2009://3.71</id>

    <published>2009-03-01T14:16:50Z</published>
    <updated>2009-03-05T13:31:11Z</updated>

    <summary>Everybody uses rrdtool. Everybody loves rrdtool. I love rrdtool as well. Sometimes it even pleasantly surprizes me. For example, it used to be the case that massive updates of a large number of RRD archives were a bit on the...</summary>
    <author>
        <name>tobez</name>
        
    </author>
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Hints" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="performance" label="performance" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rrdtool" label="rrdtool" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="unixtools" label="unix tools" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="woblomo" label="woblomo" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.tobez.org/">
        <![CDATA[<p>Everybody uses <a href="http://oss.oetiker.ch/rrdtool/">rrdtool</a>.
Everybody loves rrdtool.</p>

<p>I love rrdtool as well.
Sometimes it even pleasantly surprizes me.</p>

<p>For example,
it used to be the case that massive updates of
a large number of RRD archives were a bit on the
slow side (this operation is IO-bound, you see).</p>

<p>Quite unexpectedly I found that
this inconvenience can be easily circumvented
by throwing more RAM into the problem.
By itself, this statement is not at all suprizing - after all,
we all know about effects of disk caching.
It is the <em>magnitude</em> of the improvement that
simply astonished me:
on a moderately busy box with primary purpose entirely
different from doing RRD updates,
I am now routinely getting around 18500 RRD acrhives
updated in under 1 second.
The large majority of the archives has 40+ data sources each,
and the rest has 140+ data sources each.
The machine has measly 8G of RAM.</p>

<p>Sometimes,
when the box is busy doing something with its disks,
it might take 3 minutes to finish the updates.
In very rare instances it can take up to 15 minutes.
But in more than 80% of cases it takes under 1 second.</p>

<p>The setup is such that the actual data collection
is completely separated from the RRD update step.
In fact, the collection step actually occurs on a different machine,
for reasons I am not going to delve into in this post.
The collector generates an &#8220;RRD update order&#8221; file,
which is transferred to the target machine, where it
is parsed by a simple Perl script, which subsequently
executes the corresponding RRDs::update statements,
with a small degree of parallelism in this last operation.</p>

<p>The application has been running for some months now,
and every time I recall the numbers involved,
I cannot help but say &#8220;wow!&#8221;.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>pcaptail</title>
    <link rel="alternate" type="text/html" href="http://blog.tobez.org/2006/08/pcaptail.html" />
    <id>tag:blog.tobez.org,2006://3.51</id>

    <published>2006-08-21T12:08:22Z</published>
    <updated>2009-03-01T12:07:13Z</updated>

    <summary>The situation: tcpdump is running pretty much continuously on one of your boxes, busily snooping the traffic. The resulting pcap file is huge, and you like it that way. The task: you want to analyze the current traffic using Wireshark,...</summary>
    <author>
        <name>tobez</name>
        
    </author>
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.tobez.org/">
        <![CDATA[<p>The situation: <a href="http://www.tcpdump.org/">tcpdump</a> is running pretty much continuously
on one of your boxes, busily snooping the traffic.
The resulting pcap file is huge, and you like it that way.</p>

<p>The task: you want to analyze the current traffic using
<a href="http://www.wireshark.org/">Wireshark</a>, which is not installed on the box
tcpdump is running on.
Even X11 is not there, and again, you would like to keep it that
way.</p>

<p>The problem: copying the whole file to your desktop machine
is an option, but it will take too long.
Running another instance of tcpdump and piping its output
to Wireshark on your desktop machine would work,
but you don&#8217;t like it, since the data is already there,
and it is nice to use what you have.</p>

<p>The solution: download and compile the <a href="http://www.tobez.org/download/pcaptail-0.01.tar.gz">pcaptail</a> little
program.
Run it with the pcap file name as the only parameter.
It will behave like <code>tail -f</code> but on the level of individual
packets.
Then you can feed its output to an instance of wireshark
on your desktop machine.</p>

<p>Enjoy.  It&#8217;s an ugly hack, but you can still enjoy it.</p>

<p>P.S. Long time no C.  :-)</p>
]]>
        

    </content>
</entry>

<entry>
    <title>On intelligent design</title>
    <link rel="alternate" type="text/html" href="http://blog.tobez.org/2005/08/on-intelligent-design.html" />
    <id>tag:blog.tobez.org,2005://3.40</id>

    <published>2005-08-08T09:57:35Z</published>
    <updated>2009-03-01T12:07:10Z</updated>

    <summary>Google bombing is baaad, but Intelligent Design &#8220;theory&#8221; is worse still. Seriously....</summary>
    <author>
        <name>tobez</name>
        
    </author>
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.tobez.org/">
        <![CDATA[<p><a href="http://en.wikipedia.org/wiki/Google_bombing">Google bombing</a> is <em>baaad</em>, but <a href="http://www.ncseweb.org/resources/articles/996_intelligent_design_not_accep_9_10_2002.asp">Intelligent Design</a> &#8220;theory&#8221; is worse still.  Seriously.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Cyborgs are among us</title>
    <link rel="alternate" type="text/html" href="http://blog.tobez.org/2005/05/cyborgs-are-among-us.html" />
    <id>tag:blog.tobez.org,2005://3.39</id>

    <published>2005-05-31T11:57:20Z</published>
    <updated>2009-03-01T12:07:04Z</updated>

    <summary> This is seriously cool: On June 8, three volunteers will be hooked up to electronics that will give them new sensory powers. For two days, they will adapt to life as a cyborg. One cyborg will feel magnetism. A...</summary>
    <author>
        <name>tobez</name>
        
    </author>
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.tobez.org/">
        <![CDATA[<p><img src="http://www.tobez.org/images/blog/cyborg1.png" alt="Cyborg" />
<a href="http://www.we-make-money-not-art.com/archives/005811.php">This</a> is seriously cool:</p>

<p>On June 8, three volunteers will be hooked up to electronics that will give them new sensory powers. For two days, they will adapt to life as a cyborg. One cyborg will feel magnetism. A second will &#8220;see&#8221; the world through a robot&#8217;s artificial eye. The third will sense metal objects hidden behind walls.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>``They have small RJ45 adapted claws&apos;&apos;</title>
    <link rel="alternate" type="text/html" href="http://blog.tobez.org/2005/03/they-have-small-rj45-adapted-claws.html" />
    <id>tag:blog.tobez.org,2005://3.36</id>

    <published>2005-03-30T20:46:49Z</published>
    <updated>2009-03-01T12:07:01Z</updated>

    <summary>One of my cats managed to unplug my landline phone the other day. I&#8217;ve no idea how he managed the feat: you have to press in exactly the right place to disconnect the cable, just like you do it with...</summary>
    <author>
        <name>tobez</name>
        
    </author>
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.tobez.org/">
        <![CDATA[<p>One of my cats managed to unplug my landline phone the other day.  I&#8217;ve no idea how he managed the feat: you have to press in exactly the right place to disconnect the cable, just like you do it with an ethernet cable.</p>

<p>That&#8217;s the guy:
<a href="http://www.tobez.org/photos/Cats-2005/IMG_1528.JPG.html"><img src="http://www.tobez.org/photos/Cats-2005/.thumbs/IMG_1528.JPG" alt="the phone unplugger" /></a></p>

<p>The title of this post courtesy of <a href="http://www.starbsd.org/">Phil Regnauld</a>.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Screen color grab to X11 selection</title>
    <link rel="alternate" type="text/html" href="http://blog.tobez.org/2005/03/screen-color-grab-to-x11-selection.html" />
    <id>tag:blog.tobez.org,2005://3.34</id>

    <published>2005-03-17T15:08:03Z</published>
    <updated>2009-03-01T12:06:59Z</updated>

    <summary>Step 1: install grabc (FreeBSD: ports/x11/grabc) Step 2: install xclip (ports/x11/xclip) Step 3: assign some key in your window manager to the following sequence: grabc 2&gt;/dev/null|perl -pe &apos;chomp&apos;|xclip -i Voila. Originally, I wanted to make a dockapp to click on,...</summary>
    <author>
        <name>tobez</name>
        
    </author>
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.tobez.org/">
        <![CDATA[<p>Step 1: install grabc (FreeBSD: ports/x11/grabc)
Step 2: install xclip (ports/x11/xclip)
Step 3: assign some key in your window manager to the following sequence:</p>

<p><code>grabc 2>/dev/null|perl -pe 'chomp'|xclip -i</code></p>

<p>Voila.</p>

<p>Originally, I wanted to make a dockapp to click on, which would do that, but then decided that it&#8217;s not worth the bother.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>What you get for playing with Firefox&apos;es about:config too much</title>
    <link rel="alternate" type="text/html" href="http://blog.tobez.org/2005/01/what-you-get-for-playing-with-firefoxes-aboutconfig-too-much.html" />
    <id>tag:blog.tobez.org,2005://3.33</id>

    <published>2005-01-03T18:38:41Z</published>
    <updated>2009-03-01T12:06:59Z</updated>

    <summary>Go to about:config, set browser.cache.memory.enable to false, then go to any not heavily modified WordPress site and observe a blank page&#8230; The problem: wp-blog-header.php utilizes Cache-Control: no-store, which Firefox apparently tries hard to respect, to the point that if there...</summary>
    <author>
        <name>tobez</name>
        
    </author>
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.tobez.org/">
        <![CDATA[<p>Go to <code>about:config</code>, set <code>browser.cache.memory.enable</code> to <em>false</em>, then go to any not heavily modified WordPress site and observe a blank page&#8230;</p>

<p>The problem: <code>wp-blog-header.php</code> utilizes <code>Cache-Control:</code> <em>no-store</em>, which Firefox apparently tries hard to respect, to the point that if there is no memory cache enabled, the page just is not shown.</p>

<p>Nice bug.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Beware exponential code</title>
    <link rel="alternate" type="text/html" href="http://blog.tobez.org/2004/12/beware-exponential-code.html" />
    <id>tag:blog.tobez.org,2004://3.29</id>

    <published>2004-12-12T17:38:16Z</published>
    <updated>2009-03-01T12:06:58Z</updated>

    <summary>I am not discovering America, but this: s/(\S+)$//s); $x = $1; $y = $_; is the hell of a lot faster than an equivalent /^(.*?)(\S+)$/); $x = $2; $y = $1; One can really feel that with moderately long lines...</summary>
    <author>
        <name>tobez</name>
        
    </author>
    
        <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.tobez.org/">
        <![CDATA[<p>I am not discovering America, but this:</p>

<p><code>s/(\S+)$//s);
$x = $1;
$y = $_;
</code></p>

<p>is the hell of a lot faster than an equivalent</p>

<p><code>/^(.*?)(\S+)$/);
$x = $2;
$y = $1;
</code></p>

<p>One can <strong>really</strong> feel that with moderately long lines (50K or so).</p>
]]>
        

    </content>
</entry>

</feed>
