<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[signifying nothing.]]></title>
  <link href="http://technomage.net/atom.xml" rel="self"/>
  <link href="http://technomage.net/"/>
  <updated>2013-05-15T13:32:31-05:00</updated>
  <id>http://technomage.net/</id>
  <author>
    <name><![CDATA[Matt Okeson-Harlow]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Morse Ringtones]]></title>
    <link href="http://technomage.net/blog/2013/05/15/morse-ringtones/"/>
    <updated>2013-05-15T13:27:00-05:00</updated>
    <id>http://technomage.net/blog/2013/05/15/morse-ringtones</id>
    <content type="html"><![CDATA[<p>I am such a geek.  In order to hopefuly help me learn morse, I now have morse
ringtones for most of my friends and family.</p>

<p>I spent some time putzing around with pulse audio on the laptop trying to
record these myself, and then found <a href="http://morseringtones.com">http://morseringtones.com</a>.</p>

<p>So I wrote a script to slurp down ringtones, I just add a name or callsign to
lists.txt and run generate.sh</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'><span class="c">#!/bin/bash</span>
</span><span class='line'>
</span><span class='line'><span class="k">for </span>i in <span class="k">$(</span>cat list.txt<span class="k">)</span>
</span><span class='line'><span class="k">do</span>
</span><span class='line'><span class="k">  if</span> <span class="o">[</span> ! -f <span class="s2">&quot;${i}_medium.mp3&quot;</span> <span class="o">]</span>;<span class="k">then</span>
</span><span class='line'><span class="k">      </span>wget -O /dev/null <span class="s2">&quot;http://morseringtones.com/cgi-bin/generate_ringtone.sh?text=${i}&amp;speed=medium&amp;pitch=600&amp;repeat=3&quot;</span>
</span><span class='line'>      wget http://morseringtones.com/working/<span class="k">${</span><span class="nv">i</span><span class="k">}</span>_medium.mp3
</span><span class='line'>  <span class="k">fi</span>
</span><span class='line'><span class="k">done</span>
</span></code></pre></td></tr></table></div></figure>



]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Backing up pinboard.in]]></title>
    <link href="http://technomage.net/blog/2013/04/21/backing-up-pinboard-dot-in/"/>
    <updated>2013-04-21T20:16:00-05:00</updated>
    <id>http://technomage.net/blog/2013/04/21/backing-up-pinboard-dot-in</id>
    <content type="html"><![CDATA[<p>I try to be constantly aware of what things in my digital life need to be
backedup.  One of the things that I have NOT been backing up on a regular
basis is my <a href="https://pinboard.in">pinboard</a> bookmarks.</p>

<p>I found a <a href="http://www.alexwlchan.net/blog/2013/03/pinboard-backups/">post</a>
about doing this and stuck it on my <a href="http://todotxt.com">todo list</a>.</p>

<p>When I finally got around to implementing the python script that was included
in the post however, I found that I did not have a module installed and it was
not show up in a quick &#8216;apt-cache search pyzt&#8217;, so I looked a little closer at
it, and at the <a href="https://pinboard.in/api">pinboard api</a> and discovered that all
I really needed was a single commandline:</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>/usr/bin/wget -O ~/Dropbox/pinboard/pinboard_backup.xml <span class="s2">&quot;https://api.pinboard.in/v1/posts/all?auth_token=$(cat ~/.pinboard-credentials)&quot;</span>
</span></code></pre></td></tr></table></div></figure>


<p>My ~/.pinboard-credentials file contains my pinboard API token from
<a href="https://pinboard.in/settings/password">pinboard.in/setttings/password</a>
exactly as it is presented on the webpage.</p>

<p>So I dropped that into my crontab as a daily item, and now I will have a daily
backup of my pinboard bookmarks.</p>

<p>For those of you that are going to point out that a single file that gets
clobbered every day is not a &#8216;real&#8217; backup, my dropbox folder is backed up to
both <a href="http://spideroak.com">SpiderOak</a> and to a
<a href="http://duplicati.com">duplicati</a> backup.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[xmonad + x11vnc + xmodmap]]></title>
    <link href="http://technomage.net/blog/2012/11/23/xmonad-plus-x11vnc-plus-xmodmap/"/>
    <updated>2012-11-23T17:03:00-06:00</updated>
    <id>http://technomage.net/blog/2012/11/23/xmonad-plus-x11vnc-plus-xmodmap</id>
    <content type="html"><![CDATA[<p>I like to use vnc to connect to existing x11 sessions on my linux
workstations.  I have recently, since installing <a href="http://archlinux.org">archlinux</a> on my T60,
found the <a href="http://xmonad.org">xmonad</a> X11 window manager.</p>

<p>As someone that uses <a href="http://www.gnu.org/software/screen">screen</a> and <a href="http://tmux.sf.net">tmux</a> on a daily basis,
xmonad seems like a good fit. Yes, I have run <a href="http://www.nongnu.org/ratpoison">ratpoison</a> in the
past, I am digging xmonad more right now.</p>

<p>The only problem with using the x11vnc package with my current setup is that
vnc doesn&#8217;t capture the windows key, and sending ctrl-esc doesn&#8217;t work.</p>

<p>At first I thought I would just configure a second mod key for xmonad, but it
only supports the one.  There being more than one way to skin a cat in the
linux/unix world, I turned to xmodmap.  Xmodmap allows you to remap keys.</p>

<p>My current .xmodmap file looks like this:</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>remove mod1 = Alt_R
</span><span class='line'>add mod4 = Alt_R</span></code></pre></td></tr></table></div></figure>


<p>This allows me to use the right alt key as an additional modifier along with
the windows key, which is mod4 by default.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Electronic Communications Privacy Act (ECPA), not all that private]]></title>
    <link href="http://technomage.net/blog/2012/11/20/ecpa/"/>
    <updated>2012-11-20T18:05:00-06:00</updated>
    <id>http://technomage.net/blog/2012/11/20/ecpa</id>
    <content type="html"><![CDATA[<p>A friend on G+ linked to <a href="http://www.theverge.com/2012/11/20/3671650/privacy-bill-ecpa-leahy-congress-email">a story on the verge</a> about changes to
the Electronic Communications Privacy Act (ECPA).  The verge.com story is a
summary of a <a href="http://news.cnet.com/8301-13578_3-57552225-38/senate-bill-rewrite-lets-feds-read-your-e-%20mail-without-warrants/">longer article on CNET.com</a>.  Instead of providing
more protections from warrantless digital survelience, it now offers much,
much less.  Please contact your senetators, let them know that we need more
protection, not less.  We need warrants signed by a judge, not just a
subpoena.</p>

<p>I am at a loss as to why regulatory agencies like the FCC, FTC, National Labor
Relations Board, OSHA or SEC to name a few would need access to email,
twitter, facebook, google docs, etc.</p>

<p>Again, please contact your senators and let them know that this is a bad idea.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[nanoblogger to octopress notes]]></title>
    <link href="http://technomage.net/blog/2012/11/19/nanoblogger-to-octopress-notes/"/>
    <updated>2012-11-19T11:36:00-06:00</updated>
    <id>http://technomage.net/blog/2012/11/19/nanoblogger-to-octopress-notes</id>
    <content type="html"><![CDATA[<p>It turns out that converting from <a href="http://nanoblogger.sf.net">nanoblogger</a> to
<a href="http://octopress.org">octopress</a> wasn&#8217;t all that difficult with a little help
from my friend <a href="http://perl.org">perl</a>.  The only hiccup that I ran into was
that the title line is kind of picky.  It&#8217;s a really good idea to enclose the
title in quotes.</p>

<p>This perl script will process each txt file into a markdown file that should
mostly work with octopress.  One of the downsides of octopress is that if
there is a problem, it does not tell you which file is causing the failure.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
<span class='line-number'>36</span>
<span class='line-number'>37</span>
<span class='line-number'>38</span>
<span class='line-number'>39</span>
<span class='line-number'>40</span>
<span class='line-number'>41</span>
<span class='line-number'>42</span>
<span class='line-number'>43</span>
<span class='line-number'>44</span>
<span class='line-number'>45</span>
<span class='line-number'>46</span>
<span class='line-number'>47</span>
<span class='line-number'>48</span>
<span class='line-number'>49</span>
<span class='line-number'>50</span>
<span class='line-number'>51</span>
<span class='line-number'>52</span>
<span class='line-number'>53</span>
<span class='line-number'>54</span>
<span class='line-number'>55</span>
<span class='line-number'>56</span>
<span class='line-number'>57</span>
<span class='line-number'>58</span>
<span class='line-number'>59</span>
<span class='line-number'>60</span>
<span class='line-number'>61</span>
<span class='line-number'>62</span>
<span class='line-number'>63</span>
<span class='line-number'>64</span>
<span class='line-number'>65</span>
<span class='line-number'>66</span>
<span class='line-number'>67</span>
<span class='line-number'>68</span>
<span class='line-number'>69</span>
<span class='line-number'>70</span>
<span class='line-number'>71</span>
</pre></td><td class='code'><pre><code class='perl'><span class='line'><span class="c1">#!/usr/bin/perl</span>
</span><span class='line'>
</span><span class='line'><span class="k">use</span> <span class="n">strict</span><span class="p">;</span>
</span><span class='line'><span class="k">use</span> <span class="n">warnings</span><span class="p">;</span>
</span><span class='line'><span class="k">use</span> <span class="n">Carp</span><span class="p">;</span>
</span><span class='line'><span class="k">use</span> <span class="n">English</span> <span class="sx">qw( -no_match_vars )</span><span class="p">;</span>
</span><span class='line'><span class="k">use</span> <span class="nn">File::</span><span class="n">Glob</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'><span class="c1"># nanoblogger filename</span>
</span><span class='line'><span class="c1"># 2012-03-21T04_28_49.txt</span>
</span><span class='line'>
</span><span class='line'><span class="c1"># octopress filename</span>
</span><span class='line'><span class="c1"># 2012-11-18-octopress-instead-of-nanoblogger.markdown</span>
</span><span class='line'>
</span><span class='line'><span class="c1"># octopress header</span>
</span><span class='line'><span class="c1"># ---</span>
</span><span class='line'><span class="c1"># layout: post</span>
</span><span class='line'><span class="c1"># title: &quot;Octopress instead of nanoblogger&quot;</span>
</span><span class='line'><span class="c1"># date: 2012-11-18 14:37</span>
</span><span class='line'><span class="c1"># comments: true</span>
</span><span class='line'><span class="c1"># categories: [blog, software, shell]</span>
</span><span class='line'><span class="c1"># ---</span>
</span><span class='line'>
</span><span class='line'><span class="k">my</span> <span class="nv">@files</span> <span class="o">=</span> <span class="sr">&lt;*.txt&gt;</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'><span class="k">for</span> <span class="k">my</span> <span class="nv">$file</span> <span class="p">(</span> <span class="nv">@files</span> <span class="p">)</span> <span class="p">{</span>
</span><span class='line'>  <span class="k">my</span> <span class="p">(</span> <span class="nv">$date</span><span class="p">,</span> <span class="nv">$time</span><span class="p">,</span> <span class="nv">$body</span><span class="p">,</span> <span class="nv">$title</span> <span class="p">);</span>
</span><span class='line'>
</span><span class='line'>  <span class="k">if</span> <span class="p">(</span> <span class="nv">$file</span> <span class="o">=~</span> <span class="sr">m{([0-9-]+)T(\d{2}</span><span class="n">_</span><span class="o">\</span><span class="n">d</span><span class="p">{</span><span class="mi">2</span><span class="p">})</span><span class="o">\</span><span class="n">S</span><span class="o">+</span><span class="p">[</span><span class="o">.</span><span class="p">]</span><span class="n">txt</span><span class="p">}</span><span class="n">xms</span> <span class="p">)</span> <span class="p">{</span>
</span><span class='line'>      <span class="p">(</span> <span class="nv">$date</span><span class="p">,</span> <span class="nv">$time</span> <span class="p">)</span> <span class="o">=</span> <span class="p">(</span> <span class="nv">$1</span><span class="p">,</span> <span class="nv">$2</span> <span class="p">);</span>
</span><span class='line'>      <span class="nv">$time</span> <span class="o">=~</span> <span class="sr">s{_}{:}g</span><span class="p">;</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>  <span class="nb">open</span> <span class="k">my</span> <span class="nv">$input</span><span class="p">,</span> <span class="s">&#39;&lt;&#39;</span><span class="p">,</span> <span class="nv">$file</span> <span class="ow">or</span> <span class="n">croak</span> <span class="sx">qq{ERROR: $OS_ERROR}</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'>  <span class="k">my</span> <span class="nv">$text_string</span> <span class="o">=</span> <span class="k">do</span> <span class="p">{</span> <span class="nb">local</span> <span class="vg">$/</span><span class="p">;</span> <span class="sr">&lt;$input&gt;</span> <span class="p">};</span>
</span><span class='line'>  <span class="k">my</span> <span class="nv">@text_array</span> <span class="o">=</span> <span class="nb">split</span><span class="p">(</span><span class="sr"> /\n/</span><span class="p">,</span> <span class="nv">$text_string</span> <span class="p">);</span>
</span><span class='line'>  
</span><span class='line'>  <span class="nb">close</span> <span class="nv">$input</span> <span class="ow">or</span> <span class="n">croak</span> <span class="sx">qq{ERROR: $OS_ERROR}</span><span class="p">;</span>
</span><span class='line'>  
</span><span class='line'>  <span class="k">for</span> <span class="k">my</span> <span class="nv">$line</span> <span class="p">(</span> <span class="nv">@text_array</span> <span class="p">)</span> <span class="p">{</span>
</span><span class='line'>      <span class="k">if</span> <span class="p">(</span> <span class="nv">$line</span> <span class="o">=~</span> <span class="sr">m{TITLE: \s+ ([\S\s]+)}xms</span> <span class="p">)</span> <span class="p">{</span>
</span><span class='line'>          <span class="nv">$title</span> <span class="o">=</span> <span class="nv">$1</span><span class="p">;</span>
</span><span class='line'>      <span class="p">}</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>  <span class="k">if</span> <span class="p">(</span> <span class="nv">$text_string</span> <span class="o">=~</span> <span class="sr">m{BODY:\n(.*)END-----}xms</span> <span class="p">)</span> <span class="p">{</span>
</span><span class='line'>      <span class="nv">$body</span> <span class="o">=</span> <span class="nv">$1</span><span class="p">;</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>  <span class="k">if</span> <span class="p">(</span> <span class="nb">defined</span> <span class="nv">$date</span> <span class="ow">and</span> <span class="nb">defined</span> <span class="nv">$time</span> <span class="ow">and</span> <span class="nb">defined</span> <span class="nv">$body</span> <span class="p">)</span> <span class="p">{</span>
</span><span class='line'>      <span class="k">my</span> <span class="nv">$file_title</span> <span class="o">=</span> <span class="nv">$title</span><span class="p">;</span>
</span><span class='line'>      <span class="nv">$file_title</span> <span class="o">=~</span> <span class="sr">s{\s+}{_}g</span><span class="p">;</span>
</span><span class='line'>      <span class="nv">$file_title</span> <span class="o">=~</span> <span class="sr">s{[:]+}{_}g</span><span class="p">;</span>
</span><span class='line'>      <span class="nv">$file_title</span> <span class="o">=~</span> <span class="sr">s{[,&#39;&quot;.!;&amp;?]}{}g</span><span class="p">;</span>
</span><span class='line'>      <span class="nv">$file_title</span> <span class="o">=</span> <span class="nb">lc</span><span class="p">(</span> <span class="nv">$file_title</span> <span class="p">);</span>
</span><span class='line'>
</span><span class='line'>      <span class="k">my</span> <span class="nv">$filename</span> <span class="o">=</span> <span class="sx">qq{$date-$file_title.markdown}</span><span class="p">;</span>
</span><span class='line'>      <span class="k">print</span> <span class="sx">qq{$filename\n}</span><span class="p">;</span>
</span><span class='line'>      <span class="nb">open</span> <span class="k">my</span> <span class="nv">$output</span><span class="p">,</span> <span class="s">&#39;&gt;&#39;</span><span class="p">,</span> <span class="nv">$filename</span> <span class="ow">or</span> <span class="n">croak</span> <span class="sx">qq{ERROR: $OS_ERROR}</span><span class="p">;</span>
</span><span class='line'>      <span class="k">print</span> <span class="p">{</span><span class="nv">$output</span><span class="p">}</span> <span class="sx">qq{---\n}</span><span class="p">;</span>
</span><span class='line'>      <span class="k">print</span> <span class="p">{</span><span class="nv">$output</span><span class="p">}</span> <span class="sx">qq{layout: post\n}</span><span class="p">;</span>
</span><span class='line'>      <span class="k">print</span> <span class="p">{</span><span class="nv">$output</span><span class="p">}</span> <span class="sx">qq{title: $title\n}</span><span class="p">;</span>
</span><span class='line'>      <span class="k">print</span> <span class="p">{</span><span class="nv">$output</span><span class="p">}</span> <span class="sx">qq{date: $date $time\n}</span><span class="p">;</span>
</span><span class='line'>      <span class="k">print</span> <span class="p">{</span><span class="nv">$output</span><span class="p">}</span> <span class="sx">qq{comments: true\n}</span><span class="p">;</span>
</span><span class='line'>      <span class="k">print</span> <span class="p">{</span><span class="nv">$output</span><span class="p">}</span> <span class="sx">qq{categories: \n}</span><span class="p">;</span>
</span><span class='line'>      <span class="k">print</span> <span class="p">{</span><span class="nv">$output</span><span class="p">}</span> <span class="sx">qq{---\n}</span><span class="p">;</span>
</span><span class='line'>      <span class="k">print</span> <span class="p">{</span><span class="nv">$output</span><span class="p">}</span> <span class="sx">qq{$body\n}</span><span class="p">;</span>
</span><span class='line'>      <span class="nb">close</span> <span class="nv">$output</span> <span class="ow">or</span> <span class="n">croak</span> <span class="sx">qq{ERROR: $OS_ERROR}</span><span class="p">;</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'><span class="p">}</span>
</span></code></pre></td></tr></table></div></figure>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Octopress instead of nanoblogger]]></title>
    <link href="http://technomage.net/blog/2012/11/18/octopress-instead-of-nanoblogger/"/>
    <updated>2012-11-18T14:37:00-06:00</updated>
    <id>http://technomage.net/blog/2012/11/18/octopress-instead-of-nanoblogger</id>
    <content type="html"><![CDATA[<p>Giving <a href="http://octopress.org">octopress</a> a shot as a blog engine.  Let&#8217;s see
if it is any faster than <a href="http://nanoblogger.sf.net">nanoblogger</a>.</p>

<p>Of course if I decide to stick with it, I will need to move all of my old
posts to the new engine.  How hard could that be?</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[EverQuest - Project 1999]]></title>
    <link href="http://technomage.net/blog/2012/08/23/everquest_-_project_1999/"/>
    <updated>2012-08-23T07:01:00-05:00</updated>
    <id>http://technomage.net/blog/2012/08/23/everquest_-_project_1999</id>
    <content type="html"><![CDATA[<p>Some friends that I used to play EQ with, and then played WoW with, told me
about <a href="http://project1999.org" title="Project 1999">Project 1999</a>.  So I went and poked around at it.</p>

<p>It is awesome.</p>

<p>The goal is to get as close to EverQuest in 1999 as possible.  Two expansions,
Kunark and Velious.  That&#8217;s it.</p>

<p>Since Velious was my favorite expansion of the game, this looks like it could
be lots and lots of fun.</p>

<p>Some <a href="http://p99.yourfirefly.com/">additional files</a> that are not required but
can be usefull are at <a href="http://p99.yourfirefly.com/">http://p99.yourfirefly.com/</a></p>

<p>While Velious was my favorite expansion, I really liked the models that came
with Luclin.  So, here is how to turn them on for Project1999:
<a href="http://www.project1999.org/forums/showthread.php?p=573003#post573003">Enable Luclin models</a></p>

<p>I also kind of like being able to tweak the UI a little.  Thankfully, someone
got <a href="http://www.project1999.org/forums/showthread.php?t=7850&amp;highlight=vert">Vert
UI</a>
working.  This and SARS back in the day were my two go to UI mods while I was
still playing.</p>

<p>I have recreated some of my favorite characters here, this should be fun.</p>

<pre><code>Drastor, wood elf druid  
Daoga, ogre warrior  
Frezick, gnome necromancer  
Wiggon, dwarf priest  
</code></pre>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[back to my roots]]></title>
    <link href="http://technomage.net/blog/2012/08/09/back_to_my_roots/"/>
    <updated>2012-08-09T16:13:00-05:00</updated>
    <id>http://technomage.net/blog/2012/08/09/back_to_my_roots</id>
    <content type="html"><![CDATA[<p>This past Tuesday I picked up a Lenovo T60 from
<a href="http://www.bussvc.wisc.edu/swap/">UW SWAP</a> it was kind of an impulse buy, but
it also fills a desire for an intentionally lower end laptop to run
<a href="http://pcbsd.org">PC-BSD</a> or <a href="http://debian.org">Debian</a> on.</p>

<p>I named the &#8220;new&#8221; laptop trorbok, which is norweigen for &#8220;Think Book&#8221;, at
least according to Google translate.</p>

<p>I dropped PC-BSD 9.0 on it right away, and discovered that on the T60 it
doesn&#8217;t apparently handle suspending.  So, along comes Debian to the rescue.
Suspend and resume works.</p>

<p>At first I was using Gnome, as that is what I have been using for the last
several years on my laptop.  Then I remembered ratpoison.</p>

<p>So after a little bit of futzing to get xterm to behave, it&#8217;s been a while
since I used anything besides putty ( on Windows ) or gnome-terminal.</p>

<p>After using the trorbok for only a couple of days I realize how much more I
like the keyboard on it than the keyboard on my macbook ( which is running
Ubuntu 12.04 LTS ).  The &#8220;chicklet&#8221; keyboard just doesn&#8217;t &#8220;feel&#8221; right to me.
But then my first keyboards were on a Commodore64 and a Toshiba T1100+.  I
still have an old style mechanical switch keyboard that I am seriously
thinking of sticking back on the desktop in my office/hamshack/workshop.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[package file invalid error fix]]></title>
    <link href="http://technomage.net/blog/2012/08/01/package_file_invalid_error_fix/"/>
    <updated>2012-08-01T05:04:00-05:00</updated>
    <id>http://technomage.net/blog/2012/08/01/package_file_invalid_error_fix</id>
    <content type="html"><![CDATA[<p>From <a href="http://androidforums.com/optimus-m-all-things-root/528253-package-file-invalid-error.html">androidforums.com</a></p>

<p>I finally ran across a fix for the package file invalid that seems to have
worked.  I had tried clearing the cache and dalvik cache multiple times with
no success.</p>

<p>I installed <a href="https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;hl=en">sshdroid</a>,
and already had superuser installed.</p>

<p>I then sshed into my phone ( cool, right? ) and did the following:</p>

<pre><code>/system/etc/init.d # mount -o remount,rw,noatime /system
/system/etc/init.d # mv 01mvdalvik /mnt/sdcard/01mvdalvik.old
</code></pre>

<p>Went back into the phone settings, cleared the cache, rebooted into recovery,
cleared the cache and the dalvik cache.  Reboot, voila, I can install things
again.  But I think I need to move the 01mvdalvik back to /etc/init.d.</p>

<p>But I also see that there is a new version of Harmonia for my Optimus V, so I
may just go down that road.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[updates to gnupg key]]></title>
    <link href="http://technomage.net/blog/2012/05/28/updates_to_gnupg_key/"/>
    <updated>2012-05-28T03:51:00-05:00</updated>
    <id>http://technomage.net/blog/2012/05/28/updates_to_gnupg_key</id>
    <content type="html"><![CDATA[<p>It&#8217;s been a few years since I actively worked with Jesse Trucks &amp; Cyberius&#8217;
Networks, and it&#8217;s been on my todo list, kind of, for a while to get around to
updating my gnupg key to reflect this.  So this morning, I finally did.</p>

<p>It should be updated on the key servers, but in case they are lagging a
little, here is the export and a <a href="http://files.technomage.net/gnupg.pubkey.asc">link</a>.</p>

<hr />

<pre><code>pub   1024D/B4649435 2005-06-30
    Key fingerprint = 4563 465A C240 A183 F849  09EE 202E 9CE2 B464 9435
uid                  Matt Okeson-Harlow &lt;matt@technomage.net&gt;
uid                  Matt Okeson-Harlow &lt;mharlow@grephead.com&gt;
sub   2048g/C982B115 2005-06-30
</code></pre>

<hr />

<pre><code>-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.10 (GNU/Linux)

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
NwgMrA/Hk/g6JXTWf4II2cjJ
=6XSG
-----END PGP PUBLIC KEY BLOCK-----
</code></pre>

<hr />
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[corntab, crontab web-gui]]></title>
    <link href="http://technomage.net/blog/2012/05/11/corntab_crontab_web-gui/"/>
    <updated>2012-05-11T06:36:00-05:00</updated>
    <id>http://technomage.net/blog/2012/05/11/corntab_crontab_web-gui</id>
    <content type="html"><![CDATA[<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>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Perl File::Glob]]></title>
    <link href="http://technomage.net/blog/2012/05/08/perl_file_glob/"/>
    <updated>2012-05-08T08:20:00-05:00</updated>
    <id>http://technomage.net/blog/2012/05/08/perl_file_glob</id>
    <content type="html"><![CDATA[<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>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
</pre></td><td class='code'><pre><code class='perl'><span class='line'><span class="c1">#!/usr/bin/perl</span>
</span><span class='line'>
</span><span class='line'><span class="k">use</span> <span class="n">strict</span><span class="p">;</span>
</span><span class='line'><span class="k">use</span> <span class="n">warnings</span><span class="p">;</span>
</span><span class='line'><span class="k">use</span> <span class="nn">File::</span><span class="n">Glob</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'><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><span class='line'>
</span><span class='line'><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><span class='line'>    <span class="n">do_something</span><span class="p">(</span> <span class="nv">$file</span> <span class="p">);</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="k">sub </span><span class="nf">do_something</span> <span class="p">{</span>
</span><span class='line'>    <span class="o">....</span>
</span><span class='line'><span class="p">};</span>
</span></code></pre></td></tr></table></div></figure>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[markdoc added to the toolbox]]></title>
    <link href="http://technomage.net/blog/2012/05/06/markdoc_added_to_the_toolbox/"/>
    <updated>2012-05-06T06:05:00-05:00</updated>
    <id>http://technomage.net/blog/2012/05/06/markdoc_added_to_the_toolbox</id>
    <content type="html"><![CDATA[<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&#8217;t need
it, I installed <a href="http://markdoc.org">markdoc</a> on my home server this weekend.</p>

<p>Markdoc is a &#8220;simple&#8221; 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&#8217;t get used as much as it could
have, mainly because I really don&#8217;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>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>markdoc init wiki
</span></code></pre></td></tr></table></div></figure>


<p>And then moved some things around.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'><span class="nb">cd </span>wiki
</span><span class='line'>mv static .static
</span><span class='line'>mv markdoc.yaml .markdoc.yaml
</span><span class='line'>rmdir wiki
</span></code></pre></td></tr></table></div></figure>


<p>Then edited .markdoc.yaml to contain:</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
</pre></td><td class='code'><pre><code class='yaml'><span class='line'><span class="l-Scalar-Plain">wiki-name</span><span class="p-Indicator">:</span> <span class="s">&quot;wiki</span><span class="nv"> </span><span class="s">.</span><span class="nv"> </span><span class="s">technomage</span><span class="nv"> </span><span class="s">.</span><span class="nv"> </span><span class="s">net&quot;</span>
</span><span class='line'><span class="l-Scalar-Plain">static-dir</span><span class="p-Indicator">:</span> <span class="s">&quot;.static&quot;</span>
</span><span class='line'><span class="l-Scalar-Plain">wiki-dir</span><span class="p-Indicator">:</span> <span class="s">&quot;.&quot;</span>
</span><span class='line'>
</span><span class='line'><span class="l-Scalar-Plain">use-default-static</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">false</span>
</span><span class='line'>
</span><span class='line'><span class="l-Scalar-Plain">markdown</span><span class="p-Indicator">:</span>
</span><span class='line'><span class="err">    </span><span class="l-Scalar-Plain">extensions</span><span class="p-Indicator">:</span> <span class="p-Indicator">[</span><span class="nv">codehilite</span><span class="p-Indicator">]</span>
</span></code></pre></td></tr></table></div></figure>


<p>I initially left out the &#8216;use-default-static: false&#8217; 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>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>markdoc build <span class="o">&amp;&amp;</span> rsync -a -e ssh .html/ matt@yoda.grephead.com:~/wiki.technomage.net
</span></code></pre></td></tr></table></div></figure>


<p>Builds everything and pushes it up to the server.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[greppy, sage]]></title>
    <link href="http://technomage.net/blog/2012/04/28/greppy_sage/"/>
    <updated>2012-04-28T19:51:00-05:00</updated>
    <id>http://technomage.net/blog/2012/04/28/greppy_sage</id>
    <content type="html"><![CDATA[<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 &#8220;current&#8221; internet is using 32bit address space.  I have a 64bit
assigned to my home network.</p>

<pre><code>mharlow@vaganto:~$ echo '2^32' | bc -l
4294967296
mharlow@vaganto:~$ echo '2^64' | bc -l
18446744073709551616
</code></pre>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[ipv6 on the home network]]></title>
    <link href="http://technomage.net/blog/2012/04/27/ipv6_on_the_home_network/"/>
    <updated>2012-04-27T21:01:00-05:00</updated>
    <id>http://technomage.net/blog/2012/04/27/ipv6_on_the_home_network</id>
    <content type="html"><![CDATA[<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>

<pre><code>auto 6in4
iface 6in4 inet6 v4tunnel
    address 2001:470:1f10:3bd::2
    netmask 64
    endpoint 209.51.181.2
    gateway 2001:470:1f10:3bd::1
    ttl 255
</code></pre>

<p>Now I could reach ipv6 sites from my server, but couldn&#8217;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&#8217;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&#8217;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>

<pre><code>ipv6 endpoint:      2001:470:1f10:3bd::2/64
ipv6 routed subnet: 2001:470:1f11:3bd::1/64
</code></pre>

<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>

<pre><code>interface eth1
{
    AdvSendAdvert on;
    prefix 2001:470:1f11:3bd::2/64
    {
        AdvOnLink on;
        AdvAutonomous on;
    };
};
</code></pre>

<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>

<pre><code>auto eth1
iface eth1 inet static
    address 172.27.1.2
    netmask 255.255.255.0
    up ip route add 2011:470:1f11:3bd::/64 eth1
</code></pre>

<p>And now, I can reach ipv6 addresses from devices on the LAN:</p>

<pre><code>mharlow@wanderer ~ $ ping6 -n -c 5 ipv6.google.com
PING ipv6.google.com(2001:4860:400a:800::1012) 56 data bytes
64 bytes from 2001:4860:400a:800::1012: icmp_seq=1 ttl=58 time=42.7 ms
64 bytes from 2001:4860:400a:800::1012: icmp_seq=2 ttl=58 time=22.0 ms
64 bytes from 2001:4860:400a:800::1012: icmp_seq=3 ttl=58 time=23.1 ms
64 bytes from 2001:4860:400a:800::1012: icmp_seq=4 ttl=58 time=21.5 ms
64 bytes from 2001:4860:400a:800::1012: icmp_seq=5 ttl=58 time=22.4 ms

--- ipv6.google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 21.589/26.381/42.745/8.197 ms
</code></pre>

<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>

<pre><code># public/wan interface
auto eth0
iface eth0 inet dhcp

# private/lan interface
auto eth1
iface eth1 inet static
    address 172.27.1.2
    netmask 255.255.255.0
    # gateway 172.27.1.1
    up ip route add $Client_IPv6_Address_Prefix/64 eth1

auto 6in4
iface 6in4 inet6 v4tunnel
    address $Client_IPv6_Address
    netmask 64
    endpoint $Server_IPv4_Address
    gateway $Server_IPv6_Address
    ttl 255
</code></pre>

<p><strong>/etc/radvd.conf</strong></p>

<pre><code>interface eth1
{
        AdvSendAdvert on;
        prefix $Client_IPv6_Address 
        {
                AdvOnLink on;
                AdvAutonomous on;
        };
};
</code></pre>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Bug classification]]></title>
    <link href="http://technomage.net/blog/2012/03/21/bug_classification/"/>
    <updated>2012-03-21T04:28:00-05:00</updated>
    <id>http://technomage.net/blog/2012/03/21/bug_classification</id>
    <content type="html"><![CDATA[<p>I saw this on IRC this morning in ##hamradio on freenode:</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>04:21:21 SteveCooling | I've come up with a new classification of software bug                               
</span><span class='line'>04:21:48 SteveCooling | In relation to types such as Heisenbug or Schrödinbug                                
</span><span class='line'>04:22:13 SteveCooling | I now propose to establish "Hindenbug"                                               
</span><span class='line'>04:23:44 SteveCooling | The kind of bug that causes a catastrophic failure rendering the system unusable, and
</span><span class='line'>                      | lowering the confidence in the system to a point where it needs to be decommissioned </span></code></pre></td></tr></table></div></figure>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Todo.txt, vimtodo, vimoutliner, vimwiki, taskpaper.vim, oh my.]]></title>
    <link href="http://technomage.net/blog/2012/02/29/todotxt_vimtodo_vimoutliner_vimwiki_taskpapervim_oh_my/"/>
    <updated>2012-02-29T09:01:00-06:00</updated>
    <id>http://technomage.net/blog/2012/02/29/todotxt_vimtodo_vimoutliner_vimwiki_taskpapervim_oh_my</id>
    <content type="html"><![CDATA[<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&#8217;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&#8217;t exist in my work environment.  I also like to keep
personal and work separate, it&#8217;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 &#8220;done&#8221; or &#8220;not done&#8221;
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&#8217;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&#8217;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&#8217;t ask, I&#8217;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&#8217;t appeal to me</em></p>

<p>vimoutliner is available from the vim-addons debian/ubuntu package.  I&#8217;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&#8217;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&#8217;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&#8217;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&#8217;t have vim or the
custom syntax/plugin files handy.  I&#8217;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 &#8220;Perfect is the enemy of good enough&#8221; 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>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[& AND ; are line terminators]]></title>
    <link href="http://technomage.net/blog/2012/01/31/_and__are_line_terminators/"/>
    <updated>2012-01-31T03:34:00-06:00</updated>
    <id>http://technomage.net/blog/2012/01/31/_and__are_line_terminators</id>
    <content type="html"><![CDATA[<p>I kept running into an error when I would go to background a bunch of
processes in a shell script.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'><span class="nv">$ </span><span class="k">for </span>i in 1 2 3 4;do <span class="nb">echo</span> <span class="k">${</span><span class="nv">i</span><span class="k">}</span> &amp; ;<span class="k">done</span>
</span><span class='line'>-bash: syntax error near unexpected token <span class="sb">`</span>;<span class="err">&#39;</span>
</span></code></pre></td></tr></table></div></figure>


<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>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'><span class="nv">$ </span><span class="k">for </span>i in 1 2 3 4;do <span class="nb">echo</span> <span class="k">${</span><span class="nv">i</span><span class="k">}</span> &amp; <span class="k">done</span>
</span></code></pre></td></tr></table></div></figure>


<p>Hopefully by putting this on the blog, I will remember it. :)</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Too many series, not enough books.]]></title>
    <link href="http://technomage.net/blog/2012/01/23/too_many_series_not_enough_books/"/>
    <updated>2012-01-23T05:48:00-06:00</updated>
    <id>http://technomage.net/blog/2012/01/23/too_many_series_not_enough_books</id>
    <content type="html"><![CDATA[<p>I just finished &#8220;Mission of Honor&#8221; by David Weber.  The last book that has
been published in the &#8220;Honor Harrington&#8221; series.  I started this series
because the other series that I was reading didn&#8217;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>&#8220;Cold Days&#8221; of &#8220;The Dresden Files&#8221;.  Like any good author that isn&#8217;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.  &#8220;The Dresden Files&#8221; is currently my
favorite series of books.</p>

<p>A Memory of Light&#8221; of &#8220;The Wheel of Time&#8221; 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 &#8220;Mistborne&#8221; 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>&#8220;Tricked&#8221; of &#8220;The Iron Druid Chronicles&#8221;.  <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>&#8220;Raven Calls&#8221; of &#8220;The Walker Papers&#8221; by <a href="http://cemurphy.net" title="C. E. Murphy">C. E. Murphy</a>.  Is anyone else
noticing a trend of &#8220;Urban Fantasy&#8221; here?  &#8220;The Iron Druid Chronicles&#8221;,
&#8220;The Walker Papers&#8221; and &#8220;The Dresden Files&#8221; 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>&#8220;A Rising Thunder&#8221; 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&#8217;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>&#8220;A Song of Ice and Fire&#8221; or &#8220;The Game of Thrones&#8221; 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 &#8220;The Dresden Files&#8221; 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>&#8220;The Dresden Files&#8221;, 13 books.</li>
<li>&#8220;The Wheel of Time&#8221;, 13 books.</li>
<li>&#8220;The Honorverse&#8221;, 12 books.</li>
<li>&#8220;The Walker Papers&#8221;, 6 books.</li>
<li>&#8220;The Iron Druid Chronicles&#8221;, 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 &#8220;Codex Alera&#8221; 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>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Awesome Fail: sudo mount in .bashrc]]></title>
    <link href="http://technomage.net/blog/2012/01/22/awesome_fail__sudo_mount_in_bashrc/"/>
    <updated>2012-01-22T13:10:00-06:00</updated>
    <id>http://technomage.net/blog/2012/01/22/awesome_fail__sudo_mount_in_bashrc</id>
    <content type="html"><![CDATA[<p>I saw this in an opensource operating system support channel on a popular IRC
network today.</p>

<pre><code>user1 | how do I automount a HDD on boot? putting "sudo mount /dev/sdb1 /mnt/backup" in .bashrc probably wont work, since its a sudo command?
user2 | user1: man fstab has good instructions.
user1 | can I just add /dev/sdb1 /mnt/backup to the end of it? without all those ext3 and other specs in the end
user2 | no. you need some of them options, or it won't be valid.
user2 | also, you might well want to find out the UUID of the filesystem.
user1 | ouch
user1 | considering making one big LVM of all my disks
</code></pre>

<p>I know that I should have jumped into this conversation, but&#8230; 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 &#8216;LVM&#8217; in a sentance, but doesn&#8217;t
know how to use /etc/fstab scares the hell out of me.</p>
]]></content>
  </entry>
  
</feed>
