<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:wfw="http://wellformedweb.org/CommentAPI/"
     >
  <channel>
    <title>byronc bits</title>
    <link>http://byron.theclarkfamily.name/blog</link>
    <description>breaking old technology, one bit at a time</description>
    <pubDate>Wed, 11 Jan 2012 04:59:47 GMT</pubDate>
    <generator>Blogofile</generator>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Hooked on org-mode</title>
      <link>http://byron.theclarkfamily.name/blog/2012/01/10/hooked-on-org-mode</link>
      <pubDate>Tue, 10 Jan 2012 20:46:48 MST</pubDate>
      <category><![CDATA[emacs]]></category>
      <category><![CDATA[vim]]></category>
      <guid isPermaLink="true">http://byron.theclarkfamily.name/blog/2012/01/10/hooked-on-org-mode</guid>
      <description>Hooked on org-mode</description>
      <content:encoded><![CDATA[<p>So, what's a long-time ViM user doing with an Emacs session running
all the time? Using org-mode of course.</p>
<p>First a little bit of a problem statement: I forget everything. I've
tried lots of different ways to solve the problem. I started with
writing a TODO list at the beginning of each day. For a while I
succeeded in using a Palm Pilot to keep track of everything. Next was
a Google Calendar. For stuff that didn't fit in the calendar I tried
to keep a personal wiki. Each method ended up in failure because it was
cumbersome. Let me be clear, to me cumbersome means <em>requires more
work than typing on a keyboard</em>.</p>
<p>I was pretty excited when I heard about
<a href="http://orgmode.org/">org-mode</a>. Look at the slogan: <em>Your Life in
Plain Text</em>. How could that not be good? Not being a
<a href="http://www.stallman.org/saint.html">Saint in the Church of Emacs</a> it
took me a little longer to get comfortable with org-mode, but it was
worth it. I'm sure my org-mode use hardly scratches the surface of
what's possible, but it's been enough to keep me organized for the
past year.</p>
<p>Here's what it took to get started. I created a directory called
<code>~/notes</code> and added the following to my Emacs startup files:</p>
<div class="pygments_tomorrow-night"><pre><span class="p">(</span><span class="nf">add-to-list</span> <span class="ss">&#39;auto-mode-alist</span> <span class="o">&#39;</span><span class="p">(</span><span class="s">&quot;\\.org$&quot;</span> <span class="o">.</span> <span class="nv">org-mode</span><span class="p">))</span>

<p><span class="p">(</span><span class="nf">global-set-key</span> <span class="s">&quot;C-cl&quot;</span> <span class="ss">&#39;org-store-link</span><span class="p">)</span>
<span class="p">(</span><span class="nf">global-set-key</span> <span class="s">&quot;C-ca&quot;</span> <span class="ss">&#39;org-agenda</span><span class="p">)</span>
<span class="p">(</span><span class="nf">global-set-key</span> <span class="s">&quot;C-cb&quot;</span> <span class="ss">&#39;org-iswitchb</span><span class="p">)</span></p>
<p><span class="p">(</span><span class="nf">setq</span> <span class="nv">org-log-done</span> <span class="nv">t</span><span class="p">)</span>
<span class="p">(</span><span class="nf">setq</span> <span class="nv">org-log-repeat</span> <span class="s">&quot;time&quot;</span><span class="p">)</span></p>
<p><span class="p">(</span><span class="nf">add-hook</span> <span class="ss">&#39;org-mode-hook</span> <span class="ss">&#39;turn-on-auto-fill</span><span class="p">)</span></p>
<p><span class="p">(</span><span class="nf">setq</span> <span class="nv">org-directory</span> <span class="s">&quot;~/notes&quot;</span><span class="p">)</span>
<span class="p">(</span><span class="nf">setq</span> <span class="nv">org-agenda-files</span> <span class="p">(</span><span class="nf">file-expand-wildcards</span> <span class="s">&quot;~/notes/*.org&quot;</span><span class="p">))</span>
</pre></div></p>
<p>Whenever I want to record something I open up a relevant <code>.org</code> file
in <code>~/notes</code> and add entries like this:</p>
<div class="pygments_tomorrow-night"><pre>* Chores
** Empty garbages
** Mow lawn
</pre></div>

<p>It's just an outline, with the number of leading <code>*</code> characters
determining the level of each entry.</p>
<p>The only keys I really use frequently are:</p>
<ul>
<li><code>C-c C-t</code>: transition states (make this a TODO or mark it done)</li>
<li><code>C-c C-s</code>: schedule this entry</li>
<li><code>C-c C-d</code>: set a deadline for this entry</li>
<li><code>Tab</code>: fold (show/hide children of this entry)</li>
<li><code>C-c a a</code>: show the agenda for the current week</li>
</ul>
<p>org-mode is far more customizable, but for me, that's enough. I'm
especially pleased at how easy it is just to start logging things that
happen in a meeting or adding something that I just remembered needing
to do around the house. There's almost no friction. And everything
about the entry lives in the text file. Then, with a few key presses
(<code>C-c a a</code>) I know what my next week looks like.</p>]]></content:encoded>
    </item>
    <item>
      <title>Learning to Run</title>
      <link>http://byron.theclarkfamily.name/blog/2011/11/17/learning-to-run</link>
      <pubDate>Thu, 17 Nov 2011 19:13:33 MST</pubDate>
      <category><![CDATA[running]]></category>
      <guid isPermaLink="true">http://byron.theclarkfamily.name/blog/2011/11/17/learning-to-run</guid>
      <description>Learning to Run</description>
      <content:encoded><![CDATA[<p>Two and a half years ago I found myself overweight and out of
energy. I decided it was time to lose the extra weight. With the help
of <a href="http://www.fourmilab.ch/hackdiet/">The Hacker's Diet</a> I spent the
next six months getting to an acceptable weight. Life was great; my
weight problem was solved and I felt like I had more energy. </p>
<p>But there was still a problem: I wasn't really in shape and I really
had to watch how much I ate so that the weight wouldn't come
back. Sitting at a desk all day for work wasn't helping my fitness at
all. This spring I decided that I could definitely fix the getting
into shape part. I looked at a lot of different possible activities
and finally decided that running would be best for me. The deciding
factor was that I could run in any weather and anywhere.</p>
<p>Now for the specifics. When I was looking for a way to get started it
was helpful to see other specific success stories. So, in that vein,
I'll stop short of recommending this program, but I will say that it
worked for me.</p>
<p>When I started in May, I could run for about three minutes. After that
it was extremely hard to breathe and I hurt everywhere. I set what I
thought was a fairly reasonable goal: run a 5K in under 30 minutes by
the end of the summer. To add a little motivation, I picked a race and
registered.</p>
<p>Knowing nothing about running, I needed a program I could follow. I
noticed quite a few other programmers talking about
<a href="http://www.coolrunning.com/engine/2/2_3/181.shtml">Couch to 5K</a> on
Twitter and decided that was as good a start as any. I'm terrible with
a watch and too cheap to buy an app to keep track of the intervals for
the program so I was really happy to stumble onto
<a href="http://www.djsteveboy.com/1day25k.html">Podrunner: Intervals</a>. I
loaded up my MP3 player and started running. After five weeks, I'd
burned through my cheap tennis shoes and visited the local running
store for a pair of running shoes. I'd like to say that I was able to
follow the Couch to 5K program without a problem, but it didn't work
out that way. I finished week six with a 22 minute run and didn't, but
it didn't feel good at all. I backed off to doing 10 minute intervals
with a 90 second walk in between and then adding a minute to the
running portions for each run. Since I was no longer on the Couch to
5K program, the Podrunner podcasts weren't as helpful so I tried out
audiobooks. After doing fifteen minute intervals for a week I found
that I could pretty reliably run for 20 minutes without stopping. The
two weeks before my first race I struggled to run for more than 20
minutes.</p>
<p>My sister agreed to run that first race with me. I showed up early
feeling poorly prepared. To make things more interesting I decided to
run with music. We started the race together and quickly found someone
running a pace we thought we could keep up. Just a little less than
30 minutes later I crossed the finish line. First goal accomplished.</p>
<p>I set a goal to run my next 5K in less than 27 minutes and registered
for a 5K three weeks after the first one. My runs during that prep
time finally started to feel good and I found myself easily running
for 30 minutes. I also started using
<a href="https://market.android.com/details?id=com.wsl.CardioTrainer">CardioTrainer</a>
to track distance and time for all my runs. It's a lot of fun to be
able to see that map after a run and see just how far you've come. The
three weeks passed and I finished the race in a little under 25
minutes. All the real runners can laugh at how slow that is, but I was
pretty excited.</p>
<p>At that point, I wasn't sure how much time I could trim off the 5K,
but I was pretty sure that I could add some distance. My next goal was
to finish a 10K, hopefully in under 60 minutes. I spent the next month
adding 1km to my runs each week. Unfortunately, right about the time I
got up to 9km, I got sick. Two weeks later I felt better, but I had a
hard time running even 3km and had to start building up again. I had
registered for a 10K, but I was really worried because I only got back
up to 7km on my regular workouts before race day. </p>
<p>It rained on race day, but at least it wasn't too cold. I started the
race too fast, then had to talk myself out of quitting during the
3km. Around the 4km mark, I started to feel really good. Goal
accomplished: I ran the entire race and finished in 51 minutes.</p>
<p>Next up on my list is a 10K in under 50 minutes next spring and
finishing a half marathon next summer. It's taken a lot of work to get
to this point, but I'm really happy about it. </p>]]></content:encoded>
    </item>
    <item>
      <title>Scala as a Java REPL</title>
      <link>http://byron.theclarkfamily.name/blog/2011/11/08/scala-as-a-java-repl</link>
      <pubDate>Tue, 08 Nov 2011 21:10:38 MST</pubDate>
      <category><![CDATA[programming]]></category>
      <category><![CDATA[scala]]></category>
      <guid isPermaLink="true">http://byron.theclarkfamily.name/blog/2011/11/08/scala-as-a-java-repl</guid>
      <description>Scala as a Java REPL</description>
      <content:encoded><![CDATA[<p>After years of Python programming, I've been spoiled by always having a <a href="http://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop">REPL</a> available when I want to test something out. As I spend more and more time in Java, I find myself missing a REPL. Well, no more. I'm happy to report that I've finally found a REPL I like using to test out libraries when I'm working in Java: the Scala REPL. </p>
<p>Today I needed to send some JMS messages to ActiveMQ. Instead of firing up eclipse, creating a maven project to get the dependencies, and then writing some Java code, I used <a href="https://github.com/harrah/xsbt/wiki">sbt</a> and <a href="http://www.scala-lang.org/">Scala</a> to create a REPL where I could easily send JMS messages.</p>
<h2>Create an sbt project</h2>
<p>The first step is to create an sbt project. This is as simple as creating a directory with a <code>build.sbt</code> file in it. My example <code>build.sbt</code> file pulls in two library dependencies that I want to have available in the REPL.</p>
<div class="pygments_tomorrow-night"><pre><span class="n">name</span> <span class="o">:=</span> <span class="s">&quot;jmstest&quot;</span>

<p><span class="n">scalaVersion</span> <span class="o">:=</span> <span class="s">&quot;2.9.1&quot;</span></p>
<p><span class="n">libraryDependencies</span> <span class="o">++=</span> <span class="nc">Seq</span><span class="o">(</span>
  <span class="s">&quot;org.apache.activemq&quot;</span> <span class="o">%</span> <span class="s">&quot;activemq-core&quot;</span> <span class="o">%</span> <span class="s">&quot;5.5.1&quot;</span><span class="o">,</span>
  <span class="s">&quot;org.slf4j&quot;</span> <span class="o">%</span> <span class="s">&quot;slf4j-simple&quot;</span> <span class="o">%</span> <span class="s">&quot;1.6.4&quot;</span>
<span class="o">)</span>
</pre></div></p>
<h2>Run the REPL</h2>
<p>Running the REPL is as simple as running <code>sbt console</code> from the newly created sbt project. From there, it's off to the races:</p>
<div class="pygments_tomorrow-night"><pre><span class="k">import</span> <span class="nn">javax.jms._</span>
<span class="k">import</span> <span class="nn">org.apache.activemq.ActiveMQConnectionFactory</span>

<p><span class="k">val</span> <span class="n">factory</span> <span class="k">=</span> <span class="k">new</span> <span class="nc">ActiveMQConnectionFactory</span><span class="o">(</span><span class="s">&quot;tcp://localhost:61616&quot;</span><span class="o">)</span>
<span class="k">val</span> <span class="n">connection</span> <span class="k">=</span> <span class="n">factory</span><span class="o">.</span><span class="n">createConnection</span>
<span class="k">val</span> <span class="n">session</span> <span class="k">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">createSession</span><span class="o">(</span><span class="kc">false</span><span class="o">,</span> <span class="nc">Session</span><span class="o">.</span><span class="nc">AUTO_ACKNOWLEDGE</span><span class="o">)</span>
<span class="k">val</span> <span class="n">destination</span> <span class="k">=</span> <span class="n">session</span><span class="o">.</span><span class="n">createTopic</span><span class="o">(</span><span class="s">&quot;jms.test&quot;</span><span class="o">)</span>
<span class="k">val</span> <span class="n">producer</span> <span class="k">=</span> <span class="n">session</span><span class="o">.</span><span class="n">createProducer</span><span class="o">(</span><span class="n">destination</span><span class="o">)</span></p>
<p><span class="k">val</span> <span class="n">message</span> <span class="k">=</span> <span class="n">session</span><span class="o">.</span><span class="n">createMapMessage</span>
<span class="n">message</span><span class="o">.</span><span class="n">setString</span><span class="o">(</span><span class="s">&quot;command&quot;</span><span class="o">,</span> <span class="s">&quot;basic_setup&quot;</span><span class="o">)</span>
<span class="n">message</span><span class="o">.</span><span class="n">setBoolean</span><span class="o">(</span><span class="s">&quot;do_stuff&quot;</span><span class="o">,</span> <span class="kc">false</span><span class="o">)</span>
<span class="n">producer</span><span class="o">.</span><span class="n">send</span><span class="o">(</span><span class="n">message</span><span class="o">)</span>
</pre></div></p>
<p>That's all there is to it. Scala, with the help of sbt, makes a great REPL for testing out Java libraries.</p>]]></content:encoded>
    </item>
    <item>
      <title>Astricon2011 Roundup</title>
      <link>http://byron.theclarkfamily.name/blog/2011/10/27/astricon2011-roundup</link>
      <pubDate>Thu, 27 Oct 2011 19:26:44 MDT</pubDate>
      <category><![CDATA[asterisk]]></category>
      <category><![CDATA[conferences]]></category>
      <guid isPermaLink="true">http://byron.theclarkfamily.name/blog/2011/10/27/astricon2011-roundup</guid>
      <description>Astricon2011 Roundup</description>
      <content:encoded><![CDATA[<p>I attended <a href="http://www.astricon.net/">Astricon</a> for the first time this year. Getting some facetime with the <a href="http://www.asterisk.org/">Asterisk</a> developers was great and I'm a lot more comfortable with what I'll need to do to get some of my changes upstream. Now for some highlights.</p>
<h3>Great Presentations</h3>
<ul>
<li><em>Asterisk Architecture</em> (part of the Introduction to Asterisk Development block) by <a href="http://www.davidvossel.com/">David Vossel</a>. While the presentation rehashed a lot of the information in <a href="http://www.aosabook.org/en/asterisk.html">the Asterisk chapter</a> of <em>The Architecture of Open Source Applications</em>, the presentation made Asterisk development feel much more approachable.</li>
<li><em>Asterisk Webphone</em> by <a href="http://chrismatthieu.com/">Chris Mattheiu</a>. Very impressive minimal softphone in a browser. Fun to watch someone daring enough to write code live during a presentation. The only downside was that the web phone requires a proprietary Jingle to SIP gateway.</li>
<li><em>IPv6 -- the (Only) Way Forward</em> by <a href="http://www.delong.com/">Owen DeLong</a>. No nonsense presentation about what it takes to start using IPv6. I appreciated the candor about what works and what doesn't. Especially enjoyable was the VOIP vendor wall of shame.</li>
<li><em>Clustering and Scaling Asterisk with Kamailio</em> by Klaus Darilion. Using a proxy in front of Asterisk is a complex subject and Klaus did a great job distilling the details into a great look at what's possible. I use <a href="http://opensips.org/">OpenSIPS</a> for a similar purpose and picked up a few config items I can simplify.</li>
<li><em>Cooking with Asterisk</em> by <a href="http://leifmadsen.com/">Leif Madsen</a>. Solid examples of neat things you can do in the dialplan. The example using Originate and chan_spy to playback a recorded message to one side of the call was impressive.</li>
</ul>
<h3>Stuff I Want to Try Now</h3>
<ul>
<li><a href="http://adhearsion.com/">Adhearsion</a> - Advanced Asterisk call control in Ruby</li>
<li><a href="https://github.com/asterisk-org/starpy">StarPy</a> - AGI and AMI interface for Twisted</li>
<li><a href="http://cmusphinx.sourceforge.net/">CMU Sphinx</a> and PocketSphinx - Voice recognition</li>
<li><a href="http://phono.com/">Phono</a> - Almost pure Javascript web phone</li>
<li><a href="https://www.tropo.com/home.jsp">Tropo</a> - Voice, SMS, and XMPP API</li>
</ul>
<h3>The Fun Stuff</h3>
<ul>
<li>Overheard some "creative" methods to deal with users that want to fax during a discussion about fax support on Asterisk SCF.</li>
<li>Watching <a href="http://www.linkedin.com/pub/clod-patry/6/665/995">Clod Patry</a> win <em>all</em> the tickets in one of the arcade games at the party.</li>
<li>Best Business Card: <a href="http://techpro.com/">TechPro</a> used cleaning cloths for glasses as business cards. Especially useful with all the snow and water I got on my classes on the way to the conference.</li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>udiskie</title>
      <link>http://byron.theclarkfamily.name/blog/2010/06/03/udiskie</link>
      <pubDate>Thu, 03 Jun 2010 20:55:02 MDT</pubDate>
      <category><![CDATA[archlinux]]></category>
      <category><![CDATA[tools]]></category>
      <guid isPermaLink="true">http://byron.theclarkfamily.name/blog/2010/06/03/udiskie</guid>
      <description>udiskie</description>
      <content:encoded><![CDATA[<p>With the <a href="http://fedoraproject.org/wiki/Features/HalRemoval">deprecation</a>
<a href="http://wiki.debian.org/HALRemoval">of</a>
<a href="https://wiki.ubuntu.com/Halsectomy">HAL</a> proceeding at full speed it's time to
find a new solution for automounting disks on my Linux box.  I've been happily
using <a href="http://www.nongnu.org/halevt/">halevt</a>, which does a lot more than disk
mounting, but won't be of much use once HAL really goes away.
<a href="http://www.freedesktop.org/wiki/Software/udisks">udisks</a> is the replacement
that the major desktops are moving to, so I decided to write a simple
automounting daemon for those of us not using a major desktop:
<a href="http://www.bitbucket.org/byronclark/udiskie">udiskie</a>.  It's a simple udisks
client that just takes care of mounting removable media right now.  I run it by
adding <code>udiskie &amp;</code> to <code>~/.xinitrc</code>.  When I'm done using a removable disk,
<code>udiskie-umount</code> will take care of the unmount.  I probably can't stress enough
how simplistic and undocumented this approach is, but it works for me.</p>
<p>And, of course, for the Archlinux users, it's already packaged in the AUR:
<a href="http://aur.archlinux.org/packages.php?ID=37279">udiskie</a></p>]]></content:encoded>
    </item>
    <item>
      <title>pm-utils and Locked Screens</title>
      <link>http://byron.theclarkfamily.name/blog/2010/04/06/pm-utils-and-locked-screens</link>
      <pubDate>Tue, 06 Apr 2010 05:54:54 MDT</pubDate>
      <category><![CDATA[tips]]></category>
      <category><![CDATA[archlinux]]></category>
      <guid isPermaLink="true">http://byron.theclarkfamily.name/blog/2010/04/06/pm-utils-and-locked-screens</guid>
      <description>pm-utils and Locked Screens</description>
      <content:encoded><![CDATA[<p><a href="http://pm-utils.freedesktop.org/wiki/">pm-utils</a> seems to be the clear winner
to userspace suspend and hibernate setup.  It's a great back, but, for those of
us who don't run a desktop environment with a power manager, there's one thing
missing: screen locking.  I'd like the screen to be locked when my computer
resumes from either suspend or hibernate, and I don't want to run
gnome-power-manager to get that functionality.  So,
<a href="/dump/00lock-screen">00lock-screen</a> to the rescue.  Just drop that file in
<code>/etc/pm/sleep.d</code> and, as long as you have <code>xscreensaver</code>, <code>gnome-screensaver</code>,
<code>i3lock</code>, or <code>xlock</code> setup, the screen will lock as your computer suspends or
hibernates.</p>
<p>For the Archlinux users, it's already packaged in the AUR:
<a href="http://aur.archlinux.org/packages.php?ID=36219">pm-utils-screen-lock</a></p>]]></content:encoded>
    </item>
    <item>
      <title>OpenWRT on the D-Link DIR-615</title>
      <link>http://byron.theclarkfamily.name/blog/2010/03/10/openwrt-on-the-d-link-dir-615</link>
      <pubDate>Wed, 10 Mar 2010 06:41:01 MST</pubDate>
      <category><![CDATA[tips]]></category>
      <guid isPermaLink="true">http://byron.theclarkfamily.name/blog/2010/03/10/openwrt-on-the-d-link-dir-615</guid>
      <description>OpenWRT on the D-Link DIR-615</description>
      <content:encoded><![CDATA[<p>Last night, I finally got around to installing the <a href="https://forum.openwrt.org/viewtopic.php?id=23829">OpenWRT 10.03
Beta</a> on my D-Link
DIR-615.  The short version: it works and works well.  There were only
two surprises I ran into.</p>
<p>The first surprise is that the wireless drivers are not included in
the install image.  Running <code>opkg update; opkg install kmod-ath9k</code>
takes care of that.  The drivers are left out by design at least on
<a href="https://dev.openwrt.org/ticket/6835">this router</a> and the
<a href="https://dev.openwrt.org/ticket/6833">WRT160NL</a>.  Bonus points to
OpenWRT for allowing me to file a bug without creating an account on
their bug tracker.</p>
<p>The second surprise is that the dynamic dns client doesn't know about
<a href="http://www.dnsomatic.com">DNS-O-Matic</a>.  I installed the
<code>ddns-scripts</code> package and used the following config to get it
working:</p>
<pre>
config 'service' 'myddns'
    option 'ip_source' 'network'
    option 'ip_network' 'wan'
    option 'check_unit' 'minutes'
    option 'enabled' '1'
    option 'domain' 'all.dnsomatic.com'
    option 'username' 'username'
    option 'password' 'password'
    option 'update_url' 'http://[USERNAME]:[PASSWORD]@updates.dnsomatic.com/nic/update?hostname=[DOMAIN]&myip=[IP]'
    option 'check_interval' '5'
    option 'force_interval' '480'
    option 'force_unit' 'hours'
</pre>]]></content:encoded>
    </item>
    <item>
      <title>gdb and pthread</title>
      <link>http://byron.theclarkfamily.name/blog/2010/02/19/gdb-and-pthread</link>
      <pubDate>Fri, 19 Feb 2010 21:33:22 MST</pubDate>
      <category><![CDATA[tips]]></category>
      <guid isPermaLink="true">http://byron.theclarkfamily.name/blog/2010/02/19/gdb-and-pthread</guid>
      <description>gdb and pthread</description>
      <content:encoded><![CDATA[<p>Error message translation time.  Here's an error gdb gave me today:</p>
<pre>
[Thread debugging using libthread_db enabled]             
Cannot find new threads: generic error
</pre>

<p>Translation: Programs that use pthread functions should really be linked with
the <code>-lpthread</code> option.</p>]]></content:encoded>
    </item>
    <item>
      <title>Scripting wireshark with lua</title>
      <link>http://byron.theclarkfamily.name/blog/2009/12/09/scripting-wireshark-with-lua</link>
      <pubDate>Wed, 09 Dec 2009 06:44:23 MST</pubDate>
      <category><![CDATA[tips]]></category>
      <guid isPermaLink="true">http://byron.theclarkfamily.name/blog/2009/12/09/scripting-wireshark-with-lua</guid>
      <description>Scripting wireshark with lua</description>
      <content:encoded><![CDATA[
<p>While attempting to wrap some <a
    href="http://www.wireshark.org/">wireshark</a> processing with a bash
script, I discovered that I didn't need to write complex bash code at all,
because wireshark has a built-in scripting language.  Even better, it's a
common scripting language: <a href="http://www.lua.org/">lua</a>.  It looks
like Debian and its derivatives ship wireshark with lua support, but for
everything else, you'll have to rebuild the package to enable it. There's a
great page of <a href="http://wiki.wireshark.org/Lua/Examples">examples</a> and
the <a
    href="http://www.wireshark.org/docs/wsug_html_chunked/wsluarm.html">api</a>
is really simple.  And for those cases where you don't want to use the
wireshark GUI, lua scripts work just fine with tshark.</p>

<p>If lua is overkill for the task at hand, tshark also offers decent control
over what shows up in the output.  If you want to see all HTTP requests and
their request URI and method, without any other information about the packet,
this tshark command will do the trick:</p>


<div class="pygments_tomorrow-night"><pre>tshark -T fields -e http.request.method -e http.request.uri -R <span class="s1">&#39;http&#39;</span>
</pre></div>



]]></content:encoded>
    </item>
    <item>
      <title>gnome-screensaver and alternative window managers</title>
      <link>http://byron.theclarkfamily.name/blog/2009/06/30/gnome-screensaver-and-alternative-window-managers</link>
      <pubDate>Tue, 30 Jun 2009 22:15:18 MDT</pubDate>
      <category><![CDATA[psa]]></category>
      <guid isPermaLink="true">http://byron.theclarkfamily.name/blog/2009/06/30/gnome-screensaver-and-alternative-window-managers</guid>
      <description>gnome-screensaver and alternative window managers</description>
      <content:encoded><![CDATA[<p>I've been using gnome-screensaver with <a href="http://awesome.naquadah.org/">awesome</a>
for a while without any problems.  Unfortunately that all came to an end when
GNOME 2.26 hit Debian Sid last week.  Just so that no-one else has to dig for
this, gnome-screensaver now uses gnome-session to determine idle time.
gnome-screensaver will run without gnome-session, but the screensaver and
locking mechanism will never kick in.  Fortunately, there is an easy fix.  I changed
my</p>
<pre><code>gnome-power-manager &amp;
</code></pre>
<p>line to</p>
<pre><code>gnome-session &amp;
</code></pre>
<p>in <code>~/.xsession</code> and everything works now.</p>]]></content:encoded>
    </item>
  </channel>
</rss>

