<?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>eclecticc</title>
	<atom:link href="http://eclecti.cc/feed" rel="self" type="application/rss+xml" />
	<link>http://eclecti.cc</link>
	<description></description>
	<lastBuildDate>Sat, 27 Feb 2010 18:08:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Walk This Way: Pedestrian Traffic Light Status Indicator</title>
		<link>http://eclecti.cc/hardware/walk-this-way-pedestrian-traffic-light-status-indicator</link>
		<comments>http://eclecti.cc/hardware/walk-this-way-pedestrian-traffic-light-status-indicator#comments</comments>
		<pubDate>Mon, 15 Feb 2010 01:20:24 +0000</pubDate>
		<dc:creator>nrp</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[overkill]]></category>
		<category><![CDATA[relay]]></category>

		<guid isPermaLink="false">http://eclecti.cc/?p=475</guid>
		<description><![CDATA[
A recent Slashdot post about Weird Stuff Warehouse reminded me that they carry cheap pedestrian traffic lights.  I&#8217;d been meaning to pick one up to use as a completely overkill status indicator at work.  I managed to get this one for $10.  It is a GE PS7-CFC1-01A that uses LEDs and looks new, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://eclecti.cc/files/2010/02/dontwalk.jpg"><img class="alignnone size-large wp-image-473" title="That's a disassembled Boogie Board in the background.  More on that later." src="http://eclecti.cc/files/2010/02/dontwalk-700x525.jpg" alt="Traffic Sign Status Indicator" width="700" height="525" /></a></p>
<p>A recent Slashdot post about <a href="http://www.weirdstuff.com/">Weird Stuff Warehouse</a> reminded me that they carry cheap pedestrian traffic lights.  I&#8217;d been meaning to pick one up to use as a completely overkill status indicator at work.  I managed to get this one for $10.  It is a <a href="http://www.econolite.com/docs/accessories/ge_16x18_ped_module.pdf">GE PS7-CFC1-01A</a> that uses LEDs and looks new, but was presumably dumped by the original owner because it is a basic stop/go light without a countdown timer or accessibility features.</p>
<p><a href="http://eclecti.cc/files/2010/02/powersupplies.jpg"><img class="alignnone size-large wp-image-474" title="It's just asking to be replaced by a Mooninite." src="http://eclecti.cc/files/2010/02/powersupplies-700x525.jpg" alt="Dual Power Supplies" width="700" height="525" /></a></p>
<p>There were three mystery wires coming out of the back to interface it, so I cracked it open to see what was inside.  The stop hand and walk person have independent AC-DC power supplies.  Both halves share the white neutral wire, while each has a live wire of its own.  The idea is to have the common line always connected to neutral while switching the hot line to whichever half you want lit up.  Note that there is some additional circuitry on the right and an optoisolator connecting the halves.  I believe this sign was designed such that if you attempt to power on both halves simultaneously, it will fail safe and light only the stop half.</p>
<p><a href="http://eclecti.cc/files/2010/02/relay.jpg"><img class="alignnone size-large wp-image-476" title="Try this at home, but follow the one hand rule when playing with household AC." src="http://eclecti.cc/files/2010/02/relay-700x525.jpg" alt="Traffic Sign Relay" width="700" height="525" /></a></p>
<p>People often get their hearts broken on Valentine&#8217;s Day.  Frying mine by playing with 120v AC is one way to do that.  Kidding. Household AC is fine to tinker with as long as you&#8217;re careful.  I built the circuit from the <a href="http://www.arduino.cc/playground/uploads/Main/relays.pdf">Arduino Relay</a> guide to do the switching.  I picked up a SPDT 5v power relay to make it easy to run off of the Arduino.  The transistor is still necessary because the AVR can&#8217;t drive the 100+mA the relay needs to switch itself.  I used an ATX power supply socket for convenience, rather than cutting a cable and using that.  The neutral line from the socket is soldered to the neutral line on the sign.  Each of the hot lines from the sign is connected to one of the relay throw positions, while the hot line from the socket is connected to the relay pole.  Thus, toggling a pin high or low on the Arduino will flip the hot line from one half to the other, powering either the stop or go sign on.  The project in total cost less than $20.  It probably would have been under $15, but Radioshack is the only electronics store open on Sundays.</p>
<p>The code on the Arduino end is pretty simple.  It just reads a character off the serial port and flips the relay one way or the other.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#define RELAY_PIN 13</span>
bool state<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  Serial.<span style="color: #202020;">begin</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">9600</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  state <span style="color: #339933;">=</span> LOW<span style="color: #339933;">;</span>
  pinMode<span style="color: #009900;">&#40;</span>RELAY_PIN<span style="color: #339933;">,</span> OUTPUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  digitalWrite<span style="color: #009900;">&#40;</span>RELAY_PIN<span style="color: #339933;">,</span> state<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> loop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>Serial.<span style="color: #202020;">available</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    byte in <span style="color: #339933;">=</span> Serial.<span style="color: #202020;">read</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>in <span style="color: #339933;">==</span> <span style="color: #ff0000;">'0'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      state <span style="color: #339933;">=</span> LOW<span style="color: #339933;">;</span>
      Serial.<span style="color: #202020;">println</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Switching relay to Stop.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>in <span style="color: #339933;">==</span> <span style="color: #ff0000;">'1'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      state <span style="color: #339933;">=</span> HIGH<span style="color: #339933;">;</span>
      Serial.<span style="color: #202020;">println</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Switching relay to Go.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    digitalWrite<span style="color: #009900;">&#40;</span>RELAY_PIN<span style="color: #339933;">,</span> state<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>The computer end can be whatever you want it to be.  For example, in Python, you can use <a href="http://pyserial.sourceforge.net">pySerial</a> as follows.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">import</span> serial
<span style="color: #66cc66;">&gt;&gt;&gt;</span> sign = serial.<span style="color: black;">Serial</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'/dev/ttyUSB0'</span>,<span style="color: #ff4500;">9600</span><span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> sign.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'0'</span><span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> sign.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'1'</span><span style="color: black;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://eclecti.cc/hardware/walk-this-way-pedestrian-traffic-light-status-indicator/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Easy Absolute Orientation: PNI SpacePoint Fusion in Python</title>
		<link>http://eclecti.cc/hardware/easy-absolute-orientation-pni-spacepoint-fusion-in-python</link>
		<comments>http://eclecti.cc/hardware/easy-absolute-orientation-pni-spacepoint-fusion-in-python#comments</comments>
		<pubDate>Mon, 01 Feb 2010 08:42:21 +0000</pubDate>
		<dc:creator>nrp</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[accelerometer]]></category>
		<category><![CDATA[imu]]></category>
		<category><![CDATA[magnetometer]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[spacepoint fusion]]></category>

		<guid isPermaLink="false">http://eclecti.cc/?p=414</guid>
		<description><![CDATA[
My college roommate Donnie mentioned the PNI SpacePoint Fusion in comments of the HMC5843 post, and it seemed too good to be true.  A 9 DOF controller (3 axes each of magnetometer, accelerometer, and gyro) with a Kalman filter to calculate a smooth quaternion that interfaces as a USB HID device, all for under $100.  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://eclecti.cc/files/2010/01/spacepoint.jpg"><img class="alignnone size-large wp-image-439" title="That is the cel shading tutorial from Panda3D, with the character quaternion set by the SpacePoint Fusion." src="http://eclecti.cc/files/2010/01/spacepoint-700x525.jpg" alt="SpacePoint Fusion" width="700" height="525" /></a></p>
<p>My college roommate Donnie mentioned the <a href="http://www.pnicorp.com/products/all/spacepoint-fusion">PNI SpacePoint Fusion</a> in comments of the <a href="http://eclecti.cc/hardware/hmc5843-magnetometer-library-for-arduino">HMC5843 post</a>, and it seemed too good to be true.  A 9 DOF controller (3 axes each of magnetometer, accelerometer, and gyro) with a <a href="http://en.wikipedia.org/wiki/Kalman_filter">Kalman filter</a> to calculate a smooth quaternion that interfaces as a USB HID device, all for under $100.  I&#8217;d be surprised if PNI is making any profit on it.  I sound more like a shill than I&#8217;m normally comfortable with, but I&#8217;m truly impressed with this gadget.  I have some plans for it involving a <a href="http://www.microvision.com/showwx/">Microvision SHOWWX</a> that I&#8217;m quite excited about; I&#8217;ll write more on that when it&#8217;s available in a couple of months.</p>
<p><a href="http://eclecti.cc/files/2010/01/innards.jpg"><img class="alignnone size-large wp-image-442" title="There's a mini usb port inside too, how convenient!" src="http://eclecti.cc/files/2010/01/innards-700x525.jpg" alt="SpacePoint Fusion Innards" width="700" height="525" /></a></p>
<p>PNI provides some Windows only <a href="http://www.pnicorp.com/support/downloads/spacepoint-fusion">sample apps</a> that show off how weirdly stable and precise the SpacePoint Fusion is.  Luckily, since its a normal USB HID device (redundant, I know), and PNI provides <a href="http://www.pnicorp.com/files/SpacePoint%20Fusion%20Game%20Pad%20Application%20Note.pdf">application notes</a>, it&#8217;s easy to use on any platform.  I wrote a Python module that uses <a href="http://libhid.alioth.debian.org/">libhid</a> via python-hid to make it easy to prototype with in Linux.  The usage is pretty simple, as shown below.  Note that when plugging the device in, you need to keep it still for a few seconds while the gyros are calibrated.  After that, the quaternion, accelerometer, and button data can be updated 62.5 times a second.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">import</span> spacepoint
<span style="color: #66cc66;">&gt;&gt;&gt;</span> fusion = spacepoint.<span style="color: black;">SpacePoint</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #dc143c;">repr</span><span style="color: black;">&#40;</span>fusion.<span style="color: black;">quat</span><span style="color: black;">&#41;</span>
<span style="color: black;">&#40;</span><span style="color: #ff4500;">0.987518310546875</span>, -<span style="color: #ff4500;">0.04425048828125</span>, -<span style="color: #ff4500;">0.04119873046875</span>, <span style="color: #ff4500;">0.145294189453125</span><span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #dc143c;">repr</span><span style="color: black;">&#40;</span>fusion.<span style="color: black;">accel</span><span style="color: black;">&#41;</span>
<span style="color: black;">&#40;</span>-<span style="color: #ff4500;">0.054016113354999999</span>, <span style="color: #ff4500;">0.018859863306999999</span>, -<span style="color: #ff4500;">0.89648437622400001</span><span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #dc143c;">repr</span><span style="color: black;">&#40;</span>fusion.<span style="color: black;">buttons</span><span style="color: black;">&#41;</span>
<span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> fusion.<span style="color: black;">update</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #dc143c;">repr</span><span style="color: black;">&#40;</span>fusion<span style="color: black;">&#41;</span>
accel: <span style="color: black;">&#40;</span>-<span style="color: #ff4500;">0.054016113354999999</span>, <span style="color: #ff4500;">0.018859863306999999</span>, -<span style="color: #ff4500;">0.89648437622400001</span><span style="color: black;">&#41;</span>
 quat: <span style="color: black;">&#40;</span><span style="color: #ff4500;">0.97186279296875</span>, -<span style="color: #ff4500;">0.233428955078125</span>, -<span style="color: #ff4500;">0.030548095703125</span>, <span style="color: #ff4500;">0.005401611328125</span><span style="color: black;">&#41;</span>
 buttons: <span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span></pre></div></div>

<p><strong>Update on February 7, 2010:</strong> I emailed PNI about a bug in the firmware, and got the following response:</p>
<blockquote><p>Thank you for submitting the SpacePoint bug regarding libusb, Python, and Linux.  You&#8217;re right!  There is a bug in the SpacePoint FW that prevented opening interface 1 without opening interface 0 when using libusb under Linux.  While your work around was effective in allowing the device to operate normally, one should be able to open interface 1 directly without the work around.  We were able to use your Python source code to quickly diagnose and repair the bug.  Please see the attached for the modified Python script.  Please feel free to post this paragraph, the modified code, and all bragging rights on your blog (http://eclecti.cc/).</p></blockquote>
<p>Units being shipped now have the fix.  I modified the Python module to handle units both with and without the firmware fix and bumped the version to 0.2.</p>
<p><strong>Download:<a href="http://eclecti.cc/files/2010/02/spacepoint-0.2.tar.gz"><br />
SpacePoint Python Module</a></strong> or<br />
Standalone <strong><a href="http://eclecti.cc/files/2010/01/spacepoint.py">spacepoint.py</a></strong></p>
<h3>Setting udev rules to get the permissions right</h3>
<p>In most cases, the module will just work properly.  However, if you get the following error, you probably don&#8217;t have the right permissions to access the usb device.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">import</span> spacepoint
<span style="color: #66cc66;">&gt;&gt;&gt;</span> fusion = spacepoint.<span style="color: black;">SpacePoint</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
hid_force_open failed <span style="color: #ff7700;font-weight:bold;">with</span> <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #dc143c;">code</span> 12.</pre></div></div>

<p>On most modern Linux distros, you can fix this by setting a <a href="http://reactivated.net/writing_udev_rules.html">udev rule</a> for the device.  In Ubuntu Karmic Koala, saving the following as <code>/etc/udev/rules.d/45-spacepoint.rules</code> , running <code>sudo service udev restart</code> , and then unplugging and replugging in the device should fix it:</p>

<div class="wp_syntax"><div class="code"><pre class="cmake" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># PNI SpacePoint Fusion</span>
SYSFS{idVendor}==<span style="color: #912f11;">&quot;20ff&quot;</span>, SYSFS{idProduct}==<span style="color: #912f11;">&quot;0100&quot;</span>, MODE=<span style="color: #912f11;">&quot;0664&quot;</span>, GROUP=<span style="color: #912f11;">&quot;admin&quot;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://eclecti.cc/hardware/easy-absolute-orientation-pni-spacepoint-fusion-in-python/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sleep Remaining Indicator: A Laser Alarm Clock</title>
		<link>http://eclecti.cc/hardware/sleep-remaining-indicator-a-laser-alarm-clock</link>
		<comments>http://eclecti.cc/hardware/sleep-remaining-indicator-a-laser-alarm-clock#comments</comments>
		<pubDate>Wed, 20 Jan 2010 08:15:19 +0000</pubDate>
		<dc:creator>nrp</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[chumby]]></category>
		<category><![CDATA[laser]]></category>
		<category><![CDATA[servo]]></category>

		<guid isPermaLink="false">http://eclecti.cc/?p=399</guid>
		<description><![CDATA[
The chunk of title after the colon intends to serve as an explanation of what a sleep remaining indicator is.  However, this project is neither an alarm nor a clock.  It is a visual indicator of approximately how much time I have remaining to sleep in the night.
This may not be a problem [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://eclecti.cc/files/2010/01/sleepremainingindicator.jpg"><img class="alignnone size-large wp-image-401" title="The original plan was to use an ATTiny85, but I ran out of resonators." src="http://eclecti.cc/files/2010/01/sleepremainingindicator-700x525.jpg" alt="Sleep remaining indicator" width="700" height="525" /></a></p>
<p>The chunk of title after the colon intends to serve as an explanation of what a sleep remaining indicator is.  However, this project is neither an alarm nor a clock.  It is a visual <em>indicator</em> of approximately how much time I have <em>remaining</em> to <em>sleep</em> in the night.</p>
<p>This may not be a problem you need solved.  If, however, like me you wear glasses or contacts, the world when you are in bed turns into a blurry mess.  Normally I reach over and unlock my phone or lean over and squint at my <a href="http://www.chumby.com/">Chumby One</a>, but those actions make it harder to get back to sleep.  What I wanted was a way to instantly know how much longer I could sleep before my alarm would go off.</p>
<p>My solution involves a line laser, a servo, and an Arduino.  I set a potentiometer with a number dial to approximately the right length of time in hours and hit the reset button.  The servo with the line laser attached will shine the laser line onto the ceiling.  The servo will then slowly rotate, moving the laser line underneath a cover made of Lego pieces, making the length of line showing on the ceiling shrink over the hours.  It&#8217;s a little like an hourglass, but with lasers.</p>
<p><a href="http://eclecti.cc/files/2010/01/laserline.jpg"><img class="alignnone size-large wp-image-400" title="It's being powered off the Chumby for convenience." src="http://eclecti.cc/files/2010/01/laserline-700x525.jpg" alt="Laser line" width="700" height="525" /></a></p>
<p>Here&#8217;s the Arduino sketch.  Use it under whatever license you want.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* Sleep Remaining Indicator v1.0
 * by Nirav Patel &lt;http://eclecti.cc&gt;
 */</span>
&nbsp;
<span style="color: #339933;">#include &lt;Servo.h&gt;</span>
<span style="color: #339933;">#include &lt;math.h&gt;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//#define photoPin 1</span>
<span style="color: #666666; font-style: italic;">//#define laserPin 9</span>
<span style="color: #339933;">#define potPin 0</span>
<span style="color: #339933;">#define servoPin 10</span>
<span style="color: #339933;">#define M_PI_4 (M_PI/4.0)</span>
<span style="color: #339933;">#define MINSERVO 1190 // The laser line is no longer visible</span>
<span style="color: #339933;">#define MAXSERVO 1810 // The laser line is at its longest</span>
&nbsp;
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span> startTime<span style="color: #339933;">;</span>
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span> totalTime<span style="color: #339933;">;</span>
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> lastVal<span style="color: #339933;">;</span>
Servo laserServo<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  Serial.<span style="color: #202020;">begin</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">9600</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//  pinMode(photoPin, INPUT);</span>
  pinMode<span style="color: #009900;">&#40;</span>potPin<span style="color: #339933;">,</span> INPUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// this magic converts the pot value to 0 to 9 hours in milliseconds.</span>
  totalTime <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span><span style="color: #009900;">&#41;</span><span style="color: #0000dd;">31641</span><span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1024</span><span style="color: #339933;">-</span>analogRead<span style="color: #009900;">&#40;</span>potPin<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  Serial.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'Time in hours: '</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  Serial.<span style="color: #202020;">println</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">double</span><span style="color: #009900;">&#41;</span>totalTime<span style="color: #339933;">/</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">double</span><span style="color: #009900;">&#41;</span><span style="color:#800080;">3600000.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  laserServo.<span style="color: #202020;">attach</span><span style="color: #009900;">&#40;</span>servoPin<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  startTime <span style="color: #339933;">=</span> millis<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  lastVal <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> loop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// The laser brightness should depend on the ambient light in the room.</span>
  <span style="color: #666666; font-style: italic;">// Unfortunately, my laser dislikes PWM, so I just have it hooked to 3.3v</span>
<span style="color: #666666; font-style: italic;">//  unsigned int light = analogRead(photoPin);</span>
<span style="color: #666666; font-style: italic;">//  analogWrite(laserPin,light&gt;&gt;2);</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// calculate the time we've been running (well, sleeping)</span>
  <span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span> time <span style="color: #339933;">=</span> millis<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>startTime<span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">// Note that one could use this as an alarm clock by setting off a buzzer or</span>
  <span style="color: #666666; font-style: italic;">// even having the servo rotate loudly</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>time <span style="color: #339933;">&gt;</span> totalTime<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    laserServo.<span style="color: #202020;">writeMicroseconds</span><span style="color: #009900;">&#40;</span>MINSERVO<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// This trig makes the line length shrink uniformly over time.</span>
  time <span style="color: #339933;">=</span> totalTime<span style="color: #339933;">-</span>time<span style="color: #339933;">;</span>
  <span style="color: #993333;">double</span> angle <span style="color: #339933;">=</span> atan2<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">double</span><span style="color: #009900;">&#41;</span>time<span style="color: #339933;">,</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">double</span><span style="color: #009900;">&#41;</span>totalTime<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> servoVal <span style="color: #339933;">=</span>  <span style="color: #009900;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>angle<span style="color: #339933;">/</span>M_PI_4<span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">double</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>MAXSERVO<span style="color: #339933;">-</span>MINSERVO<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span>MINSERVO<span style="color: #339933;">;</span>
&nbsp;
  servoVal <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>servoVal <span style="color: #339933;">&gt;</span> MAXSERVO<span style="color: #339933;">?</span> MAXSERVO <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span>servoVal <span style="color: #339933;">&lt;</span> MINSERVO <span style="color: #339933;">?</span> MINSERVO <span style="color: #339933;">:</span> servoVal<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">// The servo is imperfect, so don't move unless the value actually changed</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>servoVal <span style="color: #339933;">!=</span> lastVal<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    Serial.<span style="color: #202020;">println</span><span style="color: #009900;">&#40;</span>servoVal<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    laserServo.<span style="color: #202020;">writeMicroseconds</span><span style="color: #009900;">&#40;</span>servoVal<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    lastVal <span style="color: #339933;">=</span> servoVal<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// tick like a clock</span>
  delay<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://eclecti.cc/hardware/sleep-remaining-indicator-a-laser-alarm-clock/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Urban Moonshining: Home Distilling for Fun and (not) Profit</title>
		<link>http://eclecti.cc/bytes/urban-moonshining-home-distilling-for-fun-and-not-profit</link>
		<comments>http://eclecti.cc/bytes/urban-moonshining-home-distilling-for-fun-and-not-profit#comments</comments>
		<pubDate>Tue, 19 Jan 2010 07:23:04 +0000</pubDate>
		<dc:creator>nrp</dc:creator>
				<category><![CDATA[Bytes]]></category>
		<category><![CDATA[distilling]]></category>
		<category><![CDATA[homesteading]]></category>
		<category><![CDATA[moonshine]]></category>
		<category><![CDATA[rumbling]]></category>

		<guid isPermaLink="false">http://eclecti.cc/?p=394</guid>
		<description><![CDATA[
At some point in high school, my friends and I decided to learn the lost craft of home distillation.  We started with the best of intentions (well, not really), but were unable to build stills that functioned until we hit college.  Since then, we have just about perfected the process of distilling tasty, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://eclecti.cc/files/2010/01/copperstill.jpg"><img src="http://eclecti.cc/files/2010/01/copperstill-700x465.jpg" alt="Copper Pot Still" title="Just what every home needs." width="700" height="465" class="alignnone size-large wp-image-395" /></a><br />
At some point in high school, my friends and I decided to learn the lost craft of home distillation.  We started with the best of intentions (well, not really), but were unable to build stills that functioned until we hit college.  Since then, we have just about perfected the process of distilling tasty, cheap rum on a stove top.  <a href="http://rumblings.org">John Martin</a> has chronicled our steps and missteps over the years in a series of blog posts.  The first three cover <a href="http://johngmartin.wordpress.com/2010/01/03/distilling-part-1/">the background story</a>, the basics of <a href="http://johngmartin.wordpress.com/2010/01/10/distilling-part-2/">fermenting a rum wash</a>, and the general <a href="http://http://johngmartin.wordpress.com/2010/01/15/distilling-part-3/">process of distillation</a>.  The final post covers the specifics of <a href="http://johngmartin.wordpress.com/2010/01/18/diy-still/">urban moonshining</a>; that is, plans for a micro still that allows for home distilling within the confines of the average apartment.</p>
<p><a href="http://eclecti.cc/files/2010/01/stovetopstill.jpg"><img src="http://eclecti.cc/files/2010/01/stovetopstill-700x465.jpg" alt="Stove Top Still" title="You are $50 of parts and $5 of material away from a liter of rum." width="700" height="465" class="alignnone size-large wp-image-396" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://eclecti.cc/bytes/urban-moonshining-home-distilling-for-fun-and-not-profit/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Soapmaking</title>
		<link>http://eclecti.cc/bytes/soapmaking</link>
		<comments>http://eclecti.cc/bytes/soapmaking#comments</comments>
		<pubDate>Sun, 03 Jan 2010 17:57:01 +0000</pubDate>
		<dc:creator>nrp</dc:creator>
				<category><![CDATA[Bytes]]></category>
		<category><![CDATA[homesteading]]></category>
		<category><![CDATA[rumbling]]></category>

		<guid isPermaLink="false">http://eclecti.cc/?p=388</guid>
		<description><![CDATA[
Another rumbling done.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://eclecti.cc/files/2010/01/soapmaking.jpg"><img src="http://eclecti.cc/files/2010/01/soapmaking-700x525.jpg" alt="Soapmaking" title="It is bizarre that fat and highly toxic lye turn into soap." width="700" height="525" class="alignnone size-large wp-image-389" /></a><br />
<a href="http://johngmartin.wordpress.com/2010/01/02/soapmaking-part-3/">Another rumbling</a> done.</p>
]]></content:encoded>
			<wfw:commentRss>http://eclecti.cc/bytes/soapmaking/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HOWTO: Improvise Jenga</title>
		<link>http://eclecti.cc/bytes/howto-improvise-jenga</link>
		<comments>http://eclecti.cc/bytes/howto-improvise-jenga#comments</comments>
		<pubDate>Sat, 02 Jan 2010 20:17:43 +0000</pubDate>
		<dc:creator>nrp</dc:creator>
				<category><![CDATA[Bytes]]></category>
		<category><![CDATA[cookies]]></category>
		<category><![CDATA[HOWTO]]></category>
		<category><![CDATA[jenga]]></category>

		<guid isPermaLink="false">http://eclecti.cc/?p=378</guid>
		<description><![CDATA[


A brilliant idea by Meg Blake.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://eclecti.cc/files/2010/01/players.jpg"><img class="alignnone size-large wp-image-379" title="Krysse, Me, Meg, Chris." src="http://eclecti.cc/files/2010/01/players-700x466.jpg" alt="The Players" width="700" height="466" /></a><br />
<a href="http://eclecti.cc/files/2010/01/precarious.jpg"><img class="alignnone size-large wp-image-380" title="A stiff breeze would topple it." src="http://eclecti.cc/files/2010/01/precarious-700x466.jpg" alt="Precarious" width="700" height="466" /></a><br />
<a href="http://eclecti.cc/files/2010/01/destruction.jpg"><img src="http://eclecti.cc/files/2010/01/destruction-700x466.jpg" alt="Destuction" title="Check the full size and see the cookie crumbs shattering off." width="700" height="466" class="alignnone size-large wp-image-383" /></a><br />
A brilliant idea by <a href="http://megblake.wordpress.com">Meg Blake</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://eclecti.cc/bytes/howto-improvise-jenga/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tetris Gingerbread House</title>
		<link>http://eclecti.cc/videogames/tetris-gingerbread-house</link>
		<comments>http://eclecti.cc/videogames/tetris-gingerbread-house#comments</comments>
		<pubDate>Fri, 25 Dec 2009 06:32:04 +0000</pubDate>
		<dc:creator>nrp</dc:creator>
				<category><![CDATA[Video Games]]></category>
		<category><![CDATA[baking]]></category>
		<category><![CDATA[food]]></category>
		<category><![CDATA[gingerbread house]]></category>
		<category><![CDATA[rumbling]]></category>
		<category><![CDATA[tetris]]></category>
		<category><![CDATA[video games]]></category>

		<guid isPermaLink="false">http://eclecti.cc/?p=371</guid>
		<description><![CDATA[
Meg Blake, John Martin, Peter Martin, and I ported Tetris to the medium of sugar.  A full build writeup will soon be a rumbling on John&#8217;s new site, rumblings.org.
Update: John&#8217;s post is up.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://eclecti.cc/files/2009/12/tetris.jpg"><img src="http://eclecti.cc/files/2009/12/tetris-700x524.jpg" alt="Tetris Gingerbread House" title="Just a Line Piece away from perfection." width="700" height="524" class="alignnone size-large wp-image-370" /></a></p>
<p><a href="http://megblake.wordpress.com/">Meg Blake</a>, John Martin, Peter Martin, and I ported Tetris to the medium of sugar.  A full build writeup will soon be a <i>rumbling</i> on John&#8217;s new site, <a href="http://rumblings.org">rumblings.org</a>.</p>
<p><b>Update:</b> John&#8217;s post is <a href="http://johngmartin.wordpress.com/2009/12/28/gingerbread-house/">up</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://eclecti.cc/videogames/tetris-gingerbread-house/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HMC5843 Magnetometer Library for Arduino</title>
		<link>http://eclecti.cc/hardware/hmc5843-magnetometer-library-for-arduino</link>
		<comments>http://eclecti.cc/hardware/hmc5843-magnetometer-library-for-arduino#comments</comments>
		<pubDate>Mon, 16 Nov 2009 07:01:56 +0000</pubDate>
		<dc:creator>nrp</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[hmc5843]]></category>
		<category><![CDATA[i2c]]></category>
		<category><![CDATA[magnetometer]]></category>

		<guid isPermaLink="false">http://eclecti.cc/?p=344</guid>
		<description><![CDATA[
I (finally) have a project taking up the idle cycles of my brain, the first step of which involves figuring out how to use a magnetometer.  The project will eventually use the digital compass, accelerometers, perhaps a gyro, and maybe absolute forms of positioning like an IR camera.  I&#8217;m being slightly vague about this project [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://eclecti.cc/files/2009/11/hmc5843.jpg"><img class="size-large wp-image-346" title="The Arduino Pro Mini up top is what will eventually be using the magnetometer" src="http://eclecti.cc/files/2009/11/hmc5843-700x525.jpg" alt="HMC5843 and Arduino" width="700" height="525" /></a></p>
<p>I (finally) have a project taking up the idle cycles of my brain, the first step of which involves figuring out how to use a magnetometer.  The project will eventually use the digital compass, accelerometers, perhaps a gyro, and maybe absolute forms of positioning like an IR camera.  I&#8217;m being slightly vague about this project both because the idea is by far the coolest thing I&#8217;ve ever come up with and because it is still somewhat short of half baked.</p>
<p>Anyway, Honeywell recently released a rather reasonably priced three axis magnetometer, the <a href="http://www.ssec.honeywell.com/magnetic/datasheets/HMC5843.pdf" target="_blank">HMC5843</a>, which SparkFun carries a <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=9371" target="_blank">breakout board</a> for.  It interfaces over i2c, which is conveniently supported in hardware by most AVR microcontrollers, including the ones used on Arduino.  Arduino is something of paradox.  On one hard, the hardware is so simple and easy to use, vastly cutting down on the amount of time I need to spend arranging parts on a breadboard.  On the other hand, computations that should take a few operations instead call long functions that get compiled into hundreds, and the IDE makes me want to stab a stick of RAM into my jugular.  Luckily, one can mitigate the downsides by using an external editor, communicating with cutecom/minicom, and using avr-libc instead of the Arduino libraries as much as possible.  Back to the project.</p>
<p>The actual circuit is fairly simple.  Analog pins 4 and 5 on the Arduino serve as i2c&#8217;s SDA and SDC lines, respectively.  I&#8217;m using a <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=8745" target="_blank">level shifter</a> from SparkFun to get the Arduino&#8217;s 5v lines down to the 3.3v that the HMC5843 is looking for.  Note that one can skip this by using a 3.3v Arduino Pro.  The FTDI chip on the Arduino outputs 3.3v, which is brought out on the headers, allowing the level shifter and the magnetometer to be powered off the Arduino.</p>
<p>I tried using the Arduino Wire library for i2c communication, but had no luck.  Atmel made TWI, the i2c implementation on the AVR, fairly easy to use, so I read through the <a href="http://www.atmel.com/dyn/resources/prod_documents/doc2545.pdf" target="_blank">datasheet</a>, looked at some examples, and wrote my own Arduino library specifically for the HMC5843.  The current implementation is absolutely alpha, but it seems to read the x, y, and z values at 10 Hz correctly.  Note that you probably can&#8217;t use this library at the same time as Wire or another i2c library, and that it also doesn&#8217;t support having multiple i2c devices connected.  Its sole purpose is interfacing the HMC5843.  Here is an example sketch using it:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;HMC.h&gt;</span>
&nbsp;
<span style="color: #993333;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  Serial.<span style="color: #202020;">begin</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">9600</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  delay<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// The HMC5843 needs 5ms before it will communicate</span>
  HMC.<span style="color: #202020;">init</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> loop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #993333;">int</span> x<span style="color: #339933;">,</span>y<span style="color: #339933;">,</span>z<span style="color: #339933;">;</span>
  delay<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// There will be new values every 100ms</span>
  HMC.<span style="color: #202020;">getValues</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>x<span style="color: #339933;">,&amp;</span>y<span style="color: #339933;">,&amp;</span>z<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  Serial.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;x:&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  Serial.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  Serial.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot; y:&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  Serial.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span>y<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  Serial.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot; z:&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  Serial.<span style="color: #202020;">println</span><span style="color: #009900;">&#40;</span>z<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Continuing the theme of a different license for each set of code I release, this library is under a two clause BSD style license.  Please feel free to try it out and give me feedback/suggestions/patches/pedantic advice/flames.</p>
<p><strong>Download and extract into the hardware/libraries/ folder of your Arduino directory:<br />
<a href="http://eclecti.cc/files/2009/11/HMC.zip" target="_blank">HMC.zip</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://eclecti.cc/hardware/hmc5843-magnetometer-library-for-arduino/feed</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>The Greatest Feeling</title>
		<link>http://eclecti.cc/bits/the-greatest-feeling</link>
		<comments>http://eclecti.cc/bits/the-greatest-feeling#comments</comments>
		<pubDate>Sun, 16 Aug 2009 01:00:50 +0000</pubDate>
		<dc:creator>nrp</dc:creator>
				<category><![CDATA[Bits]]></category>

		<guid isPermaLink="false">http://eclecti.cc/?p=341</guid>
		<description><![CDATA[Know what the greatest feeling in the world is?  It&#8217;s when you&#8217;re going to throw away an empty pack of Gushers Fruit Snacks and discover that there is one last one hidden in the corner.
August 15, 2009 at 8:00 pm - 1 comments]]></description>
			<content:encoded><![CDATA[<p>Know what the greatest feeling in the world is?  It&#8217;s when you&#8217;re going to throw away an empty pack of Gushers Fruit Snacks and discover that there is one last one hidden in the corner.</p>
<a href="http://eclecti.cc/bits/the-greatest-feeling" rel="bookmark" class="asides-permalink" title="Permanent Link to The Greatest Feeling">August 15, 2009 at 8:00 pm - 1 comments</a>]]></content:encoded>
			<wfw:commentRss>http://eclecti.cc/bits/the-greatest-feeling/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>No Longer Being A Bum</title>
		<link>http://eclecti.cc/bytes/no-longer-being-a-bum</link>
		<comments>http://eclecti.cc/bytes/no-longer-being-a-bum#comments</comments>
		<pubDate>Tue, 28 Jul 2009 06:46:23 +0000</pubDate>
		<dc:creator>nrp</dc:creator>
				<category><![CDATA[Bytes]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[todo]]></category>

		<guid isPermaLink="false">http://eclecti.cc/?p=331</guid>
		<description><![CDATA[
http://www.flickr.com/photos/elaws/ / CC BY 2.0
As of today, I am among the ranks of the employed, at a fruit stand in Cupertino.  Two months of doing little but watching Top Gear and playing Xbox games was enough to melt off the last school year of stress and send my mind into hibernation.  I&#8217;m going to be [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://eclecti.cc/files/2009/07/oneinfiniteloop.jpg"><img class="size-large wp-image-332" title="I neglected to bring my camera.  I am beginning to understand Alyosha Efros's claim that in the future, cameras will have GPS and wireless networking, but no lens." src="http://eclecti.cc/files/2009/07/oneinfiniteloop-700x464.jpg" alt="One Infinite Loop" width="700" height="464" /></a></p>
<div align="right"><a rel="cc:attributionURL" href="http://www.flickr.com/photos/elaws/">http://www.flickr.com/photos/elaws/</a> / <a rel="license" href="http://creativecommons.org/licenses/by/2.0/">CC BY 2.0</a></div>
<div style="text-align: left;">As of today, I am among the ranks of the employed, at a fruit stand in Cupertino.  Two months of doing little but watching Top Gear and playing Xbox games was enough to melt off the last school year of stress and send my mind into hibernation.  I&#8217;m going to be doing software development for the forseeable future, but that is about as specific as I can get.</div>
<div style="text-align: left;">The Bay Area is a strange transition from Pittsburgh or southern Connecticut.  The grocery stores are devoid of italian bread and red potatoes, apparently, and nobody jaywalks.  The sunny skies and In-N-Out Burgers balance it out though.</div>
<div style="text-align: left;">Work is going to be taking up most of my time, but I&#8217;ll finally be able to afford parts for the projects I&#8217;ve been stewing on.  A list, with no timelines attached, of what I want to do:</div>
<div style="text-align: left;">
<ul>
<li>Build a laser projector to augment a cloudy night sky.  The plan here was to laser project stars, satellites, and other heavenly bodies onto the clouds in Pittsburgh, since nobody would be able to see them otherwise.  I don&#8217;t think the weather will work for that in the Bay Area, but I could still project onto a ceiling or something.</li>
<li>Implement a pretty basic portion of Johnny C. Lee&#8217;s <a href="http://johnnylee.net/projects/thesis/" target="_blank">thesis</a>.</li>
<li>Add Windows support to the camera module in <a href="http://www.pygame.org/" target="_blank">Pygame</a>.  Linux support for webcams is finally being released with Pygame 1.9 fairly soon.  <a href="http://abeocracy.tumblr.com/" target="_blank">Werner Laurensse</a> is working on an OS X implementation for 1.9.1.  It would be a bit strange to leave out perhaps the largest portion of Pygame&#8217;s audience.</li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://eclecti.cc/bytes/no-longer-being-a-bum/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
