<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
<?xml-stylesheet type="text/css" href="http://technomage.net/styles/feed.css"?>


<title type="html">signifying nothing.</title>
<subtitle type="html">... full of sound and fury ...</subtitle>
<link rel="alternate" type="text/html" href="http://technomage.net"/>
<link rel="self" type="application/atom+xml" href="http://technomage.net/atom.xml"/>
<updated>2012-05-11T06:36:39-05:00</updated>
<author>
<name>matt</name>
<uri>http://technomage.net</uri>
</author>
<id>http://technomage.net/</id>
<generator uri="http://nanoblogger.sourceforge.net" version="3.5-RC1">
NanoBlogger
</generator>

<entry>
<title type="html">corntab, crontab web-gui</title>
<author>
<name>matt</name>
</author>
<link rel="alternate" type="text/html" href="http://technomage.net/archives/2012/05/11/corntab_crontab_web-gui/index.html"/>

<id>http://technomage.net/archives/2012/05/11/corntab_crontab_web-gui/index.html</id>
<published>2012-05-11T06:36:39-05:00</published>
<updated>2012-05-11T06:36:39-05:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>Someone linked this on twitter, and I thought it deserved a mention here.</p>
<p><a href="http://corntab.com/pages/crontab-gui">corntab</a> is a web based tool to let you
build a crontab that can be copied and pasted.</p>
</div>
</content>

</entry>
<entry>
<title type="html">Perl File::Glob</title>
<author>
<name>matt</name>
</author>
<link rel="alternate" type="text/html" href="http://technomage.net/archives/2012/05/08/perl_fileglob/index.html"/>

<id>http://technomage.net/archives/2012/05/08/perl_fileglob/index.html</id>
<published>2012-05-08T08:20:27-05:00</published>
<updated>2012-05-08T08:20:27-05:00</updated>
<category term="opensource" />
<category term="scripting" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>How the heck have I been using perl pretty much daily for almost 15 years and
NOT seen File::Glob?!</p>
<p>There are several scripts that I have written over the years where I wanted to
just grab certain files by name.  I have done database calls to generate the
names, I have used File::Find, I have written the script to just take the
files as listed as arguments.</p>
<p>And it could have been soooo much simpler!</p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15</pre></div></td><td class="code"><div class="codehilite"><pre><span class="c1">#!/usr/bin/perl</span>

<span class="k">use</span> <span class="n">strict</span><span class="p">;</span>
<span class="k">use</span> <span class="n">warnings</span><span class="p">;</span>
<span class="k">use</span> <span class="nn">File::</span><span class="n">Glob</span><span class="p">;</span>

<span class="k">my</span> <span class="nv">@txt_files</span> <span class="o">=</span> <span class="sr">&lt;*[.]txt&gt;</span><span class="p">;</span>

<span class="k">for</span> <span class="k">my</span> <span class="nv">$file</span> <span class="p">(</span> <span class="nv">@txt_files</span> <span class="p">)</span> <span class="p">{</span>
    <span class="n">do_something</span><span class="p">(</span> <span class="nv">$file</span> <span class="p">);</span>
<span class="p">}</span>

<span class="k">sub </span><span class="nf">do_something</span> <span class="p">{</span>
    <span class="o">....</span>
<span class="p">};</span>
</pre></div>
</td></tr></table>
</div>
</content>

</entry>
<entry>
<title type="html">markdoc added to the toolbox</title>
<author>
<name>matt</name>
</author>
<link rel="alternate" type="text/html" href="http://technomage.net/archives/2012/05/06/markdoc_added_to_the_toolbox/index.html"/>

<id>http://technomage.net/archives/2012/05/06/markdoc_added_to_the_toolbox/index.html</id>
<published>2012-05-06T06:05:47-05:00</published>
<updated>2012-05-06T06:05:47-05:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>In my continuing quest to use (n)vi(m) as my text editor to get everything
done with, and to not use server side scripting for websites when I don't need
it, I installed <a href="http://markdoc.org">markdoc</a> on my home server this weekend.</p>
<p>Markdoc is a "simple" framework for generating static websites using
<a href="http://daringfireball.com/markdown">markdown</a>.  I am using it to generate a
static wiki at <a href="http://wiki.technomage.net">wiki.technomage.net</a>.  There used
to be a docuwiki installed there, which didn't get used as much as it could
have, mainly because I really don't like most of the web forms for
adding/editing content out there.</p>
<p>With the current setup, I have the wiki on my home computer, and just run an
rsync up to the server to update it.  This is much like how I have
<a href="http://nanoblogger.sf.net">nanoblogger</a> setup.  Which means if something
happens to my server, I can still get to my stuff on my home server, which is
also backed up using <a href="http://spideroak.com">spideroak</a>.</p>
<p>The only snags that I ran into with setting up <a href="http://markdoc.org">markdoc</a>
was some not quite obvious settings.</p>
<p>I ran </p>
<div class="codehilite"><pre><span class="n">markdoc</span> <span class="n">init</span> <span class="n">wiki</span>
</pre></div>


