<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-18029902</id><updated>2012-01-15T17:45:09.702-05:00</updated><category term='email'/><category term='computer science'/><category term='cisco'/><category term='abuse'/><category term='python'/><category term='work'/><category term='networking'/><category term='unix'/><category term='spammers'/><category term='programming'/><category term='perl'/><title type='text'>A self indulgence</title><subtitle type='html'>"When in doubt, use brute force." -- Ken Thompson</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>64</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-18029902.post-4804930276220954893</id><published>2009-02-04T01:23:00.003-05:00</published><updated>2009-02-04T01:27:54.101-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='email'/><title type='text'>Shit happens -- even to google</title><content type='html'>Everyone knows of the now infamous &lt;a href="http://googleblog.blogspot.com/2009/01/this-site-may-harm-your-computer-on.html"&gt;google malware database corruption&lt;/a&gt;.  Google was able to fix the issue quickly, which is great and all.  But what really impresses me is their open attitude when it comes to their end user products, like &lt;a href="http://gmailblog.blogspot.com/2009/01/this-mornings-spam-filter-issue.html"&gt;this post&lt;/a&gt; on the gmail blog.&lt;br /&gt;&lt;br /&gt;You may be a big headless giant robot, but you're our big headless giant robot.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-4804930276220954893?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/4804930276220954893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=4804930276220954893' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/4804930276220954893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/4804930276220954893'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2009/02/shit-happens-even-to-google.html' title='Shit happens -- even to google'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-8802037392823951028</id><published>2009-01-11T10:29:00.003-05:00</published><updated>2009-01-11T10:32:34.972-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Renaming MP3 by ID tag</title><content type='html'>Ever tried to recover from an IPOD dump, and get a bunch of files with the useless names?  Here's a script to fix that.&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;$ ls *.mp3 | ./rename.pl - | while read line; do   OLD=`echo $line | cut -d, -f1`;   NEW=`echo $line | cut -d, -f2`;   mv "$OLD" "$NEW"; done&lt;/blockquote&gt;&lt;br /&gt;And here's the perl script:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;#!/usr/bin/perl&lt;br /&gt;#&lt;br /&gt;#Your Love Means Everything.mp3: (tag v1.0)&lt;br /&gt;#songname: Your Love Means Everything&lt;br /&gt;#artist: Coldplay&lt;br /&gt;#album: Varie&lt;br /&gt;#year:&lt;br /&gt;#comment:                             &lt;br /&gt;#genre: Other(12)&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;while( &lt;&gt; )&lt;br /&gt;{&lt;br /&gt;       chomp;&lt;br /&gt;       my %hsh = ();&lt;br /&gt;       my @info = `id3ed -i "$_"`;&lt;br /&gt;       foreach my $iline ( @info )&lt;br /&gt;       {&lt;br /&gt;               chomp $iline;&lt;br /&gt;               #print $iline . "\n";&lt;br /&gt;               if( $iline =~ /songname:\s+\b(.+?)$/ ){&lt;br /&gt;                       $hsh{ song } = $1;&lt;br /&gt;               }&lt;br /&gt;               if( $iline =~ /artist:\s+\b(.+?)$/ ){&lt;br /&gt;                       $hsh{ artist } = $1;&lt;br /&gt;               }&lt;br /&gt;               if( $iline =~ /album:\s+\b(.+?)$/ ){&lt;br /&gt;                       $hsh{ album } = $1;&lt;br /&gt;               }&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       my $newname = "$hsh{ artist }" . "-" . "$hsh{ album }" . "-" . "$hsh{ song }" . ".mp3";&lt;br /&gt;       $newname =~ s/\s+/_/g;&lt;br /&gt;       print "$_,$newname\n";&lt;br /&gt;}&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-8802037392823951028?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/8802037392823951028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=8802037392823951028' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/8802037392823951028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/8802037392823951028'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2009/01/renaming-mp3-by-id-tag.html' title='Renaming MP3 by ID tag'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-2350458918759527385</id><published>2009-01-05T11:20:00.003-05:00</published><updated>2009-01-05T11:21:54.346-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Autologging in and running app in X</title><content type='html'>I've been keen on doing this for some time, but a combination of:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;lack of need&lt;/li&gt;&lt;li&gt;lack of time&lt;/li&gt;&lt;/ol&gt;have kept me from doing any real testing on a good solution.  But someone has &lt;a href="http://www.vnode.ch/autostart_x_apps"&gt;already done the work&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-2350458918759527385?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/2350458918759527385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=2350458918759527385' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/2350458918759527385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/2350458918759527385'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2009/01/autologging-in-and-running-app-in-x.html' title='Autologging in and running app in X'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-404301670081001609</id><published>2008-12-25T13:27:00.005-05:00</published><updated>2008-12-25T14:16:00.798-05:00</updated><title type='text'>Coffee Roaster</title><content type='html'>Just received my &lt;a href="http://www.merchantsofgreencoffee.com/"&gt;christmas gift&lt;/a&gt;, and it's the gift that keeps giving.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_e8R94XmGxx8/SVPQ3jDt2ZI/AAAAAAAAACU/4tLYEbwLCxU/s1600-h/25-12-08_1044.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_e8R94XmGxx8/SVPQ3jDt2ZI/AAAAAAAAACU/4tLYEbwLCxU/s200/25-12-08_1044.jpg" alt="" id="BLOGGER_PHOTO_ID_5283796440557934994" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_e8R94XmGxx8/SVPQ_oQvNnI/AAAAAAAAACc/5ZaLC_8OOkU/s1600-h/25-12-08_1050.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 150px;" src="http://3.bp.blogspot.com/_e8R94XmGxx8/SVPQ_oQvNnI/AAAAAAAAACc/5ZaLC_8OOkU/s200/25-12-08_1050.jpg" alt="" id="BLOGGER_PHOTO_ID_5283796579393681010" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_e8R94XmGxx8/SVPRHeOTPeI/AAAAAAAAACk/uNpZcRe8H6g/s1600-h/25-12-08_1058.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 150px;" src="http://2.bp.blogspot.com/_e8R94XmGxx8/SVPRHeOTPeI/AAAAAAAAACk/uNpZcRe8H6g/s200/25-12-08_1058.jpg" alt="" id="BLOGGER_PHOTO_ID_5283796714138058210" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_e8R94XmGxx8/SVPRStbALtI/AAAAAAAAACs/cDDskIa22J0/s1600-h/25-12-08_1122.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_e8R94XmGxx8/SVPRStbALtI/AAAAAAAAACs/cDDskIa22J0/s200/25-12-08_1122.jpg" alt="" id="BLOGGER_PHOTO_ID_5283796907196427986" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-404301670081001609?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/404301670081001609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=404301670081001609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/404301670081001609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/404301670081001609'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2008/12/coffee-roaster.html' title='Coffee Roaster'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_e8R94XmGxx8/SVPQ3jDt2ZI/AAAAAAAAACU/4tLYEbwLCxU/s72-c/25-12-08_1044.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-8979608356320739222</id><published>2008-12-22T09:49:00.002-05:00</published><updated>2008-12-22T09:50:48.915-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work'/><title type='text'>Lovely art from a co-worker</title><content type='html'>Found this on the whiteboard next to my desk this morning...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_e8R94XmGxx8/SU-pNEQNEDI/AAAAAAAAACM/cJHhSEbcZZU/s1600-h/whiteboard_pete.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_e8R94XmGxx8/SU-pNEQNEDI/AAAAAAAAACM/cJHhSEbcZZU/s320/whiteboard_pete.jpg" alt="" id="BLOGGER_PHOTO_ID_5282626929873981490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;... aww thanks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-8979608356320739222?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/8979608356320739222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=8979608356320739222' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/8979608356320739222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/8979608356320739222'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2008/12/lovely-art-from-co-worker.html' title='Lovely art from a co-worker'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_e8R94XmGxx8/SU-pNEQNEDI/AAAAAAAAACM/cJHhSEbcZZU/s72-c/whiteboard_pete.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-6914697378182209764</id><published>2008-12-10T14:31:00.004-05:00</published><updated>2008-12-10T14:42:16.964-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>My first fvwm module</title><content type='html'>I've been using &lt;a href="http://www.fvwm.org"&gt;FVWM&lt;/a&gt; for some time now, but have never tried writing any kind of modules to extend it.  Yesterday I tried it out, and I've got my first working FVWM module.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_e8R94XmGxx8/SUAa015oj6I/AAAAAAAAACE/W5U4evXfVzE/s1600-h/transSource.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 214px; height: 320px;" src="http://2.bp.blogspot.com/_e8R94XmGxx8/SUAa015oj6I/AAAAAAAAACE/W5U4evXfVzE/s320/transSource.png" alt="" id="BLOGGER_PHOTO_ID_5278248258402553762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I wrote the module in Perl, and you can view there source &lt;a href="http://snickers.org/%7Epopcorn/fvwm/modules/trans/fvwmPeteTrans"&gt;here&lt;/a&gt;.  Basically what it does is capture window focus events, and will set the transparency of the window to whatever is set in a configuration file&lt;br /&gt;&lt;blockquote&gt;pblair@laptop:~$ cat ~/.fvwm/fvwmPeteTrans.cfg&lt;br /&gt;XTerm:0.60&lt;/blockquote&gt;The above config will set all xterminals to 60% opacity when the focus moves away from it, but will return it to complete opacity once focus returns to it.&lt;br /&gt;&lt;br /&gt;You can add as many types of applications (one per line).  For instance, Firefox has&lt;br /&gt;&lt;blockquote&gt;$ xprop | grep CLASS&lt;br /&gt;WM_CLASS(STRING) = "Navigator", "Firefox"&lt;/blockquote&gt;So you could either place "Navigator" or "Firefox" at the left of the colon.&lt;br /&gt;&lt;br /&gt;To install the module, place it somewhere where the .fvwmrc ModulePath will find it, then place it into the StartFunction section:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;AddToFunc StartFunction&lt;br /&gt; + I Module FvwmPeteTransFocus&lt;br /&gt; + I FvwmButtons&lt;/blockquote&gt;P.S.  You need "xcompmgr" and "transset" installed.  And be sure to change the absolute pathnames within the module to the respective locations on your system.&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-6914697378182209764?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/6914697378182209764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=6914697378182209764' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/6914697378182209764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/6914697378182209764'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2008/12/my-first-fvwm-module.html' title='My first fvwm module'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_e8R94XmGxx8/SUAa015oj6I/AAAAAAAAACE/W5U4evXfVzE/s72-c/transSource.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-6874433476859679417</id><published>2008-12-09T09:45:00.003-05:00</published><updated>2008-12-09T09:53:32.015-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='computer science'/><title type='text'>Guerilla Refactoring</title><content type='html'>In the world of software development, &lt;a href="http://en.wikipedia.org/wiki/Code_refactoring"&gt;refactoring&lt;/a&gt; is the process of updating code (usually for the better).  But the problem may exist where management sees the existing application as "good enough" and doesn't want to allocate any budget towards fixing what in their eyes "aint broke".&lt;br /&gt;&lt;br /&gt;Enter &lt;a href="http://www.dmclaughlin.com/2008/07/13/i-got-99-problems-but-a-manager-aint-one/"&gt;guerilla refactoring&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I must admit that I fall victim to this.  I find lots of things at work that could be expanded upon, or made better, which would drastically increase the use of the package, make it more robust, or simply more elegant and &lt;a href="http://en.wikipedia.org/wiki/Orthogonal_%28computing%29#Computer_science"&gt;orthogonal&lt;/a&gt;.  I ensure that it doesn't eat into my work time, and the end product is usually something that I will directly benefit from, but hopefully also something that will make someone else's life better/easier/simpler.&lt;br /&gt;&lt;br /&gt;P.S.  I recommend &lt;a href="http://thislife.org/Radio_Episode.aspx?episode=284"&gt;this podcast&lt;/a&gt; from NPR.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-6874433476859679417?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/6874433476859679417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=6874433476859679417' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/6874433476859679417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/6874433476859679417'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2008/12/guerilla-refactoring.html' title='Guerilla Refactoring'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-5547109800432362180</id><published>2008-12-09T08:50:00.002-05:00</published><updated>2008-12-09T08:53:57.028-05:00</updated><title type='text'>Long time no see</title><content type='html'>It's been about a year and a half since my last entry.  I had lost complete interest in blogging and any self &lt;a href="http://www.wordwebonline.com/en/SELFCONGRATULATION"&gt;self congratulations&lt;/a&gt; that come with the territory.&lt;br /&gt;&lt;br /&gt;But I'm starting to feel like I have more to share again, and I hope to see more posts here in the near future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-5547109800432362180?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/5547109800432362180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=5547109800432362180' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/5547109800432362180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/5547109800432362180'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2008/12/long-time-no-see.html' title='Long time no see'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-3001497200534943691</id><published>2007-12-06T00:01:00.000-05:00</published><updated>2007-12-06T00:38:42.923-05:00</updated><title type='text'>Shiny new iPod</title><content type='html'>Received a third-gen iPod nano on Monday as a thank-you for some work that I've been doing (at work), and just finally got the thing working!&lt;br /&gt;&lt;br /&gt;These third-gen buggers require that the &lt;a href="http://www.gnu.org/software/gnupod/gnupod.html#SEC21"&gt;iTunesDB be signed&lt;/a&gt; with the device's serial number.&lt;br /&gt;&lt;br /&gt;First I had to find the serial number by doing a "find" on "/proc" and grepping for "usb".  The device came up, and I simply "cat"-ed the file to get the serial number.&lt;br /&gt;&lt;br /&gt;Then, I used gnupod to sign my DB, using the command:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;mktunes.pl -m /media/IPOD/ --fwguid=$(cat ~/ipod.serial )&lt;/blockquote&gt;Presto-- songs!  No need to iTunes (well.. I don't run windows or OSX), but I just need to figure out how to get video and calendars onto this, and I'm set-- woohoo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-3001497200534943691?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/3001497200534943691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=3001497200534943691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/3001497200534943691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/3001497200534943691'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2007/12/shiny-new-ipod.html' title='Shiny new iPod'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-1926936072469477008</id><published>2007-06-02T02:28:00.000-04:00</published><updated>2007-06-02T02:35:47.833-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cisco'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><category scheme='http://www.blogger.com/atom/ns#' term='abuse'/><title type='text'>BGP + RBL == Scary?</title><content type='html'>Well, we'll see.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cisco.com/univercd/cc/td/doc/product/webscale/css/bsccfggd/profiles.htm#xtocid484245"&gt;http://www.pch.net/documents/tutorials/maps-rbl-bgp-cisco-config-faq.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It makes sense, but something in my gut worries me when the router is automagically &lt;a href="http://en.wikipedia.org/wiki/Nullroute"&gt;null-routing&lt;/a&gt; based on a &lt;a href="http://en.wikipedia.org/wiki/DNSBL"&gt;RBL&lt;/a&gt;.  Maybe I don't grasp the power of it...  I'm looking forward to any discussion on this at MAAWG.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-1926936072469477008?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/1926936072469477008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=1926936072469477008' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/1926936072469477008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/1926936072469477008'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2007/06/bgp-rbl-scary.html' title='BGP + RBL == Scary?'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-6275538890954854490</id><published>2007-06-01T23:40:00.001-04:00</published><updated>2007-06-01T23:40:39.896-04:00</updated><title type='text'>A new house</title><content type='html'>Katharine and I bought a new house last week.  I'd say more, but &lt;a href="http://strivingforsimple.blogspot.com/2007/05/big-news.html"&gt;she already has&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-6275538890954854490?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/6275538890954854490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=6275538890954854490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/6275538890954854490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/6275538890954854490'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2007/06/new-house.html' title='A new house'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-3917606239496839670</id><published>2007-05-13T11:39:00.000-04:00</published><updated>2007-05-13T11:50:17.442-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='spammers'/><title type='text'>Change of view</title><content type='html'>This is entirely premature, but...&lt;br /&gt;&lt;br /&gt;It looks like I'll be changing departments at work.  The paperwork still needs to go through, but it looks like I'll be working in the Abuse department at work.  I'm really looking forward to the change and the challenge.  I was told that they need someone with both system-admin and programming skills, and that I suited that nicely.&lt;br /&gt;&lt;br /&gt;With a mailbox count in the &lt;span style="font-weight: bold;"&gt;millions&lt;/span&gt;, email abuse (as well as abuse in other departments) is a critical aspect to the company.  Untold dollars are wasted by abusers who eat bandwidth, annoy customers, ruin our reputation as a provider, etc etc.&lt;br /&gt;&lt;br /&gt;Once things become &lt;span style="font-style: italic;"&gt;official&lt;/span&gt;, I'll post more details.  Until then, here's to counting the days!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-3917606239496839670?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/3917606239496839670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=3917606239496839670' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/3917606239496839670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/3917606239496839670'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2007/05/change-of-view.html' title='Change of view'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-7031437230486389478</id><published>2007-04-19T02:59:00.000-04:00</published><updated>2007-04-19T03:21:21.133-04:00</updated><title type='text'>Children of Hurin</title><content type='html'>Just picked up a copy of the &lt;a href="http://en.wikipedia.org/wiki/The_Children_of_H%C3%BArin"&gt;Children of Hurin&lt;/a&gt; from Book City earlier tonight-- It's been a while since I've had any time to read any fiction, and am really looking forward to this book.  I only learned of it three days ago via radio, and was surprised by the low media attention that it has received-- I would imagine that following the critical hype of the &lt;a href="http://en.wikipedia.org/wiki/The_Lord_of_the_Rings_film_trilogy"&gt;LOTR films&lt;/a&gt;, that any new material from JRR Tolkien would be met by more attention.&lt;br /&gt;&lt;br /&gt;Apparently not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-7031437230486389478?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/7031437230486389478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=7031437230486389478' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/7031437230486389478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/7031437230486389478'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2007/04/children-of-hurin.html' title='Children of Hurin'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-2186180861959656572</id><published>2007-03-24T02:07:00.000-04:00</published><updated>2007-03-24T02:09:56.971-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Perl programmer, who me?</title><content type='html'>Yikes-- it's true.  Just purchased &lt;a href="http://www.oreilly.com/catalog/pperl3/"&gt;Programming Perl, 3rd Ed.&lt;/a&gt;, from Chapters and am starting to pick it up.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;First impressions:&lt;/span&gt; It's a damned &lt;span style="font-style: italic;"&gt;ugly&lt;/span&gt; language to work with, but is very flexible, so I understand why so many sys-admins love it; you can really hack together a quick and dirty application in no time flat.&lt;br /&gt;&lt;br /&gt;We'll see how much I like it as time goes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-2186180861959656572?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/2186180861959656572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=2186180861959656572' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/2186180861959656572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/2186180861959656572'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2007/03/perl-programmer-who-me.html' title='Perl programmer, who me?'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-5197356718021589957</id><published>2007-03-13T01:31:00.000-04:00</published><updated>2007-03-13T01:33:00.918-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='computer science'/><title type='text'>Video: Advanced Python</title><content type='html'>An interesting&lt;a href="http://video.google.com/videoplay?docid=7760178035196894549"&gt; hour and fifteen minutes&lt;/a&gt;:&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-5197356718021589957?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/5197356718021589957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=5197356718021589957' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/5197356718021589957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/5197356718021589957'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2007/03/video-advanced-python.html' title='Video: Advanced Python'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-3354282299302418420</id><published>2006-12-30T11:49:00.000-05:00</published><updated>2006-12-30T12:12:17.953-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='spammers'/><title type='text'>Spammers... damned spammers</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_e8R94XmGxx8/RZaZD3AGcrI/AAAAAAAAAAU/zXGhbAo-Oxw/s1600-h/jerk_example.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_e8R94XmGxx8/RZaZD3AGcrI/AAAAAAAAAAU/zXGhbAo-Oxw/s320/jerk_example.png" alt="" id="BLOGGER_PHOTO_ID_5014363526706655922" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;Here's a screenshot of a little python application that I wrote to manage some spammers on the system.  I've 'sed'ed their domains to &lt;span style="font-style: italic;"&gt;example.com&lt;/span&gt;, but it basically shows how many messages are currently queued on one of our outbound smtp servers.&lt;br /&gt;&lt;br /&gt;Every shift, I run an application that monitors the queues, and when an individual account exceeds the maximum number of allowed egress messages, my application logs it, and removes it from the queue.&lt;br /&gt;&lt;br /&gt;But, spammers are smart little buggers, so they of course create multiple accounts from which they spam a little bit from.&lt;br /&gt;&lt;br /&gt;My software is smart enough that it keeps track of all found spammers from the past 30 days, and simplifies their email address, then compares that to all of the email addresses in the current out queue.  If the simplified "known spammer" address matches any of the current addresses, then those current addresses are treated as a single address and their queues are aggregated.  If the aggregate exceeds the threshold, then all messages are removed and the synonymous accounts are flagged as spammers for later termination.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Note:&lt;/span&gt; The addresses in the above screen cap are the ones that come out of the filter against the known/previous offenders.  Only usernames that have been previously declared spammers are aggregated.&lt;br /&gt;&lt;br /&gt;Oh, and here's a little graph showing the outbound message queue on a &lt;span style="font-weight: bold;"&gt;single&lt;/span&gt; server.  The drop was when I started work that day.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_e8R94XmGxx8/RZad2HAGctI/AAAAAAAAAAw/n2eYSwWC8UQ/s1600-h/graph.pl.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_e8R94XmGxx8/RZad2HAGctI/AAAAAAAAAAw/n2eYSwWC8UQ/s320/graph.pl.png" alt="" id="BLOGGER_PHOTO_ID_5014368788041593554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-3354282299302418420?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/3354282299302418420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=3354282299302418420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/3354282299302418420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/3354282299302418420'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/12/spammers-damned-spammers.html' title='Spammers... damned spammers'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_e8R94XmGxx8/RZaZD3AGcrI/AAAAAAAAAAU/zXGhbAo-Oxw/s72-c/jerk_example.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-116284605983734372</id><published>2006-11-06T15:38:00.000-05:00</published><updated>2006-11-06T15:47:42.956-05:00</updated><title type='text'>New phone</title><content type='html'>Just replaced the broken phones with some non-broken ones.  Attached are some pictures taken on them.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/03-11-06_0645.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/03-11-06_0645.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/03-11-06_0848.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/03-11-06_0848.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/03-11-06_1757.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/03-11-06_1757.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/04-11-06_1230.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/04-11-06_1230.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-116284605983734372?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/116284605983734372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=116284605983734372' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/116284605983734372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/116284605983734372'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/11/new-phone.html' title='New phone'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-116180210963481261</id><published>2006-10-25T14:41:00.000-04:00</published><updated>2006-12-30T11:59:17.917-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Python: Functional programming</title><content type='html'>I'm trying to get used to functional programming and I must admit, it's kinda fun!&lt;br /&gt;&lt;br /&gt;Here's a  trivial example using both generators, and built in functions to acheive the same result:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/functional_python_snippet.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 354px; height: 136px;" src="http://photos1.blogger.com/blogger/3457/1754/320/functional_python_snippet.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-116180210963481261?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/116180210963481261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=116180210963481261' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/116180210963481261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/116180210963481261'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/10/python-functional-programming.html' title='Python: Functional programming'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-116007844472175773</id><published>2006-10-05T15:55:00.000-04:00</published><updated>2006-12-30T11:59:57.110-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computer science'/><title type='text'>Leslie Lamport</title><content type='html'>I just stumbled upon &lt;a href="http://en.wikipedia.org/wiki/Leslie_Lamport"&gt;Leslie Lamport&lt;/a&gt;'s &lt;a href="http://www.lamport.org/"&gt;website&lt;/a&gt;, which has electronic copies of most of his published work.&lt;br /&gt;&lt;br /&gt;I've studied some of Lamport's work in the past (mainly in regards to &lt;a href="http://research.microsoft.com/users/lamport/pubs/pubs.html#time-clocks"&gt;Lamport Logical Clocks&lt;/a&gt; &amp; totally ordered multicasting, etc) and was recently doing some digging to find out how &amp;amp; why he created the &lt;a href="http://en.wikipedia.org/wiki/LaTeX"&gt;LaTeX&lt;/a&gt; extensions to TeX.&lt;br /&gt;&lt;br /&gt;That was when I came upon &lt;a href="http://research.microsoft.com/users/lamport/pubs/pubs.html"&gt;his papers&lt;/a&gt;.. wow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-116007844472175773?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/116007844472175773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=116007844472175773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/116007844472175773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/116007844472175773'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/10/leslie-lamport.html' title='Leslie Lamport'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-115837982228161478</id><published>2006-09-15T23:56:00.000-04:00</published><updated>2006-09-16T00:10:22.293-04:00</updated><title type='text'>Graduate school</title><content type='html'>Katharine has submitted her final &lt;a href="http://en.wikipedia.org/wiki/Thesis"&gt;MRP&lt;/a&gt; to the &lt;a href="http://www.ryerson.ca/graduate/"&gt;school of graduate studies&lt;/a&gt;, and will do her oral defence in just under a week.  Should all go well, then she'll have &lt;a href="http://www.ryerson.ca/graduate/programs/immigration/"&gt;her MA&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This has gotten me thinking about my own future &lt;a href="http://www.cse.yorku.ca/grad/calendar.html#admissionMSc"&gt;possibilites in graduate school&lt;/a&gt;.  I have the marks, and just have to maintain my average with the requisite math courses (Calculus, Linear Algebra, Statistic) and my current courses.&lt;br /&gt;&lt;br /&gt;I spoke with a &lt;a href="http://people.trentu.ca/bpatrick/"&gt;professor&lt;/a&gt; with whom I'm aquainted, and I must admit that he's piqued my interest in pursuing a &lt;a href="http://www.trentu.ca/academic/aminss/"&gt;M.Sc at Trent&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This means that I'll have to pay higher attention to my studies, since I've (until now) been treating my &lt;a href="http://en.wikipedia.org/wiki/Honours_degree"&gt;B.Sc.&lt;/a&gt; as a terminating degree.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-115837982228161478?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/115837982228161478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=115837982228161478' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/115837982228161478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/115837982228161478'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/09/graduate-school.html' title='Graduate school'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-115816223128324408</id><published>2006-09-13T11:41:00.000-04:00</published><updated>2006-09-13T17:48:28.020-04:00</updated><title type='text'>First day of class</title><content type='html'>New &lt;a href="http://www.trentu.ca/csp/"&gt;semester&lt;/a&gt; started up yesterday and I captured the telemetry of my drive.  Below is a screencap from an internal application used to inspect data drom our &lt;a href="http://www.turnpikeglobal.com/turnpike/p2_partnership.html"&gt;onboard electronic recording device&lt;/a&gt; (nice name, eh?).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/drive_to_trent.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/drive_to_trent.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-115816223128324408?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/115816223128324408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=115816223128324408' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/115816223128324408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/115816223128324408'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/09/first-day-of-class.html' title='First day of class'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-115786095614813113</id><published>2006-09-09T23:58:00.000-04:00</published><updated>2006-12-30T12:00:19.571-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='computer science'/><title type='text'>kd-tree creation tutorial</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/kdtree.2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 224px; height: 141px;" src="http://photos1.blogger.com/blogger/3457/1754/320/kdtree.2.png" alt="" border="0" /&gt;&lt;/a&gt;I've started work on the &lt;a href="http://snickers.org/%7Epopcorn/kdtree/walkthrough.html"&gt;walkthrough&lt;/a&gt; mentioned in my previous post. It doesn't touch on topics such as searches of the completed tree, but sticks to the theory behind the creation and balancing of the resulting tree.&lt;br /&gt;&lt;br /&gt;The graphic(s) for the walkthrough were created using &lt;a href="http://www.graphviz.org/"&gt;graphviz&lt;/a&gt;. I wrote a &lt;a href="http://snickers.org/%7Epopcorn/kdtree/Graph.py"&gt;small utility module &lt;/a&gt;in python that is used by the tutorial to generate the images.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-115786095614813113?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/115786095614813113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=115786095614813113' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/115786095614813113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/115786095614813113'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/09/kd-tree-creation-tutorial.html' title='kd-tree creation tutorial'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-115774548436632928</id><published>2006-09-08T15:56:00.000-04:00</published><updated>2006-09-08T16:04:10.233-04:00</updated><title type='text'>New school semester</title><content type='html'>Starting a new semester at &lt;a href="http://www.trentu.ca/csp/"&gt;school&lt;/a&gt; next week.  Will be at school three days and at &lt;a href="http://www.turnpikeglobal.com"&gt;work&lt;/a&gt; three days, with Sunday off.&lt;br /&gt;&lt;br /&gt;Will post more once classes have begun.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Here's a screenshot of some &lt;a href="http://www.turnpikeglobal.com/turnpike/p2_partnership.html"&gt;trip data&lt;/a&gt; aquired from a test device installed in my car.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/parked_at_james.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/parked_at_james.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;I hope to post a demonstration of kd-trees using Python in the not too distant future.  It should be fun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-115774548436632928?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/115774548436632928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=115774548436632928' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/115774548436632928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/115774548436632928'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/09/new-school-semester.html' title='New school semester'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-115530569323496287</id><published>2006-08-11T10:07:00.000-04:00</published><updated>2006-12-30T12:00:44.994-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cisco'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Cisco Switch -&gt; NIC problems</title><content type='html'>The other day I noticed terrible transfer rates between two UNIX servers at work.  Both were autonegotiating to 100Mbit/full-duplex, but the switch port that the slow server was on was showing a lot of 'orange blinks'.&lt;br /&gt;&lt;br /&gt;I figured that the switch wasn't setup for 100Mbit/full, so I sent an email to the manager of that switch and he replied that all ports were forced to 100-fd.&lt;br /&gt;&lt;br /&gt;After googling, I came accross &lt;a href="http://www.cisco.com/warp/public/473/46.html#auto_neg_valid"&gt;this table&lt;/a&gt; which outlines all of the possible mis-matches in switch/nic configuration that could cause duplex-mismatch and create a ton of collissions.&lt;br /&gt;&lt;br /&gt;I forced the server's nic to 100fd and was able to transfer at 80Mb/s again.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Then I started thinking...&lt;/span&gt;At our remote location we were experiencing &lt;span style="font-style: italic;"&gt;terrible&lt;/span&gt; transfer rates of ~200Kb/s on the Internet.  I double checked, and found that the firewall's (a freebsd 6.1 machine) internal nic which is serving as an &lt;a href="http://people.freebsd.org/%7Earved/vlan/vlan_en.html"&gt;802.1q vlan trunk&lt;/a&gt; had autonegotiated to 100Mb-half-duplex!&lt;br /&gt;&lt;br /&gt;I logged into the switch at the co-location and &lt;a href="http://www.tech-recipes.com/cisco_switch_tips714.html"&gt;forced all ports to 100-full&lt;/a&gt; then did the same with all nics on the server.&lt;br /&gt;&lt;br /&gt;After the switch &amp; firewall renegotiated, I was able to get 40Mb/s transfer rates through the firewall to the internal servers.&lt;br /&gt;&lt;br /&gt;Unbelievable.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/vlan2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/vlan2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-115530569323496287?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/115530569323496287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=115530569323496287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/115530569323496287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/115530569323496287'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/08/cisco-switch-nic-problems.html' title='Cisco Switch -&gt; NIC problems'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-115280277500157075</id><published>2006-07-13T10:57:00.000-04:00</published><updated>2006-07-13T10:59:35.026-04:00</updated><title type='text'>How not to make coffee</title><content type='html'>In the past few weeks we've had a number of humourous (and dangerous!) coffee experiences such as mixing boiling water in the coffee grinder, turning the coffee maker off after the first cup, etc etc.&lt;br /&gt;&lt;br /&gt;Here's a picture of today's coffee.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/how_not_to_make_coffee.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/how_not_to_make_coffee.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-115280277500157075?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/115280277500157075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=115280277500157075' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/115280277500157075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/115280277500157075'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/07/how-not-to-make-coffee.html' title='How not to make coffee'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-115273000810916715</id><published>2006-07-12T14:43:00.000-04:00</published><updated>2006-07-12T14:46:48.120-04:00</updated><title type='text'>Online storage with Box.Net</title><content type='html'>Signed up for a free account with &lt;a href="http://www.box.net"&gt;box.net&lt;/a&gt; today. You get 1GB of storage space with the limitation of 10MB files.&lt;br /&gt;&lt;br /&gt;This size limitation on the &lt;span style="font-style: italic;"&gt;"free"&lt;/span&gt; account is a little annoying, but it's easy enough to split my files first.&lt;br /&gt;&lt;br /&gt;We'll see if I'm still using the service in a month.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/box_screen_cap.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/box_screen_cap.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-115273000810916715?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/115273000810916715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=115273000810916715' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/115273000810916715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/115273000810916715'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/07/online-storage-with-boxnet.html' title='Online storage with Box.Net'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-115220416718412399</id><published>2006-07-06T12:40:00.000-04:00</published><updated>2006-12-30T12:01:08.809-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Some benchmarks</title><content type='html'>Did a few simple benchmarks on a couple of FreeBSD machines at work that are used to VPN our Hamilton &amp;amp; Toronto locations.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;tpgvpn1:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;OpenSSL 0.9.7e-p1 25 Oct 2004&lt;br /&gt;built on: Wed Apr 12 10:24:56 EDT 2006&lt;br /&gt;options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) aes(partial) blowfish(idx)&lt;br /&gt;compiler: cc&lt;br /&gt;available timing options: USE_TOD HZ=128 [sysconf value]&lt;br /&gt;timing function used: getrusage&lt;br /&gt;The 'numbers' are in 1000s of bytes per second processed.&lt;br /&gt;type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes&lt;br /&gt;md2               1638.20k     3516.44k     4954.45k     5548.25k     5704.30k&lt;br /&gt;mdc2              5364.32k     6914.55k     7521.42k     7624.97k     7705.83k&lt;br /&gt;md4              12433.45k    47035.26k   136420.21k   306165.92k   481776.95k&lt;br /&gt;md5              11107.62k    38561.00k   109706.75k   210811.74k   287746.12k&lt;br /&gt;hmac(md5)        14013.40k    49112.06k   131354.82k   229386.40k   291448.39k&lt;br /&gt;sha1              9059.35k    25369.27k    57307.40k    88381.24k   105989.38k&lt;br /&gt;rmd160            7511.49k    22129.82k    46165.80k    67428.84k    78017.10k&lt;br /&gt;rc4              93653.74k   109422.32k   113919.20k   115308.83k   115680.63k&lt;br /&gt;des cbc          58475.17k    61181.88k    62006.46k    62025.47k    61894.47k&lt;br /&gt;des ede3         21643.57k    21967.56k    22083.05k    22130.20k    22114.93k&lt;br /&gt;idea cbc             0.00         0.00         0.00         0.00         0.00&lt;br /&gt;rc2 cbc          20740.90k    22695.78k    22893.82k    23239.87k    22849.82k&lt;br /&gt;rc5-32/12 cbc   147578.81k   158957.43k   168257.95k   171201.41k   171239.86k&lt;br /&gt;blowfish cbc     94637.96k   101551.60k   102807.14k   103450.35k   103305.91k&lt;br /&gt;cast cbc         83145.40k    88404.94k    89604.76k    90079.13k    89946.25k&lt;br /&gt;aes-128 cbc      62447.41k    62234.48k    64136.66k    64602.90k    63681.85k&lt;br /&gt;aes-192 cbc      55820.88k    55668.59k    56812.85k    56763.62k    56988.42k&lt;br /&gt;aes-256 cbc      50017.98k    50337.99k    51038.58k    50574.14k    51127.44k&lt;br /&gt;                 sign    verify    sign/s verify/s&lt;br /&gt;rsa  512 bits   0.0009s   0.0001s   1115.8  11984.3&lt;br /&gt;rsa 1024 bits   0.0044s   0.0002s    228.6   4268.8&lt;br /&gt;rsa 2048 bits   0.0265s   0.0008s     37.8   1308.3&lt;br /&gt;rsa 4096 bits   0.1756s   0.0027s      5.7    368.7&lt;br /&gt;                 sign    verify    sign/s verify/s&lt;br /&gt;dsa  512 bits   0.0007s   0.0009s   1370.6   1118.1&lt;br /&gt;dsa 1024 bits   0.0022s   0.0027s    455.8    370.8&lt;br /&gt;dsa 2048 bits   0.0073s   0.0087s    137.3    114.3&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;core1:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;OpenSSL 0.9.7e-p1 25 Oct 2004&lt;br /&gt;built on: Sun May  7 03:08:51 UTC 2006&lt;br /&gt;options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) aes(partial) blowfish(idx)&lt;br /&gt;compiler: cc&lt;br /&gt;available timing options: USE_TOD HZ=128 [sysconf value]&lt;br /&gt;timing function used: getrusage&lt;br /&gt;The 'numbers' are in 1000s of bytes per second processed.&lt;br /&gt;type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes&lt;br /&gt;md2                689.54k     1497.71k     2116.48k     2362.59k     2444.21k&lt;br /&gt;mdc2              2582.80k     3138.69k     3315.10k     3368.65k     3376.00k&lt;br /&gt;md4               5538.51k    20431.26k    66112.68k   150588.74k   239281.97k&lt;br /&gt;md5               4837.07k    17335.76k    52498.88k   106514.46k   152909.54k&lt;br /&gt;hmac(md5)         8870.64k    29192.61k    75483.85k   126350.29k   157551.74k&lt;br /&gt;sha1              4349.97k    13238.35k    34171.43k    56445.42k    69773.18k&lt;br /&gt;rmd160            4158.92k    13428.72k    33624.91k    53853.32k    65470.42k&lt;br /&gt;rc4             131339.75k   149218.64k   159794.61k   162431.71k   163566.16k&lt;br /&gt;des cbc          29754.63k    30797.61k    31205.75k    31267.00k    31324.31k&lt;br /&gt;des ede3         10977.26k    11112.41k    11175.22k    11194.61k    11194.92k&lt;br /&gt;idea cbc             0.00         0.00         0.00         0.00         0.00&lt;br /&gt;rc2 cbc          11394.78k    11796.30k    11897.23k    11932.45k    11929.00k&lt;br /&gt;rc5-32/12 cbc    82203.59k    94505.04k   100379.68k   101657.50k   102098.28k&lt;br /&gt;blowfish cbc     45409.02k    48400.70k    49780.22k    50007.64k    50007.22k&lt;br /&gt;cast cbc         44914.14k    47809.21k    49023.44k    49306.77k    49333.89k&lt;br /&gt;aes-128 cbc      30723.93k    31820.69k    32113.55k    32244.90k    32282.16k&lt;br /&gt;aes-192 cbc      26401.29k    27386.46k    27623.19k    27743.82k    27753.52k&lt;br /&gt;aes-256 cbc      23762.41k    24460.65k    24633.90k    24730.52k    24737.95k&lt;br /&gt;                 sign    verify    sign/s verify/s&lt;br /&gt;rsa  512 bits   0.0012s   0.0001s    856.6   8413.9&lt;br /&gt;rsa 1024 bits   0.0053s   0.0003s    188.3   3317.8&lt;br /&gt;rsa 2048 bits   0.0305s   0.0009s     32.8   1069.9&lt;br /&gt;rsa 4096 bits   0.1997s   0.0031s      5.0    320.0&lt;br /&gt;                 sign    verify    sign/s verify/s&lt;br /&gt;dsa  512 bits   0.0009s   0.0011s   1095.4    921.7&lt;br /&gt;dsa 1024 bits   0.0026s   0.0031s    390.3    321.2&lt;br /&gt;dsa 2048 bits   0.0084s   0.0103s    119.4     96.9&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;And now for the bandwidth:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;[peterb@tpgvpn1] netperf&gt; /usr/local/netperf/netperf -H 204.15.193.30 12865&lt;br /&gt;TCP STREAM TEST to 204.15.193.30&lt;br /&gt;Recv   Send    Send&lt;br /&gt;Socket Socket  Message  Elapsed&lt;br /&gt;Size   Size    Size     Time     Throughput&lt;br /&gt;bytes  bytes   bytes    secs.    10^6bits/sec&lt;br /&gt;&lt;br /&gt;65536  32768  32768    10.04       5.75&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-115220416718412399?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/115220416718412399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=115220416718412399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/115220416718412399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/115220416718412399'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/07/some-benchmarks.html' title='Some benchmarks'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-115207472136488652</id><published>2006-07-05T00:42:00.000-04:00</published><updated>2006-07-05T01:00:14.806-04:00</updated><title type='text'>Been offline for some time</title><content type='html'>Just writing to say that I haven't abandoned this blog.  Just with work full time, and family full time, I haven't found the time (or motivation?) to sit down and write anything of substance or worth in a while.  Here's a quick list of things that have happened in the past few months:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Winnifred started pre-school&lt;/li&gt;&lt;li&gt;Started &lt;a href="http://www.turnpikeglobal.com"&gt;work&lt;/a&gt; full-time&lt;/li&gt;&lt;li&gt;...&lt;/li&gt;&lt;li&gt;That's about it&lt;/li&gt;&lt;/ul&gt;Well, the list is rather small and not very impressive, but its contents have been keeping me very busy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-115207472136488652?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/115207472136488652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=115207472136488652' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/115207472136488652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/115207472136488652'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/07/been-offline-for-some-time.html' title='Been offline for some time'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-114616893227341856</id><published>2006-04-27T16:00:00.000-04:00</published><updated>2006-04-27T16:15:32.286-04:00</updated><title type='text'>A finish to exams</title><content type='html'>Just finished my last exam.  Now I just have to finish writing a report on &lt;a href="http://www.openafs.org"&gt;AFS&lt;/a&gt; and my semester is  complete.&lt;br /&gt;&lt;br /&gt;I've backed up all of my unix/netware files to my new flash disk (1gig) that I bought last night along with a new laser printer (brother hl-2040) for Katharine.  We've been without a printer for ~6months, and it's been a real pain in the neck.  After being able to print out all of my course notes to study with last night, I was regretting having put off the printer purchase for so long.&lt;br /&gt;&lt;br /&gt;If anyone is in the market, I &lt;span style="font-style: italic;"&gt;highly&lt;/span&gt; recomend getting a monochrome laser.  The quality is beautiful, and how often are you really printing colour?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-114616893227341856?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/114616893227341856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=114616893227341856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114616893227341856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114616893227341856'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/04/finish-to-exams.html' title='A finish to exams'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-114606529050201813</id><published>2006-04-26T11:23:00.000-04:00</published><updated>2006-04-26T11:41:47.226-04:00</updated><title type='text'>Davis' Computer is Vegetarian</title><content type='html'>I recently did a 'w' command on a shell server to see who was online, and my &lt;a href="http://snickers.org/%7Edavis"&gt;friend&lt;/a&gt;'s remote hostname came up as: "CPEbadbadbeeeef...".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/who.snickers.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/400/who.snickers.png" alt="" border="0" /&gt;&lt;/a&gt;Now, that hostname belongs to &lt;a href="http://www.rogers.com"&gt;Rogers&lt;/a&gt; internet, and they (appear to) use a combination of strings and hex values to denote their customers' address.&lt;br /&gt;&lt;br /&gt;I just find this (arbitrary) address funny.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Note: &lt;a href="http://en.wikipedia.org/wiki/0xdeadbeef"&gt;http://en.wikipedia.org/wiki/0xdeadbeef&lt;/a&gt; is a funny little bit of trivia&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-114606529050201813?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/114606529050201813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=114606529050201813' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114606529050201813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114606529050201813'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/04/davis-computer-is-vegetarian.html' title='Davis&apos; Computer is Vegetarian'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-114485923467113007</id><published>2006-04-12T12:23:00.000-04:00</published><updated>2006-05-01T00:43:24.806-04:00</updated><title type='text'>Messy Girls</title><content type='html'>Since Fin is tube-fed, she hasn't really developed much of an appetite, but she still likes to get messy with the rest of us during meals.&lt;br /&gt;&lt;br /&gt;Attached are a few pictures of her eating palenta &amp; pesto.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_3737.jpg"&gt;&lt;img style="" pointer="" src="http://photos1.blogger.com/blogger/3457/1754/320/100_3737.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_3739.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/100_3739.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Oh, and Fin's learning to crawl:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_3730.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/100_3730.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-114485923467113007?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/114485923467113007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=114485923467113007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114485923467113007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114485923467113007'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/04/messy-girls.html' title='Messy Girls'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-114443954380472830</id><published>2006-04-07T15:47:00.000-04:00</published><updated>2006-04-07T15:52:23.823-04:00</updated><title type='text'>Personal Web News Aggregator</title><content type='html'>I've just written a little &lt;a href="http://www.python.org"&gt;python&lt;/a&gt; programme to pull a number of news xml files, and present them on &lt;a href="http://snickers.org/%7Epopcorn/feeds/"&gt;my website&lt;/a&gt; for viewing.&lt;br /&gt;&lt;br /&gt;It by no means compares with certain browser based news aggregators, but there are times when I'm at a computer that cannot run such aggregators, so it's nice to be able to simply go to my website and view them there.&lt;br /&gt;&lt;br /&gt;There's also a link at the bottom my news page to the &lt;a href="http://snickers.org/%7Epopcorn/feeds/parse.py.txt"&gt;script's source code&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-114443954380472830?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/114443954380472830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=114443954380472830' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114443954380472830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114443954380472830'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/04/personal-web-news-aggregator.html' title='Personal Web News Aggregator'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-114412680426849995</id><published>2006-04-04T00:44:00.000-04:00</published><updated>2006-04-04T01:00:04.286-04:00</updated><title type='text'>Deletion in RET Gene / Fin's Gear</title><content type='html'>Today the &lt;a href="http://www.sickkids.ca/molecular/"&gt;geneticist&lt;/a&gt; called with results from her DNA tests which confirmed the suspicion that her &lt;a href="http://www.med.umich.edu/opm/newspage/2003/hirschsprung.htm"&gt;RET gene&lt;/a&gt; was "&lt;span style="font-style: italic;"&gt;garbled&lt;/span&gt;" in some manner.  Our next step is for Katharine &amp; I to get tested to determine if we're carriers of the faulty gene, or if Fin developed the gene deformity all on her own.&lt;br /&gt;&lt;br /&gt;It really doesn't make a difference to us, but it helps the greater research in Hirschprung's &amp;amp; genome mapping.&lt;br /&gt;&lt;br /&gt;&lt;hr align="left" width="60%"&gt;&lt;br /&gt;I've decided to post a couple of pictures of Fin and her gear for a few people who've shown interest in what kind of gear she sports.&lt;br /&gt;&lt;br /&gt;Fin's &lt;a href="http://en.wikipedia.org/wiki/Ileostomy"&gt;Ostomy&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_3697.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/200/100_3697.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fin's &lt;a href="http://en.wikipedia.org/wiki/Feeding_tube"&gt;G-Tube&lt;/a&gt; (her feeding tube):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_3699.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/200/100_3699.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fin all dressed:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_3701.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/200/100_3701.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Just Fin:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_3706.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/200/100_3706.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-114412680426849995?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/114412680426849995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=114412680426849995' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114412680426849995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114412680426849995'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/04/deletion-in-ret-gene-fins-gear.html' title='Deletion in RET Gene / Fin&apos;s Gear'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-114412566402933009</id><published>2006-04-04T00:23:00.000-04:00</published><updated>2006-04-04T00:41:04.053-04:00</updated><title type='text'>Dinner</title><content type='html'>On Friday we had a friend over for a nice light dinner.  Now that it's spring time, we decided that a lighter dinner was in order (plus, it leaves more room for desert!).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_3690.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/200/100_3690.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_3682.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/200/100_3682.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_3683.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/200/100_3683.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Stephanie is always a good person to have over because she never gives any of our &lt;a href="http://www.vitalita.com/cookbooks.html"&gt;vegan recipes&lt;/a&gt; a funny look.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_3687.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/200/100_3687.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I think that the salad was a hit with everyone.  Also, we had some neat sodas.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_3691.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/200/100_3691.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-114412566402933009?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/114412566402933009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=114412566402933009' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114412566402933009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114412566402933009'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/04/dinner.html' title='Dinner'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-114381728192134526</id><published>2006-03-31T09:56:00.000-05:00</published><updated>2006-03-31T10:01:21.933-05:00</updated><title type='text'>Down with protected class variables?</title><content type='html'>I'm not sure.&lt;br /&gt;&lt;br /&gt;Kasia writes in her &lt;a href="http://www.unix-girl.com/blog/archives/2006/03/protected_varia.html"&gt;blog entry&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;If a variable is not final then it should be private. If you need to make it accessible to another class and there is no accessor then you're probably not doing something right.&lt;/blockquote&gt;&lt;br /&gt;While true, that making fields/attributes publicly available via an interface of sorts (not "Interface in the sense of an abstract class, but just in the sense of certain known methods), and not directly from a "friend" class/function or a derived sub-class.&lt;br /&gt;&lt;br /&gt;But, unless the compiler is doing some inlining for you, then the performance hit on making those extra accessor calls, and the extra layer of indirection seems prohibative.&lt;br /&gt;&lt;br /&gt;But, then perhaps I'm forgetting that computers are constantly evolving and these kind of pre-conceived bottlenecks aren't actually anything to worry about.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-114381728192134526?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/114381728192134526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=114381728192134526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114381728192134526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114381728192134526'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/03/down-with-protected-class-variables.html' title='Down with protected class variables?'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-114347311314740966</id><published>2006-03-27T10:23:00.000-05:00</published><updated>2006-03-27T10:28:38.616-05:00</updated><title type='text'>Programming languages and their relationship styles</title><content type='html'>&lt;a href="http://maradydd.livejournal.com/293666.html"&gt;http://maradydd.livejournal.com/293666.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I particularly like the comment on C:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I don't think C gets enough credit. Sure, C doesn't love you. C isn't about love--C is about thrills. C hangs around in the bad part of town. C knows all the gang signs. C has a motorcycle, and wears the leathers everywhere, and never wears a helmet, because that would mess up C's punked-out hair. C likes to give cops the finger and grin and speed away. Mention that you'd like something, and C will pretend to ignore you; the next day, C will bring you one, no questions asked, and toss it to you with a you-know-you-want-me smirk that makes your heart race. Where did C get it? "It fell off a truck," C says, putting away the boltcutters. You start to feel like C doesn't know the meaning of "private" or "protected": what C wants, C takes. This excites you. C knows how to get you anything but safety. C will give you anything but commitment&lt;br /&gt;&lt;br /&gt;In the end, you'll leave C, not because you want something better, but because you can't handle the intensity. C says "I'm gonna live fast, die young, and leave a good-looking corpse," but you know that C can never die, not so long as C is still the fastest thing on the road.&lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;I love this:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;"You start to feel like C doesn't know the meaning of "private" or "protected": what C wants, C takes. This excites you. C knows how to get you anything but safety."&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I love it!&lt;br /&gt;&lt;br /&gt;It's &lt;span style="font-style: italic;"&gt;very&lt;/span&gt; much worth the read.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-114347311314740966?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/114347311314740966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=114347311314740966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114347311314740966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114347311314740966'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/03/programming-languages-and-their.html' title='Programming languages and their relationship styles'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-114323403820417836</id><published>2006-03-24T15:56:00.000-05:00</published><updated>2006-03-24T16:13:27.063-05:00</updated><title type='text'>C++ Exceptions: Continuance</title><content type='html'>In designing a language that supports exception handling, one must consider the aspect of continuance: where does execution resume after the exception has been raised?&lt;br /&gt;&lt;br /&gt;I recently came upon an &lt;a href="http://cpptips.hyperformix.com/cpptips/term_except"&gt;online conversation&lt;/a&gt; of &lt;a href="http://en.wikipedia.org/wiki/Stroustrup"&gt;Bjarne Stroustrup&lt;/a&gt;, in which he discusses why &lt;a href="http://public.research.att.com/%7Ebs/bs_faq2.html#resume"&gt;resumption directly after the statement&lt;/a&gt; that raised the exception wasn't implemented.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt; Basically, someone resuming from an exception handler can never be sure that the code after the point of throw was written to deal with the excecution just continuing as if nothing had happened. An exception handler cannot know how much context to "get right" before resuming. To get such code right, the writer of the throw and the writer of the catch need intimate knowledge of each others code and context. This creates a complicated mutual dependency that wherever it has been allowed has led to serious maintenance problems.&lt;/blockquote&gt;This is probably of &lt;span style="font-style: italic;"&gt;very little&lt;/span&gt; interest to many people, but I find it rather facinating to see why certain decisions were made.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-114323403820417836?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/114323403820417836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=114323403820417836' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114323403820417836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114323403820417836'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/03/c-exceptions-continuance.html' title='C++ Exceptions: Continuance'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-114300711482244426</id><published>2006-03-22T00:50:00.000-05:00</published><updated>2006-03-22T00:58:34.823-05:00</updated><title type='text'>The Art of UNIX Programming</title><content type='html'>The current quote above ("When in doubt, use brute force") was retreived from the following book:&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://www.catb.org/%7Eesr/writings/taoup/"&gt;The Art of UNIX Programming&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;It's an interesting read (and &lt;span style="font-style: italic;"&gt;free&lt;/span&gt; too!).  It isn't a technical manual on how to write applications for the UNIX environment, but rather a philosphical approach for programming according to the (so called) UNIX philosophy.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.catb.org/%7Eesr/writings/taoup/html/ch01s06.html"&gt;17 rules&lt;/a&gt; are good rules to follow iregardless of the platform/language/environment that you work with.  Also, the &lt;a href="http://www.catb.org/%7Eesr/writings/taoup/html/ch11s06.html"&gt;Interface Pattern&lt;/a&gt; page has a lot of insight on how to organise your tools.  Make a number of small, flexible tools that can be used in conjunction to accomplish a number of tasks, instead of making a monolithic utility that tries to do everything itself.&lt;br /&gt;&lt;br /&gt;I could go on &amp; on, but instead you should go and &lt;a href="http://www.catb.org/%7Eesr/writings/taoup/html/"&gt;check out the book&lt;/a&gt; for yourself.  (&lt;span style="font-style: italic;"&gt;Even if you're not a UNIX person&lt;/span&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-114300711482244426?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/114300711482244426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=114300711482244426' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114300711482244426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114300711482244426'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/03/art-of-unix-programming.html' title='The Art of UNIX Programming'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-114300564876021000</id><published>2006-03-22T00:23:00.000-05:00</published><updated>2006-03-22T00:34:08.773-05:00</updated><title type='text'>Gak!</title><content type='html'>Over the weekend, Fred Fin and I made Gak.  It was our first time, and everyone had a lot of (messy) fun.  Fin really got into it and required a little more cleaning off than the rest of us.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://snickers.org/%7Epopcorn/images/gak/100_3652.JPG"&gt;&lt;img style="cursor: pointer; width: 200px;" src="http://snickers.org/%7Epopcorn/images/gak/100_3652.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://snickers.org/%7Epopcorn/images/gak/100_3649.JPG"&gt;&lt;img style="cursor: pointer; width: 200px;" src="http://snickers.org/%7Epopcorn/images/gak/100_3649.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://snickers.org/%7Epopcorn/images/gak/100_3648.JPG"&gt;&lt;img style="cursor: pointer; width: 200px;" src="http://snickers.org/%7Epopcorn/images/gak/100_3648.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://snickers.org/%7Epopcorn/images/gak/100_3657.JPG"&gt;&lt;img style="cursor: pointer; width: 200px;" src="http://snickers.org/%7Epopcorn/images/gak/100_3657.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://snickers.org/%7Epopcorn/images/gak/100_3658.JPG"&gt;&lt;img style="cursor: pointer; width: 200px;" src="http://snickers.org/%7Epopcorn/images/gak/100_3658.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://snickers.org/%7Epopcorn/images/gak/100_3650.JPG"&gt;&lt;img style="cursor: pointer; width: 200px;" src="http://snickers.org/%7Epopcorn/images/gak/100_3650.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://snickers.org/%7Epopcorn/images/gak/100_3654.JPG"&gt;&lt;img style="cursor: pointer; width: 200px;" src="http://snickers.org/%7Epopcorn/images/gak/100_3654.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-114300564876021000?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/114300564876021000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=114300564876021000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114300564876021000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114300564876021000'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/03/gak.html' title='Gak!'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-114231553795898920</id><published>2006-03-14T00:51:00.000-05:00</published><updated>2006-03-14T00:52:17.973-05:00</updated><title type='text'>Software Eng.: FIT &amp; JUnit</title><content type='html'>Check out &lt;a href="http://www-128.ibm.com/developerworks/java/library/j-cq02286/index.html"&gt;this article&lt;/a&gt; on IBM regarding a unit testing framework that enables &lt;span style="font-style: italic;"&gt;business people&lt;/span&gt; to develop test cases using tools like excel.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-114231553795898920?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/114231553795898920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=114231553795898920' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114231553795898920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114231553795898920'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/03/software-eng-fit-junit.html' title='Software Eng.: FIT &amp; JUnit'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-114231469122717680</id><published>2006-03-14T00:36:00.000-05:00</published><updated>2006-03-14T00:38:11.236-05:00</updated><title type='text'>SlickRun deserves its name</title><content type='html'>Thanks to my friend &lt;a href="http://www.mirekw.com"&gt;Mirek&lt;/a&gt;,  I've installed &lt;a href="http://www.bayden.com/SlickRun/"&gt;SlickRun&lt;/a&gt; on both my home &amp; work Windows workstations.&lt;br /&gt;&lt;br /&gt;It's quite neat -- after setting up some "&lt;span style="font-style: italic;"&gt;magic words&lt;/span&gt;" for my most frequently used applications &amp;amp; websites, I rarely use the start button anymore.&lt;br /&gt;&lt;br /&gt;Very neat.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-114231469122717680?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/114231469122717680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=114231469122717680' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114231469122717680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114231469122717680'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/03/slickrun-deserves-its-name.html' title='SlickRun deserves its name'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-114214794632304493</id><published>2006-03-12T02:00:00.000-05:00</published><updated>2006-03-12T03:00:31.696-05:00</updated><title type='text'>Back in the hospital</title><content type='html'>Today Fin started outputing more than usual.  Katharine picked up some paedialites at the pharmacy &amp; began replacing Fin's food with the paedialites 1:1.&lt;br /&gt;&lt;br /&gt;At three-ish,  I left work early to pick Katharine &amp;amp; the girls up and together we headed to Emergency at &lt;a href="http://www.sickkids.ca"&gt;SickKids&lt;/a&gt;.  She's been put on IV fluids &amp; taken off of foods to give her stomach a rest while her virus runs its course.&lt;br /&gt;&lt;br /&gt;It's 2am, and Winnifred &amp;amp; I just recently arrived at home -- unfortunately Katharine and Findley are still in observation until around 3 when paediatrics will finish their rounds and admin Findley into a room.&lt;br /&gt;&lt;br /&gt;While we were waiting in Emergency, Winnifred and I were looking at a poster of cats when we heard:&lt;br /&gt;&lt;blockquote&gt;"What, are, you, doing, here?"&lt;/blockquote&gt;We turned around to see Findley's surgeon, Dr. Annie Fecteau, who was on call that evening.  She looked a little horrified to see us standing there, so I brought her up to speed on Findley's condition.&lt;br /&gt;&lt;br /&gt;The thing about Findley &amp; Dr. Fecteau is that as soon as Dr. Fecteau first operated on Findley, she, Dr. Fecteau became Findley's primary physician.  Findley still has a Paediatrician, a &lt;a href="http://en.wikipedia.org/wiki/Gastrointestinal_tract"&gt;GI&lt;/a&gt; team, a Nutruitionist, a Geneticist, a General Practitioner, and a few other teams that I'm forgetting at the moment.  But, even if Findley develops a cold, Dr. Fecteau is her primary physician.&lt;br /&gt;&lt;br /&gt;Imagine that, having a transplant surgeon being the first person you see as soon as you get sick.&lt;br /&gt;&lt;br /&gt;Hopefully this stay at the hospital won't last more than five days or so.  It will be interesting to find out what a stay in Paediatrics will be like.  Most of our experience is on the surgical ward.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;That said, here are a few comparison pictures of Fin in August, and her in January:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/fin_slippers.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/200/fin_slippers.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/fin_tubes.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/200/fin_tubes.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-114214794632304493?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/114214794632304493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=114214794632304493' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114214794632304493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114214794632304493'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/03/back-in-hospital.html' title='Back in the hospital'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-114166220018378689</id><published>2006-03-06T11:14:00.000-05:00</published><updated>2006-03-07T08:18:52.126-05:00</updated><title type='text'>Spring Break</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_3590.1.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/200/100_3590.jpg" alt="" border="0" /&gt;&lt;/a&gt;Over spring break Katharine, Winnifred, Findley and I packed up the car and headed north the &lt;a href="http://maps.google.com/maps?f=q&amp;hl=en&amp;amp;q=mattawa,+Ontario"&gt;Mattawa&lt;/a&gt; to visit Katharine's grand father before driving west to &lt;a href="http://maps.google.com/maps?f=q&amp;hl=en&amp;amp;q=sudbury,+Ontario"&gt;Sudbury&lt;/a&gt; for two nights.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_3601.0.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/200/100_3601.jpg" alt="" border="0" /&gt;&lt;/a&gt;I hadn't been to Sudbury in about 14 years, so the visit experience was completely new to me.  We all got a kick out of &lt;a href="http://www.sciencenorth.on.ca/"&gt;Science North&lt;/a&gt;, and seeing the &lt;a href="http://www.bigthings.ca/ontario/sudbury.html"&gt;Big Nickel&lt;/a&gt; was fun.  But I think that the biggest hit of all was the swimming pool at the hotel.  I didn't know it was so easy to impress a three year old.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_3593.0.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/200/100_3593.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_3618.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/200/100_3618.jpg" alt="" border="0" /&gt;&lt;/a&gt;After two nights in Sudbury, we got back into the car and headed south to Katharine's family farm for a stay at the cabin.  The snow was about 2-3 feet deep, so we had to park the car at the house and walk all of our stuff back to the cabin.  It was nice and insular; Having a wood burning stove was super cozy.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_3617.0.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/200/100_3617.jpg" alt="" border="0" /&gt;&lt;/a&gt;Unfortunately the girls were asleep at the time, but at about 5:30 - 6:00am when I was up putting more wood on the fire I saw some wild turkeys and a deer out of the window.  My camera was burried deep in the bag so I wasn't able to snap any shots for Winnifred.  Although later on, she and I treked through the snow looking at all of the animal tracks.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_3610.0.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/200/100_3610.jpg" alt="" border="0" /&gt;&lt;/a&gt;Most people don't head to Central/Northern Ontario on their Spring Break (in February), but it was quite fun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-114166220018378689?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/114166220018378689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=114166220018378689' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114166220018378689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/114166220018378689'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/03/spring-break.html' title='Spring Break'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-113952120364457255</id><published>2006-02-09T16:31:00.000-05:00</published><updated>2006-02-09T16:40:03.666-05:00</updated><title type='text'>Kick Sun out</title><content type='html'>My school's &lt;a href="http://tyr.trentu.ca"&gt;SunLab&lt;/a&gt; is a collection of aging UltraSparc5 machines, and an Enterprise server running NFS &amp; NIS for the workstations.&lt;br /&gt;&lt;br /&gt;The workstations run fine if you limit your session to CDE, but if you try to log in with JavaDesktop (a Gnome variant) the systems quickly run out of their 256Megs of RAM and begin to thrash the swap space.&lt;br /&gt;&lt;br /&gt;The funny thing is that my school has no Linux/FreeBSD/whatever workstations available (that I know of), but is content to limit its UNIX activities to the 20-something Ultra5s that are rotting away.&lt;br /&gt;&lt;br /&gt;My solution would be to install a high-end x86 Linux server, offering account management via LDAP, and a number of mid-range servers running KDE as remote sessions.&lt;br /&gt;&lt;br /&gt;The Ultra5s would be upgraded to Solaris 10 (currently sitting at 7) and be able to either:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Log in natively using CDE or whatever&lt;/li&gt;&lt;li&gt;Log in remotely to the Linux/KDE servers and display the applications locally&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Additionally, the school should offer a customized Linux BootCD with which students could place into any Windows XP workstation on campus and boot into Linux, and connect to the remote KDE servers.&lt;/p&gt;&lt;p&gt;The only additional hardware requirements would be the Authentication Server, and the Application Servers.  The school could keep their crappy Ultra5s (they have nice monitors) and expand their UNIX footprint with Linux/KDE applications etc.&lt;/p&gt;&lt;p&gt;That said, a place like that would never be implemented.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-113952120364457255?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/113952120364457255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=113952120364457255' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113952120364457255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113952120364457255'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/02/kick-sun-out.html' title='Kick Sun out'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-113934306926423817</id><published>2006-02-07T15:08:00.000-05:00</published><updated>2006-02-07T15:11:09.276-05:00</updated><title type='text'>Chubby Fin</title><content type='html'>Findley's doing much better.  She was only in hospital for about a week.  It turned out that her inability to hold down food wasn't surgically related, but instead she had (at some point) contracted a stomach virus that was causing her to throw up.&lt;br /&gt;&lt;br /&gt;The surgeons had her on an IV to keep her fluids up, and after a week, the virus seemed to have run it course, so she was discharged.  She has since been putting on weight again, and is finally &lt;span style="font-style: italic;"&gt;back on her growth-chart curve&lt;/span&gt;!!&lt;br /&gt;&lt;br /&gt;It's nice to have the girl back at home.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-113934306926423817?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/113934306926423817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=113934306926423817' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113934306926423817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113934306926423817'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/02/chubby-fin.html' title='Chubby Fin'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-113830020911341060</id><published>2006-01-26T13:24:00.000-05:00</published><updated>2006-01-26T13:30:09.130-05:00</updated><title type='text'>Time away from computers</title><content type='html'>It's been a month since my last post and a number of things have happened since then:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Finished exams&lt;/li&gt;&lt;li&gt;Findley had surgery to have her G-Tube inserted&lt;/li&gt;&lt;li&gt;Started winter classes&lt;/li&gt;&lt;li&gt;Findley re-admitted to surgery five days after being discharged due to an inability to tollerate her foods&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Number one was good.  Two was good.  Three was good.  Four, not so good.&lt;/p&gt;&lt;p&gt;As it turned out, Findley had contracted a stomach virus which was causing her to reflux and dump her meals/fluids.  So she's currently back at &lt;a href="http://www.sickkids.ca"&gt;SickKids&lt;/a&gt; on an IV for fluids while they monitor her &amp; her fluid retention.  I hesitate to say that she'll be home soon, because discharge dates always change as soon as you become attached to them.  She is doing much better and the virus has almost completely run its course.  We'll hopefully have her at home again soon.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-113830020911341060?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/113830020911341060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=113830020911341060' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113830020911341060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113830020911341060'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2006/01/time-away-from-computers.html' title='Time away from computers'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-113424916925513480</id><published>2005-12-10T15:59:00.001-05:00</published><updated>2005-12-10T16:12:49.266-05:00</updated><title type='text'>Some sun links on ZFS</title><content type='html'>ZFS is really quite amazing.  My current hardware doesn't support it (well, my current hardware doesn't support solaris 10) so I haven't had a chance to actually try this new filesystem out, but from what I've read, it's tremendous.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://blogs.sun.com/roller/page/bmc/20051116"&gt;Welcome to ZFS!&lt;/a&gt; (Brian Cantrill)&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.sun.com/roller/page/bonwick/20051209"&gt;ZFS End-to-End Data Integrity&lt;/a&gt; (Jeff Bonwick)&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.sun.com/roller/page/bonwick/20051118"&gt;RAID-Z&lt;/a&gt; (Jeff Bonwick)&lt;/li&gt;&lt;li&gt;&lt;a href="http://opensolaris.org/os/community/zfs/demos/basics/"&gt;Flash Demo of ZFS&lt;/a&gt; (Dan Price)&lt;/li&gt;&lt;li&gt;&lt;a href="http://opensolaris.org/os/community/zfs/demos/selfheal/"&gt;Flash Demo of ZFS - Self Healing&lt;/a&gt; (Dan Price)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;People have talked about porting ZFS to Linux (which doesn't seem possible due to Linux's GPL licensing) and (Free/Open/Net)BSD.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-113424916925513480?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/113424916925513480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=113424916925513480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113424916925513480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113424916925513480'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2005/12/some-sun-links-on-zfs_10.html' title='Some sun links on ZFS'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-113410480469653755</id><published>2005-12-08T23:59:00.000-05:00</published><updated>2005-12-09T00:17:47.073-05:00</updated><title type='text'>Using "keychain" for FreeBSD</title><content type='html'>&lt;a href="http://www.gentoo.org/proj/en/keychain/"&gt;Keychain&lt;/a&gt; is a really neat little application that makes &lt;a href="http://www.openssh.org/"&gt;OpenSSH&lt;/a&gt;'s ssh-agent usable. ssh-agent (which comes with OpenSSH) is a utility program that reads your private ssh key, and stores it in memory so that it is used whenever creating an ssh connection. The problem is that you have to manually load it for it to work. And on top of that, every time that you load it, you have to enter your private passphrase.&lt;br /&gt;&lt;br /&gt;Keychain takes care of all of that.&lt;br /&gt;&lt;br /&gt;Keychain checks for any running ssh-agent, and attaches to it if found. Otherwise, it will execute it, and ask you for your passphrase. Now, whenever you open a new terminal, you won't have to enter your passphrase to use your private key!&lt;br /&gt;&lt;br /&gt;This also works for the entire suite of SSH (scp, sftp, etc). So you can have a crontab entry that uses a scp call, and not have to use a key with an empty passphrase!&lt;br /&gt;&lt;br /&gt;Below is a screenshot of keychain being setup on my FreeBSD workstation.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/keychain_terminal.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/keychain_terminal.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Once you've &lt;a href="http://www.networknewz.com/networknewz-10-20030707AuthenticatingbyPublicKeyOpenSSH.html"&gt;added your public key to your remote hosts&lt;/a&gt;' ".ssh" directory, you'll be able to log into your remote account without having to issue any passphrases!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Note: In the screenshot I type "killall keychain" which was wrong.  I should've typed "killall ssh-agent".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now I can log into my remote pine account by simply typing:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;ssh -t username@remotehosts.com pine&lt;/blockquote&gt;Very handy.&lt;br /&gt;&lt;br /&gt;Oh, and here's how I call keychain from my "~/.bashrc" script:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;blockquote&gt;[p@bsd] ~ $ cat .bashrc&lt;br /&gt;#!/usr/local/bin/bash&lt;br /&gt;&lt;br /&gt;. /etc/profile&lt;br /&gt;&lt;br /&gt;# start keychain&lt;br /&gt;keychain id_dsa&lt;br /&gt;. .keychain/bsd-sh&lt;br /&gt;&lt;br /&gt;alias ls='ls -aFG'&lt;br /&gt;alias pine='ssh -t username@remotehost.org pine'&lt;br /&gt;[p@bsd] ~ $&lt;/blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-113410480469653755?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/113410480469653755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=113410480469653755' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113410480469653755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113410480469653755'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2005/12/using-keychain-for-freebsd.html' title='Using &quot;keychain&quot; for FreeBSD'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-113337950571590469</id><published>2005-11-30T14:33:00.000-05:00</published><updated>2005-12-07T11:39:25.796-05:00</updated><title type='text'>Crash and Burn</title><content type='html'>Over the weekend the power supply in my main PC winked out. One minute everything was fine, the next all was silent and the smell of burned wires &amp; hair filled the room.&lt;br /&gt;&lt;br /&gt;After replacing the power supply, my OSs were unable to boot. I think that the power supply took out some tracks on those drives, so I'll have to wait until the X-Mas break for some time to fix them. Until then, I'm working on my P2/FreeBSD machine which is working just fine.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://snickers.org/%7Epopcorn/freebsd_snapshot.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://snickers.org/%7Epopcorn/freebsd_snapshot.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;On a side note, here's a picture of a former &lt;a href="http://www.mirekw.com"&gt;co-worker&lt;/a&gt; and I during a debug session.&lt;br /&gt;&lt;br /&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center;" alt="" src="http://photos1.blogger.com/blogger/3457/1754/400/mirek_and_pete.jpg" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-113337950571590469?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/113337950571590469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=113337950571590469' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113337950571590469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113337950571590469'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2005/11/crash-and-burn.html' title='Crash and Burn'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-113285225461194228</id><published>2005-11-24T12:08:00.000-05:00</published><updated>2005-11-24T12:10:54.623-05:00</updated><title type='text'>Winnifred can write her name</title><content type='html'>The other day Winnifred asked from the other room how to spell her name. This is what she wrote down (without assistance!)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3457/1754/1600/winnifred_name.jpg"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger/3457/1754/320/winnifred_name.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-size:85%;"&gt;(And she's not even three yet)&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-113285225461194228?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/113285225461194228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=113285225461194228' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113285225461194228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113285225461194228'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2005/11/winnifred-can-write-her-name.html' title='Winnifred can write her name'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-113238448956332437</id><published>2005-11-19T02:04:00.000-05:00</published><updated>2005-11-19T02:17:58.363-05:00</updated><title type='text'>BST Assignment almost finished</title><content type='html'>My partner &amp; I just about wrapped up the coding portion of our &lt;a href="http://www.trentu.ca/%7Ebhircock/202.html"&gt;DataStructures/Algorithms&lt;/a&gt; &lt;a href="http://www.trentu.ca/%7Ebhircock/202a3-05.pdf"&gt;assignment 3.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's a C++ application, heavy on the templates.  Basically it implements a &lt;a href="http://www.nist.gov/dads/HTML/binarySearchTree.html"&gt;Binary Search Tree&lt;/a&gt;, balances it and displays the differences.&lt;br /&gt;&lt;br /&gt;Here're a few screenshot of it in action:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/bst-1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/bst-1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/bst-2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/bst-2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/bst-3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/bst-3.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-113238448956332437?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/113238448956332437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=113238448956332437' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113238448956332437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113238448956332437'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2005/11/bst-assignment-almost-finished.html' title='BST Assignment almost finished'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-113202650919440623</id><published>2005-11-14T22:47:00.000-05:00</published><updated>2005-11-14T22:48:29.203-05:00</updated><title type='text'>Sun Tech Days: Toronto</title><content type='html'>I won't be able to make it, but &lt;a href="http://developers.sun.com/events/techdays/"&gt;this event&lt;/a&gt; looks good.&lt;br /&gt;&lt;br /&gt;It's too bad that they're charging $80 to attend.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-113202650919440623?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/113202650919440623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=113202650919440623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113202650919440623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113202650919440623'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2005/11/sun-tech-days-toronto.html' title='Sun Tech Days: Toronto'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-113195497124162577</id><published>2005-11-14T02:53:00.000-05:00</published><updated>2005-11-14T02:56:11.253-05:00</updated><title type='text'>Sun Download: Fatal Exception</title><content type='html'>Here's the screen that I received after trying to &lt;a href="http://developers.sun.com/members/promo/freetools/index.html"&gt;download the new Java Developer IDE&lt;/a&gt; from Sun.  Nice&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/fatal_exception.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/fatal_exception.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-113195497124162577?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/113195497124162577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=113195497124162577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113195497124162577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113195497124162577'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2005/11/sun-download-fatal-exception.html' title='Sun Download: Fatal Exception'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-113159616278961179</id><published>2005-11-09T23:15:00.000-05:00</published><updated>2005-11-09T23:16:02.796-05:00</updated><title type='text'>Style and elegance</title><content type='html'>&lt;a href="http://www.alistapart.com/"&gt;http://www.alistapart.com/&lt;/a&gt; is a nice site with lots of examples on CSS, design and philosophy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-113159616278961179?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/113159616278961179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=113159616278961179' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113159616278961179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113159616278961179'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2005/11/style-and-elegance.html' title='Style and elegance'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-113150871664341469</id><published>2005-11-08T22:56:00.000-05:00</published><updated>2005-11-08T22:58:36.653-05:00</updated><title type='text'>Solaris 10 got it right</title><content type='html'>Wow-- Finally someone has implemented &lt;a href="http://blogs.sun.com/roller/page/jbeck?entry=rm_rf_protection"&gt;this feature&lt;/a&gt; into their userland.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;[28] /bin/rm -rf /&lt;br /&gt;rm of / is not allowed&lt;br /&gt;[29]&lt;/pre&gt; Beautiful!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-113150871664341469?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/113150871664341469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=113150871664341469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113150871664341469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113150871664341469'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2005/11/solaris-10-got-it-right.html' title='Solaris 10 got it right'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-113125113297670498</id><published>2005-11-05T23:17:00.000-05:00</published><updated>2005-11-05T23:52:52.416-05:00</updated><title type='text'>Ring Ring! - New Phone</title><content type='html'>Ok, I'm on my third cell phone in six months.  It's better than it sounds.. I think.&lt;br /&gt;&lt;br /&gt;Last week I switched cell providers and received a phone upgrade and a new number.  Well, today I did it again.&lt;br /&gt;&lt;br /&gt;I'm now the new proud owner of a Motorola V551 ( VGA Camera, Video &amp;amp; Bluetooth ) as well as (get this) a Peterborough phone number. Ha! It's ammusing to me considering that I live in Toronto, but I spend most of my days in Peterborough attending classes at &lt;a href="http://www.trentu.ca/"&gt;Trent University&lt;/a&gt;.  And since my phone is primarily used for talking with my wife, it was just a lot cheaper to get a 705 area code number.&lt;br /&gt;&lt;br /&gt;Anyhow, it's a very slick little phone. Especially for someone like myself who treats their cellphone like a toaster. If it makes/receives phone calls, then I'm happy. Everything else is icing on the cake.&lt;br /&gt;&lt;br /&gt;Here's a &lt;a href="http://http//www.pcmag.com/article2/0,1759,1749312,00.asp"&gt;link to a review&lt;/a&gt; if you care.&lt;br /&gt;&lt;br /&gt;Also, I think that I'll buy a USB Bluetooth dongle so that I can get the pictures off of my phone and to play around with it a bit. After spending 2+ years co-developing a bluetooth stack for &lt;a href="http://snickers.org/%7Epopcorn/tiny_unix/"&gt;embedded&lt;/a&gt; &lt;a href="http://snickers.org/%7Epopcorn/gallery/office_pictures/DSCN4443"&gt;devices&lt;/a&gt;, you'd think that I'd be sick of the stuff... guess not.&lt;br /&gt;&lt;br /&gt;Oh, here's an &lt;a href="http://changelog.complete.org/node/352"&gt;awesome link&lt;/a&gt; to some Motorola/Linux stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-113125113297670498?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/113125113297670498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=113125113297670498' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113125113297670498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113125113297670498'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2005/11/ring-ring-new-phone.html' title='Ring Ring! - New Phone'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-113104583150489526</id><published>2005-11-03T14:16:00.000-05:00</published><updated>2005-11-03T14:29:55.916-05:00</updated><title type='text'>Design Patterns</title><content type='html'>Well, it looks like I am learning some things at school.&lt;br /&gt;&lt;br /&gt;In my Object Oriented Design class, we were discussing the usefulness of the &lt;a href="http://en.wikipedia.org/wiki/Singleton_pattern"&gt;singleton&lt;/a&gt; class. I've been doing just this before, but in a less than elegant manner.&lt;br /&gt;&lt;br /&gt;First, a singleton is an object that can only be instantiated &lt;em&gt;once&lt;/em&gt;. It handles this by making its construtor(s) private, and having a class method called "instance", which returns a pointer to an instantiated object. This pointer being a class attribute of the said class.&lt;br /&gt;&lt;br /&gt;Now, the elegance of this method is that it doesn't pollute the global namespace (in C++). I've always done something along these lines:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;&lt;br /&gt;static Whatever * instance = NULL;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;pre&gt;&lt;/pre&gt;&lt;br /&gt;Whatever * Instance(void)&lt;br /&gt;{&lt;br /&gt;if( instance == NULL )&lt;br /&gt;instance = new Whatever();&lt;br /&gt;return instance;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, in my implementation, there's a big ugly function "::Instance()" in the global namespace, which is fine for small applications, but lousy for larger ones, or libraries.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The singleton fixes this by having its initializer scoped by the class name.&lt;br /&gt;&lt;br /&gt;Nice.&lt;br /&gt;&lt;br /&gt;=====&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;em&gt;Some handy links:&lt;/em&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Category:Software_design_patterns"&gt;Software Design Patterns&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Category:Anti-patterns"&gt;Software Design (Anti) Patterns&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-113104583150489526?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/113104583150489526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=113104583150489526' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113104583150489526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113104583150489526'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2005/11/design-patterns.html' title='Design Patterns'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-113103946158891556</id><published>2005-11-03T12:33:00.000-05:00</published><updated>2005-11-07T14:42:45.013-05:00</updated><title type='text'>Surgury number 3</title><content type='html'>Findley's surgery went well. It was only a day surgury, so we were out of the hospital by 3pm(ish) which was really nice. The surgeon is letting us take care of her aftercare instead of ordering a daily visit from the nurse. We have a surgical clinic visit in about three weeks to review the recovery and healing of the surgury.&lt;br /&gt;&lt;br /&gt;A nice thing happened while being discharged. When Findley was recovering from her 2nd surgury, her doctor/surgeon went on a two week leave and another staff surgeon took over Findley's case.&lt;br /&gt;&lt;br /&gt;While we were being discharged by our surgeon, the replacement surgeon walked in to take care of something, and our surgeon mentioned to him who Findley was ("This is Findley Blair"). The 2nd surgeon couldn't believe Findley's progress and was just a little taken by her.&lt;br /&gt;&lt;br /&gt;It's really nice to see (from the Doctors) that your kid isn't just a body part that needs to be fixed, but is a person and someone's child. That was really nice to see from both of them.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger/3457/1754/320/fred_fin_on_couch.jpg" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-113103946158891556?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/113103946158891556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=113103946158891556' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113103946158891556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113103946158891556'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2005/11/surgury-number-3.html' title='Surgury number 3'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-113103917597659623</id><published>2005-11-03T12:31:00.000-05:00</published><updated>2005-11-03T12:32:55.990-05:00</updated><title type='text'>Halloween</title><content type='html'>Halloween came and went, and I missed the entire thing.&lt;br /&gt;&lt;br /&gt;Had to be in Peterborough that night, and missed the fun of trick or treating with the girls.  Winnifred was a lion &amp; Findley was a mouse.  I'll post some pictures as soon as I download them from the camera.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-113103917597659623?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/113103917597659623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=113103917597659623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113103917597659623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113103917597659623'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2005/11/halloween.html' title='Halloween'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-113073621724028898</id><published>2005-10-31T00:16:00.000-05:00</published><updated>2005-10-31T00:23:37.250-05:00</updated><title type='text'>Queueing Theory</title><content type='html'>Finishing off an assignment for my &lt;a href="http://www.trentu.ca/%7Ebhircock/COSC202.html"&gt;Data Structures and Algorithms course&lt;/a&gt; and felt like posting a small snippit of my work.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/queue_sim_screen.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/queue_sim_screen.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.trentu.ca/%7Ebhircock/202a2-05.pdf"&gt;assignment&lt;/a&gt; is fairly straight forward, and once you've wrapped your head around the problem, everything pretty much falls into place.&lt;br /&gt;&lt;br /&gt;Basically, the assignment is an exercise in &lt;a href="http://en.wikipedia.org/wiki/Queueing_theory"&gt;Queueing Theory&lt;/a&gt;.  In particular, it's a simulation of the length of the wait queue of a bank, given a certain number of tellers, the time it takes for a teller to service a customer, and the &lt;a href="http://en.wikipedia.org/wiki/Exponential_distribution"&gt;interarrival time&lt;/a&gt; of customers at the bank.&lt;br /&gt;&lt;br /&gt;It's not due for another week, so I can't post any more code until it has been handed in.  But I would like to explore this topic more in the future as it can be applied to a whole variety of simulations ( eg network traffic, etc. ).&lt;br /&gt;&lt;br /&gt;Well, back to coding!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-113073621724028898?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/113073621724028898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=113073621724028898' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113073621724028898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113073621724028898'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2005/10/queueing-theory.html' title='Queueing Theory'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-113065992590202137</id><published>2005-10-30T04:04:00.000-05:00</published><updated>2005-10-30T04:12:05.913-05:00</updated><title type='text'>Programming Challenge</title><content type='html'>Looks like &lt;a href="http://www.sun.com/"&gt;Sun&lt;/a&gt; has &lt;a href="http://blogs.sun.com/roller/page/dp/20051020"&gt;yet another programming challenge&lt;/a&gt;.  I think that these are great, but I can't help but laugh a little because Sun is getting a bunch of students to write software for projects that ( I assume ) don't have enough interested engineers at Sun.&lt;br /&gt;&lt;br /&gt;The prize ( a &lt;a href="http://www.sun.com/desktop/workstation/ultra20/"&gt;Ultra 20 Workstation&lt;/a&gt; ) is an apealing prize, but you mustn't have much on your plate if you're willing to pour enough time into a project that &lt;span style="font-style: italic;"&gt;may &lt;/span&gt;be profitable.&lt;br /&gt;&lt;br /&gt;Well, good luck to those who try this one!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-113065992590202137?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/113065992590202137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=113065992590202137' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113065992590202137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113065992590202137'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2005/10/programming-challenge.html' title='Programming Challenge'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-113038443230283752</id><published>2005-10-26T23:31:00.000-04:00</published><updated>2005-10-26T23:40:32.313-04:00</updated><title type='text'>Some time at the cabin</title><content type='html'>Katharine, Winnifred, Findley &amp; I spent a few nights away at the cabin. I have a week away from classes and it was just the excuse that we needed to get away from everything and enjoy some time to ourselves.&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;Attached are some random pictures taken during the trip. One picture of a large "puddle" in the road is actually the result of a beaver dam overflowing a swamp over the road. We weren't able to get any good pictures of the beaver, but he didn't seem to care that our car was idling feet away from him while he worked.&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_2820.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/100_2820.jpg" alt="" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_2922.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/100_2922.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_2840.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/100_2840.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_2918.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/100_2918.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_2846.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/100_2846.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-113038443230283752?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/113038443230283752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=113038443230283752' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113038443230283752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/113038443230283752'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2005/10/some-time-at-cabin.html' title='Some time at the cabin'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-112986886322331066</id><published>2005-10-21T00:20:00.000-04:00</published><updated>2005-10-21T00:27:43.226-04:00</updated><title type='text'>Algebra</title><content type='html'>Working on a Linear Algebra assignment and needed a bit of a break..&lt;br /&gt;&lt;br /&gt;I'm solving systems of linear equations, and thought that &lt;a href="http://fclass.vaniercollege.qc.ca/web/mathematics/comp/mapla_2.htm"&gt;Maple&lt;/a&gt; might be helpful, but unfortunately it doesn't show its steps, so it's not the answer to my prayers that I was hoping for.&lt;br /&gt;&lt;br /&gt;Well, I guess that after tonight I'll be able to say that I can &lt;a href="http://math.fullerton.edu/mathews/n2003/homogensystem/HomogenLinSystemMod/Links/HomogenLinSystemMod_lnk_6.html"&gt;balance chemical equations&lt;/a&gt; using &lt;a href="http://mathworld.wolfram.com/Gauss-JordanElimination.html"&gt;Gauss-Jordan elimination&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Well, I should get back to the pencil &amp; paper method.  Perhaps some tea first...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-112986886322331066?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/112986886322331066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=112986886322331066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/112986886322331066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/112986886322331066'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2005/10/algebra.html' title='Algebra'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18029902.post-112970917265785324</id><published>2005-10-19T04:01:00.000-04:00</published><updated>2005-10-21T00:33:45.743-04:00</updated><title type='text'>A first</title><content type='html'>Just setup my first blog, so here's my first entry.&lt;br /&gt;&lt;br /&gt;Nothing to say yet, so a couple of images will have to suffice.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_2640.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/100_2640.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3457/1754/1600/100_2671.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3457/1754/320/100_2671.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18029902-112970917265785324?l=petermblair.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://petermblair.blogspot.com/feeds/112970917265785324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18029902&amp;postID=112970917265785324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/112970917265785324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18029902/posts/default/112970917265785324'/><link rel='alternate' type='text/html' href='http://petermblair.blogspot.com/2005/10/first.html' title='A first'/><author><name>Pete</name><uri>http://www.blogger.com/profile/12775555464891225263</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://snickers.org/~popcorn/winnifred_dad_on_hippo_t.jpg'/></author><thr:total>0</thr:total></entry></feed>
