<?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>VIVAHATE</title>
	<atom:link href="http://vivahate.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://vivahate.com</link>
	<description></description>
	<lastBuildDate>Sun, 19 Feb 2012 21:53:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>3ds Max</title>
		<link>http://vivahate.com/2012/02/19/3ds-max/</link>
		<comments>http://vivahate.com/2012/02/19/3ds-max/#comments</comments>
		<pubDate>Sun, 19 Feb 2012 21:53:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=1390</guid>
		<description><![CDATA[Teaching myself 3ds Max. Here&#8217;s what I&#8217;ve come up with so far:]]></description>
			<content:encoded><![CDATA[<p>Teaching myself 3ds Max. Here&#8217;s what I&#8217;ve come up with so far:</p>
<p><img src="http://vivahate.com/wp-content/uploads/2012/02/tiles5-960x720.png" alt="" title="tiles5" width="960" height="720" class="aligncenter size-medium wp-image-1396" /></p>

<a href='http://vivahate.com/2012/02/19/3ds-max/scene1/' title='scene1'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2012/02/scene1-150x150.png" class="attachment-thumbnail" alt="scene1" title="scene1" /></a>
<a href='http://vivahate.com/2012/02/19/3ds-max/tiles/' title='tiles'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2012/02/tiles-150x150.png" class="attachment-thumbnail" alt="tiles" title="tiles" /></a>
<a href='http://vivahate.com/2012/02/19/3ds-max/tiles2/' title='tiles2'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2012/02/tiles2-150x150.png" class="attachment-thumbnail" alt="tiles2" title="tiles2" /></a>
<a href='http://vivahate.com/2012/02/19/3ds-max/tiles3/' title='tiles3'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2012/02/tiles3-150x150.png" class="attachment-thumbnail" alt="tiles3" title="tiles3" /></a>
<a href='http://vivahate.com/2012/02/19/3ds-max/tiles4/' title='tiles4'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2012/02/tiles4-150x150.png" class="attachment-thumbnail" alt="tiles4" title="tiles4" /></a>
<a href='http://vivahate.com/2012/02/19/3ds-max/tiles5/' title='tiles5'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2012/02/tiles5-150x150.png" class="attachment-thumbnail" alt="tiles5" title="tiles5" /></a>
<a href='http://vivahate.com/2012/02/19/3ds-max/render2/' title='render2'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2012/02/render2-150x150.png" class="attachment-thumbnail" alt="render2" title="render2" /></a>
<a href='http://vivahate.com/2012/02/19/3ds-max/render3/' title='render3'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2012/02/render3-150x150.png" class="attachment-thumbnail" alt="render3" title="render3" /></a>
]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2012/02/19/3ds-max/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing PostgreSQL 8.4 in Ubuntu 10.04</title>
		<link>http://vivahate.com/2012/02/15/installing-postgresql-8-4-in-ubuntu-10-04/</link>
		<comments>http://vivahate.com/2012/02/15/installing-postgresql-8-4-in-ubuntu-10-04/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 01:18:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=1383</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<script src="https://gist.github.com/1832274.js?file=gistfile1.md"></script>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2012/02/15/installing-postgresql-8-4-in-ubuntu-10-04/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More Indian</title>
		<link>http://vivahate.com/2012/02/02/more-indian/</link>
		<comments>http://vivahate.com/2012/02/02/more-indian/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 21:43:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=1377</guid>
		<description><![CDATA[Even more Indian food.]]></description>
			<content:encoded><![CDATA[<p>Even more Indian food.</p>
<p><img src="http://vivahate.com/wp-content/uploads/2012/02/2.jpg" alt="" title="_2" width="900" height="598" class="aligncenter size-full wp-image-1378" /></p>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2012/02/02/more-indian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Salmon, Cauliflower, and Brussels</title>
		<link>http://vivahate.com/2012/02/01/salmon-cauliflower-and-brussels/</link>
		<comments>http://vivahate.com/2012/02/01/salmon-cauliflower-and-brussels/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 00:58:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=1369</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<img src="http://vivahate.com/wp-content/uploads/2012/02/foo.jpg" alt="" title="foo" width="960" height="638" class="aligncenter size-full wp-image-1374" />]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2012/02/01/salmon-cauliflower-and-brussels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kale, Ground Turkey, and Wild Rice</title>
		<link>http://vivahate.com/2012/01/30/kale-ground-turkey-and-wild-rice/</link>
		<comments>http://vivahate.com/2012/01/30/kale-ground-turkey-and-wild-rice/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 01:00:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=1366</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<img src="http://vivahate.com/wp-content/uploads/2012/01/kale-960x638.jpg" alt="" title="kale" width="960" height="638" class="aligncenter size-medium wp-image-1367" />]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2012/01/30/kale-ground-turkey-and-wild-rice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Daal Makkhani</title>
		<link>http://vivahate.com/2012/01/24/daal-makkhani/</link>
		<comments>http://vivahate.com/2012/01/24/daal-makkhani/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 13:38:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=1349</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><img src="http://vivahate.com/wp-content/uploads/2012/01/Daal-Makkhani-1-960x638.jpg" alt="" title="Daal-Makkhani-1" width="960" height="638" class="aligncenter size-medium wp-image-1351" /></p>
<p><img src="http://vivahate.com/wp-content/uploads/2012/01/Daal-Makkhani-2-960x638.jpg" alt="" title="Daal-Makkhani-2" width="960" height="638" class="aligncenter size-medium wp-image-1352" /></p>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2012/01/24/daal-makkhani/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>X Window Manager Part 1 &#8211; Hello XCB</title>
		<link>http://vivahate.com/2012/01/14/x-window-manager-part-1-hello-xcb/</link>
		<comments>http://vivahate.com/2012/01/14/x-window-manager-part-1-hello-xcb/#comments</comments>
		<pubDate>Sat, 14 Jan 2012 14:43:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=1178</guid>
		<description><![CDATA[Minimal X Install Debian net install. Base system only. # aptitude install xorg $ startx Hello XCB # aptitude install build-essential libx11-dev libxcb1-dev]]></description>
			<content:encoded><![CDATA[<h2>Minimal X Install</h2>
<p>Debian net install. Base system only.</p>
<pre class="terminal"><code># aptitude install xorg
$ startx</code></pre>

<h2>Hello XCB</h2>
<pre class="terminal"><code># aptitude install build-essential libx11-dev libxcb1-dev</code></pre>

<script src="https://gist.github.com/1556654.js?file=Makefile"></script>
<script src="https://gist.github.com/1556654.js?file=test.c"></script>
]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2012/01/14/x-window-manager-part-1-hello-xcb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debian 6 Install Log Redux</title>
		<link>http://vivahate.com/2012/01/13/debian-6-install-log-redu/</link>
		<comments>http://vivahate.com/2012/01/13/debian-6-install-log-redu/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 14:19:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=1290</guid>
		<description><![CDATA[System Install [Configure Wifi] # aptitude update # aptitude install debian-multimedia-keyring # aptitude update # aptitude install sudo # visudo # aptitude install xorg openbox obconf menu Add the following to ~/.xinitrc exec openbox-session $ startx Appearance # aptitude install gtk-theme-switch gtk2-engines Use the gtk-theme-switch2 application to switch the GTK+ theme. cp /etc/xdg/openbox/menu.xml ~/.config/openbox/menu.xml]]></description>
			<content:encoded><![CDATA[<h2>System Install</h2>

<p>[Configure Wifi]</p>

<script src="https://gist.github.com/1606073.js?file=sources.list"></script>

<pre class="terminal"><code># aptitude update
# aptitude install debian-multimedia-keyring
# aptitude update</code></pre>

<pre class="terminal"><code># aptitude install sudo
# visudo</code></pre>

<pre class="terminal"><code># aptitude install xorg openbox obconf menu</code></pre>

<p>Add the following to <code>~/.xinitrc</code></p>

<pre><code>exec openbox-session</code></pre>

<pre class="terminal"><code>$ startx</code></pre>

<h2>Appearance</h2>

<pre class="terminal"><code># aptitude install gtk-theme-switch gtk2-engines</code></pre>

<p>Use the <code>gtk-theme-switch2</code> application to switch the GTK+ theme.</p>

<pre class="terminal"><code>cp /etc/xdg/openbox/menu.xml ~/.config/openbox/menu.xml</code></pre>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2012/01/13/debian-6-install-log-redu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pizza</title>
		<link>http://vivahate.com/2011/12/31/pizza-2/</link>
		<comments>http://vivahate.com/2011/12/31/pizza-2/#comments</comments>
		<pubDate>Sat, 31 Dec 2011 18:44:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=1165</guid>
		<description><![CDATA[The Kitchen Aid makes pizza crust a snap.]]></description>
			<content:encoded><![CDATA[<p>The Kitchen Aid makes pizza crust a snap.</p>

<img src="http://vivahate.com/wp-content/uploads/2011/12/za-960x638.jpg" alt="" title="za" width="960" height="638" class="aligncenter size-medium wp-image-1166" />]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2011/12/31/pizza-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arch Linux &#8211; Macbook Pro</title>
		<link>http://vivahate.com/2011/12/01/arch-linux-macbook-pro/</link>
		<comments>http://vivahate.com/2011/12/01/arch-linux-macbook-pro/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 00:58:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://www.vivahate.com/?p=457</guid>
		<description><![CDATA[Install Arch Basic Arch install without networking using the core CD image. Make sure to add wireless_tools from base-devel. Configure Wifi I had to blacklist the bcma module. YMMV. There&#8217;s some good info here: https://wiki.archlinux.org/index.php/Broadcom_wireless The network uses WPA encryption Verify that the kernel module has been loaded and the hardware is ready to use: [...]]]></description>
			<content:encoded><![CDATA[<h2>Install Arch</h2>
<p>Basic Arch install without networking using the core CD image. Make sure to add <code>wireless_tools</code> from <code>base-devel</code>.</p>

<h2>Configure Wifi</h2>
<p>I had to blacklist the <code>bcma</code> module. YMMV. There&#8217;s some good info here: <a href="https://wiki.archlinux.org/index.php/Broadcom_wireless">https://wiki.archlinux.org/index.php/Broadcom_wireless</a></p>
<p>The network uses WPA encryption</p>
<p>Verify that the kernel module has been loaded and the hardware is ready to use:</p>
<pre class="terminal"><code>$ iwconfig</code></pre>
<p>Bring the interface up:</p>
<pre class="terminal"><code>$ ip link set wlan0 up</code></pre>
<p>List available networks:</p>
<pre class="terminal"><code>$ iwlist wlan0 scan</code></pre>
<p>Rename the default wpa_supplicant.conf:</p>
<pre class="terminal"><code>$ mv /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.original</code></pre>
<p>Generate a new wpa_supplicant.conf:</p>
<pre class="terminal"><code>$ wpa_passphrase "ESSID" "SECRET PASSKEY" &gt; /etc/wpa_supplicant.conf</code></pre>
<p>Associate adapter with access point:</p>
<pre class="terminal"><code>$ wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf</code></pre>
<p>Get an IP address via DHCP:</p>
<pre class="terminal"><code>$ dhcpcd wlan0</code></pre>
<p>Test:</p>
<pre class="terminal"><code>$ ping -c 3 www.google.com</code></pre>
<p>Add the following to <code>/etc/rc.local</code>:</p>
<pre class="terminal"><code>$ ip link set wlan0 up
$ wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf
$ dhcpcd wlan0</code></pre>
<p>Reboot and you should be connected to the wireless network.</p>

<h2>Configure Pacman and Update the System</h2>
<p>Edit /etc/pacman.d/mirrorlist and choose a mirror:</p>
<pre class="terminal"><code>$ nano /etc/pacman.d/mirrorlist</code></pre>
<p>Update the system:</p>
<pre class="terminal"><code>$ pacman -Syu</code></pre>

<h2>Add a User</h2>
<pre class="terminal"><code># useradd -m -g users -G audio,lp,optical,storage,video,wheel,games,power,scanner -s /bin/bash kyle
# passwd kyle</code></pre>

<h2>Sudo</h2>
<pre class="terminal"><code># pacman -S sudo</code></pre>
<p>Add your user to the sudoers list</p>
<pre class="terminal"><code># visudo</code></pre>
<p>Add the following to the end of the file</p>
<pre><code>kyle ALL=(ALL) ALL</code></pre>

<h2>ALSA</h2>
<pre class="terminal"><code># pacman -S alsa-utils</code></pre>
<p>Use <code>alsamixer</code> to unmute the channels</p>

<h2>Packer</h2>
<p>Install packer</p>
<pre class="terminal"><code>sudo pacman -S git
cd ~/
mkdir src
cd src
git clone https://github.com/bruenig/packer.git
cd packer
chmod 755 packer
sudo ln -s /home/kyle/src/packer/packer /usr/bin/packer
</code></pre>

<h2>X and Openbox</h2>
<pre class="terminal"><code># pacman -S xorg-server xorg-apps xorg-xinit xterm openbox</code></pre>
<p>Add <code>exec openbox-session</code> to <code>~/.xinitrc</code></p>

<h2>Nvidia Driver</h2>
<pre class="terminal"><code># pacman -S nvidia nvidia-utils</code></pre>
<p>Reboot.</p>
<pre class="terminal"><code># nvidia-xconfig</code></pre>

<h2>Trackpad Driver</h2>
<pre class="terminal"><code># packer -S xf86-input-mtrack-git</code></pre>
<p>Add the following to your <code>/etc/X11/xorg.conf</code></p>
<pre><code>Section "InputClass"
  MatchIsTouchpad "on"
  Identifier "Touchpads"
  Driver "mtrack"
  Option "IgnoreThumb" "true"
  Option "IgnorePalm" "true"
  Option "Sensitivity" "0.7"
  Option "ButtonIntegrated" "false"
EndSection</code></pre>
<p>More options here: <a href="https://github.com/BlueDragonX/xf86-input-mtrack">https://github.com/BlueDragonX/xf86-input-mtrack</a></p>

<h2>Freetype Configuration</h2>
<pre class="terminal"><code>TODO</code></pre>

<h2>Chromium and Flash</h2>
<pre class="terminal"><code># pacman -S chromium flashplugin</code></pre>

<h2>Rails Development</h2>
<p>Install RVM:</p>
<pre class="terminal"><code>$ bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)</code></pre>
<p>Close your terminal and open a new one.</p>

<h2>Dropbox</h2>
<p>Install Dropbox:</p>
<pre class="terminal"><code># pacman -S dropbox
$ dropbox start</code></pre>
<p>Log in to Dropbox.</p>

<h2>PostgreSQL</h2>
<pre class="terminal"><code># pacman -S postgresql
$ createuser -s -U postgres
  Enter name of role to add: kyle
$ createdb</code></pre>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2011/12/01/arch-linux-macbook-pro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jacques&#8217; Seafood Bread</title>
		<link>http://vivahate.com/2011/11/19/jacques-seafood-bread/</link>
		<comments>http://vivahate.com/2011/11/19/jacques-seafood-bread/#comments</comments>
		<pubDate>Sat, 19 Nov 2011 14:31:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=1005</guid>
		<description><![CDATA[A recipe from Jacques Pépin. Happy cooking!]]></description>
			<content:encoded><![CDATA[<p>A recipe from Jacques Pépin.</p>

<img src="http://vivahate.com/wp-content/uploads/2011/11/seafoodbread.jpg" alt="" title="seafoodbread" width="960" height="638" class="aligncenter size-full wp-image-1006" />

<p>Happy cooking!</p>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2011/11/19/jacques-seafood-bread/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Duck w/ Candied Kumquat</title>
		<link>http://vivahate.com/2011/11/15/duck-w-candied-kumquat/</link>
		<comments>http://vivahate.com/2011/11/15/duck-w-candied-kumquat/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 04:49:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=985</guid>
		<description><![CDATA[Photo by Jameel]]></description>
			<content:encoded><![CDATA[<img src="http://vivahate.com/wp-content/uploads/2011/11/duck.jpg" alt="" title="duck" width="960" height="639" class="aligncenter size-full wp-image-986" />

<p>Photo by <a href="http://www.flickr.com/photos/jameelwinter/">Jameel</a></p>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2011/11/15/duck-w-candied-kumquat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grilled Chicken w/ Mango Salsa</title>
		<link>http://vivahate.com/2011/11/15/grilled-chicken-w-mango-salsa/</link>
		<comments>http://vivahate.com/2011/11/15/grilled-chicken-w-mango-salsa/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 04:46:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=981</guid>
		<description><![CDATA[Photo by Jameel]]></description>
			<content:encoded><![CDATA[<img src="http://vivahate.com/wp-content/uploads/2011/11/grilledchix.jpg" alt="" title="grilledchix" width="959" height="719" class="aligncenter size-full wp-image-982" />

<p>Photo by <a href="http://www.flickr.com/photos/jameelwinter/">Jameel</a></p>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2011/11/15/grilled-chicken-w-mango-salsa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dumplings</title>
		<link>http://vivahate.com/2011/11/15/dumplings/</link>
		<comments>http://vivahate.com/2011/11/15/dumplings/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 04:44:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=969</guid>
		<description><![CDATA[Photo by Jameel]]></description>
			<content:encoded><![CDATA[<img src="http://vivahate.com/wp-content/uploads/2011/11/dumplings.jpg" alt="" title="Dumplings" width="719" height="960" class="aligncenter size-full wp-image-971" />

<p>Photo by <a href="http://www.flickr.com/photos/jameelwinter/">Jameel</a></p>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2011/11/15/dumplings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Login Redirection with Rails 3.1, Devise, and CanCan</title>
		<link>http://vivahate.com/2011/11/01/login-redirection-with-rails-3-1-devise-and-cancan/</link>
		<comments>http://vivahate.com/2011/11/01/login-redirection-with-rails-3-1-devise-and-cancan/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 15:59:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=832</guid>
		<description><![CDATA[This approach satisfies a few common requirements: Requests by non-signed in users should redirect to the sign in page. Post sign in, the user should be redirected to their original destination. Requests by signed in users to resources which they cannot access (CanCan::AccessDenied) should redirect to an error page. Modify Application Controller First, update your [...]]]></description>
			<content:encoded><![CDATA[<p>This approach satisfies a few common requirements:</p>

<ul>
<li>Requests by non-signed in users should redirect to the sign in page. Post sign in, the user should be redirected to their original destination.</li>
<li>Requests by signed in users to resources which they cannot access (<code>CanCan::AccessDenied</code>) should redirect to an error page.</li>
</ul>

<h2>Modify Application Controller</h2>

<p>First, update your application controller.</p>

<script src="https://gist.github.com/1354962.js"> </script>

<h2>Create Error View</h2>

<p>Create <code>app/views/error/403.html.erb</code>. The contents of the file are unimportant.</p>

<h2>Create Session Controller</h2>

<p>Generate a new session controller:</p>

<pre class="terminal"><code>rails g controller Sessions</code></pre>

<p>Here&#8217;s how it should look:</p>

<script src="https://gist.github.com/1354976.js?file=session_controller.rb"></script>

<h2>Update Routes</h2>

<p>Update your routes so Devise knows to make use of your new sessions controller.</p>

<script src="https://gist.github.com/1354983.js?file=gistfile1.rb"></script>

<h2>Move New Session View</h2>

<p>Move your new session view (if you generated them) from <code>/app/views/devise/session/new.html.erb</code> to <code>/app/views/session/new.html.erb</code>.</p>

<p>HINT: Set <code>config.consider_all_requests_local</code> in <code>/config/environments/development.rb</code> to <code>false</code> to test this while in development.</p>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2011/11/01/login-redirection-with-rails-3-1-devise-and-cancan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wall of Food</title>
		<link>http://vivahate.com/2011/10/20/wall-of-food/</link>
		<comments>http://vivahate.com/2011/10/20/wall-of-food/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 17:32:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=790</guid>
		<description><![CDATA[Hey, look! It&#8217;s the wall of food. Crappy iPhone pictures. Most of these are quick work-night meals or weekend breakfasts. August through October, 2011.]]></description>
			<content:encoded><![CDATA[<p>Hey, look! It&#8217;s the wall of food. Crappy iPhone pictures. Most of these are quick work-night meals or weekend breakfasts. August through October, 2011.</p>
<p><img src="http://vivahate.com/wp-content/uploads/2011/10/breakfast2.jpg" alt="" title="breakfast2" width="480" height="360" class="aligncenter size-full wp-image-792" /><img src="http://vivahate.com/wp-content/uploads/2011/10/butternutsquashsoup.jpg" alt="" title="butternutsquashsoup" width="480" height="360" class="aligncenter size-full wp-image-793" /><img src="http://vivahate.com/wp-content/uploads/2011/10/breakfast.jpg" alt="" title="breakfast" width="480" height="640" class="aligncenter size-full wp-image-791" /><img src="http://vivahate.com/wp-content/uploads/2011/10/koftakebabs.jpg" alt="" title="koftakebabs" width="480" height="640" class="aligncenter size-full wp-image-799" /><img src="http://vivahate.com/wp-content/uploads/2011/10/fishtacos.jpg" alt="" title="fishtacos" width="480" height="640" class="aligncenter size-full wp-image-795" /><img src="http://vivahate.com/wp-content/uploads/2011/10/greeksalad.jpg" alt="" title="greeksalad" width="480" height="640" class="aligncenter size-full wp-image-796" /><img src="http://vivahate.com/wp-content/uploads/2011/10/indian.jpg" alt="" title="indian" width="480" height="360" class="aligncenter size-full wp-image-797" /><img src="http://vivahate.com/wp-content/uploads/2011/10/kebab1.jpg" alt="" title="kebab1" width="480" height="360" class="aligncenter size-full wp-image-798" /><img src="http://vivahate.com/wp-content/uploads/2011/10/pasta1.jpg" alt="" title="pasta1" width="480" height="640" class="aligncenter size-full wp-image-800" /><img src="http://vivahate.com/wp-content/uploads/2011/10/salmonsalad.jpg" alt="" title="salmonsalad" width="480" height="640" class="aligncenter size-full wp-image-802" /><img src="http://vivahate.com/wp-content/uploads/2011/10/pasta2.jpg" alt="" title="pasta2" width="480" height="360" class="aligncenter size-full wp-image-801" /><img src="http://vivahate.com/wp-content/uploads/2011/10/soup.jpg" alt="" title="soup" width="480" height="360" class="aligncenter size-full wp-image-803" /><img src="http://vivahate.com/wp-content/uploads/2011/10/spinach.jpg" alt="" title="spinach" width="480" height="360" class="aligncenter size-full wp-image-804" /><img src="http://vivahate.com/wp-content/uploads/2011/10/carnitas1.jpg" alt="" title="carnitas" width="480" height="360" class="aligncenter size-full wp-image-794" /></p>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2011/10/20/wall-of-food/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails REST Testing with cURL</title>
		<link>http://vivahate.com/2011/10/17/testing-ajax-with-curl-in-rails-3-1/</link>
		<comments>http://vivahate.com/2011/10/17/testing-ajax-with-curl-in-rails-3-1/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 14:29:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=786</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<script src="https://gist.github.com/1354998.js?file=gistfile1.sh"></script>

<script src="https://gist.github.com/1355001.js?file=gistfile1.sh"></script>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2011/10/17/testing-ajax-with-curl-in-rails-3-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Charlottesville, VA</title>
		<link>http://vivahate.com/2011/10/13/charlottesville-va/</link>
		<comments>http://vivahate.com/2011/10/13/charlottesville-va/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 23:13:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=767</guid>
		<description><![CDATA[Photo by Jameel]]></description>
			<content:encoded><![CDATA[<img src="http://vivahate.com/wp-content/uploads/2011/10/6193313989_73bb25882c_b-960x640.jpg" alt="" title="6193313989_73bb25882c_b" width="960" height="640" class="aligncenter size-medium wp-image-768" />
<p>Photo by <a href="http://www.flickr.com/photos/jameelwinter/">Jameel</a></p>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2011/10/13/charlottesville-va/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Carnitas</title>
		<link>http://vivahate.com/2011/10/10/carnitas/</link>
		<comments>http://vivahate.com/2011/10/10/carnitas/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 18:07:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=757</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<a href="http://vivahate.com/wp-content/uploads/2011/10/carnitas.jpg"><img src="http://vivahate.com/wp-content/uploads/2011/10/carnitas-960x638.jpg" alt="" title="Carnitas" width="960" height="638" class="aligncenter size-medium wp-image-758" /></a>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2011/10/10/carnitas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kegs</title>
		<link>http://vivahate.com/2011/09/08/kegs/</link>
		<comments>http://vivahate.com/2011/09/08/kegs/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 23:27:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=772</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<img src="http://vivahate.com/wp-content/uploads/2011/10/kegs-960x638.jpg" alt="" title="kegs" width="960" height="638" class="aligncenter size-medium wp-image-773" />]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2011/09/08/kegs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ralink RT2870/RT3070 in Debian 6 (Squeeze)</title>
		<link>http://vivahate.com/2011/04/04/ralink-rt2870rt3070-in-debian-6-squeeze/</link>
		<comments>http://vivahate.com/2011/04/04/ralink-rt2870rt3070-in-debian-6-squeeze/#comments</comments>
		<pubDate>Mon, 04 Apr 2011 12:14:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=733</guid>
		<description><![CDATA[About a year ago, I got this cheap-o USB 802.1n wireless adapter for $15. lsusb reports the device as: Bus 002 Device 002: ID 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter. In theory, this adapter should be supported out of the box using the rt2870sta module. Of course, just working would be too easy. To [...]]]></description>
			<content:encoded><![CDATA[<p>About a year ago, I got this cheap-o USB 802.1n wireless adapter for $15. <code>lsusb</code> reports the device as: <code>Bus 002 Device 002: ID 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter</code>. In theory, this adapter should be supported out of the box using the <code>rt2870sta</code> module. Of course, just working would be too easy.</p>
<p>To get the wireless adapter to work, we first have to blacklist a few kernel modules.</p>
<p>NOTE: While these instructions are for Debian 6, they should apply to most Debian-based distributions.</p>
<p>Create the following files in <code>/etc/modprobe.d</code>:</p>
<pre class="terminal"><code>$ cd /etc/modprobe.d
$ touch rt2800lib.conf rt2800pci.conf rt2800usb.conf rt2x00lib.conf rt2x00pci.conf rt2x00usb.conf rt61pci.conf</code></pre>
<p>Next, add the following to each file. replacing the name of the module you want to blacklist as necessary (the pattern here should be obvious):</p>
<pre class="terminal"><code>$ cat rt2800lib.conf
blacklist rt2800lib</code></pre>
<p>Next, we need a couple packages. First, install <code>wireless-tools</code>. This should be available on your install media.</p>
<pre class="terminal"><code>$ sudo apt-get install wireless-tools</code></pre>
<p>Next, install the <code>firmware-ralink</code> package. Assuming you don&#8217;t yet have an internet connection, you probably won&#8217;t find this on your install media as it&#8217;s in <code>non-free</code>. I downloaded the package on another computer, transfered it over on a flash drive, and installed it manually.</p>
<p>Reboot. Cross your fingers.</p>
<h2>Connecting</h2>

<pre class="terminal"><code># aptitude install wpasupplicant</code></pre>

<pre class="terminal"><code># iwlist wlan0 scan</code></pre>

<pre class="terminal"><code># nano /etc/network/interfaces</code></pre>

<p>Add the following:</p>
<pre><code>auto wlan0
iface wlan0 inet dhcp
        wpa-ssid ESSID
        wpa-psk PASSPHRASE</code></pre>
<p>Bring up the interface.</p>
<pre class="terminal"><code># ifup wlan0</code></pre>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2011/04/04/ralink-rt2870rt3070-in-debian-6-squeeze/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A Simple Chat Room in Node.js</title>
		<link>http://vivahate.com/2011/03/25/a-simple-chat-room-in-node-js/</link>
		<comments>http://vivahate.com/2011/03/25/a-simple-chat-room-in-node-js/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 00:36:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://www.vivahate.com/?p=609</guid>
		<description><![CDATA[In this post, we&#8217;ll be building a simple chat room using node.js. Here&#8217;s how it&#8217;ll look: Getting Started Install node, socket.io, and express First, make sure you&#8217;ve installed node.js. You&#8217;ll also want to grab a copy of the socket.io library and the express framework. These can both be installed with npm via the express and [...]]]></description>
			<content:encoded><![CDATA[<p>In this post, we&#8217;ll be building a simple chat room using node.js. Here&#8217;s how it&#8217;ll look:</p>
<iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/35_RIuX4LXk" frameborder="0" allowfullscreen></iframe>

<h2>Getting Started</h2>
<h3>Install node, socket.io, and express</h3>
<p>First, make sure you&#8217;ve <a href="http://www.vivahate.com/2010/10/10/node-os-mac-os-x/">installed node.js</a>. You&#8217;ll also want to grab a copy of the <a href="http://socket.io/">socket.io</a> library and the <a href="http://expressjs.com/">express</a> framework. These can both be installed with npm via the <code>express</code> and <code>socket.io</code> packages.</p>
<h3>Directory Structure</h3>
<p>Before we cover each file in detail, here&#8217;s how everything fits together. Place the <code>chat</code> directory wherever you like, mine is in <code>~/projects/chat</code>.</p>
<pre class="terminal"><code>$ ls -R chat
chat/:
<span style="color: #66f;">public</span>  server.js

chat/public:
<span style="color: #66f;">client</span>  index.html

chat/public/client:
socket.io.js</code></pre>
<h2>server.js</h2>
<script src="https://gist.github.com/1355007.js?file=server.js"></script>

<h2>index.html</h2>
<script src="https://gist.github.com/1355017.js?file=index.html"></script>

<h2>Coming Soon&#8230;</h2>
<p>Next time, we&#8217;ll bring canvas to the party. Here&#8217;s a preview of what we&#8217;ll be building in the next installment:</p>
<iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/qopLNN3lP3I" frameborder="0" allowfullscreen></iframe>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2011/03/25/a-simple-chat-room-in-node-js/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>McMurdo</title>
		<link>http://vivahate.com/2011/03/23/mcmurdo/</link>
		<comments>http://vivahate.com/2011/03/23/mcmurdo/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 02:38:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://www.vivahate.com/?p=516</guid>
		<description><![CDATA[Lately, Cyclops and Max have been watching the McMurdo Station Webcam. They requested this script after they got sick of saving images manually and searching for ways to animate them. Uses the excellent Beautiful Soup library, which makes HTML parsing a snap. The program saves images named 1.jpg, 2.jpg, etc. every few seconds. Because the [...]]]></description>
			<content:encoded><![CDATA[<p style="float: right; margin: 10px 0 20px 20px;"><iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/BcXj-D3zIMU" frameborder="0" allowfullscreen></iframe></p>
<p>Lately, Cyclops and Max have been watching the <a href="http://www.usap.gov/videoclipsandmaps/mcmwebcam.cfm">McMurdo Station Webcam</a>. They requested this script after they got sick of saving images manually and searching for ways to animate them.</p>
<p>Uses the excellent <a href="http://www.crummy.com/software/BeautifulSoup/">Beautiful Soup</a> library, which makes HTML parsing a snap. The program saves images named 1.jpg, 2.jpg, etc. every few seconds. Because the filename on this partiular webcam changes with each new image, we have to rescrape the page each time we want a new image.</p>
<p>Cyclops runs Windows, but this stuff should run wherever Python and ffmpeg are available.</p>
<h2>mcmurdo.py</h2>
<script src="https://gist.github.com/1354990.js?file=mcmurdo.py"></script>
<h2>encode.bat</h2>
<script src="https://gist.github.com/1354995.js"> </script>
<h2>Videos</h2>
<iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/0pfDyJ25sS0" frameborder="0" allowfullscreen></iframe>
<br />
<iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/U-7vJQgPfbs" frameborder="0" allowfullscreen></iframe>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2011/03/23/mcmurdo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mesquite Smoked Turkey Leg with Barley and Spring Onions</title>
		<link>http://vivahate.com/2011/03/23/mesquite-smoked-turkey-leg-with-barley-and-grilled-spring-onions/</link>
		<comments>http://vivahate.com/2011/03/23/mesquite-smoked-turkey-leg-with-barley-and-grilled-spring-onions/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 01:19:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://food.purslane.webfactional.com/?p=31</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<img src="http://www.vivahate.com/wp-content/uploads/2010/04/TurkeySpringOnionsBarley3.jpg" alt="" title="TurkeySpringOnionsBarley3" width="800" height="533" class="aligncenter size-full wp-image-39" />]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2011/03/23/mesquite-smoked-turkey-leg-with-barley-and-grilled-spring-onions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nyx 0.0.2</title>
		<link>http://vivahate.com/2011/03/09/nyx-0-0-2/</link>
		<comments>http://vivahate.com/2011/03/09/nyx-0-0-2/#comments</comments>
		<pubDate>Wed, 09 Mar 2011 14:16:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[nyx]]></category>

		<guid isPermaLink="false">http://www.vivahate.com/?p=493</guid>
		<description><![CDATA[What&#8217;s New? Nyx is now hosted on GitHub Vertex buffer objects Supports Python 3 OBJ model support Example Screenshots 304,135 triangles. The transparency is just so that we can see a little more detail.Since there&#8217;s no support for lighting yet, without the transparency all we&#8217;dsee would be a silhouette. Notes The OBJ loader is implemented [...]]]></description>
			<content:encoded><![CDATA[<h2>What&#8217;s New?</h2>
<ul>
<li>Nyx is now <a href="https://github.com/kkestell/nyx">hosted on GitHub</a></li>
<li>Vertex buffer objects</li>
<li>Supports Python 3</li>
<li>OBJ model support</li>
</ul>
<h2>Example</h2>
<script src="https://gist.github.com/1355028.js?file=demo.py"></script>

<h2>Screenshots</h2>
<p style="text-align: center; font-size: 12px; width: 601px;"><img src="http://www.vivahate.com/wp-content/uploads/2011/03/mini-620x3651.png" alt="" title="mini-620x365" width="601" height="335" class="aligncenter size-full wp-image-552" style="margin-bottom: 10px;" />
304,135 triangles. The transparency is just so that we can see a little more detail.<br />Since there&#8217;s no support for lighting yet, without the transparency all we&#8217;d<br />see would be a silhouette.</p>
<h2>Notes</h2>
The OBJ loader is implemented in 18 lines of Python. There is no error checking and it only supports vertices and triangles, but it loads models exported from Blender just fine. Neat.]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2011/03/09/nyx-0-0-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gumballhead Inspired WPA</title>
		<link>http://vivahate.com/2010/12/23/gumballhead-inspired-wpa/</link>
		<comments>http://vivahate.com/2010/12/23/gumballhead-inspired-wpa/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 21:20:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Brewing]]></category>

		<guid isPermaLink="false">http://www.vivahate.com/?p=429</guid>
		<description><![CDATA[http://www.homebrewtalk.com/f70/gumballhead-inspired-wpa-92976/ About the Recipe Recipe TypeExtract YeastS-05 Batch Size (Gallons)5 Original Gravity1.054 Final Gravity1.010 Boiling Time (Minutes)60 Colororange-golden Primary Fermentation (# of Days &#38; Temp)9 @ 62 Secondary Fermentation (# of Days &#38; Temp)14 @ 68 Tasting NotesExcellent american hop flavor and aroma, with a full, smooth wheat body Recipe and Instructions 1lb. Caravienne 1lb. [...]]]></description>
			<content:encoded><![CDATA[<a href="http://www.homebrewtalk.com/f70/gumballhead-inspired-wpa-92976/">http://www.homebrewtalk.com/f70/gumballhead-inspired-wpa-92976/</a>
<h2>About the Recipe</h2>
<dl>
<dt>Recipe Type</dt><dd>Extract</dd>
<dt>Yeast</dt><dd>S-05</dd>
<dt>Batch Size (Gallons)</dt><dd>5</dd>
<dt>Original Gravity</dt><dd>1.054</dd>
<dt>Final Gravity</dt><dd>1.010</dd>
<dt>Boiling Time (Minutes)</dt><dd>60</dd>
<dt>Color</dt><dd>orange-golden</dd>
<dt>Primary Fermentation (# of Days &amp; Temp)</dt><dd>9 @ 62</dd>
<dt>Secondary Fermentation (# of Days &amp; Temp)</dt><dd>14 @ 68</dd>
<dt>Tasting Notes</dt><dd>Excellent american hop flavor and aroma, with a full, smooth wheat body</dd>
</dl>

<h2>Recipe and Instructions</h2>
<ul>
<li>1lb. Caravienne</li>
<li>1lb. 2-row</li>
<li>1lb. White Wheat</li>
<li>5lb. Briess Wheat DME</li>
<li>.5oz Amarillo whole (9.8 AA, 60 min.)</li>
<li>.5oz Amarillo whole (9.8 AA, 15 min.)</li>
<li>.5oz Amarillo whole (9.8 AA, 5 min.)</li>
<li>.5oz Amarillo whole (9.8 AA, flameout)</li>
<li>1oz Amarillo whole (9.8 AA, dry-hop)</li>
<li>1oz Simcoe pellet (12.1 AA, dry-hop)</li>
</ul>

<h2>Brewing Notes</h2>
<p>Used <a href="http://www.whitelabs.com/beer/strains_wlp320.html">White Labs WLP320</a> &ldquo;American Hefeweizen&rdquo; yeast.</p>
<p>Pitched at 60°f (which is cold for this yeast).</p>
<p>Started primary in an ancient 5gal Pyrex carboy (my grandpa used it to make wine back in the &#8217;60s). Unfortunately, the closest size bung plug I could find didn&#8217;t fit snugly, and at the end of the first day of fermentation I was greeted after work by a rather large amount of krausen spilling out from around the plug. After some fucking around, I decided the best course of action was to cut my losses and rack to a 6gal plastic bucket.</p>
<p>This also allowed me to leave behind the hops, which I originally neglected to strain out of the wort.</p>
<p>After racking to the bucket, fermentation continued as expected, but the volume of wort is now slightly less than four and a half gallons.</p>
<p>OG was six point high, probably because I failed to account for the volume of the plug hops.</p>
<p>Dry hopped with 1oz each Simcoe and Amarillo hops on 12/23/2010.</p>

<h2>Hydrometer Readings</h2>
<dl>
<dt>12/12/2010 (OG)</dt><dd>1.060</dd>
<dt>12/23/2010 (Dry Hop)</dt><dd>1.020</dd>
</dl>

<h2>Tasting Notes</h2>
<p>Coming soon&hellip;</p>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2010/12/23/gumballhead-inspired-wpa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Innkeeper</title>
		<link>http://vivahate.com/2010/12/05/the-innkeeper/</link>
		<comments>http://vivahate.com/2010/12/05/the-innkeeper/#comments</comments>
		<pubDate>Sun, 05 Dec 2010 15:31:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Brewing]]></category>

		<guid isPermaLink="false">http://www.vivahate.com/?p=405</guid>
		<description><![CDATA[About the Kit This beer was brewed from Northern Brewer&#8217;s limited edition kit, The Innkeeper. “&#8230;Spicy, herbal, and English biscuits. Flashes of clean citrus and chewy minerals blend into a complex finish that is refreshingly bitter and remarkably dry&#8230;” Brewing Notes Primary fermentation started in 6gal glass carboy on 12/04/2010, with an original gravity of [...]]]></description>
			<content:encoded><![CDATA[<h2>About the Kit</h2>
<p>
This beer was brewed from <a href="http://www.northernbrewer.com/">Northern Brewer&#8217;s</a> limited edition kit, <a href="http://www.northernbrewer.com/brewing/recipe-kits/limited-edition-beer-kits/the-innkeeper-limited-edition-extract-kit.html">The Innkeeper</a>.
</p>
<blockquote>
<p>
“&#8230;Spicy, herbal, and English biscuits. Flashes of clean citrus and chewy minerals blend into a complex finish that is refreshingly bitter and remarkably dry&#8230;”
</p>
</blockquote>
<h2>Brewing Notes</h2>
<p>
Primary fermentation started in 6gal glass carboy on 12/04/2010, with an original gravity of 1.045.
</p>
<p>
Bottled on 12/23/2010. Yeast has reached 80% attenuation, which seems extremely high given that the Wyeast 1469 is only supposed to reach 67-71% attenuation.
</p>
<h2>Hydrometer Readings</h2>
<dl>
<dt>12/04/2010 (OG)</dt>
<dd>1.045</dd>
<dt>12/23/2010 (FG)</dt>
<dd>1.009</dd>
</dl>
<h2>Attenuation</h2>
<p>((1.045 &#8211; 1.009) / (1.045 &#8211; 1.00)) * 100 = 80%</p>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2010/12/05/the-innkeeper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>St. Paul Porter</title>
		<link>http://vivahate.com/2010/12/05/st-paul-porter/</link>
		<comments>http://vivahate.com/2010/12/05/st-paul-porter/#comments</comments>
		<pubDate>Sun, 05 Dec 2010 15:27:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Brewing]]></category>

		<guid isPermaLink="false">http://www.vivahate.com/?p=397</guid>
		<description><![CDATA[About the Kit This beer was brewed from Northern Brewer&#8217;s St. Paul Porter kit. &#8220;NB&#8217;s hometown gives its name to our robust porter kit &#8211; an assertive black ale dominated by roast-coffee and chocolate character and hop bitterness. Toffee-like maltiness and citrusy hop flavor are in there as well, with a medium-full body and lingering [...]]]></description>
			<content:encoded><![CDATA[<h2>About the Kit</h2>
<p>
This beer was brewed from <a href="http://www.northernbrewer.com/">Northern Brewer&#8217;s</a> <a href="http://www.northernbrewer.com/brewing/st-paul-porter-extract-kit-2.html">St. Paul Porter</a> kit.
</p>
<div>
<img class="size-full wp-image-415" style="float: right;" title="St. Paul Porter" src="http://www.vivahate.com/wp-content/uploads/2010/12/stpaulporter.jpg" alt="" width="212" height="212" />
<blockquote>
<p>&ldquo;NB&#8217;s hometown gives its name to our robust porter kit &#8211; an assertive black ale dominated by roast-coffee and chocolate character and hop bitterness. Toffee-like maltiness and citrusy hop flavor are in there as well, with a medium-full body and lingering roast malt/hop bitterness before a bittersweet finish. We like spiking barbecue sauce with a splash of this porter; it&#8217;s also great with strong cheese like sharp cheddar or Stilton.&rdquo;
</p>
</blockquote>
</div>
<h2>Brewing Notes</h2>
<p>
Primary fermentation started in a 6gal glass carboy on 11/26/2010, with an original gravity of 1.060.
</p>
<p>Racked to 5gal glass carboy for conditioning on 12/4/2010 (8 days).</p>
<p>Hydrometer reading on 12/8/2010 (12 days) was 1.022. Assuming fermentation is complete (there&#8217;s been minimal airlock activity since racking to secondary), this puts final gravity at 4.99% ABV.</p>
<p>Attenuation was 64%. Attenuation for this yeast (<a href="http://www.wyeastlab.com/hb_yeaststrain_detail.cfm?ID=9">Wyeast 1187</a> &rdquo;Ringwood Ale&rdquo;) is supposed to be 68-72%.</p><p>It&#8217;s possible that the porter dropped a few points between when I last took a hydrometer reading and when I bottled. Sadly, I lost the FG reading, so I&#8217;m not sure exactly what the apparent attenuation was.</p>
<p>
Fermentation temperature was in the low to mid 60s.
</p>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2010/12/05/st-paul-porter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coconut Cake</title>
		<link>http://vivahate.com/2010/11/28/coconut-cake/</link>
		<comments>http://vivahate.com/2010/11/28/coconut-cake/#comments</comments>
		<pubDate>Sun, 28 Nov 2010 14:40:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://food.purslane.webfactional.com/?p=61</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<img src="http://www.vivahate.com/wp-content/uploads/2010/11/CoconutCake.jpg" alt="" title="CoconutCake" width="800" height="563" class="aligncenter size-full wp-image-62" />]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2010/11/28/coconut-cake/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No-Knead Bread</title>
		<link>http://vivahate.com/2010/10/21/no-knead-bread/</link>
		<comments>http://vivahate.com/2010/10/21/no-knead-bread/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 12:15:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://food.purslane.webfactional.com/?p=12</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<img class="alignnone size-full wp-image-13" title="DSC_7639" src="http://www.vivahate.com/wp-content/uploads/2010/03/DSC_7639.jpg" alt="" width="960" />]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2010/10/21/no-knead-bread/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bacon Wrapped Meatloaf with Black Truffle-Saffron Macaroni and Cheese</title>
		<link>http://vivahate.com/2010/10/14/bacon-wrapped-meatloaf-with-black-truffle-saffron-macaroni-and-cheese/</link>
		<comments>http://vivahate.com/2010/10/14/bacon-wrapped-meatloaf-with-black-truffle-saffron-macaroni-and-cheese/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 11:23:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=643</guid>
		<description><![CDATA[Ingredients: Meatloaf (recipe below) Black truffle-saffron macaroni and cheese (recipe below) 8 slices apple wood smoked bacon Instructions: Preheat oven to 375f. Lay bacon across the width of a loaf pan. The bacon should be long enough to drape over the sides of the pan while lying flat across the bottom. If this is unclear, [...]]]></description>
			<content:encoded><![CDATA[<img class="alignnone size-full wp-image-240" title="sliced" src="http://vivahate.com/wp-content/uploads/2011/03/sliced.jpg" alt="sliced" />
<h3>Ingredients:</h3>
<ul>
	<li>Meatloaf (recipe below)</li>
	<li>Black truffle-saffron macaroni and cheese (recipe below)</li>
	<li>8 slices apple wood smoked bacon</li>
</ul>
<h3>Instructions:</h3>
<ol>
	<li>Preheat oven to 375f.</li>
	<li>Lay bacon across the width of a loaf pan. The bacon should be long enough to drape over the sides of the pan while lying flat across the bottom. If this is unclear, see the picture below.</li>
	<li>Press a layer of meat into the bottom of the pan, on top of the bacon. This layer should fill exactly 1/3 of the loaf pan.</li>
	<li>Scoop some of the macaroni and cheese into the loaf pan, making sure to press out any air bubbles. This layer should also fill 1/3 of the loaf pan.</li>
	<li>Form a slab of meat in the approximate size and shape of the remaining 1/3 of the loaf pan. Transfer the slab to the loaf pan. Add or remove meat as necessary to ensure a snug fit.</li>
	<li>Fold strips of bacon back over the top of the meatloaf.</li>
	<li>Roast until internal temperature reads 160f.</li>
	<li>Note: It may be necessary to pull the loaf out every 30 minutes or so to drain the fat. This keeps the loaf from turning into a greasy mess.</li>
</ol>
<h2>Meatloaf Mixture</h2>
<h3>Ingredients:</h3>
<ul>
	<li>2 lbs ground meat (we used 1 lb of ground chuck, 80% lean, and 1 lb of spicy pork sausage)</li>
	<li>2 slices of wheat bread, crumbled</li>
	<li>2 eggs</li>
	<li>2 tbsp ketchup or to taste</li>
	<li>1 large clove minced garlic</li>
	<li>1 1/4 cup sliced onion (sweated)</li>
	<li>2 tbsp minced parsley</li>
	<li>Worcestershire sauce to taste</li>
	<li>Cayenne pepper to taste</li>
	<li>Salt and black pepper to taste</li>
</ul>
<h3>Instructions:</h3>
<ol>
	<li>Mix meat, eggs, breat, ketchup, garlic, parsley, Worcestershire sauce, cayenne pepper, salt, and black pepper with hands in a large bowl.</li>
	<li>Meanwhile, sweat onions until translucent but not brown. Allow onions to cool and add to meat-mixture.</li>
	<li>Cover bowl with plastic wrap and move to refrigerator.</li>
</ol>
<h2>Black Truffle-Saffron Macaroni and Cheese</h2>
<h3>Ingredients:</h3>
<ul>
	<li>1 lb elbow macaroni</li>
	<li>1 lb extra sharp cheddar cheese</li>
	<li>4 oz Romano cheese</li>
	<li>4 oz Asiago cheese</li>
	<li>8 oz organic heavy cream</li>
	<li>3 cups organic whole milk</li>
	<li>6 tbsp unsalted butter</li>
	<li>6 tbsp all-purpose flour</li>
	<li>1 small black truffle</li>
	<li>Pinch saffron threads</li>
	<li>White pepper to taste (a little goes a long way)</li>
	<li>Nutmeg to taste (just a little, always use whole nutmeg)</li>
	<li>Salt and black pepper to taste</li>
</ul>
<h3>Instructions:</h3>
<ol>
	<li>Boil macaroni in a large amount of salted water until al dente. Drain and rinse with cold water. Set aside.</li>
	<li>In a large saucepan, melt butter.</li>
	<li>Over medium-low heat, whisk flour into butter, making a roux.</li>
	<li>Whisk heavy cream and milk into roux until thoroughly combined.</li>
	<li>Add saffron.</li>
	<li>Add cheese slowly, whisking constantly. Adding the cheese too fast or slacking on the whisk will result in a gross, lumpy disaster.</li>
	<li>Add shaved truffle, nutmeg, salt, and pepper.</li>
	<li>Fold macaroni into cheese sauce.</li>
</ol>
<hr />
<a href='http://vivahate.com/2010/10/14/bacon-wrapped-meatloaf-with-black-truffle-saffron-macaroni-and-cheese/assembled/' title='assembled'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2011/03/assembled-150x150.jpg" class="attachment-thumbnail" alt="assembled" title="assembled" /></a>
<a href='http://vivahate.com/2010/10/14/bacon-wrapped-meatloaf-with-black-truffle-saffron-macaroni-and-cheese/bacon1/' title='bacon1'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2011/03/bacon1-150x150.jpg" class="attachment-thumbnail" alt="bacon1" title="bacon1" /></a>
<a href='http://vivahate.com/2010/10/14/bacon-wrapped-meatloaf-with-black-truffle-saffron-macaroni-and-cheese/bacon2/' title='bacon2'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2011/03/bacon2-150x150.jpg" class="attachment-thumbnail" alt="bacon2" title="bacon2" /></a>
<a href='http://vivahate.com/2010/10/14/bacon-wrapped-meatloaf-with-black-truffle-saffron-macaroni-and-cheese/bottom-layer/' title='bottom-layer'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2011/03/bottom-layer-150x150.jpg" class="attachment-thumbnail" alt="bottom-layer" title="bottom-layer" /></a>
<a href='http://vivahate.com/2010/10/14/bacon-wrapped-meatloaf-with-black-truffle-saffron-macaroni-and-cheese/cooking/' title='cooking'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2011/03/cooking-150x150.jpg" class="attachment-thumbnail" alt="cooking" title="cooking" /></a>
<a href='http://vivahate.com/2010/10/14/bacon-wrapped-meatloaf-with-black-truffle-saffron-macaroni-and-cheese/fingerlings/' title='fingerlings'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2011/03/fingerlings-150x150.jpg" class="attachment-thumbnail" alt="fingerlings" title="fingerlings" /></a>
<a href='http://vivahate.com/2010/10/14/bacon-wrapped-meatloaf-with-black-truffle-saffron-macaroni-and-cheese/mac-cheese/' title='mac-cheese'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2011/03/mac-cheese-150x150.jpg" class="attachment-thumbnail" alt="mac-cheese" title="mac-cheese" /></a>
<a href='http://vivahate.com/2010/10/14/bacon-wrapped-meatloaf-with-black-truffle-saffron-macaroni-and-cheese/mac-cheese-added/' title='mac-cheese-added'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2011/03/mac-cheese-added-150x150.jpg" class="attachment-thumbnail" alt="mac-cheese-added" title="mac-cheese-added" /></a>
<a href='http://vivahate.com/2010/10/14/bacon-wrapped-meatloaf-with-black-truffle-saffron-macaroni-and-cheese/meat-mixture/' title='meat-mixture'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2011/03/meat-mixture-150x150.jpg" class="attachment-thumbnail" alt="meat-mixture" title="meat-mixture" /></a>
<a href='http://vivahate.com/2010/10/14/bacon-wrapped-meatloaf-with-black-truffle-saffron-macaroni-and-cheese/meat-slab/' title='meat-slab'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2011/03/meat-slab-150x150.jpg" class="attachment-thumbnail" alt="meat-slab" title="meat-slab" /></a>
<a href='http://vivahate.com/2010/10/14/bacon-wrapped-meatloaf-with-black-truffle-saffron-macaroni-and-cheese/plated/' title='plated'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2011/03/plated-150x150.jpg" class="attachment-thumbnail" alt="plated" title="plated" /></a>
<a href='http://vivahate.com/2010/10/14/bacon-wrapped-meatloaf-with-black-truffle-saffron-macaroni-and-cheese/shaving-truffle/' title='shaving-truffle'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2011/03/shaving-truffle-150x150.jpg" class="attachment-thumbnail" alt="shaving-truffle" title="shaving-truffle" /></a>
<a href='http://vivahate.com/2010/10/14/bacon-wrapped-meatloaf-with-black-truffle-saffron-macaroni-and-cheese/top-loaf/' title='top-loaf'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2011/03/top-loaf-150x150.jpg" class="attachment-thumbnail" alt="top-loaf" title="top-loaf" /></a>
<a href='http://vivahate.com/2010/10/14/bacon-wrapped-meatloaf-with-black-truffle-saffron-macaroni-and-cheese/whisking-cheese/' title='whisking-cheese'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2011/03/whisking-cheese-150x150.jpg" class="attachment-thumbnail" alt="whisking-cheese" title="whisking-cheese" /></a>
<a href='http://vivahate.com/2010/10/14/bacon-wrapped-meatloaf-with-black-truffle-saffron-macaroni-and-cheese/sliced/' title='sliced'><img width="150" height="150" src="http://vivahate.com/wp-content/uploads/2011/03/sliced-150x150.jpg" class="attachment-thumbnail" alt="sliced" title="sliced" /></a>


<hr /><p>UPDATE: Here it is on the Today show (skip to 3:10)</p>

<object id="msnbc538df6" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="420" height="245" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="FlashVars" value="launch=33828238&amp;width=420&amp;height=245" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="wmode" value="transparent" /><param name="src" value="http://www.msnbc.msn.com/id/32545640" /><param name="name" value="msnbc538df6" /><param name="flashvars" value="launch=33828238&amp;width=420&amp;height=245" /><param name="allowfullscreen" value="true" /><embed id="msnbc538df6" type="application/x-shockwave-flash" width="420" height="245" src="http://www.msnbc.msn.com/id/32545640" name="msnbc538df6" wmode="transparent" allowfullscreen="true" allowscriptaccess="always" flashvars="launch=33828238&amp;width=420&amp;height=245"></embed></object>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2010/10/14/bacon-wrapped-meatloaf-with-black-truffle-saffron-macaroni-and-cheese/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Node.js on Mac OS X</title>
		<link>http://vivahate.com/2010/10/10/node-os-mac-os-x/</link>
		<comments>http://vivahate.com/2010/10/10/node-os-mac-os-x/#comments</comments>
		<pubDate>Mon, 11 Oct 2010 03:56:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://dev.purslane.webfactional.com/?p=322</guid>
		<description><![CDATA[Installing Node.js, NPM (Node Package Manager), and the Express framework on Mac OS X.]]></description>
			<content:encoded><![CDATA[<h2>Installation</h2>
First, install Mac OS X and Xcode.

Install <a href="http://github.com/mxcl/homebrew">Homebrew</a>:
<pre class="terminal"><code>$ sudo chown -R $USER /usr/local
$ curl -Lsf http://github.com/mxcl/homebrew/tarball/master | tar xz
  --strip 1 -C/usr/local</code></pre>
Install Node.js and Express:
<pre class="terminal"><code>$ brew install node
$ brew install npm
$ npm install express</code></pre>
Add the following to <code>~/.bash_profile</code>:
<pre class="terminal"><code>export NODE_PATH="/usr/local/lib/node/"</code></pre>
You can verify that <code>NODE_PATH</code> has been set correctly by running the <code>node</code> program and inspecting <code>require.paths</code>. You should see something like this:
<pre class="terminal"><code>$ node
&gt; require.paths
[ '/usr/local/lib/node/'
, '/Users/kyle/.node_libraries'
, '/usr/local/Cellar/node/0.2.3/lib/node'
]
&gt; require('express');
{ version: '1.0.0rc3'
, Server:
   { [Function: Server]
     super_: { [Function: Server] super_: [Object] } }
, createServer: [Function]
}</code></pre>
<h2>Sample Program</h2>
Test it out. Put the following in a file named <code>test.js</code>:
<pre class="prettyprint"><code>var express = require('express');

var app = express.createServer();

app.get('/', function (req, res) {
    res.send('Hello World');
});

app.listen(3000);</code></pre>
<h2>Run It</h2>
Run using <code>node</code>:
<pre class="terminal"><code>$ node test.js</code></pre>
And visit http://localhost:3000/ in your browser.

<a href="http://www.vivahate.com/wp-content/uploads/2010/10/nodejs-express-test-1.png"><img class="alignnone size-full wp-image-341" title="nodejs-express-test-1" src="http://www.vivahate.com/wp-content/uploads/2010/10/nodejs-express-test-1.png" alt="" width="622" height="334" /></a>
<h2>Up Next&#8230;</h2>
Here&#8217;s what we&#8217;ll be building in the next post:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="621" height="340" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/35_RIuX4LXk?fs=1&amp;hl=en_US" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="621" height="340" src="http://www.youtube.com/v/35_RIuX4LXk?fs=1&amp;hl=en_US" allowscriptaccess="always" allowfullscreen="true"></embed></object>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2010/10/10/node-os-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Node.js on WebFaction</title>
		<link>http://vivahate.com/2010/10/05/getting-started-with-node-js/</link>
		<comments>http://vivahate.com/2010/10/05/getting-started-with-node-js/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 06:31:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[node.js]]></category>

		<guid isPermaLink="false">http://dev.purslane.webfactional.com/?p=290</guid>
		<description><![CDATA[Installing Node.js on a WebFaction host.]]></description>
			<content:encoded><![CDATA[<h2>Installing Node</h2>
<p>I was able to build Node successfully on my WebFaction host using the following:</p>
<pre class="terminal"><code><span class="prompt">$</span> ./configure --jobs=1 --prefix=$HOME
<span class="prompt">$</span> make
<span class="prompt">$</span> make install</code></pre>
<p>All set</p>
<pre class="terminal"><code><span class="prompt">$</span> node --version
v0.2.3</code></pre>
<h2>Testing Node.js</h2>
<p>I created a custom app in the WebFaction control panel and mapped it to a subdomain, <code>http://node.purslane.webfactional.com/</code>.</p>

<p>I then dropped the following into a file named <code>test.js</code>:</p>

<script src="https://gist.github.com/1355054.js?file=test.js"></script>

<p>This is simply the basic HTTP server example from the Node.js website, tweaked slightly to include the port that WebFactional chose for my custom app.</p>

<p>Where you put the code isn&#8217;t important. I saved it to <code>~/webapps/node/test.js</code>. Seemed as good a place as any.</p>

<p>Running the server:</p>
<pre class="terminal"><code>$ node test.js
Server running at http://node.purslane.webfactional.com/</code></pre>
<p>Visiting the URL in my web browser resulted in the expected <code>Hello World</code> message.</p>
]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2010/10/05/getting-started-with-node-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Object Oriented JavaScript</title>
		<link>http://vivahate.com/2010/10/02/object-oriented-javascript/</link>
		<comments>http://vivahate.com/2010/10/02/object-oriented-javascript/#comments</comments>
		<pubDate>Sat, 02 Oct 2010 17:22:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://dev.purslane.webfactional.com/?p=208</guid>
		<description><![CDATA[The Constructor Invocation Pattern function Greeter(opts) { this.who = opts.who; }; Greeter.prototype.greet = function() { document.writeln("Hello " + this.who); }; var g = new Greeter({who: "Kyle"}); g.greet(); Prototypal Inheritance if(typeof Object.beget !== 'function') { Object.beget = function(o) { var F = function() {}; F.prototype = o; return new F(); }; } var greeter = { [...]]]></description>
			<content:encoded><![CDATA[<p><strong>The Constructor Invocation Pattern</strong></p>
<pre><code class="prettyprint">function Greeter(opts) {
  this.who = opts.who;
};

Greeter.prototype.greet = function() {
  document.writeln("Hello " + this.who);
};

var g = new Greeter({who: "Kyle"});

g.greet();</code></pre>
<p><strong>Prototypal Inheritance</strong></p>
<pre><code class="prettyprint">if(typeof Object.beget !== 'function') {
  Object.beget = function(o) {
    var F = function() {};
    F.prototype = o;
    return new F();
  };
}

var greeter = {
  who: "Kyle",
  greet: function() {
    document.writeln("Hello " + this.who);
  }
}

var anotherGreeter = Object.beget(greeter);
anotherGreeter.who = "Frank";
anotherGreeter.greet();</code></pre>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2010/10/02/object-oriented-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Southwest Breakfast</title>
		<link>http://vivahate.com/2010/09/28/southwest-breakfast/</link>
		<comments>http://vivahate.com/2010/09/28/southwest-breakfast/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 14:44:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://food.purslane.webfactional.com/?p=65</guid>
		<description><![CDATA[Chorizo patties and a fried egg on a thin cornmeal biscuit. With pico de gallo and avocado.]]></description>
			<content:encoded><![CDATA[<img src="http://www.vivahate.com/wp-content/uploads/2010/09/SouthwestBreakfast.jpg" alt="" title="SouthwestBreakfast" width="620" height="932" class="aligncenter size-full wp-image-426" />

Chorizo patties and a fried egg on a thin cornmeal biscuit. With pico de gallo and avocado.]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2010/09/28/southwest-breakfast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Almond Torte</title>
		<link>http://vivahate.com/2010/09/03/almond-torte-2/</link>
		<comments>http://vivahate.com/2010/09/03/almond-torte-2/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 16:25:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://food.purslane.webfactional.com/?p=46</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<img src="http://www.vivahate.com/wp-content/uploads/2010/09/almond_torte1.jpg" alt="" title="almond_torte" width="800" height="529" class="aligncenter size-full wp-image-547" />]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2010/09/03/almond-torte-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quiche</title>
		<link>http://vivahate.com/2010/06/28/quiche/</link>
		<comments>http://vivahate.com/2010/06/28/quiche/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 14:45:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://food.purslane.webfactional.com/?p=70</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<img src="http://vivahate.com/wp-content/uploads/2010/06/quiche-960x638.jpg" alt="" title="quiche" width="960" height="638" class="aligncenter size-medium wp-image-764" />

<img src="http://vivahate.com/wp-content/uploads/2010/06/quiche2-960x638.jpg" alt="" title="quiche2" width="960" height="638" class="aligncenter size-medium wp-image-765" />]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2010/06/28/quiche/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Simple Node.js TCP Server in CoffeeScript</title>
		<link>http://vivahate.com/2010/05/09/node-js-hello-world-in-coffeescript/</link>
		<comments>http://vivahate.com/2010/05/09/node-js-hello-world-in-coffeescript/#comments</comments>
		<pubDate>Sun, 09 May 2010 14:31:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[coffeescript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[node.js]]></category>

		<guid isPermaLink="false">http://dev.purslane.webfactional.com/?p=222</guid>
		<description><![CDATA[Writing a simple node.js TCP server in CoffeeScript.]]></description>
			<content:encoded><![CDATA[<h3>First Attempt</h3>
<pre><code class="prettyprint">tcp: require 'tcp'

onConnect: -&gt;
    socket.write 'hello\r\n'

onData: (data) -&gt;
    socket.write data

onEnd: -&gt;
   socket.write 'goodbye\r\n'
   socket.end()

server: tcp.createServer (socket) -&gt;
    socket.setEncoding 'utf8'
    socket.addListener 'connect', onConnect
    socket.addListener 'data', onData
    socket.addListener 'end', onEnd

server.listen 7000, 'localhost'</code></pre>
<h3>Second Attempt</h3>
<pre><code class="prettyprint">class Server
    constructor: -&gt;
        @server: tcp.createServer (socket) -&gt;
            socket.setEncoding 'utf8'
            socket.addListener 'connect', -&gt; socket.write 'hello'
            socket.addListener 'data', (data) -&gt; socket.write data
            socket.addListener 'end', -&gt; socket.write 'goodbye'
        @server.listen 8000, 'localhost'

server: new Server()</code></pre>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2010/05/09/node-js-hello-world-in-coffeescript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shrimp with Thin Spaghetti</title>
		<link>http://vivahate.com/2010/04/24/shrimp-with-thin-spaghetti/</link>
		<comments>http://vivahate.com/2010/04/24/shrimp-with-thin-spaghetti/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 14:34:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://food.purslane.webfactional.com/?p=41</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<img src="http://www.vivahate.com/wp-content/uploads/2010/04/ShrimpPasta1.jpg" alt="" title="ShrimpPasta" width="800" height="568" class="aligncenter size-full wp-image-549" />]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2010/04/24/shrimp-with-thin-spaghetti/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unsorted</title>
		<link>http://vivahate.com/2010/03/30/unsorted/</link>
		<comments>http://vivahate.com/2010/03/30/unsorted/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 12:57:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Photography]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=686</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<a href="http://vivahate.com/wp-content/uploads/2011/03/n500631958_56446_8426.jpg"><img src="http://vivahate.com/wp-content/uploads/2011/03/n500631958_56446_8426.jpg" alt="" title="Megan" width="445" height="604" class="aligncenter size-full wp-image-687" /></a>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2010/03/30/unsorted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python Decorators</title>
		<link>http://vivahate.com/2010/01/31/decorators/</link>
		<comments>http://vivahate.com/2010/01/31/decorators/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 15:24:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://dev.purslane.webfactional.com/?p=197</guid>
		<description><![CDATA[Exploring Python's decorators.]]></description>
			<content:encoded><![CDATA[<pre><code class="prettyprint">class decoratorWithoutArgs(object):
    def __init__(self, fn):
        self.fn = fn

    def __call__(self, *args):
        self.fn(*args)

class decoratorWithArgs(object):
    def __init__(self, arg):
        self.arg = arg

    def __call__(self, f):
        def wrapped(*args):
            f(*args)
        return wrapped

@decoratorWithoutArgs
def foo():
    pass

@decoratorWithArgs(10)
def bar():
    pass

if __name__ == "__main__":
    foo()
    bar()</code></pre>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2010/01/31/decorators/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nyx 0.0.1</title>
		<link>http://vivahate.com/2010/01/29/nyx/</link>
		<comments>http://vivahate.com/2010/01/29/nyx/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 01:34:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[nyx]]></category>

		<guid isPermaLink="false">http://dev.purslane.webfactional.com/?p=186</guid>
		<description><![CDATA[Nyx is a Python ctypes binding to a simple OpenGL rendering library written in C.]]></description>
			<content:encoded><![CDATA[<p>Nyx is a Python ctypes binding to a simple OpenGL rendering library written in C.</p>

<h3>Example</h3>
<script src="https://gist.github.com/1355032.js?file=demo.py"></script>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2010/01/29/nyx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nikkor 50mm on the D70</title>
		<link>http://vivahate.com/2009/12/26/nikkor-50mm-on-the-d70/</link>
		<comments>http://vivahate.com/2009/12/26/nikkor-50mm-on-the-d70/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 11:39:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Photography]]></category>

		<guid isPermaLink="false">http://vivahate.com/?p=666</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<a href="http://vivahate.com/wp-content/uploads/2011/03/dsc_5837.jpg"><img src="http://vivahate.com/wp-content/uploads/2011/03/dsc_5837-960x638.jpg" alt="" title="dsc_5837" width="960" height="638" class="aligncenter size-medium wp-image-668" /></a>

<a href="http://vivahate.com/wp-content/uploads/2011/03/dsc_5900.jpg"><img src="http://vivahate.com/wp-content/uploads/2011/03/dsc_5900-960x638.jpg" alt="" title="dsc_5900" width="960" height="638" class="aligncenter size-medium wp-image-669" /></a>

<a href="http://vivahate.com/wp-content/uploads/2011/03/dsc_5944.jpg"><img src="http://vivahate.com/wp-content/uploads/2011/03/dsc_5944-960x638.jpg" alt="" title="dsc_5944" width="960" height="638" class="aligncenter size-medium wp-image-671" /></a>

<a href="http://vivahate.com/wp-content/uploads/2011/03/50mm5.jpg"><img src="http://vivahate.com/wp-content/uploads/2011/03/50mm5-960x638.jpg" alt="" title="50mm5" width="960" height="638" class="aligncenter size-medium wp-image-667" /></a>

<a href="http://vivahate.com/wp-content/uploads/2011/03/dsc_5902.jpg"><img src="http://vivahate.com/wp-content/uploads/2011/03/dsc_5902-960x638.jpg" alt="" title="dsc_5902" width="960" height="638" class="aligncenter size-medium wp-image-670" /></a>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2009/12/26/nikkor-50mm-on-the-d70/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Extending Python with ctypes</title>
		<link>http://vivahate.com/2009/10/19/extending-python-with-ctypes/</link>
		<comments>http://vivahate.com/2009/10/19/extending-python-with-ctypes/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 18:07:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[ctypes]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.vivahate.com/?p=145</guid>
		<description><![CDATA[<p>
<a href="http://docs.python.org/library/ctypes.html">ctypes</a> is a foreign function library for Python. It provides C compatible data types, and allows calling functions in DLLs or shared libraries. It can be used to wrap these libraries in pure Python.
</p>]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://docs.python.org/library/ctypes.html">ctypes</a> is a foreign function library for Python. It provides C compatible data types, and allows calling functions in DLLs or shared libraries. It can be used to wrap these libraries in pure Python.
</p>
<p>
This tutorial assumes a Debian based GNU/Linux distribution. You may have to install <code>build-essential</code>.
</p>
<h3>Writing your shared library</h3>
<p>
We&#8217;ll start by creating our shared library. Type the following into your favorite text editor and save the file as <code>testlib.c</code>:
</p>
<code><pre class="prettyprint">const char *say_hello() {
    return "Hello, World\n";
}</pre></code>
<p>
Compile and link thusly:
</p>
<code><pre>gcc -g -c -Wall testlib.c
gcc -shared -Wl,-soname,libtestlib.so.1 -o libtestlib.so.1 testlib.o -lc</pre></code>
<p>
If you didn&#8217;t encounter any errors, you should be left with a file named <code>libtestlib.so.1</code> in the same directory as your source.
</p>
<p>
Next, you&#8217;ll want to make sure that <code>ldconfig</code> can load your library. The easiest way to do this is to create a file named <code>testlib.conf</code> in <code>/etc/ld.so.conf.d/</code> containing the path where your shared library can be found.
</p>
<p>
Run the following command to verify that <code>ldconfig</code> can see your library:
</p>
<code><pre>ldconfig -v | grep testlib</pre></code>
<p>
With luck you should see something like this:
</p>
<code><pre>/home/kyle/src/ctypes_test/testlib:
	libtestlib.so.1 -&gt; libtestlib.so.1
</pre></code>
<h3>Using your shared library with ctypes</h3>
<p>
Fire up the interactive interpreter and type the following:
</p>
<code><pre class="prettyprint">&gt;&gt;&gt; from ctypes import cdll, c_char_p
&gt;&gt;&gt; testlib = cdll.LoadLibrary('libtestlib.so.1')
&gt;&gt;&gt; testlib.say_hello.restype = c_char_p
&gt;&gt;&gt; testlib.say_hello()
Hello, World
&gt;&gt;&gt;
</pre></code>
<p>
You should, of course, see <code>Hello, World</code> displayed as the return value.
</p>
<h3>A little abstraction never hurts</h3>
<p>
Here&#8217;s a quick example of making your ctypes bindings a little easier to use:
</p>
<code><pre class="prettyprint">from ctypes import cdll, c_char_p

class TestLib:
    def __init__(self):
        self.lib = cdll.LoadLibrary("libtestlib.so.1")
        self.lib.say_hello.restype = c_char_p

    def say_hello(self):
        return self.lib.say_hello()

testlib = TestLib()
print testlib.say_hello()</pre></code>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2009/10/19/extending-python-with-ctypes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OBJ Loader</title>
		<link>http://vivahate.com/2009/10/15/obj-loader/</link>
		<comments>http://vivahate.com/2009/10/15/obj-loader/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 14:39:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.vivahate.com/?p=143</guid>
		<description><![CDATA[A minimalist and incomplete OBJ loader in Python for experiments in 3d graphics.]]></description>
			<content:encoded><![CDATA[<p>
Loads face and vertex data from .OBJ files. Doesn&#8217;t support groups, materials, texture coords, normals, etc&#8230; Not a particularly robust solution, but it&#8217;s simple and terse. This is a work in progress.
</p>
<code><pre class="prettyprint">import re

def load_obj(filename):
    verts = []
    faces = []
    f = open(filename, 'r')
    lexemizer = re.compile(r'([^\s]+)')
    for l in f.readlines():
        if l[0] == '#': continue
        tokens = lexemizer.findall(l)
        if tokens:
            if tokens[0] == 'v':
                v = [float(tokens[1]), float(tokens[2]), float(tokens[3])]
                verts.append(v)
            if tokens[0] == 'g':
                pass
            if tokens[0] == 'f':
                f = []
                for v in tokens[1:]:
                    f.append(int(v))
                faces.append(f)</pre></code>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2009/10/15/obj-loader/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rabbyt, Pymunk, and Pyglet</title>
		<link>http://vivahate.com/2009/09/15/rabbyt-pymunk-and-pyglet/</link>
		<comments>http://vivahate.com/2009/09/15/rabbyt-pymunk-and-pyglet/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 03:28:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[pyglet]]></category>
		<category><![CDATA[pymunk]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rabbyt]]></category>

		<guid isPermaLink="false">http://blog.vivahate.com/?p=64</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/1L110sG7v7g&#038;hl=en&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/1L110sG7v7g&#038;hl=en&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
</p>
<script src="https://gist.github.com/1355200.js?file=bounce.py"></script>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2009/09/15/rabbyt-pymunk-and-pyglet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An introduction to Pymunk</title>
		<link>http://vivahate.com/2009/09/14/hello-pymunk/</link>
		<comments>http://vivahate.com/2009/09/14/hello-pymunk/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 00:21:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[pymunk]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.vivahate.com/?p=41</guid>
		<description><![CDATA[In this example we create a minimal pymunk simulation. The simulation involves dropping a ball with moderate elasticity (bounce) on to a flat surface. By graphing the output we verify the results.]]></description>
			<content:encoded><![CDATA[<p>
For this tutorial, we&#8217;re putting pygame and rabbyt on the back burner and focusing our attention on pymunk. Pymunk is a pythonic wrapper around the Chipmunk 2d physics library. In this tutorial we create a simulation in which we drop a ball on to a flat surface. As the simulation runs, we periodically print the ball&#8217;s height. Graphing this value against time gives us the following:
</p>
<p>
<img src="http://www.vivahate.com/wp-content/uploads/2009/09/pymunk_bounce.png" alt="pymunk_bounce" title="pymunk_bounce" width="450" height="320" class="aligncenter size-full wp-image-96" />
</p>
<p>
Astute readers will notice that the ball seems to bounce before it hits the floor. This is influenced by the value we pass to <code>space.step</code>. Calling <code>space.step</code> with a smaller value (i.e. higher resolution) would give us a more accurate graph. Of course, assuming we ran our higher resolution simulation for the same amount of time, we&#8217;d have a lot more values to graph.
</p>
<script src="https://gist.github.com/1355265.js?file=test.py"></script>
<p>
In our next tutorial we&#8217;ll be combining pymunk, pyglet, and pygame and creating a full-fledged graphical physics simulation.
</p>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2009/09/14/hello-pymunk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Introduction to Pyglet and Rabbyt</title>
		<link>http://vivahate.com/2009/08/27/an-introduction-to-pyglet-and-rabbyt/</link>
		<comments>http://vivahate.com/2009/08/27/an-introduction-to-pyglet-and-rabbyt/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 02:38:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[pyglet]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rabbyt]]></category>

		<guid isPermaLink="false">http:/?p=1</guid>
		<description><![CDATA[A minimal program using pygame and rabbyt. Render a sprite at 60fps of OpenGL-accelerated goodness.]]></description>
			<content:encoded><![CDATA[<p>In this example we create a pyglet window and use rabbyt to display a sprite. The sprite is rendered as an OpenGL quad using an orthographic projection. Rabbyt handles setting this up for us (in <code>rabbyt.set_viewport</code>) but in a later tutorial we&#8217;ll be doing it ourselves.</p>

<script src="https://gist.github.com/1355221.js?file=test.py"></script>

<p>Obviously, the code doesn&#8217;t do much. However, this is about as small a pyglet/rabbyt program you can write, and demonstrates just how easy it is to get a sprite on the screen with rabbyt.</p>

<img src="http://www.vivahate.com/wp-content/uploads/2009/11/tut1.png" alt="tut1" title="tut1" width="642" height="499" class="alignnone size-full wp-image-156" />]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2009/08/27/an-introduction-to-pyglet-and-rabbyt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BLT</title>
		<link>http://vivahate.com/2009/05/15/blt/</link>
		<comments>http://vivahate.com/2009/05/15/blt/#comments</comments>
		<pubDate>Fri, 15 May 2009 21:27:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://food.purslane.webfactional.com/?p=55</guid>
		<description><![CDATA[Locally produced, natural hardwood smoked bacon, live lettuce, thinly sliced tomato, sliced brie, Mediterranean salsa (recipe follows), and homemade mayonnaise on fresh baked herb baguette. Recipe: Mediterranean Salsa 1 red pepper, chopped 1 yellow pepper, chopped 2 medium heirloom tomatoes, seeded and chopped 2 medium cloves garlic, minced 1/2 medium red onion, chopped 1 each [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.vivahate.com/wp-content/uploads/2010/10/dsc_6004.png" alt="" title="dsc_6004" width="800" height="532" class="aligncenter size-full wp-image-58" />

Locally produced, natural hardwood smoked bacon, live lettuce, thinly sliced tomato, sliced brie, Mediterranean salsa (recipe follows), and homemade mayonnaise on fresh baked herb baguette.

<span id="more-55"></span>
<h3>Recipe: Mediterranean Salsa</h3>
<ul>
	<li>1 red pepper, chopped</li>
	<li>1 yellow pepper, chopped</li>
	<li>2 medium heirloom tomatoes, seeded and chopped</li>
	<li>2 medium cloves garlic, minced</li>
	<li>1/2 medium red onion, chopped</li>
	<li>1 each habanero and jalapeño peppers, minced</li>
	<li>juice of 1 small lime</li>
	<li>10-20 kalamata olives, pitted and roughly chopped</li>
	<li>sundried tomatoes, roughly chopped</li>
	<li>10-20 capers, whole</li>
	<li>splash of balsamic vinegar</li>
	<li>drizzle of honey</li>
	<li>cilantro and lemon thyme, chopped</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2009/05/15/blt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cedar Planked Sockeye Salmon</title>
		<link>http://vivahate.com/2009/02/02/cedar-planked-sockeye-salmon/</link>
		<comments>http://vivahate.com/2009/02/02/cedar-planked-sockeye-salmon/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 21:25:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://food.purslane.webfactional.com/?p=52</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<img src="http://www.vivahate.com/wp-content/uploads/2010/10/sockeyesalmon-1024x680.png" alt="" title="sockeyesalmon-1024x680" width="800" height="531" class="aligncenter size-full wp-image-53" />]]></content:encoded>
			<wfw:commentRss>http://vivahate.com/2009/02/02/cedar-planked-sockeye-salmon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