<p>And then moved some things around.</p>
<div class="codehilite"><pre><span class="n">cd</span> <span class="n">wiki</span>
<span class="n">mv</span> <span class="n">static</span> <span class="p">.</span><span class="n">static</span>
<span class="n">mv</span> <span class="n">markdoc</span><span class="p">.</span><span class="n">yaml</span> <span class="p">.</span><span class="n">markdoc</span><span class="p">.</span><span class="n">yaml</span>
<span class="n">rmdir</span> <span class="n">wiki</span>
</pre></div>


<p>Then edited .markdoc.yaml to contain:</p>
<div class="codehilite"><pre><span class="n">wiki</span><span class="o">-</span><span class="n">name</span><span class="p">:</span> &quot;<span class="n">wiki</span> <span class="p">.</span> <span class="n">technomage</span> <span class="p">.</span> <span class="n">net</span>&quot;
<span class="n">static</span><span class="o">-</span><span class="n">dir</span><span class="p">:</span> &quot;<span class="p">.</span><span class="n">static</span>&quot;
<span class="n">wiki</span><span class="o">-</span><span class="n">dir</span><span class="p">:</span> &quot;<span class="p">.</span>&quot;

<span class="n">use</span><span class="o">-</span><span class="n">default</span><span class="o">-</span><span class="n">static</span><span class="p">:</span> <span class="n">false</span>

<span class="n">markdown</span><span class="p">:</span>
    <span class="n">extensions</span><span class="p">:</span> <span class="p">[</span><span class="n">codehilite</span><span class="p">]</span>
</pre></div>


<p>I initially left out the 'use-default-static: false' line, and copied the
.html/media/css/style.css to .static/media/css/style.css, editing style.css to
remove the 650px width settings.</p>
<p>This way I can just cd ~/wiki and start editing.  When I am done, a simple</p>
<div class="codehilite"><pre><span class="n">markdoc</span> <span class="n">build</span> <span class="o">&amp;&amp;</span> <span class="n">rsync</span> <span class="o">-</span><span class="n">a</span> <span class="o">-</span><span class="n">e</span> <span class="n">ssh</span> <span class="p">.</span><span class="n">html</span><span class="o">/</span> <span class="n">matt</span><span class="p">@</span><span class="n">yoda</span><span class="p">.</span><span class="n">grephead</span><span class="p">.</span><span class="n">com</span><span class="p">:</span><span class="o">~/</span><span class="n">wiki</span><span class="p">.</span><span class="n">technomage</span><span class="p">.</span><span class="n">net</span>
</pre></div>


<p>Builds everything and pushes it up to the server.</p>
</div>
</content>

</entry>
<entry>
<title type="html">greppy, sage</title>
<author>
<name>matt</name>
</author>
<link rel="alternate" type="text/html" href="http://technomage.net/archives/2012/04/28/greppy_sage/index.html"/>

<id>http://technomage.net/archives/2012/04/28/greppy_sage/index.html</id>
<published>2012-04-28T19:51:49-05:00</published>
<updated>2012-04-28T19:51:49-05:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="http://ipv6.he.net/certification/scoresheet.php?pass_name=greppy"
target="_blank"><img
src="http://ipv6.he.net/certification/create_badge.php?pass_name=greppy&badge=1"
width=128 height=128 border=0 alt="IPv6 Certification Badge for
greppy"></img></a></p>
<p>I have to say, I was not thinking that I would be finished with this so soon.</p>
<p>If anyone else is interested in doing this, I highly recommend
<a href="http://prgmr.com">prgmr.com</a> and <a href="http://hover.com">hover.com</a> as your VPS provider and Registrar.</p>
<p>I still find it hard to wrap my head around the idea that I have more IP space
assigned to my home network than exists in the entire ipv4 space.</p>
<p>The entire "current" internet is using 32bit address space.  I have a 64bit
assigned to my home network.</p>
<div class="codehilite"><pre><span class="n">mharlow</span><span class="p">@</span><span class="n">vaganto</span><span class="p">:</span><span class="o">~</span>$ <span class="n">echo</span> <span class="s">&#39;2^32&#39;</span> <span class="o">|</span> <span class="n">bc</span> <span class="o">-</span><span class="n">l</span>
4294967296
<span class="n">mharlow</span><span class="p">@</span><span class="n">vaganto</span><span class="p">:</span><span class="o">~</span>$ <span class="n">echo</span> <span class="s">&#39;2^64&#39;</span> <span class="o">|</span> <span class="n">bc</span> <span class="o">-</span><span class="n">l</span>
18446744073709551616
</pre></div>
</div>
</content>

</entry>
<entry>
<title type="html">ipv6 on the home network</title>
<author>
<name>matt</name>
</author>
<link rel="alternate" type="text/html" href="http://technomage.net/archives/2012/04/27/ipv6_on_the_home_network/index.html"/>

