<?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>Voder-Vocoder</title>
	<atom:link href="http://halcanary.org/vv/feed/" rel="self" type="application/rss+xml" />
	<link>http://halcanary.org/vv</link>
	<description>The Log of Hal Canary</description>
	<lastBuildDate>Sat, 28 Aug 2010 20:22:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Redesign of the Mexican flag</title>
		<link>http://halcanary.org/vv/2010/08/28/1026/</link>
		<comments>http://halcanary.org/vv/2010/08/28/1026/#comments</comments>
		<pubDate>Sat, 28 Aug 2010 19:40:53 +0000</pubDate>
		<dc:creator>Hal Canary</dc:creator>
				<category><![CDATA[Art]]></category>

		<guid isPermaLink="false">http://halcanary.org/vv/?p=1026</guid>
		<description><![CDATA[Here's my candidate for a redesign of the Mexican flag.
Old:

New:

]]></description>
			<content:encoded><![CDATA[<p>Here's my candidate for a redesign of the Mexican flag.</p>
<p>Old:<br />
<img src="/images/Flag_of_Mexico.png" width="600" height="343" alt="" /></p>
<p>New:<br />
<img src="/images/Flag_of_Mexico_Redesign.png" width="600" height="343" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://halcanary.org/vv/2010/08/28/1026/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>published</title>
		<link>http://halcanary.org/vv/2010/08/12/1011/</link>
		<comments>http://halcanary.org/vv/2010/08/12/1011/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 13:42:12 +0000</pubDate>
		<dc:creator>Hal Canary</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Mathematics]]></category>

		<guid isPermaLink="false">http://halcanary.org/vv/2010/08/12/1011/</guid>
		<description><![CDATA[I am published in The Electronic Journal of Combinatorics 17(1), R105. 
]]></description>
			<content:encoded><![CDATA[<p>I am published in <a href="http://www.combinatorics.org/Volume_17/Abstracts/v17i1r105.html"><em>The Electronic Journal of Combinatorics</em> 17(1), R105</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://halcanary.org/vv/2010/08/12/1011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>gravatar</title>
		<link>http://halcanary.org/vv/2010/07/17/1006/</link>
		<comments>http://halcanary.org/vv/2010/07/17/1006/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 13:25:23 +0000</pubDate>
		<dc:creator>Hal Canary</dc:creator>
				<category><![CDATA[Computers & Code]]></category>

		<guid isPermaLink="false">http://halcanary.org/vv/?p=1006</guid>
		<description><![CDATA[
&#60;!-- Easy Gravatar implementation for
     Wordpress comment page: --&#62;
&#60;?php
$gravlink = &#34;http://www.gravatar.com/avatar/&#34;;
$gravlink .= md5(strtolower(trim(get_comment_author_email())));
$gravlink .= &#34;?d=&#34;.urlencode(&#34;http://halcanary.org/images/q80.png&#34;);
echo $gravlink; ?&#62;

]]></description>
			<content:encoded><![CDATA[<pre>
&lt;!-- Easy Gravatar implementation for
     Wordpress comment page: --&gt;
&lt;?php
$gravlink = &quot;http://www.gravatar.com/avatar/&quot;;
$gravlink .= md5(strtolower(trim(get_comment_author_email())));
$gravlink .= &quot;?d=&quot;.urlencode(&quot;http://halcanary.org/images/q80.png&quot;);
echo $gravlink; ?&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://halcanary.org/vv/2010/07/17/1006/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>gnuplot question</title>
		<link>http://halcanary.org/vv/2010/07/16/1001/</link>
		<comments>http://halcanary.org/vv/2010/07/16/1001/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 02:10:14 +0000</pubDate>
		<dc:creator>Hal Canary</dc:creator>
				<category><![CDATA[Computers & Code]]></category>

		<guid isPermaLink="false">http://halcanary.org/vv/2010/07/16/1001/</guid>
		<description><![CDATA[Here's your basic LaTeX document:

%% FILE: basic.tex
&#0092;documentclass[letterpaper,12pt]{article}
&#0092;begin{document}
&#0092;input{graph}
&#0092;end{document}

The file graph.tex is generated using Gnuplot like this:

#!/usr/bin/gnuplot
## FILE: graph.gnuplot
set xrange [&#0045;3:3]
set yrange [0:.42]
set ytics nomirror autofreq 0, .1
set terminal latex size 3,1.5
set output &#0039;graph.tex&#0039;
f(x) = .39894228040143267794 * exp(&#0045;0.5 * (x ** 2))
set style line 1 linecolor rgb &#34;black&#34; linewidth 1
plot f(x) ls 1 notitle

Here's the execution:

$ gnuplot [...]]]></description>
			<content:encoded><![CDATA[<p>Here's your basic LaTeX document:</p>
<pre>
%% FILE: basic.tex
&#0092;documentclass[letterpaper,12pt]{article}
&#0092;begin{document}
&#0092;input{graph}
&#0092;end{document}
</pre>
<p>The file graph.tex is generated using Gnuplot like this:</p>
<pre>
#!/usr/bin/gnuplot
## FILE: graph.gnuplot
set xrange [&#0045;3:3]
set yrange [0:.42]
set ytics nomirror autofreq 0, .1
set terminal latex size 3,1.5
set output &#0039;graph.tex&#0039;
f(x) = .39894228040143267794 * exp(&#0045;0.5 * (x ** 2))
set style line 1 linecolor rgb &quot;black&quot; linewidth 1
plot f(x) ls 1 notitle
</pre>
<p>Here's the execution:</p>
<pre>
$ gnuplot graph.gnuplot
$ pdflatex basic.tex > /dev/null
$ evince basic.pdf &#038;
</pre>
<p>This makes a really professional-looking graph I can put in a document.</p>
<p><img src="/images/2010-07-16_graph.png" alt="[]" style="margin-left:2ex" /></p>
<p>Now here's what I want to see:</p>
<p><img src="/images/2010-07-16_graph_2.png" alt="[]" style="margin-left:2ex" /></p>
<p>How do I do this with Gnuplot?</p>
]]></content:encoded>
			<wfw:commentRss>http://halcanary.org/vv/2010/07/16/1001/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>filling an ebook reader</title>
		<link>http://halcanary.org/vv/2010/06/27/997/</link>
		<comments>http://halcanary.org/vv/2010/06/27/997/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 18:39:03 +0000</pubDate>
		<dc:creator>Hal Canary</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Computers & Code]]></category>

		<guid isPermaLink="false">http://halcanary.org/vv/2010/06/27/997/</guid>
		<description><![CDATA[This week, I finally broke down and bought an ebook reader —   B&#38;N's $150 WiFi Nook (ISBN 9781400532629).  It's a beautiful   little device.
I got the Jonathan Adler Punctuation Cover (978161560062) since   it's both very sturdy and cheaper than most.
I've already side-loaded 90 free books onto the device.  [...]]]></description>
			<content:encoded><![CDATA[<p>This week, I finally broke down and bought an ebook reader —   B&amp;N's $150 WiFi <a href="http://bn.com/nook/">Nook</a> (ISBN 9781400532629).  It's a beautiful   little device.</p>
<p>I got the Jonathan Adler Punctuation Cover (978161560062) since   it's both very sturdy and cheaper than most.</p>
<p>I've already side-loaded 90 free books onto the device.  These   books have come from several places.  In no particular order:
<ul>
<li>The Lee County Public Library lets you borrow ebooks via Adobe Digital Editions (ADE) software.  You can use ADE to side-load ebooks onto a nook.</li>
<li><a href="http://www.gutenberg.org/">Project Gutenberg</a> — the first place to go for books from the public domain.  All of their books are now availible in ePub versions.</li>
<li><a href="http://books.google.com/">Google Books</a>, Some of the scans availible are in the public domain, and are therefore downloadable.  Generally, the Gutenberug editions are a higher quality than the Google versions, since The Gutenberg tries to be an ideal textual copy of the book while Google tries to be a good representation a particular physical book.</li>
<li>Many of the works of Cory Doctorow are availible as ePubs on his website, <a href="http://craphound.com/">Craphound</a>. I especially recommend <em>Makers</em> and <em>Little Brother</em>.</li>
<li><a href="http://www.baen.com/library/titles.htm">The Baen Free Library</a> — All copyrighted works which you may read for free, and all are availible as ePubs.</li>
<li><a href="http://baencd.thefifthimperium.com/">The Baen CD Mirror</a> — These files are also copyrighted but free to redistribute.  The newer CDs have ePub files on them. The older CDs do not, but you can use a program like   <a href="http://calibre-ebook.com/">Calibre</a> to covert file formats.</li>
</ul>
<p> Places to buy eBooks:
<ul>
<li><a href="http://bn.com/ebooks">http://bn.com/ebooks</a> — of 	course.  Also check the <a href="http://bn.com/unbound">Unbound Blog</a> every friday for the name of a free book that can be added to your B&amp;N library that week.  [Update.  Here, too: <a href="http://bn.com/freelibrary">http://bn.com/freelibrary</a>]</li>
<li><a href="http://www.webscription.net/">Webscription</a> — A store that sells unencombered ebooks, all of which are availible in ePub format.  The prices aren't bad at all.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://halcanary.org/vv/2010/06/27/997/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>girdle</title>
		<link>http://halcanary.org/vv/2010/06/10/995/</link>
		<comments>http://halcanary.org/vv/2010/06/10/995/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 11:04:12 +0000</pubDate>
		<dc:creator>Hal Canary</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://halcanary.org/vv/?p=995</guid>
		<description><![CDATA[Six days ago I woke up with a horrible back pain. I must have strained it at work, and I think those magazine recycling boxes are to blame. After taking it easy over the weekend I felt much better, but work exacerbates the pain. 
After I let my boss know that my back was still [...]]]></description>
			<content:encoded><![CDATA[<p>Six days ago I woke up with a horrible back pain. I must have strained it at work, and I think those magazine recycling boxes are to blame. After taking it easy over the weekend I felt much better, but work exacerbates the pain. </p>
<p>After I let my boss know that my back was still hurting me, she pointed out that we had some lumbar support belts hidden away in the office. So I started using one and found that it helped me put less strain on the injured part of my back. But I look like a dork.</p>
]]></content:encoded>
			<wfw:commentRss>http://halcanary.org/vv/2010/06/10/995/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>simple mergesort</title>
		<link>http://halcanary.org/vv/2010/05/08/984/</link>
		<comments>http://halcanary.org/vv/2010/05/08/984/#comments</comments>
		<pubDate>Sat, 08 May 2010 11:55:23 +0000</pubDate>
		<dc:creator>Hal Canary</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Computers & Code]]></category>

		<guid isPermaLink="false">http://halcanary.org/vv/?p=984</guid>
		<description><![CDATA[Even though I've studied this algorithm a couple of times, I've never had to implement it before.  So I assigned it to myself.
/** should have a time-complecity of O(N&#0215;log(N))
    and a space-compelcity of O(N) **/
void mergesort(int N, int array[]) {
  int k; // k is the block size.
  int [...]]]></description>
			<content:encoded><![CDATA[<p>Even though I've studied this algorithm a couple of times, I've never had to implement it before.  So I assigned it to myself.</p>
<pre>/** should have a time-complecity of O(N&#0215;log(N))
    and a space-compelcity of O(N) **/
void mergesort(int N, int array[]) {
  int k; // k is the block size.
  int x; //x is which block we are at.
  int i,j; //indices in old[]
  int p; // index in new[]
  int ilimit,jlimit; //end of blocks.
  int *hold = malloc(sizeof(hold) * N);
  if (hold == NULL) {
    fprintf(stderr,&quot;malloc failed&#0092;n&quot;);
    exit(2);
  }
  int *new = hold;
  int *old = array;
  int *tmp;
  for (k = 1; k &lt; N; k *= 2) {
    p = 0;
    for (x = 0; x &lt; N; x += (2*k)) {
      i = x;
      ilimit = i + k;
      j = ilimit;
      if (ilimit &gt;= N) {
	while (i &lt; N)
	  new[p++] = old[i++];
 	break; //out of for-loop
      }
      jlimit = j + k;
      if (jlimit &gt;= N)
	jlimit = N;
      while (1) {
	if (old[i] &lt; old[j]) {
	  new[p++] = old[i++];
	  if (i == ilimit) {
	    while (j &lt; jlimit)
	      new[p++] = old[j++];
	    break; //out of while-loop
	  }
	} else {
	  new[p++] = old[j++];
	  if (j == jlimit) {
	    while (i &lt; ilimit)
	      new[p++] = old[i++];
	    break; //out of while-loop
	  }
	}
      } // End while loop.
    } // End inner for loop.
    tmp = old; old = new; new = tmp;
  }// End outer for loop.
  if (old != array)
    for (i = 0; i &lt; N; i++)
      array[i] = old[i];
  free(hold);
  return;
}</pre>
<p>Next step is to translate to Java and use .compareTo() with arrays of references:</p>
<pre>  public static void mergeSort(Comparable array[]) {
    int N = array.length;
    int k; // k is the block size.
    int x; // x is which block we are at.
    int i,j; //indices in old[]
    int p; // index in new[]
    int ilimit,jlimit; // end of blocks.
    Comparable hold [] = new Comparable [N];
    Comparable neww [] = hold;
    Comparable old [] = array;
    Comparable tmp [];
    for (k = 1; k &lt; N; k *= 2) {
      p = 0;
      for (x = 0; x &lt; N; x += (2*k)) {
        i = x;
        ilimit = i + k;
        j = ilimit;
        if (ilimit &gt;= N) {
          while (i &lt; N)
            neww[p++] = old[i++];
          break; //out of for-loop
        }
        jlimit = j + k;
        if (jlimit &gt;= N)
          jlimit = N;
        while (true) {
          if (old[i].compareTo(old[j]) &lt; 0) {
            neww[p++] = old[i++];
            if (i == ilimit) {
              while (j &lt; jlimit)
                neww[p++] = old[j++];
              break; //out of while-loop
            }
          } else {
            neww[p++] = old[j++];
            if (j == jlimit) {
              while (i &lt; ilimit)
                neww[p++] = old[i++];
              break; //out of while-loop
            }
          }
        } // End while loop.
      } // End inner for loop.
      tmp = old; old = neww; neww = tmp;
    }// End outer for loop.
    if (old != array)
      for (i = 0; i &lt; N; i++)
        array[i] = old[i];
  }</pre>
]]></content:encoded>
			<wfw:commentRss>http://halcanary.org/vv/2010/05/08/984/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>exam, projects</title>
		<link>http://halcanary.org/vv/2010/04/28/977/</link>
		<comments>http://halcanary.org/vv/2010/04/28/977/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 12:22:43 +0000</pubDate>
		<dc:creator>Hal Canary</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://halcanary.org/vv/?p=977</guid>
		<description><![CDATA[I've got an exam in a few hours, then I'm out of school for a while. The next major project is GRE studying. I've also got a stack of books to read for fun. And Ubuntu 10.04 LTS (Lucid Lynx) comes out tomorrow, so I'll be reinstalling for the first time since I built this [...]]]></description>
			<content:encoded><![CDATA[<p>I've got an exam in a few hours, then I'm out of school for a while. The next major project is GRE studying. I've also got a stack of books to read for fun. And <a href="http://www.ubuntu.com/">Ubuntu</a> 10.04 LTS (Lucid Lynx) comes out tomorrow, so I'll be reinstalling for the first time since I built this computer.</p>
]]></content:encoded>
			<wfw:commentRss>http://halcanary.org/vv/2010/04/28/977/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>the 16 binary boolean operators</title>
		<link>http://halcanary.org/vv/2010/04/20/974/</link>
		<comments>http://halcanary.org/vv/2010/04/20/974/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 23:13:29 +0000</pubDate>
		<dc:creator>Hal Canary</dc:creator>
				<category><![CDATA[Mathematics]]></category>

		<guid isPermaLink="false">http://halcanary.org/vv/?p=974</guid>
		<description><![CDATA[Given: the set of binary operators contain all unary and nullary operators as a subset.
There are 2^(2×2)=16 possible binary boolean operators.  In order, they are:  FALSE, x AND y, x AND NOT y, x, y AND NOT x, y, x XOR y, x OR y, x NOR y, x EQV y, NOT y, [...]]]></description>
			<content:encoded><![CDATA[<p>Given: the set of binary operators contain all unary and nullary operators as a subset.</p>
<p>There are 2^(2×2)=16 possible binary boolean operators.  In order, they are:  FALSE, <em>x</em> AND <em>y</em>, <em>x</em> AND NOT <em>y</em>, <em>x</em>, <em>y</em> AND NOT <em>x</em>, <em>y</em>, <em>x</em> XOR <em>y</em>, <em>x</em> OR <em>y</em>, <em>x</em> NOR <em>y</em>, <em>x</em> EQV <em>y</em>, NOT <em>y</em>, <em>x</em> OR NOT <em>y</em>, NOT <em>x</em>, <em>y</em> OR NOT <em>x</em>, <em>x</em> NAND <em>y</em>, and TRUE.</p>
]]></content:encoded>
			<wfw:commentRss>http://halcanary.org/vv/2010/04/20/974/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Digging through old photos at the folks&#039; house today.</title>
		<link>http://halcanary.org/vv/2010/04/03/972/</link>
		<comments>http://halcanary.org/vv/2010/04/03/972/#comments</comments>
		<pubDate>Sun, 04 Apr 2010 01:16:39 +0000</pubDate>
		<dc:creator>Hal Canary</dc:creator>
				<category><![CDATA[Photos]]></category>

		<guid isPermaLink="false">http://halcanary.org/vv/?p=972</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><a href="http://halcanary.org/photos/2001-05-20-graduation.jpg"><img src="http://halcanary.org/photos/thumb/2001-05-20-graduation.jpg" alt="[Thumb]" width="120" height="90" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://halcanary.org/vv/2010/04/03/972/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>bourne shell absolute path</title>
		<link>http://halcanary.org/vv/2010/03/31/968/</link>
		<comments>http://halcanary.org/vv/2010/03/31/968/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 14:20:12 +0000</pubDate>
		<dc:creator>Hal Canary</dc:creator>
				<category><![CDATA[Computers & Code]]></category>

		<guid isPermaLink="false">http://halcanary.org/vv/?p=968</guid>
		<description><![CDATA[#!/bin/sh
abspath () {
    D7636=`/usr/bin/dirname &#34;$1&#34;`;
    D7636=`(cd &#34;$D7636&#34;; pwd &#0045;P)`;
    B7636=`/usr/bin/basename &#34;$1&#34;`;
    echo &#34;${D7636}/${B7636}&#34;;
}
PATH=$1
echo &#34;path = &#0092;&#34;${PATH}&#0092;&#34;&#34;
ABSPATH=`abspath &#34;$PATH&#34;`
echo &#34;absolute path = &#0092;&#34;${ABSPATH}&#0092;&#34;&#34;

UPDATE: I just realised that readlink -f &#34;$FILE&#34; will do the trick.
]]></description>
			<content:encoded><![CDATA[<pre>#!/bin/sh
abspath () {
    D7636=`/usr/bin/dirname &quot;$1&quot;`;
    D7636=`(cd &quot;$D7636&quot;; pwd &#0045;P)`;
    B7636=`/usr/bin/basename &quot;$1&quot;`;
    echo &quot;${D7636}/${B7636}&quot;;
}
PATH=$1
echo &quot;path = &#0092;&quot;${PATH}&#0092;&quot;&quot;
ABSPATH=`abspath &quot;$PATH&quot;`
echo &quot;absolute path = &#0092;&quot;${ABSPATH}&#0092;&quot;&quot;</pre>
<hr />
UPDATE: I just realised that <tt>readlink -f &quot;$FILE&quot;</tt> will do the trick.</p>
]]></content:encoded>
			<wfw:commentRss>http://halcanary.org/vv/2010/03/31/968/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>life</title>
		<link>http://halcanary.org/vv/2010/03/26/966/</link>
		<comments>http://halcanary.org/vv/2010/03/26/966/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 23:21:24 +0000</pubDate>
		<dc:creator>Hal Canary</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://halcanary.org/vv/?p=966</guid>
		<description><![CDATA[I should blog something interesting about my life, but I am busy living. I'm working on a school assignment having to do with applying algorithms to graph theory.  The grad-level graph theory class I failed comes in handy there.  I'm going to go hang out with friends in a few minutes. Work is [...]]]></description>
			<content:encoded><![CDATA[<p>I should blog something interesting about my life, but I am busy living. I'm working on a school assignment having to do with applying algorithms to graph theory.  The grad-level graph theory class I failed comes in handy there.  I'm going to go hang out with friends in a few minutes. Work is still there; the days are just as long as ever, and the constant barrage of paper-cuts is bothering me today.</p>
]]></content:encoded>
			<wfw:commentRss>http://halcanary.org/vv/2010/03/26/966/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
