<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dabbler</title>
	<atom:link href="http://sethjust.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://sethjust.com</link>
	<description>If it ain&#039;t broke, fix it!</description>
	<lastBuildDate>Thu, 31 Dec 2009 21:40:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Clever Stencil</title>
		<link>http://sethjust.com/2009/12/19/clever-stencil/</link>
		<comments>http://sethjust.com/2009/12/19/clever-stencil/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 02:02:23 +0000</pubDate>
		<dc:creator>sethjust</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[graffiti]]></category>
		<category><![CDATA[reed]]></category>
		<category><![CDATA[stencil]]></category>
		<category><![CDATA[vodka]]></category>

		<guid isPermaLink="false">http://sethjust.com/?p=132</guid>
		<description><![CDATA[I ran into this stencil on the side of a fire extinguisher box at Reed College and thought it was delightful.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://sethjust.com/wp-content/uploads/2009/12/1128092037-00-e1261274318100.jpg"><img class="aligncenter size-medium wp-image-131" title="Vodka Extinguisher Graffiti" src="http://sethjust.com/wp-content/uploads/2009/12/1128092037-00-e1261274318100-225x300.jpg" alt="" width="225" height="300" /></a>I ran into this stencil on the side of a fire extinguisher box at Reed College and thought it was delightful.</p>
]]></content:encoded>
			<wfw:commentRss>http://sethjust.com/2009/12/19/clever-stencil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More Mandelbrot</title>
		<link>http://sethjust.com/2009/12/19/more-mandelbrot/</link>
		<comments>http://sethjust.com/2009/12/19/more-mandelbrot/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 00:27:19 +0000</pubDate>
		<dc:creator>sethjust</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://sethjust.com/?p=122</guid>
		<description><![CDATA[I just recently revisited the M-Set code from my Perl Snippets post. The code I had was pretty ugly, so I decided to rewrite it in Python. The result is not only a lot cleaner and easier to understand, but it&#8217;s also a lot faster:
$ time python mandel.py &#62; \dev\null
real	0m0.051s
user	0m0.036s
sys	0m0.010s
$ time perl mandel.pl &#62; \dev\null
real	0m3.518s
user	0m3.463s
sys	0m0.029s

You [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="Text Mandelbrot" src="http://homepage.sethjust.com/files/mandel_py.png" alt="" width="351" height="268" />I just recently revisited the M-Set code from my <a href="http://sethjust.com/2009/03/24/perl-snippets/">Perl Snippets</a> post. The code I had was pretty ugly, so I decided to rewrite it in Python. The result is not only a lot cleaner and easier to understand, but it&#8217;s also a lot faster:</p>
<pre>$ time python mandel.py &gt; \dev\null
real	0m0.051s
user	0m0.036s
sys	0m0.010s
$ time perl mandel.pl &gt; \dev\null
real	0m3.518s
user	0m3.463s
sys	0m0.029s
</pre>
<p>You can find the code <a href="http://homepage.sethjust.com/mandel.py">here</a>.</p>
<p>This script works well for zooms, as long as you stay below a few thousand iterations. The following picture was generated with x=-1.1887204, y=-0.3032472, width=0.01 and 150 iterations.</p>
<p style="text-align: center;"><img class="aligncenter" title="ASCII Mandelbrot Zoom" src="http://homepage.sethjust.com/files/mandel_py_zoom.png" alt="" width="351" height="268" /></p>
]]></content:encoded>
			<wfw:commentRss>http://sethjust.com/2009/12/19/more-mandelbrot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A useful calendar in Conky</title>
		<link>http://sethjust.com/2009/08/03/a-useful-calendar-in-conky/</link>
		<comments>http://sethjust.com/2009/08/03/a-useful-calendar-in-conky/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 02:34:09 +0000</pubDate>
		<dc:creator>sethjust</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[cal]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[conky]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://sethjust.com/?p=114</guid>
		<description><![CDATA[Since I got a new desktop a month or so ago, I&#8217;ve been running Ubuntu as my main operating system, and am using Conky for a nice heads-up-display. There are a lot of articles on the web about both Ubuntu and Conky, but one thing I couldn&#8217;t find a good, accurate how-to on was getting [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Since I got a new desktop a month or so ago, I&#8217;ve been running <a href="http://www.ubuntu.com">Ubuntu</a> as my main operating system, and am using <a href="http://conky.sourceforge.net/">Conky</a> for a nice heads-up-display. There are a lot of articles on the web about both Ubuntu and Conky, but one thing I couldn&#8217;t find a good, accurate how-to on was getting a calendar that highlighted the current date. While getting the calendar is easy using the cal command, actually getting the date highlighted is somewhat hard, and all of the articles I found suggested methods that broke in various situations. However, I managed to get it all worked out, and have a beautiful calendar that looks like this:<img class="aligncenter" title="Conky Calendar" src="http://homepage.sethjust.com/files/conky_cal.png" alt="" width="129" height="120" /></p>
<p style="text-align: left;">After the jump, I&#8217;ll give you the code and explain how it all works.<span id="more-114"></span></p>
<h2 style="text-align: left;">How it Works:</h2>
<p style="text-align: left;">The code from ~/.conkyrc that makes this calendar is simple:</p>
<pre style="text-align: left;">${color orange}CALENDAR ${hr 2}$color
${execpi 60 DJS=`date +%_d`; cal | sed s/"$DJS"'\b'/'${color orange}'"$DJS"'$color'/}</pre>
<p>This is a somewhat complicated expression, but what it does is fairly simple. The first line simply draws the title for the section, and it&#8217;s the second line that does the magic. Let me break it down and explain it.</p>
<pre style="text-align: left;">${execpi 60</pre>
<p>This command tells Conky to execute the next argument every 60 seconds, and, importantly, parse the output of that argument. This way, when we put in commands that change the text color, Conky will obey them instead of printing them.</p>
<pre style="text-align: left;">DJS=`date +%_d`;</pre>
<p>DJS (which stands for &#8220;date&#8221; followed by my initials) is a temporary variable that holds the current day of the month, padded with a leading space, if necessary (so that we&#8217;ll catch the first of the month, not every 1 in the calendar, for example).</p>
<pre style="text-align: left;">cal |</pre>
<p>cal simply prints out a simple calendar, and the pipe feeds that output through to the next commmand:</p>
<pre style="text-align: left;">sed s/"$DJS"'\b'/'${color orange}'"$DJS"'$color'/</pre>
<p>This is one big mess of a command, but the main body is a <a href="http://en.wikipedia.org/wiki/Regex">regex</a> that sed takes as an argument. The regex searches for the string &#8220;$DJS&#8221;&#8216;\b&#8217;, which means the contents of the variable DJS (which we set earlier) followed by a word boundary &#8211; a change from printable characters to white space. This means that it will find the current date (one or two digits) but won&#8217;t find the 3 of the 30th on the third of the month. It also means that it will work correctly if the current date is on the far left or right column of the calendar.</p>
<p>The second half of the regex simply wraps what it found the first time around in a couple of Conky commands that change to color to orange, and then back to what it was before.</p>
<p>Lastly, the closing bracket (}) at the end of the line closes out the opening one that is required for all Conky commands with arguments.</p>
<p>Now go forth and cover your desktop in beautiful calendars.</p>
]]></content:encoded>
			<wfw:commentRss>http://sethjust.com/2009/08/03/a-useful-calendar-in-conky/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iWork Autosave</title>
		<link>http://sethjust.com/2009/03/29/iwork-autosave/</link>
		<comments>http://sethjust.com/2009/03/29/iwork-autosave/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 02:10:31 +0000</pubDate>
		<dc:creator>sethjust</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[autosave]]></category>
		<category><![CDATA[help]]></category>
		<category><![CDATA[iwork]]></category>
		<category><![CDATA[pages]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[school]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://sethjust.wordpress.com/?p=74</guid>
		<description><![CDATA[So I had the wonderful experience this weekend of losing over 1,200 words of work on a paper because I forgot to save it regularly. I was really, really sad about that and really bummed that Pages, my word processor of choice (I love the formatting tools), doesn&#8217;t support either autosaving or document recovery. However, [...]]]></description>
			<content:encoded><![CDATA[<p>So I had the wonderful experience this weekend of losing over 1,200 words of work on a paper because I forgot to save it regularly. I was really, really sad about that and really bummed that <a href="http://www.apple.com/iwork/pages/">Pages</a>, my word processor of choice (I love the formatting tools), doesn&#8217;t support either autosaving or document recovery. However, my preference for Pages is strong enough that I didn&#8217;t jump ship to an auto-saving editor. Instead I went out and found <a href="http://tristanchadwick.com/worksaver/">WorkSaver</a>. <img class="alignright size-full wp-image-78" style="float:right;" title="WorkSaver" src="http://sethjust.files.wordpress.com/2009/03/picture-3.png" alt="WorkSaver" width="265" height="212" /><br />
Worksaver simply sits in your menubar and, at a definable interval will save every iWork document you have open, provided that it&#8217;s already been saved once. This means that when I&#8217;m writing I don&#8217;t have to even worry about saving my document after creating it and choosing where to save it. Of course, it&#8217;s a shame that you have to manually save the file when you create it, but it&#8217;s a lot better than losing all your work. I can highly recommend <a href="http://tristanchadwick.com/worksaver/">WorkSaver</a> if you use iWork simply for the peace of mind it provides. Of course, it&#8217;s not perfect for everybody, but when I&#8217;d rather focus on writing a paper than on making sure my computer doesn&#8217;t decide to make it all go away, <a href="http://tristanchadwick.com/worksaver/">WorkSaver</a> is just what I need.</p>
]]></content:encoded>
			<wfw:commentRss>http://sethjust.com/2009/03/29/iwork-autosave/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perl Snippets</title>
		<link>http://sethjust.com/2009/03/24/perl-snippets/</link>
		<comments>http://sethjust.com/2009/03/24/perl-snippets/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 02:39:05 +0000</pubDate>
		<dc:creator>sethjust</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[japh]]></category>
		<category><![CDATA[m-set]]></category>
		<category><![CDATA[mandlebrot]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[obfuscation]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://sethjust.wordpress.com/?p=65</guid>
		<description><![CDATA[I&#8217;ve been getting into a mood lately that makes me fiddle around with fun Perl stuff, but sadly school&#8217;s picking up to the point that writing anything up isn&#8217;t going to happen. However, I have a couple short scripts that I&#8217;m just dying to share.
Just Another Perl Hacker
I figured that it was about time in [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been getting into a mood lately that makes me fiddle around with fun Perl stuff, but sadly school&#8217;s picking up to the point that writing anything up isn&#8217;t going to happen. However, I have a couple short scripts that I&#8217;m just dying to share.</p>
<h2>Just Another Perl Hacker</h2>
<p>I figured that it was about time in my hacking career (read: I was bored enough) that I should make a <a href="http://en.wikipedia.org/wiki/Just_another_Perl_hacker">japh script</a>. After a couple attempts I came up with this:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p65code2'); return false;">View Code</a> PERL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p652"><td class="code" id="p65code2"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/perl</span>
<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #009999;">&lt;DATA&gt;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
 	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">map</span><span style="color: #009900;">&#123;</span><span style="color: #000066;">ord</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$_</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">33</span><span style="color: #009900;">&#125;</span><span style="color: #000066;">split</span> <span style="color: #ff0000;">''</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #0000ff;">$__</span><span style="color: #339933;">++;</span>
		<span style="color: #0000ff;">$_</span><span style="color: #339933;">||</span><span style="color: #009900;">&#40;</span><span style="color: #000066;">print</span><span style="color: #009900;">&#40;</span><span style="color: #000066;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$__</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">19</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;&amp;</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$__</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">__END__</span>
                   <span style="color: #339933;">/|</span>                        <span style="color: #339933;">|</span>\
      <span style="color: #339933;">!</span>            <span style="color: #339933;">;</span> <span style="color: #339933;">:</span>                        <span style="color: #339933;">:</span> <span style="color: #339933;">:</span>
                  <span style="color: #339933;">|</span> Y<span style="color: #339933;">,</span>                      <span style="color: #339933;">,</span>P <span style="color: #339933;">|</span>
     <span style="color: #339933;">!</span>             <span style="color: #339933;">|</span>  Yb<span style="color: #339933;">.</span>        __        <span style="color: #339933;">,</span>dP  <span style="color: #339933;">|</span>
                  l\  YMMb<span style="color: #339933;">,</span>_ _<span style="color: #339933;">,/</span>  \<span style="color: #339933;">,</span>_ _<span style="color: #339933;">,</span>dMMP  <span style="color: #339933;">/</span>f
  <span style="color: #339933;">!</span>                 j<span style="color: #339933;">;</span>  <span style="color: #ff0000;">`YMMP'  `</span><span style="color: #339933;">--</span><span style="color: #ff0000;">'  `YMMP'</span>  <span style="color: #339933;">;</span>j
                   <span style="color: #339933;">:</span> \   YP<span style="color: #ff0000;">`-._    _.-'YP   / ;
  !            !      <span style="color: #000099; font-weight: bold;">\ </span>`</span>\<span style="color: #339933;">,</span>  _<span style="color: #339933;">,</span><span style="color: #0000ff;">\_</span>    _<span style="color: #339933;">/,</span>_  <span style="color: #339933;">,/</span><span style="color: #ff0000;">' /
                     `,_,   \`o&gt;  &lt;o'</span><span style="color: #339933;">/</span>   <span style="color: #339933;">,</span>_<span style="color: #339933;">,!</span><span style="color: #ff0000;">'
                         `\            /'</span>
                           <span style="color: #339933;">|</span>  _    _  <span style="color: #339933;">|</span>
      <span style="color: #339933;">!</span>                     <span style="color: #339933;">/</span> 88b  d88 \
                           \ <span style="color: #ff0000;">`8P  Y8' /`</span><span style="color: #ff0000;">`-.
             !               `</span>\<span style="color: #339933;">,</span>    <span style="color: #339933;">,/</span>      \
                             _<span style="color: #ff0000;">`----'        <span style="color: #000099; font-weight: bold;">\</span>
                  !        _.'/ '          `</span><span style="color: #339933;">,</span> \
                        <span style="color: #339933;">.</span><span style="color: #ff0000;">'_,'</span>_<span style="color: #339933;">...</span>_          \ <span style="color: #339933;">;</span>
       <span style="color: #339933;">!</span>               <span style="color: #339933;">.</span><span style="color: #ff0000;">',/.dMMMMMMb. |      /  \
                    .'</span><span style="color: #339933;">./.</span>MMMMMMMMMMM <span style="color: #339933;">;</span> <span style="color: #339933;">!</span>    <span style="color: #339933;">/</span>    <span style="color: #339933;">;</span>
                   <span style="color: #009966; font-style: italic;">/ /</span><span style="color: #339933;">.</span>MMMMMMMMMMMMM<span style="color: #339933;">/</span>     <span style="color: #339933;">/</span>     <span style="color: #339933;">;</span>
                  <span style="color: #339933;">|</span> <span style="color: #339933;">;</span>dMMMMMMMMMMM<span style="color: #339933;">!</span>P<span style="color: #339933;">/</span><span style="color: #ff0000;">'   ,/'</span>   <span style="color: #339933;">!</span>    <span style="color: #339933;">;</span>
                  <span style="color: #339933;">|/</span>dMMMMMMMMMP<span style="color: #ff0000;">'     .'</span>          <span style="color: #339933;">|</span>
   <span style="color: #339933;">!</span>               <span style="color: #339933;">;</span>dMMMMMMMMM<span style="color: #339933;">|</span>     _<span style="color: #339933;">/</span>            <span style="color: #339933;">|</span>
                 <span style="color: #339933;">;</span>dMMMMMMMMMMb_<span style="color: #339933;">|</span>_<span style="color: #339933;">!|</span> <span style="color: #339933;">/;</span>            <span style="color: #339933;">;</span>\<span style="color: #339933;">,</span>
                 dMMMMMMMMMMMM<span style="color: #ff0000;">`M`</span>M<span style="color: #ff0000;">`;.---..      '   `</span>\<span style="color: #339933;">,</span>
                <span style="color: #339933;">:</span>M<span style="color: #339933;">!</span>MMMMMMMMMMMMMMMP<span style="color: #339933;">/</span><span style="color: #ff0000;">'     `\            \
               /|MMMMMMMMMMMMMMP/          \    _!_      `.
  !            / |MMMMMMMMMMMMMM|            |.-'</span>  <span style="color: #ff0000;">`-._    <span style="color: #000099; font-weight: bold;">\ </span>        .'<span style="color: #000099; font-weight: bold;">\</span>
             ;!  ;MMMMMMMMMMMMMM|            :         `</span><span style="color: #339933;">-.</span>_ <span style="color: #ff0000;">`-.     /  _<span style="color: #000099; font-weight: bold;">\</span>
             |   ;!MMMMMMMMMMMMM;            |             `</span><span style="color: #339933;">-.</span> <span style="color: #ff0000;">`-.._.'/
              <span style="color: #000099; font-weight: bold;">\ </span>  `</span><span style="color: #0000ff;">\YMMMMM</span><span style="color: #339933;">!</span>MMMP<span style="color: #339933;">/</span><span style="color: #ff0000;">'\           |                `~~----'</span>
               <span style="color: #ff0000;">`-._, `</span><span style="color: #ff0000;">`YMMMP'_.-'<span style="color: #000099; font-weight: bold;">\ </span>        ! ;_
                 |      /         `</span><span style="color: #339933;">-.,</span>_<span style="color: #339933;">./</span>     <span style="color: #cc66cc;">7</span>
                _<span style="color: #339933;">/</span>    <span style="color: #ff0000;">`<span style="color: #000099; font-weight: bold;">\,</span>    !        /      _/
             ,-' ,  ,   /         _.'      /
            (_(_(__(__.'       !,-'        /
                              (__(__(_(_/'</span></pre></td></tr></table></div>

<p><a href="http://people.reed.edu/~justs/japh.pl">Download</a>.</p>
<p>I&#8217;ll let you go ahead and figure it out on your own. It&#8217;s not super-hard, but it&#8217;s fun.</p>
<h2>Mandelbrot</h2>
<p>In another fit of boredom I decided that it was finally time to create a mandelbrot set renderer. I originally tried to make one of these in basic, long before I had the math to do so. I was proud that I got the real axis to render, and figured it was time to complexify it. To keep things simple I decided to make it render an ASCII-art version of the set that would fit in a terminal window. The output looks like this:</p>
<pre>                        ...............................:::::oo@@@@o::::..........
                      ...............................::::::O@@@@@@@@o:::::.......
                     .............................::::::::oO@@@@@@@@o::::::::....
                   ...........................::::OOO8ooO@O88@@@@@@8@O8o::::Oo:..
                  .......................:::::::::o8@@@@@@@@@@@@@@@@@@@@OO@@@@::.
                 ...................:::::::::::::oOO@@@@@@@@@@@@@@@@@@@@@@@@@o:::
                ................:::::::::::::::o@@@@@@@@@@@@@@@@@@@@@@@@@@@@Oo:::
               ..............::::@oo::oOoo:::ooo@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8o:
               ...........:::::::oO@@@O@@8@OooO8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O::
              ..........:::::::::oO@@@@@@@@@@88@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@::
              ........:::::::8ooO8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@o::
              .:::::::::::::oO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@o:::
              @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Oo::::
              .:::::::::::::oO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@o:::
              ........:::::::8ooO8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@o::
              ..........:::::::::oO@@@@@@@@@@88@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@::
               ...........:::::::oO@@@O@@8@OooO8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O::
               ..............::::@oo::oOoo:::ooo@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8o:
                ................:::::::::::::::o@@@@@@@@@@@@@@@@@@@@@@@@@@@@Oo:::
                 ...................:::::::::::::oOO@@@@@@@@@@@@@@@@@@@@@@@@@o:::
                  .......................:::::::::o8@@@@@@@@@@@@@@@@@@@@OO@@@@::.
                   ...........................::::OOO8ooO@O88@@@@@@8@O8o::::Oo:..
                     .............................::::::::oO@@@@@@@@o::::::::....
                      ...............................::::::O@@@@@@@@o:::::.......
                        ...............................:::::oo@@@@o::::..........</pre>
<p>The code&#8217;s far from polished and not what I like to publish, but it&#8217;s a fun thing to look at and offers you some neat abilities to poke things around and fix some pesky problems that just need clear thinking applied to them. It&#8217;s available <a href="http://people.reed.edu/~justs/mandel.pl">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sethjust.com/2009/03/24/perl-snippets/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Make a Money/Card Clip</title>
		<link>http://sethjust.com/2009/03/11/make-a-moneycard-clip/</link>
		<comments>http://sethjust.com/2009/03/11/make-a-moneycard-clip/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 03:44:45 +0000</pubDate>
		<dc:creator>sethjust</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[card clip]]></category>
		<category><![CDATA[diy]]></category>
		<category><![CDATA[fork]]></category>
		<category><![CDATA[make]]></category>
		<category><![CDATA[money clip]]></category>
		<category><![CDATA[wallet]]></category>

		<guid isPermaLink="false">http://sethjust.wordpress.com/?p=57</guid>
		<description><![CDATA[So the other day I finally got tired with my (awesome) wallet and decided to make something new. I ended up choosing a money clip. Not only would it be a nice, high quality, metal object living in my pocket, instead of a crummy, dirty wallet, but a money clip is good looking, classy and [...]]]></description>
			<content:encoded><![CDATA[<p>So the other day I finally got tired with my (awesome) <a href="http://www.instructables.com/id/Paper-Wallet/">wallet</a> and decided to make something new. I ended up choosing a <a href="http://en.wikipedia.org/wiki/Money_clip">money clip</a>. Not only would it be a nice, high quality, metal object living in my pocket, instead of a crummy, dirty wallet, but a money clip is good looking, classy and minimalistic way of keeping a hold of my money and cards. Looking around my room I didn&#8217;t really get any inspiration, until I saw an old metal fork lying in a box. I cut the head off with my dremel and a fiberglass cutting wheel. A little bit of sanding and bending resulted in a, super-useful money clip. I&#8217;ve been using it for the past few days and it&#8217;s been serving me really well, looking good, and altogether holding up like a quality product.</p>

<a href='http://sethjust.com/2009/03/11/make-a-moneycard-clip/photo-28/' title='Money Clip Profile 2'><img width="150" height="150" src="http://sethjust.com/wp-content/uploads/2009/03/photo-28-150x150.jpg" class="attachment-thumbnail" alt="Money Clip Profile 2" title="Money Clip Profile 2" /></a>
<a href='http://sethjust.com/2009/03/11/make-a-moneycard-clip/photo-27/' title='Money Clip Profile 1'><img width="150" height="150" src="http://sethjust.com/wp-content/uploads/2009/03/photo-27-150x150.jpg" class="attachment-thumbnail" alt="Money Clip Profile 1" title="Money Clip Profile 1" /></a>
<a href='http://sethjust.com/2009/03/11/make-a-moneycard-clip/photo-26/' title='Money Clip Front'><img width="150" height="150" src="http://sethjust.com/wp-content/uploads/2009/03/photo-26-150x150.jpg" class="attachment-thumbnail" alt="Money Clip Front" title="Money Clip Front" /></a>
<a href='http://sethjust.com/2009/03/11/make-a-moneycard-clip/photo-25/' title='Money Clip Back'><img width="150" height="150" src="http://sethjust.com/wp-content/uploads/2009/03/photo-25-150x150.jpg" class="attachment-thumbnail" alt="Money Clip Back" title="Money Clip Back" /></a>

<p>If there&#8217;s interest, I&#8217;ll put up more information / pictures and maybe put some of these bad boys up for sale.</p>
]]></content:encoded>
			<wfw:commentRss>http://sethjust.com/2009/03/11/make-a-moneycard-clip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GPSd under OS X</title>
		<link>http://sethjust.com/2009/01/13/gpsd-under-os-x/</link>
		<comments>http://sethjust.com/2009/01/13/gpsd-under-os-x/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 08:52:06 +0000</pubDate>
		<dc:creator>sethjust</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[program]]></category>

		<guid isPermaLink="false">http://sethjust.wordpress.com/?p=47</guid>
		<description><![CDATA[So I recently picked up a cheap GPS module on Amazon. It was about $30 with shipping, and I got a neat little dongle which connects over USB to my computer and communicates with software. It didn&#8217;t come with support for OS X (although interestingly enough it shipped with Mac OS 8 and 9 drivers), [...]]]></description>
			<content:encoded><![CDATA[<p>So I recently picked up a cheap GPS module on Amazon. It was about $30 with shipping, and I got a neat little dongle which connects over USB to my computer and communicates with software. It didn&#8217;t come with support for OS X (although interestingly enough it shipped with Mac OS 8 and 9 drivers), but it promised to send generic NMEA-0183, so I wasn&#8217;t too worried.</p>
<p>When it showed up, some quick software probing revealed that it houses a usb to serial adaptor (a Prolific PL-2303, which I&#8217;ll get to in a bit) and a gps module that&#8217;s configured to send NMEA strings through the virtual serial port. This sort of information is compatible with a host of software, but most of it is commericial, and only available at a considerable price.</p>
<p>Luckily, there&#8217;s a wonderful open source project called gpsd which provides support for a wide raft of devices and protocols, and talks to an even wider assortment of software. Primarily, I wanted to be able to get my gps to talk to the network scanner Kismac, and Randall Munroe&#8217;s cyborg.py script. Both of these were built to take information from gpsd, so I was in business. However, gpsd, which is designed to play nicely with Linux, takes some coaxing under OS X. This is meant to describe how I got it all running.<span id="more-47"></span></p>
<h3>I. Hardware driver</h3>
<p>Because the gps relies on a usb-to-serial chip to talk to the computer, it needs a driver that will emulate a serial port. The chip in my gps revealed itself as a Prolific PL-2303, a common chip that I&#8217;d had previous dealings with, and so had a driver for. This enabled me to see a serial device on my system and read raw data from it:</p>
<pre>sethjust$ ls /dev/cu.*
/dev/cu.Bluetooth-Modem		/dev/cu.Bluetooth-PDA-Sync	/dev/cu.PL2303-0000101D
sethjust$ stty -f /dev/cu.usbserial ispeed 4800 &amp;&amp; cat &lt;/dev/cu.usbserial
,,,3.6,2.2,2.8*3E
$GPRMC,060645.994,A,4537.5498,N,12259.8000,W,000.0,327.4,120109,,,A*70
$GPVTG,327.4,T,,M,000.0,N,000.0,K,A*0F
$GPGGA,060646.994,4537.5498,N,12259.8000,W,1,06,2.2,137.3,M,-21.5,M,,0000*63
$GPGSA,A,3,23,25,13,04,32,20,,,,,,,3.^C</pre>
<p>This driver also played nicely with some of the commericial software demos I&#8217;d downloaded, but oddly enough it didn&#8217;t work with gpsd. Eventually, after some debugging and consulting with one of gpsd&#8217;s developers via IRC, I replaced the driver I had (an open source replacement for proprietary driver) with the driver from Prolific&#8217;s website. Supposedly the open-source PL-2303 driver doesn&#8217;t play nicely with gpsd, and so they recommend using Prolific&#8217;s.</p>
<h3>II. gpsd and gpsdrive</h3>
<p>The gpsd package comes with several useful support utilities, but one that it doesn&#8217;t include is gpsdrive, a wonderful program that supports mapping and live data from gps. Getting both running under OS X is a little difficult, but I found a great document <a href="http://lists.gpsdrivers.org/pipermail/gpsdrive/2007-June/000136.html">here</a> that explains the process. A little has changed, so here&#8217;s how I got it working (though I never did get xgps or xgpsspeed to compile&#8230;):<br />
1) Install fink if you haven&#8217;t already.<br />
2) Install gpsdrive through fink:</p>
<pre>$ fink install gpsdrive</pre>
<p>3) Rename /sw/bin/gpsd to gpsd-1.06b:</p>
<pre>$ sudo mv /sw/bin/gpsd /sw/bin/gpsd-1.06b</pre>
<p>4) Download the latest source for gpsd. I used the latest RC for their upcoming 2.38 release and have had no problems.<br />
5) In the gpsd source directory, run ./configure with whatever options you&#8217;d like. The earlier document had some suggestions on getting it to see X11 libraries, but I haven&#8217;t been able to make them work. I ended up using</p>
<pre>$ ./configure --bindir=/usr/local/bin -without-x</pre>
<p>6) Compile the software by typing &#8220;make&#8221;. You can then either install it with &#8220;sudo make install&#8221; or test it before installing:</p>
<pre>$ ./gpsd -n /dev/cu.usbserial
$ ./cgps</pre>
<p>In my case /dev/cu.usbserial is the device representing the PL-2303. You should replace this with your own.</p>
<p>Running cgps should show a live summary of the information that gpsd is getting, along with a running log of the raw data coming from the gps. You can also test gpsd by telnetting to localhost:2947, typing w and hitting enter. You should see NMEA strings from the gps.</p>
<h3>III. Kismac and cyborg.py</h3>
<p>The original reason that I embarked on this gps adventure was to use two programs: Kismac and Randall Munroe&#8217;s cyborg.py. Kismac is easy to get running with gpsd – once you have gpsd running (e.g. gpsd -n /dev/cu.usbserial), open Kismac and set it to use gpsd for map coordinates. It should display your location on the map screen, and associate coordinates with APs.</p>
<p>cyborg.py is a little harder to get running. It&#8217;s dirty (though entirely functional) code that isn&#8217;t fully mac compatible. Notably, it uses two programs (flite and figlet) that are iffy under OS X. I patched that up, replacing flite with OS X&#8217;s built-in &#8220;say&#8221; command, and commenting out the figlet bits (which display large text) in favor of the terminal output the script gives. The modified script works beautifully, although I didn&#8217;t clean up the code at all. You can get it <a href="http://people.reed.edu/~justs/cyborg.py">here</a>.</p>
<h3>IV. Links</h3>
<ul>
<li> <a href="http://gpsd.berlios.de/">gpsd</a></li>
<li><a href="http://www.gpsdrive.de/">gpsdrive</a></li>
<li><a href="http://trac.kismac-ng.org/">Kismac</a></li>
<li><a href="http://blag.xkcd.com/2008/05/20/gps-cyborg-implant/">Randall Munroe&#8217;s cyborg.py</a></li>
<li><a href="http://lists.gpsdrivers.org/pipermail/gpsdrive/2007-June/000136.html">Post by Hashim on the gpsdrive mailing list</a></li>
<li><a href="http://www.prolific.com.tw/eng/Products.asp?ID=59">Prolific PL-2303</a> and <a href="http://www.prolific.com.tw/eng/downloads.asp?ID=31">driver</a></li>
<li><a href="http://osx-pl2303.sourceforge.net/">PL-2303 Alternative Driver</a></li>
<li><a href="http://apps.sourceforge.net/mediawiki/gpsdrive/index.php?title=Creating_maps">Getting maps in gpsdrive</a></li>
<li><a href="http://www.canmore.com.tw/product.aspx?id=12">My gps</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://sethjust.com/2009/01/13/gpsd-under-os-x/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Genetic Algorithms in Perl</title>
		<link>http://sethjust.com/2008/12/11/genetic-algorithms-in-perl/</link>
		<comments>http://sethjust.com/2008/12/11/genetic-algorithms-in-perl/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 09:20:19 +0000</pubDate>
		<dc:creator>sethjust</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[evolution]]></category>
		<category><![CDATA[genetic]]></category>
		<category><![CDATA[genetic algorithm]]></category>

		<guid isPermaLink="false">http://sethjust.wordpress.com/?p=38</guid>
		<description><![CDATA[Inspired by recent genetic algorithms floating around, I decided to try my hand at implementing one in perl. I&#8217;d thought for a long time that it would be quite difficult, but really it&#8217;s quite easy. My biggest hangup was dealing with data structures, but once I did that, it turns out that all you really [...]]]></description>
			<content:encoded><![CDATA[<p>Inspired by <a href="http://hackaday.com/2008/12/08/genetic-programming/">recent</a> <a href="http://rogeralsing.com/2008/12/07/genetic-programming-evolution-of-mona-lisa/">genetic</a> <a href="http://www.wreck.devisland.net/ga/">algorithms</a> floating around, I decided to try my hand at implementing one in perl. I&#8217;d thought for a long time that it would be quite difficult, but really it&#8217;s quite easy. My biggest hangup was dealing with data structures, but once I did that, it turns out that all you really need is a few functions:</p>
<ul>
<li>A fitness function, that determines which individuals are most fit to reproduce</li>
<li>A mutate function, that will add random chance into each generation</li>
<li>A breed function that allows the best individuals to reproduce.</li>
</ul>
<p>I ended up implementing a very simple algorithm, but it&#8217;s fairly fast and very generic – it can be easily adapted to just about any task. Sadly, I have no fascinating application just yet, but if I stumble across one, I&#8217;ll be sure to post about it.</p>
<p>After the jump, I&#8217;ll put up some of the code I used and a link to the script, all for your viewing pleasure.<br />
<span id="more-38"></span></p>
<p>The heart of the algorithm is the mutate and breed functions:</p>
<p>[sourcecode language='php']sub mutate{     # Mutates each allele of an individual by a random, weighted amount,<br />
                #    controlled by certain parameters. It re-initializes if the allele<br />
                #    is zero, and takes abs()<br />
    my $ind = shift;</p>
<p>    for (@$ind) {<br />
        $_ = eval($init_string) unless ($_);<br />
        $_ += (rand(2) &#8211; 1)*($mut_weight*($_)+$mut_offset);<br />
        $_ = -$_ unless ($_>0);<br />
    }</p>
<p>    return 0;<br />
}</p>
<p>sub breed{      # Breeds each individual with the top 20 percent of the population randomly<br />
                #    by averaging each allele of the individual with the corresponding allele<br />
                #    of a random individual in the top quintile. Note that this means that<br />
                #    each individual breeds with, at most (and ideally), as many individuals<br />
                #    as it has alleles, which breaks down the parent / child model slightly.<br />
    my $indvs = shift;<br />
    my @list;<br />
    ($minimize) || (@list = sort {fitness($b)  fitness($a)} @$indvs);  # Sort asc. vs. desc.<br />
    ($minimize) &#038;&#038; (@list = sort {fitness($a)  fitness($b)} @$indvs);</p>
<p>    @list = @list[1..(int(scalar(@list)/5)+1)];</p>
<p>    for (@$indvs) {              # Iterate through individuals<br />
        my $ind_ref = $_;<br />
        my $i = 0;<br />
        for (@$ind_ref) {        # Iterate through alleles<br />
            $_ = ((@list[int(rand(length(@list)-1))])->[$i] + $_)/2;      # Average given allele with<br />
                                                                          #    a random, fit,<br />
                                                                          #    corresponding allele<br />
            $_ = (rand(1)<$reset_prob?eval($init_string):$_);             # Re-init the allele some<br />
                                                                          #    percent of the time<br />
            $i++;<br />
        }<br />
    }</p>
<p>    return 0;<br />
}[/sourcecode]</p>
<p>Between the comments and the code, it should be pretty clear what's going on in here, although some of the data structures are kinda hard to get from this section. As I explain in the <a href="http://people.reed.edu/~justs/genes.pl">code</a>:</p>
<blockquote><p>A randomized population is created. An array holds references to the specified number of &#8220;individuals&#8221;. Each individual is an array of alleles (scalar values) that are chosen by evaluating a specified string. These are currently positive real numbers.</p></blockquote>
<p>These references (or references to the population array) are passed as arguments to the functions each iteration.</p>
<p>If you&#8217;re interested, be sure to check out the <a href="http://people.reed.edu/~justs/genes.pl">code</a> and please give me some feedback!</p>
<p>UPDATE: Ivan in the comments made the recommendation of using an anonymous function to intialize individuals. I made that change he recommended and updated the code.</p>
]]></content:encoded>
			<wfw:commentRss>http://sethjust.com/2008/12/11/genetic-algorithms-in-perl/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Synchronized Presidential Debates</title>
		<link>http://sethjust.com/2008/10/29/synchronized-presidential-debates/</link>
		<comments>http://sethjust.com/2008/10/29/synchronized-presidential-debates/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 11:50:15 +0000</pubDate>
		<dc:creator>sethjust</dc:creator>
				<category><![CDATA[Politics]]></category>
		<category><![CDATA[debate]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[mccain]]></category>
		<category><![CDATA[obama]]></category>
		<category><![CDATA[tv]]></category>

		<guid isPermaLink="false">http://sethjust.wordpress.com/?p=32</guid>
		<description><![CDATA[I just ran across what is probably one of the cleverest and scariest analyses of the presidential debates I&#8217;ve seen this year. It&#8217;s ridiculous to see just how similar everything they say is. It&#8217;s kinda a shame that the debates were such a place for the candidates to simply spew their canned points to the [...]]]></description>
			<content:encoded><![CDATA[<p>I just ran across what is probably one of the cleverest and scariest analyses of the presidential debates I&#8217;ve seen this year. It&#8217;s ridiculous to see just how similar everything they say is. It&#8217;s kinda a shame that the debates were such a place for the candidates to simply spew their canned points to the television-watching world. Anyway:<br />
[brightcove vid=1885473979&amp;exp3=1126121768&amp;surl=http://c.brightcove.com/services&amp;pubid=1126366244&amp;w=417&amp;h=360]</p>
<p>(Via <a href="http://www.boingboing.net/2008/10/28/synchronized-preside.html">BoingBoing</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://sethjust.com/2008/10/29/synchronized-presidential-debates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fast and Simple Stock Quotes Using Perl</title>
		<link>http://sethjust.com/2008/10/23/fast-and-simple-stock-quotes-using-perl/</link>
		<comments>http://sethjust.com/2008/10/23/fast-and-simple-stock-quotes-using-perl/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 06:18:05 +0000</pubDate>
		<dc:creator>sethjust</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[CPAN]]></category>
		<category><![CDATA[exchange]]></category>
		<category><![CDATA[finance]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[stocks]]></category>
		<category><![CDATA[ticker]]></category>

		<guid isPermaLink="false">http://sethjust.wordpress.com/?p=21</guid>
		<description><![CDATA[One of the things that makes perl so powerful and fascinating is the huge number of modules that are available online, especially through the CPAN repository. Today I stumbled upon one called Finance::Quote, which does one thing, very simply: it retrieves stock (or mutual fund) quotes. You feed it a ticker symbol and it gives [...]]]></description>
			<content:encoded><![CDATA[<p>One of the things that makes perl so powerful and fascinating is the huge number of modules that are available online, especially through the CPAN repository. Today I stumbled upon one called Finance::Quote, which does one thing, very simply: it retrieves stock (or mutual fund) quotes. You feed it a ticker symbol and it gives back a hash with all sorts of information, but most importantly, the price. I&#8217;m going to show how to use this to create a command line tool that will grab an up-to-the minute stock quote for any ticker symbol you give it.</p>
<p><span id="more-21"></span><br />
To start, installing Finance::Quote is a breeze. As long as you have CPAN installed, just type at the command line:</p>
<pre>$perl -MCPAN -e shell
&gt;install Finance::Quote</pre>
<p>From there it&#8217;s easy to get start, it&#8217;s just a matter of importing the module and creating and instance. This means the beginning of our script will look like:<br />
[sourcecode language='php']#!/usr/bin/perl -w<br />
use strict;</p>
<p># import module<br />
use Finance::Quote;<br />
# create object<br />
my $q = Finance::Quote->new();[/sourcecode]<br />
The instance that we created has one main method: fetch(). It takes a list of arguments, with the first being a the exchange to look for quotes on, and the remaining being a list or array of ticker symbols. The <a href="http://search.cpan.org/~ecocode/Finance-Quote-1.14/lib/Finance/Quote.pm">Finance::Quote documentation</a> provides the following list of valid exchanges:</p>
<pre>australia           Australan Stock Exchange
dwsfunds            Deutsche Bank Gruppe funds
fidelity            Fidelity Investments
tiaacref            TIAA-CREF
troweprice          T. Rowe Price
europe              European Markets
canada              Canadian Markets
usa                 USA Markets
nyse                New York Stock Exchange
nasdaq              NASDAQ
uk_unit_trusts      UK Unit Trusts
vanguard            Vanguard Investments
vwd                 Vereinigte Wirtschaftsdienste GmbH</pre>
<p>For the purposes of this script, I&#8217;m going to stick to &#8220;usa&#8221; because it covers both NYSE and NASDAQ, and those are the stocks I&#8217;m interested in.<br />
Fetch() returns a two-dimensional hash of results. The first index (or dimension) is the ticker symbol of the stock and the second is the label for the specific piece of information. For now, the labels that we&#8217;re interested are the name of the company (&#8216;name&#8217;) and the price (&#8216;price&#8217;). A full listing of labels is available in the <a href="http://search.cpan.org/~ecocode/Finance-Quote-1.14/lib/Finance/Quote.pm#LABELS">Finance::Quote documentation</a>.<br />
Using this information we can now build a simple script to fetch a stock quote:<br />
[sourcecode language='php']#!/usr/bin/perl -w<br />
use strict;</p>
<p># import module<br />
use Finance::Quote;</p>
<p># create object<br />
my $q = Finance::Quote->new();</p>
<p># retrieve stock quote<br />
my %data = $q->fetch(&#8216;usa&#8217;, &#8216;GOOG&#8217;);</p>
<p># print price<br />
print $data{&#8216;GOOG&#8217;, &#8216;price&#8217;} . &#8220;n&#8221;;[/sourcecode]<br />
This script, although it does what it&#8217;s supposed to, isn&#8217;t very pretty. By adding a little code to read ticker symbols from the command line we can check on multiple stocks at the same time, as well as remove the need to hard-code the ticker symbols. We can also make it produce much prettier results by adding more information about the company and add some basic error checking, which yields the following script:<br />
[sourcecode language='php']#!/usr/bin/perl -w<br />
use strict;</p>
<p># import module<br />
use Finance::Quote;</p>
<p># create object<br />
my $q = Finance::Quote->new();</p>
<p>#print usage information<br />
if (length(@ARGV) == 0) {<br />
	print &#8220;Usage: $0 ticker1, ticker2, &#8230; , tickerNn&#8221;;<br />
	exit;<br />
}</p>
<p># get stock symbols from the command line and<br />
# format them correctly (uppercase)<br />
for (@ARGV){<br />
	$_ = uc();<br />
}</p>
<p># retrieve stock quote<br />
my %data = $q->fetch(&#8216;usa&#8217;, @ARGV);</p>
<p># print result for each stock<br />
for (@ARGV){<br />
	if ($data{$_, &#8217;success&#8217;}) {		# if getting the quote succeeded<br />
		my $name = $data{$_, &#8216;name&#8217;};	# build a report<br />
		my $price = $data{$_, &#8216;price&#8217;};<br />
		my $message = &#8221;;<br />
		$message .= $name . &#8216; (&#8216; . $_ . &#8216;)&#8217;;<br />
		$message .= &#8216; &#8216; x(25 &#8211; length($message));<br />
		$message .= &#8220;$$pricen&#8221;;<br />
		print $message;<br />
	}<br />
	else { print &#8220;Failed to retrieve quote for $_: $data{$_, &#8216;errormsg&#8217;}n&#8221;; }<br />
}[/sourcecode]<br />
This is very simple, but it does its job well:</p>
<pre>$ quote goog msft aapl dell java
GOOGLE (GOOG)            $352.32
MICROSOFT CP (MSFT)      $22.32
APPLE INC (AAPL)         $98.23
DELL INC (DELL)          $11.99
SUN MICROSYSTEMS (JAVA)  $4.54</pre>
<p><a href="http://people.reed.edu/~justs/quote.pl">Download the script here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sethjust.com/2008/10/23/fast-and-simple-stock-quotes-using-perl/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tobias Wolff is a God among men</title>
		<link>http://sethjust.com/2008/08/30/tobias-wolff-is-a-god-among-men/</link>
		<comments>http://sethjust.com/2008/08/30/tobias-wolff-is-a-god-among-men/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 01:41:53 +0000</pubDate>
		<dc:creator>sethjust</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[literature]]></category>
		<category><![CDATA[quotes]]></category>
		<category><![CDATA[tobias wolff]]></category>

		<guid isPermaLink="false">http://sethjust.wordpress.com/?p=19</guid>
		<description><![CDATA[I was sitting and re-reading Tobias Wolff short stories the other day, and ran across this little quote, which tore my heart out, twisted my head around and made me totally fall in love with his writing again:
In the solemnity of her attention he heard himself saying things he had said to no one else, [...]]]></description>
			<content:encoded><![CDATA[<p>I was sitting and re-reading Tobias Wolff short stories the other day, and ran across this little quote, which tore my heart out, twisted my head around and made me totally fall in love with his writing again:</p>
<blockquote><p>In the solemnity of her attention he heard himself saying things he had said to no one else, confessing hopes so implausible he had barely confessed them to himself. He was often surprised by his own honesty. But he stopped short of telling Mary Ann what was most on his mind, and what he believed she already knew, because of the chance that she didn&#8217;t know or wasn&#8217;t ready to admit she did. Once he said it, everything would change, for all of them, and he wasn&#8217;t prepared to risk this.</p></blockquote>
<p><cite>Tobias Wolff &#8211; &#8220;Two Boys and a Girl&#8221;</cite></p>
]]></content:encoded>
			<wfw:commentRss>http://sethjust.com/2008/08/30/tobias-wolff-is-a-god-among-men/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Songs Off of Your iPod</title>
		<link>http://sethjust.com/2008/08/10/getting-songs-off-of-your-ipod/</link>
		<comments>http://sethjust.com/2008/08/10/getting-songs-off-of-your-ipod/#comments</comments>
		<pubDate>Sun, 10 Aug 2008 16:10:50 +0000</pubDate>
		<dc:creator>sethjust</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[friends]]></category>
		<category><![CDATA[help]]></category>
		<category><![CDATA[ipod]]></category>
		<category><![CDATA[itunes]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[sanity]]></category>
		<category><![CDATA[Senuti]]></category>

		<guid isPermaLink="false">http://sethjust.wordpress.com/?p=16</guid>
		<description><![CDATA[
In the last couple weeks, at least four people have asked me how to get music off of their iPods. The answer I gave all of them was Senuti (iTunes spelled backwards). It&#8217;s great! It does exactly what you need: takes songs from your iPod and puts them into iTunes, and it&#8217;s super easy to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sethjust.files.wordpress.com/2008/08/eb85f55a-12bf-4620-a875-94941d5055221.jpg"><img class="alignright size-full wp-image-17" src="http://sethjust.files.wordpress.com/2008/08/eb85f55a-12bf-4620-a875-94941d5055221.jpg" alt="" width="220" height="156" /></a></p>
<p>In the last couple weeks, at least four people have asked me how to get music off of their iPods. The answer I gave all of them was Senuti (iTunes spelled backwards). It&#8217;s great! It does exactly what you need: takes songs from your iPod and puts them into iTunes, and it&#8217;s super easy to do. Once you have <a href="http://code.google.com/p/senuti/wiki/QuickStart">disk use enabled</a>:</p>
<blockquote><p>To copy songs back to your computer, all you have to do is select the songs and click the transfer button in the upper left hand corner of the application.</p>
<p>The songs will be copied to the your computer. They will be added to iTunes if you enabled the preference to automatically add them to iTunes.</p></blockquote>
<p>It&#8217;s just that easy.</p>
<p>Of course, Senuti isn&#8217;t just a one trick pony, it can do <a href="http://code.google.com/p/senuti/wiki/Support">other useful things</a> as well, such as copying songs to a folder, or showing you what songs you already have in your iTunes library, and allowing you to hide them, so that you only transfer new songs.</p>
<p>So next time you feel like IM&#8217;ing me about how to get songs off of your iPod, remember Senuti, and save my sanity just a little bit.</p>
]]></content:encoded>
			<wfw:commentRss>http://sethjust.com/2008/08/10/getting-songs-off-of-your-ipod/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Can Apple keep this up?</title>
		<link>http://sethjust.com/2008/08/03/can-apple-keep-this-up/</link>
		<comments>http://sethjust.com/2008/08/03/can-apple-keep-this-up/#comments</comments>
		<pubDate>Sun, 03 Aug 2008 08:42:33 +0000</pubDate>
		<dc:creator>sethjust</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobile me]]></category>

		<guid isPermaLink="false">http://sethjust.wordpress.com/?p=13</guid>
		<description><![CDATA[It seems to me that Apple has undergone a change in the past year or so. With the introduction of the App Store, the iPhone 3G, and Mobile Me, Apple seems to have lowered its quality standards. In the past there was the common knowledge that you shouldn&#8217;t buy the first revision of a product [...]]]></description>
			<content:encoded><![CDATA[<p>It seems to me that Apple has undergone a change in the past year or so. With the introduction of the App Store, the iPhone 3G, and Mobile Me, Apple seems to have lowered its quality standards. In the past there was the common knowledge that you shouldn&#8217;t buy the first revision of a product because there were always bugs, but now Apple seems to be having even more problems. It&#8217;s pretty well acknowledged that one of the biggest reasons for the problems with Mobile Me was that it was pushed out early to keep up with the iPhone 3G. I even saw similar problems when I opened up the preferences on iTunes 7.7:</p>
<div style="text-align:center;clear:both;"><img src="http://sethjust.files.wordpress.com/2008/08/picture-1.png" alt="Picture 1.png" border="0" width="326" height="132" /></div>
<p>I&#8217;m afraid that Apple&#8217;s new products and schedules are clashing with their characteristic way of doing business. In the past they were able to wait until a product was just perfect before releasing it. Now, with their partnerships and such, at least with the iPhone, Apple is forced to announce their products earlier, and so they have much stricter deadlines to meet, which begs the question &#8220;Can Apple keep this up and still deliver the same quality product they have in the past?&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://sethjust.com/2008/08/03/can-apple-keep-this-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Obama Buttons!</title>
		<link>http://sethjust.com/2008/07/23/obama-buttons/</link>
		<comments>http://sethjust.com/2008/07/23/obama-buttons/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 06:01:42 +0000</pubDate>
		<dc:creator>sethjust</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Politics]]></category>
		<category><![CDATA[button]]></category>
		<category><![CDATA[election]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[moveon]]></category>
		<category><![CDATA[obama]]></category>

		<guid isPermaLink="false">http://sethjust.wordpress.com/?p=10</guid>
		<description><![CDATA[Guess what? MoveOn.Org is giving out FREE Obama buttons!
We&#8217;re giving away new Obama buttons for free, as part of a massive national visibility campaign. Want one? Click here:
http://pol.moveon.org/obamabuttons/?id=-6688660-5VxS1dx
After you&#8217;ve gotten yours, forward this email on to everyone you know so that they can get free Obama buttons too.
If hundreds of thousands of us wear these [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://sethjust.files.wordpress.com/2008/07/b4d3442d-f39d-49f1-a049-5996e9495255.jpg" alt="B4D3442D-F39D-49F1-A049-5996E9495255.jpg" border="0" width="100" height="93" align="right" />Guess what? MoveOn.Org is giving out FREE Obama buttons!</p>
<blockquote><p>We&#8217;re giving away new Obama buttons for free, as part of a massive national visibility campaign. Want one? Click here:</p>
<p>http://pol.moveon.org/obamabuttons/?id=-6688660-5VxS1dx</p>
<p>After you&#8217;ve gotten yours, forward this email on to everyone you know so that they can get free Obama buttons too.</p>
<p>If hundreds of thousands of us wear these wherever we go, we&#8217;ll send a strong message that Barack Obama is the candidate with the buzz, momentum, excitement—and sincere support of regular folks across the country.</p></blockquote>
<p>Everybody should pick one of these up and wear them!</p>
]]></content:encoded>
			<wfw:commentRss>http://sethjust.com/2008/07/23/obama-buttons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Call to All New Yorkers</title>
		<link>http://sethjust.com/2008/07/16/a-call-to-all-new-yorkers/</link>
		<comments>http://sethjust.com/2008/07/16/a-call-to-all-new-yorkers/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 12:01:32 +0000</pubDate>
		<dc:creator>sethjust</dc:creator>
				<category><![CDATA[Politics]]></category>
		<category><![CDATA[activism]]></category>
		<category><![CDATA[burma]]></category>

		<guid isPermaLink="false">http://sethjust.wordpress.com/?p=7</guid>
		<description><![CDATA[Friday, August 8, there&#8217;s going to be an event to commemorate the 1988 uprising of the Burmese democracy movement, as well as a call on Burma to move to a more democratic form of government. The event will also welcome two students (who I&#8217;ve had the pleasure of meeting and working with) who will have [...]]]></description>
			<content:encoded><![CDATA[<p>Friday, August 8, there&#8217;s going to be an event to commemorate the 1988 uprising of the Burmese democracy movement, as well as a call on Burma to move to a more democratic form of government. The event will also welcome two students (who I&#8217;ve had the pleasure of meeting and working with) who will have walked almost 3000 miles from Portland, Oregon to New York, bringing signed petitions to the United Nations.</p>
<blockquote><p>NEW YORK EVENT!!</p>
<p>Invitation to Participate in Event to Commemorate 20th Anniversary of 8-8-88 Uprising</p>
<p>We, the 88 Generation Students in Exile (88 GSE), National League for Democracy, Liberated Areas, USA Branch (NLD-LA), Women on the Move for Burma (WOMB), and International Campaign for Burma – New York (ICB-NY), would like to invite all members of the public as well as interested organizations to help us plan and organize an event to commemorate the upcoming 20th anniversary of the 8-8-88 popular uprising in Burma. The event will be held on Friday, August 8, 2008. A tentative outline of the day’s activities is presented below.</p>
<p>Tentative Schedule for Friday, 8 August 2008</p>
<p>12PM – 2 PM (Burma Consulate General)</p>
<p>2PM – 3PM (March from Burma Embassy to the United Nations)</p>
<p>3PM – 7PM (Dag Hammarskjold Plaza, United Nations)</p>
<p>In addition, we will be hosting a welcoming event for Ko AThein and Ko Zaw Min Htwe of 88 Generation Students. Ko AThein and Ko Zaw Min Htwe have been walking across the United States from Portland, Oregon to the United Nations (nearly 3,000 miles) in an effort to raise awareness of human rights violations in Burma.</p>
<p>If you or your organization would like to join us in organizing these important events,</p>
<p>please contact the below-listed individuals by July 12th, 2008.</p>
<p>Event Contacts: Aung Khant (516-808-1515)</p>
<p>Aung Min Tun (917-425-7809)</p>
<p>Khin Sandi (917-445-9222)</p>
<p>Thant Zin Myint (347-229-6355)</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://sethjust.com/2008/07/16/a-call-to-all-new-yorkers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facebook Chat</title>
		<link>http://sethjust.com/2008/04/28/facebook-chat/</link>
		<comments>http://sethjust.com/2008/04/28/facebook-chat/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 11:09:13 +0000</pubDate>
		<dc:creator>sethjust</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Adium]]></category>
		<category><![CDATA[AIM]]></category>
		<category><![CDATA[chat]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[facebook chat]]></category>
		<category><![CDATA[IM]]></category>

		<guid isPermaLink="false">http://sethjust.wordpress.com/2008/04/28/facebook-chat/</guid>
		<description><![CDATA[So Facebook FINALLY rolled out Facebook Chat for my network. I&#8217;ve played with it for a while and made a few observations:

It&#8217;s nice to have notifications and online friends down in the bottom bar of the window.
It gets annoying having to wait for all of the information (scripts, etc) associated with chat to load, but [...]]]></description>
			<content:encoded><![CDATA[<p>So Facebook FINALLY rolled out Facebook Chat for my network. I&#8217;ve played with it for a while and made a few observations:</p>
<ul>
<li>It&#8217;s nice to have notifications and online friends down in the bottom bar of the window.</li>
<li>It gets annoying having to wait for all of the information (scripts, etc) associated with chat to load, but on a fast enough connection it&#8217;s fine.</li>
<li>It&#8217;s somewhat difficult to change your status, and not a lot of people do it.</li>
<li>The premise of Facebook chat is really sound. It&#8217;s nice to have all of your friends on the same IM service, without having to collect usernames. You never have the problem of not knowing who somebody is when they message you.</li>
<li>The client seems lacking. It seems that the Facebook team put some effort in trying to make it act like less than a full-on desktop application, which would get in the way of using Facebook, but at the same time, it&#8217;s too weak for me to truly appreciate. I can imagine getting it integrated into Adium, and having all of my friends pop up in a friend group there. Not only would that be awesome as all hell, but I would probably use it over AIM, if only because more people would be available to me through it.</li>
</ul>
<p>In the end, I&#8217;m surprised by how much I like Facebook Chat. I was expecting it to be another bit of annoying noise in the already crowded IM space. It takes a lot of the likable things about Google Chat (that I don&#8217;t get the benefit of because I prefer POP to webmail) but adds some great features, like integration with Facebook status (which should encourage more micro-blogging ala Twitter as people use that status as an IM status), and a great in-browser chat experience. However, for my uses, which center around discrete applications, windows (or even tabs) for different tasks, Facebook chat throws to many things into one tab of the browser. When Adium gets Facebook Chat integration, I&#8217;ll be excited.</p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://sethjust.com/2008/04/28/facebook-chat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flock Update</title>
		<link>http://sethjust.com/2008/04/14/flock-update/</link>
		<comments>http://sethjust.com/2008/04/14/flock-update/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 02:21:56 +0000</pubDate>
		<dc:creator>sethjust</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[adblock]]></category>
		<category><![CDATA[addon]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[digg]]></category>
		<category><![CDATA[flock]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[stealther]]></category>
		<category><![CDATA[stylish]]></category>

		<guid isPermaLink="false">http://sethjust.wordpress.com/2008/04/14/flock-update/</guid>
		<description><![CDATA[So I&#8217;ve been playing around with Flock a bit more, and I&#8217;ve discovered some more. I played with the webmail integration, which isn&#8217;t great&#8230; It just detects new messages and then sends you to the website. I&#8217;d appreciate if I could get POP or IMAP into the browser, but I can live with a separate [...]]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve been playing around with <a href="http://www.flock.com">Flock</a> a bit more, and I&#8217;ve discovered some more. I played with the webmail integration, which isn&#8217;t great&#8230; It just detects new messages and then sends you to the website. I&#8217;d appreciate if I could get POP or IMAP into the browser, but I can live with a separate desktop app.<br />
As to Digg support, it&#8217;s supposedly going to be integrated into the next release. I&#8217;m trying to get my hands on the latest betas, but they have a nasty tendency to crash on my machine. Oh well.<br />
I&#8217;ve also discovered that Flock supports a huge amount of Firefox Addons. I added my personal favorites Greasemonkey, Stylish, Stealther and AdBlock Plus.</p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://sethjust.com/2008/04/14/flock-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beach Musings</title>
		<link>http://sethjust.com/2008/04/14/beach-musings/</link>
		<comments>http://sethjust.com/2008/04/14/beach-musings/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 11:06:24 +0000</pubDate>
		<dc:creator>sethjust</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[beach]]></category>
		<category><![CDATA[poetry]]></category>
		<category><![CDATA[quotes]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://sethjust.wordpress.com/2008/04/14/beach-musings/</guid>
		<description><![CDATA[WHITE NOISE is my MOST valuable study tool. How can it be describled? HIsssss&#8230; But that doesn&#8217;t cut it. It&#8217;s never changing but ever-variable; soft + hard; strong + weak; Imperceptibly Loud. It is an ocean at the quite beach, the wind in a girlfriend&#8217;s hair, the sifting of sand in the wind, the sound [...]]]></description>
			<content:encoded><![CDATA[<p>WHITE NOISE is my MOST valuable study tool. How can it be describled? HIsssss&#8230; But that doesn&#8217;t cut it. It&#8217;s never changing but ever-variable; soft + hard; strong + weak; Imperceptibly Loud. It is an ocean at the quite beach, the wind in a girlfriend&#8217;s hair, the sifting of sand in the wind, the sound of the sky, the moon, the stars. It is the sound of God.</p>
<p>It&#8217;s funny that I&#8217;d say that, but it&#8217;s ture. Of course, I refer to no Personal God, but instead to the word. What other word works? White noise is as good a god as any, + better than many. Bow before the might of the random. White noise is the sound of the universe, It is the sound of life, IT IS THE SOUND OF HUMAN CIVILIZATION!</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Does this pen write poetry? I doubt it. But ask if I think poetry And I&#8217;ll tell you that an thought is poetic before the tyranny of words.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>A Show of The impermanence of thoughts</p>
<p>Written in the sand</p>
<p>Disappears</p>
<p>Quickly</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>the Sun warms with with a fraction of its heat.</p>
<p>Are you God?</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Will this one day be the musings of a young poet? A thinker? Or will I throw it in the recycling + let my words infuse the work of others?</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>What will I come to know? The possibilities are endless.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Who Cares?</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>My personal philosophy is this:</p>
<p>Fuck That Shit!</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>What is poetry but words thinking?</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Does a seagull&#8217;s shadow cross me on purpose? What of its direction? What does it mean? Will I get poop on my head?</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>When so much is moving (sand) why does so little happen?</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Is it All just wasted Effort?</p>
<p style="font-size:10px;text-align:right;">Tags: <a rel="tag" href="http://technorati.com/tag/writing">writing</a>, <a rel="tag" href="http://technorati.com/tag/poetry">poetry</a>, <a rel="tag" href="http://technorati.com/tag/%20philosophy"> philosophy</a>, <a rel="tag" href="http://technorati.com/tag/%20beach"> beach</a>, <a rel="tag" href="http://technorati.com/tag/%20musing"> musing</a>, <a rel="tag" href="http://technorati.com/tag/"></a></p>
<p class="citation"><cite></cite></p>
<div class="flockcredit" style="text-align:right;color:#CCC;font-size:x-small;"><a title="Flock Browser" href="http://www.flock.com/blogged-with-flock" target="_new"></a></div>
<p><!-- technorati tags begin --></p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://sethjust.com/2008/04/14/beach-musings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flock</title>
		<link>http://sethjust.com/2008/04/14/flock/</link>
		<comments>http://sethjust.com/2008/04/14/flock/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 10:57:49 +0000</pubDate>
		<dc:creator>sethjust</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[1password]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[digg]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[flock]]></category>
		<category><![CDATA[last.fm]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[social]]></category>

		<guid isPermaLink="false">http://sethjust.wordpress.com/2008/04/14/flock/</guid>
		<description><![CDATA[So, I&#8217;ve been trying out the Flock browser which is based on Firefox. However, it&#8217;s twist is that it&#8217;s designed to integrate with a bunch of different social services. I have it set up to work with my Facebook, Flickr, YouTube and Photobucket accounts, as well as this Wordpress blog. It will also work with [...]]]></description>
			<content:encoded><![CDATA[<p>So, I&#8217;ve been trying out the <a href="http://www.flock.com">Flock browser</a> which is based on Firefox. However, it&#8217;s twist is that it&#8217;s designed to integrate with a bunch of different social services. I have it set up to work with my <a href="http://www.facebook.com">Facebook</a>, <a href="http://www.flickr.com">Flickr</a>, <a href="http://www.youtube.com">YouTube</a> and <a href="http://www.photobucket.com">Photobucket</a> accounts, as well as this Wordpress blog. It will also work with things like <a href="http://www.twitter.com">Twitter</a>, <a href="http://del.icio.us">del.icio.us</a>. It also supports RSS feeds, which I&#8217;ve imported my whole set of feeds into. So far it&#8217;s replaced two applications on my desktop (Safari and NetNewsWire), and if I were to set it up with my email, I could get rid of a third.<br />
It was very easy to set it up. I installed the 1Password plugin for it and fired it up. I was asked whether I wanted to import information from another browser, which let me grab EVERYTHING (bookmarks, cookies, history, saved passwords, etc.) from Safari. It auto-detected when I visited a site that it could integrate with (Facebook). However, to get it to add my Facebook I had to log out and then back in, which was a minor annoyance, but after that it worked perfectly. Getting my RSS feeds in was a bit harder, I had to export them from NetNewsWire as OMPL and then import them, but that was easy and quick.<br />
If you ask me, it does its thing pretty well. It takes a bit of getting used to to use the social features, but in the end it&#8217;s a lot more polished to do it all through the one interface than to use a bunch of tools that are inconsistent. However, I miss a few things. First off, it&#8217;s slow. A lot slower than Safari and Camino, and even a bit slower than Firefox. However, so far I&#8217;ve put up with it because I like what it&#8217;s doing. The other quibble I have is that I keep wanting more integration. One notable hole is Last.fm integration, which would be wonderful, but it would also be nice to see my Digg friends in there, and be able to Digg stories.<br />
Overall, I&#8217;d suggest that those with the time and curiosity to do so should install Flock and give it a try. It&#8217;s fun, and you might just like something.</p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://sethjust.com/2008/04/14/flock/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