<id>http://technomage.net/archives/2012/04/27/ipv6_on_the_home_network/index.html</id>
<published>2012-04-27T21:01:27-05:00</published>
<updated>2012-04-27T21:01:27-05:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>As part of my goals for this year, I wanted to learn more about ipv6.
I have the impression that my knowledge, like many of my contemporaries, was
quite a bit more theoretical than practical.</p>
<p>I was partially inspired by the posts of <a href="http://thuktun.wordpress.com/category/ipv6/" title="Tom Perrine Blog">Tom Perrine</a> on his own
adventures in ipv6 exploration, but my requirements differed just a bit from
his.  He wanted an off the shelf with reasonable cost for consumer grade
equipment.  I wanted to just get it working and not spend any money right now.</p>
<p>Last year sometime it was pointed out to me that <a href="http://he.net" title="Hurricane Electric">Hurricane Electric</a>
offers ipv6 tunnels for free.  So a few days ago I finally got around to
signing up for one.  The <a href="http://tunnelbroker.net" title="IPv6 Tunnel Broker">tunnelbroker.net</a> signup was quick and
painless.</p>
<p>What was not so painless was confirming that my current WiFi AP/Router, a
Netgear WGR614v9, was not going to work with this.  This caused me to step
back and look at my network design again.  Thankfully, being someone of a
linux junky, I had a home server running Ubuntu 10.04 LTS on the network as
well.  After moving some things around and reconfiguring what was plugged into
where, I ended up with my linux server plugged directly into the cable modem
on eth0 with eth1 going to the switch, which had the WiFi AP plugged in, but
no longer acting as the DHCP server.</p>
<p>Next up was getting my ipv6 tunnel talking.  After using the example
configurations from <a href="http://he.net" title="Hurricane Electric">Hurricane Electric</a>, which worked, I ended up
with the following in my /etc/network/interfaces</p>
<div class="codehilite"><pre><span class="n">auto</span> 6<span class="n">in4</span>
<span class="n">iface</span> 6<span class="n">in4</span> <span class="n">inet6</span> <span class="n">v4tunnel</span>
    <span class="n">address</span> 2001<span class="p">:</span>470<span class="p">:</span>1<span class="n">f10</span><span class="p">:</span>3<span class="n">bd</span><span class="p">::</span>2
    <span class="n">netmask</span> 64
    <span class="n">endpoint</span> 209<span class="p">.</span>51<span class="p">.</span>181<span class="p">.</span>2
    <span class="n">gateway</span> 2001<span class="p">:</span>470<span class="p">:</span>1<span class="n">f10</span><span class="p">:</span>3<span class="n">bd</span><span class="p">::</span>1
    <span class="n">ttl</span> 255
</pre></div>


<p>Now I could reach ipv6 sites from my server, but couldn't get there from the
devices on my LAN.</p>
<p>So I started looking for how to hand out ipv6 addresses to the LAN, enter
<a href="http://www.litech.org/radvd/" title="Linux IPv6 Router Advertisement Daemon">radvd</a>.  At first, I could get an ipv6 address on the LAN, but that
was it, I couldn't even ping the server.  A fellow member of <a href="http://www.lopsa.org" title="League of Professional System Administrators">LOPSA</a>,
StevenR, in the #lopsa IRC channel, pointed out that there are two prefix's
handed out by <a href="http://tunnelbroker.net" title="IPv6 Tunnel Broker">Tunnel Broker</a>.  There is the ipv6 tunnel endpoint,
which is a /64 address, and a routed /64 subnet.</p>
<div class="codehilite"><pre><span class="n">ipv6</span> <span class="n">routed</span> <span class="n">subnet</span><span class="p">:</span> 2001<span class="p">:</span>470<span class="p">:</span>1<span class="n">f11</span><span class="p">:</span>3<span class="n">bd</span><span class="p">::</span>1<span class="o">/</span>64
</pre></div>


<p>Notice that the routed subnet is one digit different.  So that was the first
part of the problem, so I ended up with the following /etc/radvd.conf</p>
<div class="codehilite"><pre><span class="n">interface</span> <span class="n">eth1</span>
<span class="p">{</span>
    <span class="n">AdvSendAdvert</span> <span class="n">on</span><span class="p">;</span>
    <span class="n">prefix</span> 2001<span class="p">:</span>470<span class="p">:</span>1<span class="n">f11</span><span class="p">:</span>3<span class="n">bd</span><span class="p">::</span>2<span class="o">/</span>64
    <span class="p">{</span>
        <span class="n">AdvOnLink</span> <span class="n">on</span><span class="p">;</span>
        <span class="n">AdvAutonomous</span> <span class="n">on</span><span class="p">;</span>
    <span class="p">};</span>
<span class="p">};</span>
</pre></div>


<p>Devices on the network could now get an ipv6 address, but still could not route.
For that to work, one more change needed to be made to /etc/network/interfaces</p>
<div class="codehilite"><pre><span class="n">auto</span> <span class="n">eth1</span>
<span class="n">iface</span> <span class="n">eth1</span> <span class="n">inet</span> <span class="n">static</span>
    <span class="n">address</span> 172<span class="p">.</span>27<span class="p">.</span>1<span class="p">.</span>2
    <span class="n">netmask</span> 255<span class="p">.</span>255<span class="p">.</span>255<span class="p">.</span>0
    <span class="n">up</span> <span class="n">ip</span> <span class="n">route</span> <span class="n">add</span> 2011<span class="p">:</span>470<span class="p">:</span>1<span class="n">f11</span><span class="p">:</span>3<span class="n">bd</span><span class="p">::</span><span class="o">/</span>64 <span class="n">eth1</span>
</pre></div>


<p>And now, I can reach ipv6 addresses from devices on the LAN:</p>
<div class="codehilite"><pre><span class="n">mharlow</span><span class="p">@</span><span class="n">wanderer</span> <span class="o">~</span> $ <span class="n">ping6</span> <span class="o">-</span><span class="n">n</span> <span class="o">-</span><span class="n">c</span> 5 <span class="n">ipv6</span><span class="p">.</span><span class="n">google</span><span class="p">.</span><span class="n">com</span>
<span class="n">PING</span> <span class="n">ipv6</span><span class="p">.</span><span class="n">google</span><span class="p">.</span><span class="n">com</span><span class="p">(</span>2001<span class="p">:</span>4860<span class="p">:</span>400<span class="n">a</span><span class="p">:</span>800<span class="p">::</span>1012<span class="p">)</span> 56 <span class="n">data</span> <span class="n">bytes</span>
64 <span class="n">bytes</span> <span class="n">from</span> 2001<span class="p">:</span>4860<span class="p">:</span>400<span class="n">a</span><span class="p">:</span>800<span class="p">::</span>1012<span class="p">:</span> <span class="n">icmp_seq</span><span class="p">=</span>1 <span class="n">ttl</span><span class="p">=</span>58 <span class="n">time</span><span class="p">=</span>42<span class="p">.</span>7 <span class="n">ms</span>
64 <span class="n">bytes</span> <span class="n">from</span> 2001<span class="p">:</span>4860<span class="p">:</span>400<span class="n">a</span><span class="p">:</span>800<span class="p">::</span>1012<span class="p">:</span> <span class="n">icmp_seq</span><span class="p">=</span>2 <span class="n">ttl</span><span class="p">=</span>58 <span class="n">time</span><span class="p">=</span>22<span class="p">.</span>0 <span class="n">ms</span>
64 <span class="n">bytes</span> <span class="n">from</span> 2001<span class="p">:</span>4860<span class="p">:</span>400<span class="n">a</span><span class="p">:</span>800<span class="p">::</span>1012<span class="p">:</span> <span class="n">icmp_seq</span><span class="p">=</span>3 <span class="n">ttl</span><span class="p">=</span>58 <span class="n">time</span><span class="p">=</span>23<span class="p">.</span>1 <span class="n">ms</span>
64 <span class="n">bytes</span> <span class="n">from</span> 2001<span class="p">:</span>4860<span class="p">:</span>400<span class="n">a</span><span class="p">:</span>800<span class="p">::</span>1012<span class="p">:</span> <span class="n">icmp_seq</span><span class="p">=</span>4 <span class="n">ttl</span><span class="p">=</span>58 <span class="n">time</span><span class="p">=</span>21<span class="p">.</span>5 <span class="n">ms</span>
64 <span class="n">bytes</span> <span class="n">from</span> 2001<span class="p">:</span>4860<span class="p">:</span>400<span class="n">a</span><span class="p">:</span>800<span class="p">::</span>1012<span class="p">:</span> <span class="n">icmp_seq</span><span class="p">=</span>5 <span class="n">ttl</span><span class="p">=</span>58 <span class="n">time</span><span class="p">=</span>22<span class="p">.</span>4 <span class="n">ms</span>

<span class="o">---</span> <span class="n">ipv6</span><span class="p">.</span><span class="n">google</span><span class="p">.</span><span class="n">com</span> <span class="n">ping</span> <span class="n">statistics</span> <span class="o">---</span>
5 <span class="n">packets</span> <span class="n">transmitted</span><span class="p">,</span> 5 <span class="n">received</span><span class="p">,</span> 0<span class="c">% packet loss, time 4005ms</span>
<span class="n">rtt</span> <span class="n">min</span><span class="o">/</span><span class="n">avg</span><span class="o">/</span><span class="n">max</span><span class="o">/</span><span class="n">mdev</span> <span class="p">=</span> 21<span class="p">.</span>589<span class="o">/</span>26<span class="p">.</span>381<span class="o">/</span>42<span class="p">.</span>745<span class="o">/</span>8<span class="p">.</span>197 <span class="n">ms</span>
</pre></div>


<p>And now, I am progressing through the <a href="http://he.net" title="Hurricane Electric">Hurricane Electric</a> ipv6
certification.</p>
<p><a href="http://ipv6.he.net/certification/scoresheet.php?pass_name=greppy"
target="_blank"><img
src="http://ipv6.he.net/certification/create_badge.php?pass_name=greppy&badge=1"
width=128 height=128 border=0 alt="IPv6 Certification Badge for
greppy"></img></a></p>
<p>So to sum up:</p>
<p>Get an ipv6 tunnel from <a href="http://tunnelbroker.net" title="IPv6 Tunnel Broker">Tunnel Broker</a>.</p>
<p><strong>/etc/network/interfaces</strong></p>
<div class="codehilite"><pre><span class="c"># public/wan interface</span>
<span class="n">auto</span> <span class="n">eth0</span>
<span class="n">iface</span> <span class="n">eth0</span> <span class="n">inet</span> <span class="n">dhcp</span>

<span class="c"># private/lan interface</span>
<span class="n">auto</span> <span class="n">eth1</span>
<span class="n">iface</span> <span class="n">eth1</span> <span class="n">inet</span> <span class="k">static</span>
    <span class="n">address</span> 172<span class="p">.</span>27<span class="p">.</span>1<span class="p">.</span>2
    <span class="n">netmask</span> 255<span class="p">.</span>255<span class="p">.</span>255<span class="p">.</span>0
    <span class="c"># gateway 172.27.1.1</span>
    <span class="n">up</span> <span class="n">ip</span> <span class="n">route</span> <span class="n">add</span> $<span class="n">Client_IPv6_Address_Prefix</span><span class="o">/</span>64 <span class="n">eth1</span>

<span class="n">auto</span> 6<span class="n">in4</span>
<span class="n">iface</span> 6<span class="n">in4</span> <span class="n">inet6</span> <span class="n">v4tunnel</span>
    <span class="n">address</span> $<span class="n">Client_IPv6_Address</span>
    <span class="n">netmask</span> 64
    <span class="n">endpoint</span> $<span class="n">Server_IPv4_Address</span>
    <span class="n">gateway</span> $<span class="n">Server_IPv6_Address</span>
    <span class="n">ttl</span> 255
</pre></div>


<p><strong>/etc/radvd.conf</strong></p>
<div class="codehilite"><pre><span class="n">interface</span> <span class="n">eth1</span>
<span class="p">{</span>
        <span class="n">AdvSendAdvert</span> <span class="n">on</span><span class="p">;</span>
        <span class="n">prefix</span> $<span class="n">Client_IPv6_Address</span> 
        <span class="p">{</span>
                <span class="n">AdvOnLink</span> <span class="n">on</span><span class="p">;</span>
                <span class="n">AdvAutonomous</span> <span class="n">on</span><span class="p">;</span>
        <span class="p">};</span>
<span class="p">};</span>
</pre></div>
</div>
</content>

</entry>
<entry>
<title type="html">Bug classification</title>
<author>
<name>matt</name>
</author>
<link rel="alternate" type="text/html" href="http://technomage.net/archives/2012/03/21/bug_classification/index.html"/>

<id>http://technomage.net/archives/2012/03/21/bug_classification/index.html</id>
<published>2012-03-21T04:28:49-05:00</published>
<updated>2012-03-21T04:28:49-05:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>I saw this on IRC this morning in ##hamradio on freenode:</p>
<blockquote>
<div class="codehilite"><pre><span class="mi">04</span><span class="o">:</span><span class="mi">21</span><span class="o">:</span><span class="mi">21</span> <span class="n">SteveCooling</span> <span class="o">|</span> <span class="n">I</span><span class="err">&#39;</span><span class="n">ve</span> <span class="n">come</span> <span class="n">up</span> <span class="k">with</span> <span class="n">a</span> <span class="k">new</span> <span class="n">classification</span> <span class="n">of</span> <span class="n">software</span> <span class="n">bug</span>                               
<span class="mi">04</span><span class="o">:</span><span class="mi">21</span><span class="o">:</span><span class="mi">48</span> <span class="n">SteveCooling</span> <span class="o">|</span> <span class="n">In</span> <span class="n">relation</span> <span class="n">to</span> <span class="n">types</span> <span class="n">such</span> <span class="k">as</span> <span class="n">Heisenbug</span> <span class="n">or</span> <span class="n">Schr</span><span class="err">ö</span><span class="n">dinbug</span>                                
<span class="mi">04</span><span class="o">:</span><span class="mi">22</span><span class="o">:</span><span class="mi">13</span> <span class="n">SteveCooling</span> <span class="o">|</span> <span class="n">I</span> <span class="n">now</span> <span class="n">propose</span> <span class="n">to</span> <span class="n">establish</span> <span class="s2">&quot;Hindenbug&quot;</span>                                               
<span class="mi">04</span><span class="o">:</span><span class="mi">23</span><span class="o">:</span><span class="mi">44</span> <span class="n">SteveCooling</span> <span class="o">|</span> <span class="n">The</span> <span class="n">kind</span> <span class="n">of</span> <span class="n">bug</span> <span class="n">that</span> <span class="n">causes</span> <span class="n">a</span> <span class="n">catastrophic</span> <span class="n">failure</span> <span class="n">rendering</span> <span class="n">the</span> <span class="n">system</span> <span class="n">unusable</span><span class="o">,</span> <span class="n">and</span>
                        <span class="o">|</span> <span class="n">lowering</span> <span class="n">the</span> <span class="n">confidence</span> <span class="k">in</span> <span class="n">the</span> <span class="n">system</span> <span class="n">to</span> <span class="n">a</span> <span class="n">point</span> <span class="n">where</span> <span class="n">it</span> <span class="n">needs</span> <span class="n">to</span> <span class="n">be</span> <span class="n">decommissioned</span>
</pre></div>


</blockquote>
</div>
</content>

</entry>
<entry>
<title type="html">Todo.txt, vimtodo, vimoutliner, vimwiki, taskpaper.vim, oh my.</title>
<author>
<name>matt</name>
</author>
<link rel="alternate" type="text/html" href="http://technomage.net/archives/2012/02/29/todo_txt_vimtodo_vimoutliner_vimwiki_taskpaper_vim_oh_my/index.html"/>

<id>http://technomage.net/archives/2012/02/29/todo_txt_vimtodo_vimoutliner_vimwiki_taskpaper_vim_oh_my/index.html</id>
<published>2012-02-29T09:01:20-05:00</published>
<updated>2012-02-29T09:01:20-05:00</updated>
<category term="blog" />
<category term="life" />
<category term="opensource" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p><em>Warning, I am going to ramble a bit.  This is slightly edited stream of
consciousness.</em></p>
<p>As part of my ongoing struggle to organize my life so that I can stop worrying
about missing deadlines and goals, I decided to take a hard look at the
issue/task/project tracking ( or lack thereof ) that I have for my job.</p>
<p>For the most part I have been using <a href="http://todotxt.com">Todo.txt</a> both in a
shell on a linux box and on my Android phone to keep track of and update my
todo list.  This has worked pretty well.  And while I have been using it for
work stuff as well, it isn't ideal.  I have to ssh out to my home server to
update my todo list from work, or make the update on my personal phone.  So my
work todo list doesn't exist in my work environment.  I also like to keep
personal and work separate, it's part of how I strive to achieve some kind of
balance between the two.</p>
<p>Keeping indvidual todos that have a binary state, either "done" or "not done"
is easy with the todo.sh script or andriod app.  That is really all I need for
most of my personal stuff.  For work though, I desire something that handles
multiple projects with multiple parts in a sane way.  I can't install software
on my workstation, so most of the random tools that people have written that
run on windows are out of the question.  I do have a couple of linux boxes
that I can run stuff on, so that is going to be where I aim to put stuff.
It's also faster to open up a file and edit it over an ssh connection than to
open a file on my workstation to edit, don't ask, I'm not allowed to fix that
problem.</p>
<p>The contenders:</p>
<p><em>Most of these are vim or editor agnostic, I know about emacs OrgMode, and
while I have used emacs in the past, it doesn't appeal to me</em></p>
<p>vimoutliner is available from the vim-addons debian/ubuntu package.  I've
tried to use it in the past, normally for about a week and then it gets
dropped.  It often feels too heavy for what I am wanting to do, too
structured.</p>
<p>todo.sh, like I have been using, but I have already given some of my issues
with that.</p>
<p><a href="http://www.vim.org/scripts/script.php?script_id=3264">vimtodo</a> started life
as a way to work with the todo.txt file from todo.sh and went on to have a
life of it's own.  This one has great potential.</p>
<p><a href="http://code.google.com/p/vimwiki/">vimwiki</a> could be awesome for
documentation, but I don't think it will be able to make the cut for general
task/project management.  In theory the exported HTML files could be dropped
onto our sharepoint, although not into what Microsoft has optimistically
called a wiki on sharepoint, just a folder.</p>
<p><a href="http://www.vim.org/scripts/script.php?script_id=2027">taskpaper.vim</a> like
vimtodo has great potential.  It offers some basic syntax highlighting and the
ability to track projects and also sub-projects.  It does seem to be a little
buggy in a couple of spots, like with indenting to make a subtask every time I
hit enter.</p>
<p>Of course, I could always just roll my own formatted text file.  And that does
have it's own appeal as well.  But before I do that I want to at least look at
and poke the other possibilities out there.  I need something simple enough
that I can just open it up and start editing, even if I don't have vim or the
custom syntax/plugin files handy.  I'd also like it to be something that I can
just shove into an email to send to my boss or someone on my team so that they
have an idea of where I am on a particular project.</p>
<p>No matter what script/plugin/format I end up using, I think I am going to have
to paraphrase Voltaire and put "Perfect is the enemy of good enough" at the
beginning of it as a reminder to myself that this is a constant battle, it
will never be totally won.  Even if I could design the perfect format and
corresponding scripts and syntax files for what I need, or think I need,
today, in the future that WILL change.</p>
</div>
</content>

</entry>
<entry>
<title type="html">&amp; AND ; are line terminators</title>
<author>
<name>matt</name>
</author>
<link rel="alternate" type="text/html" href="http://technomage.net/archives/2012/01/31/__and__are_line_terminators/index.html"/>

<id>http://technomage.net/archives/2012/01/31/__and__are_line_terminators/index.html</id>
<published>2012-01-31T03:34:09-05:00</published>
<updated>2012-01-31T03:34:09-05:00</updated>
<category term="opensource" />
<category term="scripting" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>I kept running into an error when I would go to background a bunch of
processes in a shell script.</p>
<div class="codehilite"><pre>$ for i in 1 2 3 4;do echo <span class="cp">${</span><span class="n">i</span><span class="cp">}</span> <span class="err">&amp;</span> ;done
-bash: syntax error near unexpected token `;&#39;
</pre></div>


<p>I finally remembered, after some help from google, that both &amp; and ; are line
terminators, so I was doubling up on them.  The correct syntax would be:</p>
<div class="codehilite"><pre>$ for i in 1 2 3 4;do echo <span class="cp">${</span><span class="n">i</span><span class="cp">}</span> <span class="err">&amp;</span> done
</pre></div>


<p>Hopefully by putting this on the blog, I will remember it. :)</p>
</div>
</content>

</entry>
<entry>
<title type="html">Too many series, not enough books.</title>
<author>
<name>matt</name>
</author>
<link rel="alternate" type="text/html" href="http://technomage.net/archives/2012/01/23/too_many_series_not_enough_books/index.html"/>

<id>http://technomage.net/archives/2012/01/23/too_many_series_not_enough_books/index.html</id>
<published>2012-01-23T05:48:48-05:00</published>
<updated>2012-01-23T05:48:48-05:00</updated>
<category term="book" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>I just finished "Mission of Honor" by David Weber.  The last book that has
been published in the "Honor Harrington" series.  I started this series
because the other series that I was reading didn't have any new books out.</p>
<p>So now, I have yet another series that I am waiting for an author to publish
the next book in.  Yup, I did it to myself, again.</p>
<p>Books I am currently waiting for:</p>
<p>"Cold Days" of "The Dresden Files".  Like any good author that isn't done
with a series, <a href="http://jim-butcher.com" title="Jim Butcher">Jim Butcher</a> has left us hanging with
what in the heck is going to happen next.  "The Dresden Files" is currently my
favorite series of books.</p>
<p>A Memory of Light" of "The Wheel of Time" series.  This should be the last
book in said series.  <a href="http://brandonsanderson.com" title="Brandon Sanderson">Brandon Sanderson</a> has done an awesome job taking
this series over after the death of Robert Jordan.  Based on his treatment of
these books, I am tempted to pick up his "Mistborne" series.  I am pretty sure
that if I do that I will end up adding his other books to my library as well.</p>
<p>I initially started these series to be fillers while I waited for <a href="http://jim-butcher.com" title="Jim Butcher">Jim
Butcher</a> and <a href="http://brandonsanderson.com" title="Brandon Sanderson">Brandon Sanderson</a> to publish the next books in their
series.  Now I am torn as to which one I wish would come out next.</p>
<p>"Tricked" of "The Iron Druid Chronicles".  <a href="http://kevinhearne.com" title="Kevin Hearne">Kevin Hearne</a> and <a href="http://jim-butcher.com" title="Jim Butcher">Jim
Butcher</a> I think both had the same teachers when it comes to endings to
books.</p>
<p>"Raven Calls" of "The Walker Papers" by <a href="http://cemurphy.net" title="C. E. Murphy">C. E. Murphy</a>.  Is anyone else
noticing a trend of "Urban Fantasy" here?  "The Iron Druid Chronicles",
"The Walker Papers" and "The Dresden Files" are all about magic users set in
our current history and society.  They each approach it from a slightly
different perspective, a crossover with all three would probably break the
world, in more ways than one.</p>
<p>"A Rising Thunder" the next in the Honorverse of <a href="http://davidweber.net" title="David Weber">David Weber</a>.  This
has been a very good series for me.  I'm not sure if it is because I have been
listening to the audiobooks of it or just because the writing is that good, or
more likely, a combination of both, but I find myself having some very
emotional reactions to things that happen in the book to various characters.</p>
<p>"A Song of Ice and Fire" or "The Game of Thrones" books by <a href="http://georgerrmartin.com/" title="George R. R. Martin">George R. R.
Martin</a>.  I like these books, but due to the frequency, or lack there
of, at which he releases new titles, I am not <em>exactly</em> looking forward to
this with bated breath.  For reasons that others who have read the books will
understand, I personally beleive that the end of the series will end in a
massive cracking of the world, killing everyone.</p>
<p>The problem now, is that none of these authors are due to release anything in
these series for the next several months.  So what is an addict to do?  I am
most likely going to take a page from what I used to do every year.  I would
re-read "The Dresden Files" books, normally timed so that I would finish the
last book just before the new one was published.  Thankfully, I think, I have
plenty of books to get through if I want to get all of them done again.</p>
<ul>
<li>"The Dresden Files", 13 books.</li>
<li>"The Wheel of Time", 13 books.</li>
<li>"The Honorverse", 12 books.</li>
<li>"The Walker Papers", 6 books.</li>
<li>"The Iron Druid Chronicles", 3 books.</li>
</ul>
<p>That should keep me busy for a while, right?  If not I can go back and read
the 6 books in the "Codex Alera" series also by <a href="http://jim-butcher.com" title="Jim Butcher">Jim Butcher</a> again.  And
if even that is not enough to keep me occupied until one of these authors
publishes another book, I do have plenty of other books to read.  I could also
spend some time getting my entire library dumped into <a href="http://www.goodreads.com/greppy" title="goodreads.com">goodreads.com</a>.</p>
</div>
</content>

</entry>
<entry>
<title type="html">Awesome Fail: sudo mount in .bashrc</title>
<author>
<name>matt</name>
</author>
<link rel="alternate" type="text/html" href="http://technomage.net/archives/2012/01/22/awesome_fail_sudo_mount_in__bashrc/index.html"/>

<id>http://technomage.net/archives/2012/01/22/awesome_fail_sudo_mount_in__bashrc/index.html</id>
<published>2012-01-22T13:10:49-05:00</published>
<updated>2012-01-22T13:10:49-05:00</updated>
<category term="opensource" />
<category term="fail" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>I saw this in an opensource operating system support channel on a popular IRC
network today.</p>
<div class="codehilite"><pre><span class="n">user1</span> <span class="o">|</span> <span class="n">how</span> <span class="n">do</span> <span class="n">I</span> <span class="n">automount</span> <span class="n">a</span> <span class="n">HDD</span> <span class="n">on</span> <span class="n">boot</span>? <span class="n">putting</span> &quot;<span class="n">sudo</span> <span class="n">mount</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sdb1</span> <span class="o">/</span><span class="n">mnt</span><span class="o">/</span><span class="n">backup</span>&quot; <span class="n">in</span> <span class="p">.</span><span class="n">bashrc</span> <span class="n">probably</span> <span class="n">wont</span> <span class="n">work</span><span class="p">,</span> <span class="n">since</span> <span class="n">its</span> <span class="n">a</span> <span class="n">sudo</span> <span class="n">command</span>?  
<span class="n">user2</span> <span class="o">|</span> <span class="n">user1</span><span class="p">:</span> <span class="n">man</span> <span class="n">fstab</span> <span class="n">has</span> <span class="n">good</span> <span class="n">instructions</span><span class="p">.</span>  
<span class="n">user1</span> <span class="o">|</span> <span class="n">can</span> <span class="n">I</span> <span class="n">just</span> <span class="n">add</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">sdb1</span> <span class="o">/</span><span class="n">mnt</span><span class="o">/</span><span class="n">backup</span> <span class="n">to</span> <span class="n">the</span> <span class="k">end</span> <span class="n">of</span> <span class="n">it</span>? <span class="n">without</span> <span class="n">all</span> <span class="n">those</span> <span class="n">ext3</span> <span class="n">and</span> <span class="n">other</span> <span class="n">specs</span> <span class="n">in</span> <span class="n">the</span> <span class="k">end</span>  
<span class="n">user2</span> <span class="o">|</span> <span class="n">no</span><span class="p">.</span> <span class="n">you</span> <span class="n">need</span> <span class="n">some</span> <span class="n">of</span> <span class="n">them</span> <span class="n">options</span><span class="p">,</span> <span class="n">or</span> <span class="n">it</span> <span class="n">won</span><span class="o">&#39;</span><span class="n">t</span> <span class="n">be</span> <span class="n">valid</span><span class="p">.</span>   
<span class="n">user2</span> <span class="o">|</span> <span class="n">also</span><span class="p">,</span> <span class="n">you</span> <span class="n">might</span> <span class="n">well</span> <span class="n">want</span> <span class="n">to</span> <span class="nb">find</span> <span class="n">out</span> <span class="n">the</span> <span class="n">UUID</span> <span class="n">of</span> <span class="n">the</span> <span class="n">filesystem</span><span class="p">.</span>  
<span class="n">user1</span> <span class="o">|</span> <span class="n">ouch</span>  
<span class="n">user1</span> <span class="o">|</span> <span class="n">considering</span> <span class="n">making</span> <span class="n">one</span> <span class="n">big</span> <span class="n">LVM</span> <span class="n">of</span> <span class="n">all</span> <span class="n">my</span> <span class="n">disks</span>
</pre></div>


<p>I know that I should have jumped into this conversation, but... I was at a
loss at how to approach the level of the lack of understanding of things that
I consider basic.  I want people to realize that there are alternatives to
closed systems.  I want people to experiment, to learn.  But I shudder when
things like this come up.</p>
<p>That someone knows enough to be able to use 'LVM' in a sentance, but doesn't
know how to use /etc/fstab scares the hell out of me.</p>
</div>
</content>

</entry>

</feed>

