<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Eightlines Creations</title>
	
	<link>http://www.eightlines.com/blog</link>
	<description>Experiments in Physical Computing</description>
	<lastBuildDate>Wed, 09 Jun 2010 19:09:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Eightlines" /><feedburner:info uri="eightlines" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Three20 TTTableViewController commitEditingStyle</title>
		<link>http://feedproxy.google.com/~r/Eightlines/~3/JVsXm2hbBs8/</link>
		<comments>http://www.eightlines.com/blog/2010/06/three20-tttableviewcontroller-commiteditingstyle/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 19:07:59 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[ObjectiveC]]></category>
		<category><![CDATA[Three20]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[ObjC]]></category>

		<guid isPermaLink="false">http://www.eightlines.com/blog/?p=239</guid>
		<description><![CDATA[This post is mostly for my future reference. I found the documentation of the TTTableViewController's commitEditingStyle to be lacking. Some of the comments on StackOverflow provide the right answer, but the code wasn't posted so I struggled for a bit. Below is an example of the version I managed to get running.]]></description>
			<content:encoded><![CDATA[<p>This post is mostly for my future reference. I found the documentation of the TTTableViewController&#8217;s commitEditingStyle to be lacking. Some of the comments on StackOverflow provide the right answer, but the code wasn&#8217;t posted so I struggled for a bit. Below is an example of the version I managed to get&nbsp;running.</p>
<p><strong>TestDataSource.h:</strong></p>
<pre class="actionscript">&nbsp;
@<span style="color: #0066CC;">interface</span> TestDataSource : TTListDataSource
    &lt;uitableviewdatasource , TTModelDelegate&gt; <span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span>
&nbsp;
- <span style="color: #66cc66;">&#40;</span>NSInteger<span style="color: #66cc66;">&#41;</span>tableView:<span style="color: #66cc66;">&#40;</span>UITableView *<span style="color: #66cc66;">&#41;</span>table
    numberOfRowsInSection:<span style="color: #66cc66;">&#40;</span>NSInteger<span style="color: #66cc66;">&#41;</span>section;
- <span style="color: #66cc66;">&#40;</span>UITableViewCell *<span style="color: #66cc66;">&#41;</span>tableView:<span style="color: #66cc66;">&#40;</span>UITableView *<span style="color: #66cc66;">&#41;</span>tableView
    cellForRowAtIndexPath:<span style="color: #66cc66;">&#40;</span>NSIndexPath *<span style="color: #66cc66;">&#41;</span>indexPath;
- <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#41;</span>tableView:<span style="color: #66cc66;">&#40;</span>UITableView *<span style="color: #66cc66;">&#41;</span>tableView
    commitEditingStyle:<span style="color: #66cc66;">&#40;</span>UITableViewCellEditingStyle<span style="color: #66cc66;">&#41;</span>editingStyle
    forRowAtIndexPath:<span style="color: #66cc66;">&#40;</span>NSIndexPath *<span style="color: #66cc66;">&#41;</span>indexPath;
&nbsp;
@end&lt;/uitableviewdatasource&gt;</pre>
<p><strong>TestDataSource.m</strong></p>
<pre class="actionscript">&nbsp;
<span style="color: #808080; font-style: italic;">#import &quot;TableTest.h&quot;</span>
&nbsp;
@implementation TableTest
&nbsp;
- <span style="color: #66cc66;">&#40;</span>id<span style="color: #66cc66;">&#41;</span>init
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>self = <span style="color: #66cc66;">&#91;</span><span style="color: #0066CC;">super</span> init<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#123;</span>
        UIBarButtonItem *rightButton = <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#91;</span>UIBarButtonItem alloc<span style="color: #66cc66;">&#93;</span>
            initWithTitle:@<span style="color: #ff0000;">&quot;Edit&quot;</span>
            style:UIBarButtonSystemItemEdit
            <span style="color: #0066CC;">target</span>:self
            action:@selector<span style="color: #66cc66;">&#40;</span>toggleEdit<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span>
        autorelease<span style="color: #66cc66;">&#93;</span>;
        self.<span style="color: #006600;">navigationItem</span>.<span style="color: #006600;">rightBarButtonItem</span> = rightButton;
        self.<span style="color: #006600;">title</span> = @<span style="color: #ff0000;">&quot;Table Test&quot;</span>;
        NSArray *items = <span style="color: #66cc66;">&#91;</span>NSArray arrayWithObjects:
            <span style="color: #66cc66;">&#91;</span>TTTableTextItem itemWithText:@<span style="color: #ff0000;">&quot;Item 1&quot;</span><span style="color: #66cc66;">&#93;</span>,
            <span style="color: #66cc66;">&#91;</span>TTTableTextItem itemWithText:@<span style="color: #ff0000;">&quot;Item 2&quot;</span><span style="color: #66cc66;">&#93;</span>,
            <span style="color: #66cc66;">&#91;</span>TTTableTextItem itemWithText:@<span style="color: #ff0000;">&quot;Item 3&quot;</span><span style="color: #66cc66;">&#93;</span>,
            nil
        <span style="color: #66cc66;">&#93;</span>;
        self.<span style="color: #006600;">dataSource</span> = <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#91;</span>TestDataSource alloc<span style="color: #66cc66;">&#93;</span> initWithItems:items<span style="color: #66cc66;">&#93;</span>;
        self.<span style="color: #006600;">tableView</span>.<span style="color: #006600;">delegate</span> = self;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #b1b100;">return</span> self;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
- <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#41;</span>toggleEdit
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #66cc66;">&#91;</span>self.<span style="color: #006600;">tableView</span> setEditing:!self.<span style="color: #006600;">tableView</span>.<span style="color: #006600;">editing</span> animated:<span class="caps">YES</span><span style="color: #66cc66;">&#93;</span>;
    NSString *label = self.<span style="color: #006600;">tableView</span>.<span style="color: #006600;">editing</span> == <span class="caps">YES</span> ? @<span style="color: #ff0000;">&quot;Done&quot;</span> : @<span style="color: #ff0000;">&quot;Edit&quot;</span>;
    self.<span style="color: #006600;">navigationItem</span>.<span style="color: #006600;">rightBarButtonItem</span> = <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#91;</span>UIBarButtonItem alloc<span style="color: #66cc66;">&#93;</span>
        initWithTitle:label
        style:UIBarButtonSystemItemEdit
        <span style="color: #0066CC;">target</span>:self
        action:@selector<span style="color: #66cc66;">&#40;</span>toggleEdit<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span>
    autorelease<span style="color: #66cc66;">&#93;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#pragma mark -</span>
<span style="color: #808080; font-style: italic;">#pragma mark TTTableViewDelegate</span>
&nbsp;
- <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#41;</span>tableView:<span style="color: #66cc66;">&#40;</span>UITableView*<span style="color: #66cc66;">&#41;</span>tableView
    touchesBegan:<span style="color: #66cc66;">&#40;</span>NSSet*<span style="color: #66cc66;">&#41;</span>touches withEvent:<span style="color: #66cc66;">&#40;</span>UIEvent*<span style="color: #66cc66;">&#41;</span>event
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #66cc66;">&#91;</span><span style="color: #0066CC;">super</span> touchesBegan:touches withEvent:event<span style="color: #66cc66;">&#93;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
- <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#41;</span>tableView:<span style="color: #66cc66;">&#40;</span>UITableView*<span style="color: #66cc66;">&#41;</span>tableView
    touchesEnded:<span style="color: #66cc66;">&#40;</span>NSSet*<span style="color: #66cc66;">&#41;</span>touches withEvent:<span style="color: #66cc66;">&#40;</span>UIEvent*<span style="color: #66cc66;">&#41;</span>event
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #66cc66;">&#91;</span><span style="color: #0066CC;">super</span> touchesEnded:touches withEvent:event<span style="color: #66cc66;">&#93;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
@<span style="color: #0066CC;">end</span>
&nbsp;
@implementation TestDataSource
&nbsp;
- <span style="color: #66cc66;">&#40;</span>NSInteger<span style="color: #66cc66;">&#41;</span>tableView:<span style="color: #66cc66;">&#40;</span>UITableView *<span style="color: #66cc66;">&#41;</span>table
    numberOfRowsInSection:<span style="color: #66cc66;">&#40;</span>NSInteger<span style="color: #66cc66;">&#41;</span>section
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #66cc66;">&#91;</span><span style="color: #0066CC;">super</span> tableView:table numberOfRowsInSection:section<span style="color: #66cc66;">&#93;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
- <span style="color: #66cc66;">&#40;</span>UITableViewCell *<span style="color: #66cc66;">&#41;</span>tableView:<span style="color: #66cc66;">&#40;</span>UITableView *<span style="color: #66cc66;">&#41;</span>tableView
    cellForRowAtIndexPath:<span style="color: #66cc66;">&#40;</span>NSIndexPath *<span style="color: #66cc66;">&#41;</span>indexPath
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #66cc66;">&#91;</span><span style="color: #0066CC;">super</span> tableView:tableView cellForRowAtIndexPath:indexPath<span style="color: #66cc66;">&#93;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
- <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#41;</span>tableView:<span style="color: #66cc66;">&#40;</span>UITableView *<span style="color: #66cc66;">&#41;</span>tableView
    commitEditingStyle:<span style="color: #66cc66;">&#40;</span>UITableViewCellEditingStyle<span style="color: #66cc66;">&#41;</span>editingStyle
    forRowAtIndexPath:<span style="color: #66cc66;">&#40;</span>NSIndexPath *<span style="color: #66cc66;">&#41;</span>indexPath
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>editingStyle == UITableViewCellEditingStyleDelete<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#123;</span>
        <span style="color: #66cc66;">&#91;</span>self.<span style="color: #006600;">items</span> removeObjectAtIndex:indexPath.<span style="color: #006600;">row</span><span style="color: #66cc66;">&#93;</span>;
        NSArray *objects = <span style="color: #66cc66;">&#91;</span>NSArray arrayWithObjects:indexPath, nil<span style="color: #66cc66;">&#93;</span>;
        <span style="color: #66cc66;">&#91;</span>tableView deleteRowsAtIndexPaths:objects
            withRowAnimation:UITableViewRowAnimationBottom<span style="color: #66cc66;">&#93;</span>;
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
@<span style="color: #0066CC;">end</span>
&nbsp;</pre>
<img src="http://feeds.feedburner.com/~r/Eightlines/~4/JVsXm2hbBs8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://js-kit.com/rss/eightlines.com/blog/p=239</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.eightlines.com/blog/2010/06/three20-tttableviewcontroller-commiteditingstyle/</feedburner:origLink></item>
		<item>
		<title>TGIMBOEJ</title>
		<link>http://feedproxy.google.com/~r/Eightlines/~3/TCODW4PzMLI/</link>
		<comments>http://www.eightlines.com/blog/2009/09/tgimboej/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 01:58:38 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
				<category><![CDATA[Found]]></category>

		<guid isPermaLink="false">http://www.eightlines.com/blog/?p=215</guid>
		<description><![CDATA[The Great Internet Migratory Box of Electronics Junk (TGIMBOEJ) is a box. It&#8217;s a box that arrives on your doorstep after you drop your name on a wiki page and wait a good deal of time. It&#8217;s a box that has electronics junk inside and it works off the premise that it could be someone [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Received! One TGIMBOEJ by Eightlines, on Flickr" href="http://www.flickr.com/photos/eightlines/3859883317/"><img class="alignleft" src="http://farm3.static.flickr.com/2635/3859883317_81e5361c8b_m.jpg" alt="Received! One TGIMBOEJ" width="180" height="240" /></a><a title="TGIMBOEJ" href="http://www.tgimboej.org/" target="_blank">The Great Internet Migratory Box of Electronics Junk</a> (<span class="caps">TGIMBOEJ</span>) is a box. It&#8217;s a box that arrives on your doorstep after you drop your name on a wiki page and wait a good deal of time. It&#8217;s a box that has electronics junk inside and it works off the premise that it could be someone else&#8217;s treasure. Find something of interest? Keep it, and drop in some other interesting&nbsp;item.</p>
<p>I received the <a title="Blue Bomber Tracker" href="http://www.tgimboej.org/Box_Code:_Blue_Bomber" target="_blank">Blue Bomber</a> <span class="caps">TGIMBOEJ</span> the other day from Grant (check out his blog at <a title="Splorp" href="http://www.splorp.com/2009/09/junk-in-box.html" target="_blank">Splorp</a>) and quickly opened it up to see what treasure was&nbsp;inside.</p>
<ul>
<li>Bubbl<a title="#TGIMBOEJ - Should I make a Mousebot? by Eightlines, on Flickr" href="http://www.flickr.com/photos/eightlines/3860175751/"><img class="alignright" src="http://farm4.static.flickr.com/3571/3860175751_4a5fce2b57_m.jpg" alt="#TGIMBOEJ - Should I make a Mousebot?" width="180" height="240" /></a>e wrap (My daughter took some to&nbsp;pop)</li>
<li>Barbie digital camera (<span class="caps">1MP</span>? Useful for sending up a kite for some&nbsp;<span class="caps">KAP</span>?)</li>
<li>Classic Apple IIe mouse (Taken, going to build a&nbsp;<a title="Instructable: Mousebot" href="http://www.instructables.com/id/Mousebot-Revisited/" target="_blank">Mousebot</a>)</li>
<li>Momentary push buttons (I took two, I&#8217;m always short of&nbsp;them)</li>
<li>Incandescent indicator lamps (these could be worth something some&nbsp;day!)</li>
<li>Male-Female <span class="caps">SCSI</span> adapter (I&#8217;m guessing? Been a while since I&#8217;ve seen&nbsp;one.)</li>
<li>Soldering Iron&nbsp;Tip</li>
<li>Audio jack signal&nbsp;adapter</li>
<li>Servos</li>
<li>Printer control&nbsp;board</li>
<li>Potentiometers <span class="amp">&amp;</span> Control&nbsp;boards</li>
<li>Digital Media&nbsp;Players</li>
<li>Linksys&nbsp;Router</li>
<li>Multi-pin switches (I took 3, but there&#8217;s 7&nbsp;left)</li>
</ul>
<p style="text-align: center;">
<p>And in the spirit of sharing, I&#8217;m dropping in a Solenoid left over from my <a title="Solenoid Project" href="http://www.eightlines.com/blog/2008/08/passing-the-kid-test/" target="_self">Water Fountain</a> experiments from last summer, some pin headers, and a section of&nbsp;<a title="Pixelboard" href="http://www.eightlines.com/blog/2008/05/treasure-hunting-at-the-surplus-store/" target="_self">pixelboard</a>.</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/eightlines/2519225049/"><img class="alignleft" title="Pixelboard" src="http://farm3.static.flickr.com/2249/2519225049_dd62536f12_m.jpg" alt="" width="216" height="162" /></a><a href="http://farm4.static.flickr.com/3189/2632937440_6d63808e61_m.jpg"><img class="aligncenter" title="Solenoid" src="http://farm4.static.flickr.com/3189/2632937440_6d63808e61_m.jpg" alt="" width="216" height="162" /></a></p>
<p>I&#8217;m due to send the box out to the next person on the list tomorrow, but if you want to participate, add your name to <a title="TGIMBOEJ Participant list" href="http://www.tgimboej.org/Box_Requests" target="_blank">the list</a>! One more tip: even if you don&#8217;t want to participate, check out the list for some excellent blogs <span class="amp">&amp;</span> projects. There&#8217;s a ton of cool projects going&nbsp;on.</p>
<img src="http://feeds.feedburner.com/~r/Eightlines/~4/TCODW4PzMLI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://js-kit.com/rss/eightlines.com/blog/p=215</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.eightlines.com/blog/2009/09/tgimboej/</feedburner:origLink></item>
		<item>
		<title>Power Monitor Packet</title>
		<link>http://feedproxy.google.com/~r/Eightlines/~3/xSCneQiMfZ0/</link>
		<comments>http://www.eightlines.com/blog/2009/08/power-monitor-packet/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 01:17:44 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
				<category><![CDATA[Ideas]]></category>

		<guid isPermaLink="false">http://www.eightlines.com/blog/?p=212</guid>
		<description><![CDATA[As Hugo helpfully commented in a previous post, here is the link to the Power Monitor Patent. The specific page I&#8217;m linking to is the Packet model. Lots of reading to do here, but its pretty&#160;interesting. One of the things I find most interesting about this patent is the citations dating back to 1977. Definitely [...]]]></description>
			<content:encoded><![CDATA[<p>As Hugo helpfully commented in a previous post, here is the link to the <a title="Power Monitor Patent" href="http://www.google.ca/patents?id=LKGoAAAAEBAJ&amp;zoom=4&amp;pg=PA6#v=onepage&amp;q=&amp;f=false" target="_blank">Power Monitor Patent</a>. The specific page I&#8217;m linking to is the Packet model. Lots of reading to do here, but its pretty&nbsp;interesting.</p>
<p>One of the things I find most interesting about this patent is the citations dating back to 1977. Definitely not a cutting edge technology we&#8217;re working with here. If the 1977 patent was the byproduct of the &#8217;70s energy crisis what inventions will we see as a byproduct of our current energy&nbsp;phase?</p>
<img src="http://feeds.feedburner.com/~r/Eightlines/~4/xSCneQiMfZ0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://js-kit.com/rss/eightlines.com/blog/p=212</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.eightlines.com/blog/2009/08/power-monitor-packet/</feedburner:origLink></item>
		<item>
		<title>Building a Scooter Bike for Kids</title>
		<link>http://feedproxy.google.com/~r/Eightlines/~3/uJ9l1FuILBo/</link>
		<comments>http://www.eightlines.com/blog/2009/07/building-a-scooter-bike-for-kids/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 02:28:10 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
				<category><![CDATA[Ideas]]></category>

		<guid isPermaLink="false">http://www.eightlines.com/blog/?p=205</guid>
		<description><![CDATA[Ages ago I bookmarked a design posted on Make for a Scooter Bike, as I intended on building one when my daughter got old enough. On a recent trip to the surplus store I picked up a wheelset for $3 and figured what better time to start than now. I found furniture grade plywood on [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Scooter Bike" href="http://twitpic.com/atmvn"><img class="alignleft" src="http://twitpic.com/show/thumb/atmvn.jpg" alt="Share photos on twitter with Twitpic" width="150" height="150" /></a>Ages ago I <a title="Crumley Coaster Bike Plans" href="http://crumleydotorg.chattablogs.com/archives/038834.html" target="_blank">bookmarked a design</a> posted on Make for a Scooter Bike, as I intended on building one when my daughter got old enough. On a recent trip to the surplus store I picked up a wheelset for $3 and figured what better time to start than now. I found furniture grade plywood on a neighbour&#8217;s front yard ready for the trash. Screws, Nuts <span class="amp">&amp;</span> Bolts cost&nbsp;~$10.</p>
<p>Now this design appears to be based on a European design, and around this end of the globe we have <a title="Like-a-Bike" href="http://store.likeabikeusa.com/merchant2/merchant.mvc?Screen=main&amp;Store_Code=L&amp;Category_Code=BIKES" target="_blank">Like-a-Bike</a> which look very similar. The $300 price tag was a bit steep, and since I had all of the parts in the shop I decided I could build it myself. The whole project took about a week when you take in all of the trial and error that went on. A more competent woodworker could probably do it in much less time. All in all, it made me further appreciate the subtleties of the Like-a-Bike&nbsp;design.</p>
<p><a title="Front Fork Design" href="http://twitpic.com/9yhuf"><img class="alignleft" src="http://twitpic.com/show/thumb/9yhuf.jpg" alt="Front Fork Design" width="150" height="150" /></a><a title="Share photos on twitter with Twitpic" href="http://twitpic.com/a5j2o"><img class="alignright" src="http://twitpic.com/show/thumb/a5j2o.jpg" alt="Share photos on twitter with Twitpic" width="150" height="150" /></a>Initially, I went with the design in the <span class="caps">PDF</span> file which included front forks cut out of a single block of wood (Left image). This became problematic when I noticed the axle would have to be thinner and the design gave less flexibility when manipulating the headset. I soon went to a different design (Right image) which ended up being more rigid, and easier to modify as the design changed. In the end I also managed to shim in a spring to act as a rudimentary shock. Instead of adding spacers to the front wheel I pulled the axle in far enough to bend the forks. It seems to add a nice bit of curve to the&nbsp;design.</p>
<p><a title="Share photos on twitter with Twitpic" href="http://twitpic.com/ae76o"><img class="alignleft" src="http://twitpic.com/show/thumb/ae76o.jpg" alt="Share photos on twitter with Twitpic" width="150" height="150" /></a>Looking at other wooden bike designs it appears 1/8&#8221; plywood would have probably done the trick. I used 1/2&#8221; plywood which was probably overkill. This adds to the weight, but my daughter can still manage it easily. The edges are routed to give a nice curve, and to avoid splinters. It also added a really nice effect to the edges. I&#8217;m looking forward to seeing the varnish go on. In this image you can also see how the rear wheel fits between the body. I had to sand the plywood down to provide an allowance for the rear wheel to spin freely. To stop the rear axle bolts from loosening, use a nylon threaded&nbsp;nut.</p>
<p><a title="Share photos on twitter with Twitpic" href="http://twitpic.com/ai26e"><img class="alignright" src="http://twitpic.com/show/thumb/ai26e.jpg" alt="Share photos on twitter with Twitpic" width="150" height="150" /></a><a title="Share photos on twitter with Twitpic" href="http://twitpic.com/b6eg4"><img class="alignleft" src="http://twitpic.com/show/thumb/b6eg4.jpg" alt="Share photos on twitter with Twitpic" width="150" height="150" /></a>The handlebars were simply cut and sanded down to the final rounded off shape. I also had to modify the front forks to give a larger turning radius. Sanding the inside edge of the fork provided about 20° to each side. The headset also had to be reinforced with more screws, I&#8217;d recommend putting countersunk bolts right through the frame. The first time the bike dropped to the floor the threads stripped the plywood. I&#8217;m hoping more screws would stop this from happening next&nbsp;time.</p>
<p>This was a pretty fun build that could be completed with some simple tools. I used a band saw, belt sander, router, and drill press. You could do this project with much less if you wanted to. You could also supplement the design with a kick stand, bell, streamers, or&nbsp;carrier.</p>
<img src="http://feeds.feedburner.com/~r/Eightlines/~4/uJ9l1FuILBo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://js-kit.com/rss/eightlines.com/blog/p=205</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.eightlines.com/blog/2009/07/building-a-scooter-bike-for-kids/</feedburner:origLink></item>
		<item>
		<title>Arduino Packet Analyzer</title>
		<link>http://feedproxy.google.com/~r/Eightlines/~3/zD8NdBudD10/</link>
		<comments>http://www.eightlines.com/blog/2009/06/arduino-packet-analyzer/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 02:29:37 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
				<category><![CDATA[Ideas]]></category>

		<guid isPermaLink="false">http://www.eightlines.com/blog/?p=177</guid>
		<description><![CDATA[Following the previous success where we managed to see the transmissions from the Black &#38; Decker Power Monitor, Andrew Kilpatrick and I went about trying to capture the packets. Without an access to an oscilloscope with packet capture capabilities we built our own with an&#160;Arduino. Essentially, the code waits for the Power Monitor to transmit [...]]]></description>
			<content:encoded><![CDATA[<p>Following the <a title="Black and Decker Power Monitor Hack" href="http://www.eightlines.com/blog/2009/06/black-decker-power-monitor-hack/" target="_self">previous success</a> where we managed to see the transmissions from the Black <span class="amp">&amp;</span> Decker <a title="Black and Decker Power Monitor" href="http://www.blackanddecker.com/Energy/products.aspx" target="_blank">Power Monitor</a>, <a title="Andrew Kilpatrick Blog" href="http://www.andrewkilpatrick.org/" target="_blank">Andrew Kilpatrick</a> and I went about trying to capture the packets. Without an access to an oscilloscope with packet capture capabilities we built our own with an&nbsp;Arduino.</p>
<p>Essentially, the code waits for the Power Monitor to transmit the packet. When it detects a signal it spins up to a 100 microsecond delay and captures the bytes. These bytes are stored to the internal memory. When the packet is finished, it dumps the data to the Serial Monitor and waits for the next&nbsp;packet.</p>
<pre class="c"><span style="color: #808080; font-style: italic;">/**
 * Packet Analyzer
 *
 * Project documented at:
 * http://www.eightlines.com/blog/2009/04/arduino-packet-analyzer/
 *
 * Many thanks to Andrew Kilpatrick:
 * http://andrewkilpatrick.org/blog/
 *
 * Captures &amp;amp; logs incoming packets in <span class="caps">HEX</span> format.
 * Digital signal is <span class="caps">HIGH</span> and drops to <span class="caps">LOW</span> when transmitting.
 * Accepts digital input on Digital Pin 8.
 */</span>
&nbsp;
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> buff<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">128</span><span style="color: #66cc66;">&#93;</span>; <span style="color: #808080; font-style: italic;">//Create a buffer array to insert bytes</span>
<span style="color: #993333;">int</span> bufferLength = <span style="color: #cc66cc;">128</span>;
&nbsp;
<span style="color: #993333;">void</span> setup<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
  Serial.<span style="color: #202020;">begin</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">115200</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">//Invoke serial connection</span>
&nbsp;
  <span style="color: #808080; font-style: italic;">//Set input based on port registers</span>
  <span style="color: #808080; font-style: italic;">//Refers to Digital Pin 8</span>
  <span style="color: #808080; font-style: italic;">//http://arduino.cc/en/Reference/PortManipulation</span>
  <span class="caps">DDRB</span> = <span class="caps">DDRB</span> | B11111110; <span style="color: #808080; font-style: italic;">//Data Direction Register</span>
  <span class="caps">PORTB</span> = 0xFF; <span style="color: #808080; font-style: italic;">//Port B Register</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> loop<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
  <span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> tempByte; <span style="color: #808080; font-style: italic;">//Temporary Byte</span>
&nbsp;
  <span style="color: #808080; font-style: italic;">//while (<span class="caps">PORTB</span> &amp;amp; 0x01); //Not functioning as expected</span>
  <span style="color: #b1b100;">while</span> <span style="color: #66cc66;">&#40;</span>digitalRead<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">8</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">//While <span class="caps">HIGH</span> idle</span>
&nbsp;
  <span style="color: #808080; font-style: italic;">//<span class="caps">LOW</span> transmitted enter For Loop</span>
  <span style="color: #808080; font-style: italic;">//Repeat loop for each byte in bufferLength</span>
  <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> b = <span style="color: #cc66cc;">0</span>; b &amp;lt; bufferLength; b++<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#123;</span>
    tempByte = <span style="color: #cc66cc;">0</span>; <span style="color: #808080; font-style: italic;">//Reset temporary byte</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">//Loop for each bit</span>
    <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">char</span> bit = <span style="color: #cc66cc;">0</span>; bit &amp;lt; <span style="color: #cc66cc;">8</span>; bit++<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#123;</span>
      tempByte = tempByte &amp;lt;&amp;lt; <span style="color: #cc66cc;">1</span>; <span style="color: #808080; font-style: italic;">//Shift previous bit</span>
      tempByte = tempByte &amp;amp; 0xfe;
      <span style="color: #808080; font-style: italic;">//tempByte = tempByte | (<span class="caps">PORTB</span> &amp;amp; 0x01); //Not functioning as expected</span>
      tempByte = tempByte | <span style="color: #66cc66;">&#40;</span>digitalRead<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">8</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">//Incoming value</span>
      delayMicroseconds<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">//Oversampled delay - can be adjusted based on speed of packet</span>
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
    buff<span style="color: #66cc66;">&#91;</span>b<span style="color: #66cc66;">&#93;</span> = tempByte; <span style="color: #808080; font-style: italic;">//Write byte to buffer</span>
  <span style="color: #66cc66;">&#125;</span>
&nbsp;
  <span style="color: #808080; font-style: italic;">//Write buffer to Serial connection</span>
  Serial.<span style="color: #202020;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;<span class="caps">SOH</span>&quot;</span><span style="color: #66cc66;">&#41;</span>;
  <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> b = <span style="color: #cc66cc;">0</span>; b &amp;lt; <span style="color: #cc66cc;">128</span>; b++<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#123;</span>
    Serial.<span style="color: #202020;">print</span><span style="color: #66cc66;">&#40;</span>buff<span style="color: #66cc66;">&#91;</span>b<span style="color: #66cc66;">&#93;</span>, <span class="caps">HEX</span><span style="color: #66cc66;">&#41;</span>;
    Serial.<span style="color: #202020;">print</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot; &quot;</span><span style="color: #66cc66;">&#41;</span>;
  <span style="color: #66cc66;">&#125;</span>
  Serial.<span style="color: #202020;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #66cc66;">&#41;</span>;
  Serial.<span style="color: #202020;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;<span class="caps">EOT</span>&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre>
<p>This code will produce a <span class="caps">HEX</span> output of the signal. Convert this to bytes and map the data to high (-) and lows (_). [I&#8217;m an Flash developer by day, so the code below is in&nbsp;ActionScript]</p>
<pre class="c">public <span style="color: #000000; font-weight: bold;">function</span> HexInterpreter<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
   var hexArray:Array = hex.<span style="color: #202020;">split</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot; &quot;</span><span style="color: #66cc66;">&#41;</span>;
   hexArray.<span style="color: #202020;">forEach</span><span style="color: #66cc66;">&#40;</span>appendHex<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
protected <span style="color: #000000; font-weight: bold;">function</span> appendHex<span style="color: #66cc66;">&#40;</span>element:*, index:<span style="color: #993333;">int</span>, arr:Array<span style="color: #66cc66;">&#41;</span>:<span style="color: #993333;">void</span>
<span style="color: #66cc66;">&#123;</span>
   arr<span style="color: #66cc66;">&#91;</span>index<span style="color: #66cc66;">&#93;</span> = uint<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;0x&quot;</span> + element<span style="color: #66cc66;">&#41;</span>;
   trace<span style="color: #66cc66;">&#40;</span>arr<span style="color: #66cc66;">&#91;</span>index<span style="color: #66cc66;">&#93;</span>.<span style="color: #202020;">toString</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>, arr<span style="color: #66cc66;">&#91;</span>index<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#125;</span></pre>
<p>The finished result is <a title="Power Monitor Packet" href="http://www.eightlines.com/blog/wp-content/uploads/2009/06/packets.txt" target="_blank">viewable here</a>. The next step is interpreting this into data. I believe reset sends four packets, and every transmission (once every 30 seconds) sends an <span class="caps">IR</span> Count and Temperature. The next step is interpreting the results from this&nbsp;test.</p>
<p>[I just want to stress that none of this code or results would have been possible without Andrew&#8217;s assistance. In fact 90% of the code presented here is his, I was just along for the ride and to learn a hell of a lot. Many&nbsp;thanks!]</p>
<img src="http://feeds.feedburner.com/~r/Eightlines/~4/zD8NdBudD10" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://js-kit.com/rss/eightlines.com/blog/p=177</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.eightlines.com/blog/2009/06/arduino-packet-analyzer/</feedburner:origLink></item>
		<item>
		<title>Black &amp; Decker Power Monitor Hack</title>
		<link>http://feedproxy.google.com/~r/Eightlines/~3/59MEBhR7LTA/</link>
		<comments>http://www.eightlines.com/blog/2009/06/black-decker-power-monitor-hack/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 02:27:19 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
				<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Power Monitor]]></category>

		<guid isPermaLink="false">http://www.eightlines.com/blog/?p=190</guid>
		<description><![CDATA[Black &#38; Decker makes an interesting product called the Power Monitor. The monitor straps on to your hydro meter and reports the revolutions of a spinning disc or blinks of an IR LED depending which model of meter you have. It then broadcasts that reading to a handheld unit inside your house. As the fridge [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Energy Monitor hack by Eightlines, on Flickr" href="http://www.flickr.com/photos/eightlines/3512068152/"><img style="padding-right:10px;" src="http://farm4.static.flickr.com/3604/3512068152_0ff73a3c0c.jpg" alt="Energy Monitor hack" width="500" height="375" align="left" /></a>Black <span class="amp">&amp;</span> Decker makes an interesting product called the <a title="Black and Decker Power Monitor" href="http://www.blackanddecker.com/Energy/products.aspx" target="_blank">Power Monitor</a>. The monitor straps on to your hydro meter and reports the revolutions of a spinning disc or blinks of an <span class="caps">IR</span> <span class="caps">LED</span> depending which model of meter you have. It then broadcasts that reading to a handheld unit inside your house. As the fridge cycles on you can track this increase in power usage. Subtract that from the reading prior to the device powering on, and you have a rough estimate of how many watts that device uses. The Power Monitor is very simillar to the <a title="Kill-A-Watt" href="http://en.wikipedia.org/wiki/Kill_A_Watt" target="_blank">Kill-A-Watt</a> except it monitors the entire house instead of specific&nbsp;devices.</p>
<p>There&#8217;s some benefits of the Power Monitor over other devices. It tracks the entire house, the 30 second delay on readings is almost realtime, and its affordable ($100&thinsp;&#8212;&thinsp;would probably pay back fairly quickly). There&#8217;s also some disadvantages. It is less accurate then the Kill-A-Watt, and it has now data&nbsp;connection.</p>
<p>The Kill-A-Watt has a simillar problem, it doesn&#8217;t export the data either. This is a bit of an issue if you wanted to log the power consumption of your house. That&#8217;s where the <a title="Tweet-A-Watt" href="http://www.ladyada.net/make/tweetawatt/" target="_blank">Tweet-A-Watt</a> comes in. What I&#8217;m attempting to do is bring this ability to the Power Monitor. How hard could it&nbsp;be?</p>
<p><img class="alignright size-medium wp-image-194" title="RF Receiver" src="http://www.eightlines.com/blog/wp-content/uploads/2009/06/powermonitorrfreceiver-300x225.jpg" alt="RF Receiver" width="300" height="225" />The Power Monitor is a device manufactured by <a title="Blueline Innovations" href="http://www.bluelineinnovations.com/" target="_blank">Blueline Innovations</a>. It transmits a signal on a 433.92 MHz spectrum. My first attempts were to try to intercept the signal through an <span class="caps">RF</span> Receiver in the same&nbsp;frequency.</p>
<p>Initial attempt. Nothing. Set up an <span class="caps">RF</span> Transmitter, it communicated with the receiver perfectly. I was a bit stumped. This is when I checked out a session at <a title="Hacklab" href="http://hacklab.to/" target="_blank">Hacklab</a>. There, I was schooled on using <span class="caps">RF</span> Scanners, <a title="Wikipedia entry on Spread Spectrum" href="http://en.wikipedia.org/wiki/Spread_spectrum" target="_blank">spread spectrum</a> and other <span class="caps">RF</span> black magic. (Many thanks to&thinsp;&#8212;&thinsp;make sure to check these guys out&thinsp;&#8212;&thinsp;<a title="Andrew Kilpatrick Blog" href="http://www.andrewkilpatrick.org/blog/" target="_blank">Andrew Kilpatrick</a>, <a title="Toronto Goat" href="http://torontogoat.blogspot.com/" target="_blank">Toronto Goat</a>, and everyone else at Hacklab) We could detect the packet&#8217;s being sent, but couldn&#8217;t intercept any usable&nbsp;data.</p>
<p>It was decided that to get any useful data we must be more invasive. Warranty, out the window. We broke out the oscilloscope on the Monitor. Conveniently there&#8217;s two test probes marked on the board. This allowed us to identify the packet quite&nbsp;easily.</p>
<p><object width="400" height="225" data="http://vimeo.com/moogaloop.swf?clip_id=3733871&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=3733871&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /></object></p>
<p>Now at least I have some confidence that we will be able to produce some results and this isn&#8217;t some wild goose chase. The next phase is to capture the data off the device. I&#8217;ll follow up shortly with the Signal Boost circuit and Arduino code used to capture the transmitted signal. More&nbsp;soon!</p>
<img src="http://feeds.feedburner.com/~r/Eightlines/~4/59MEBhR7LTA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://js-kit.com/rss/eightlines.com/blog/p=190</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.eightlines.com/blog/2009/06/black-decker-power-monitor-hack/</feedburner:origLink></item>
		<item>
		<title>Air Quality Monitoring</title>
		<link>http://feedproxy.google.com/~r/Eightlines/~3/In6x6fUZU9w/</link>
		<comments>http://www.eightlines.com/blog/2009/06/air-quality-monitoring/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 02:57:53 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
				<category><![CDATA[Air Quality]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Data Logger]]></category>
		<category><![CDATA[Ideas]]></category>

		<guid isPermaLink="false">http://www.eightlines.com/blog/?p=187</guid>
		<description><![CDATA[Recently I had a discussion with someone from the South Riverdale Community Health Centre on Air Quality monitoring in Ontario (AQI). I learned a number of things, there are only 40 Air Quality Monitors in Ontario and they test for six key indexes. Toronto runs a slightly different test, the Air Quality Health Index (AQHI) [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I had a discussion with someone from the <a title="South Riverdale Community Health Centre" href="http://www.srchc.ca/">South Riverdale Community Health Centre</a> on Air Quality monitoring in Ontario (<span class="caps">AQI</span>). I learned a number of things, there are only <a title="AQI Ontario" href="http://www.ene.gov.on.ca/en/air/aqo/index.php#what" target="_blank">40 Air Quality Monitors in Ontario</a> and they test for six key indexes. Toronto runs a slightly different test, the <a title="Air Quality Health Index" href="http://www.ec.gc.ca/cas-aqhi/default.asp?lang=En&amp;n=CB0ADB16-1" target="_blank">Air Quality Health Index</a> (<span class="caps">AQHI</span>) which is a pilot programme and reports on how the Air Quality will affect your health. The <span class="caps">AQHI</span> test for <a title="AQHI Indicators" href="http://www.ec.gc.ca/cas-aqhi/default.asp?Lang=En&amp;n=065BE995-1#calculated" target="_blank">three key indicators</a>. Detecting three indexes sounds pretty&nbsp;reasonable.</p>
<p><a title="Mobile Air Quality Monitor by Eightlines, on Flickr" href="http://www.flickr.com/photos/eightlines/3597088400/"><img src="http://farm3.static.flickr.com/2466/3597088400_866e918c09_m.jpg" alt="Mobile Air Quality Monitor" width="240" height="180" align="left" /></a>By building my own Air Quality project I hope to be able to reproduce the <span class="caps">AQHI</span> results at a fraction of the price and provide instruction to enable anyone across the province a chance to build their&nbsp;own.</p>
<p>To the left is a photo of the final (but always in a state of flux) result. It is a <span class="caps">GPS</span> enabled device powered by two <span class="caps">AA</span>&#8217;s which senses Air Quality and Ozone. I am currently running tests in a variety of ways. This is a more complex setup than it has to be. Below I&#8217;ll detail both a simple setup and a complex&nbsp;setup.</p>
<p><strong>Simple Air Quality&nbsp;Monitor:</strong></p>
<ul>
<li><a title="Arduino Mini USB" href="http://arduino.cc/en/Main/MiniUSB" target="_blank"><span class="caps">USB</span>-Serial Connection</a>&nbsp;(~$15)</li>
<li><a title="Futurlec Sensors" href="http://www.futurlec.com/Gas_Sensors.shtml" target="_blank">Air Quality Sensor <span class="amp">&amp;</span> Ozone Sensor</a> ($6&nbsp;each)</li>
<li>2 Resistors ($.15 - I&#8217;m using a 15k&nbsp;Ohm)</li>
</ul>
<p>Connect the sensors as illustrated on the <a title="Wiring" href="http://www.wiring.org.co/learning/examples/airQuality_MQ135.html" target="_blank">Wiring.org</a> website. Attach to a computer and upload the data to a provider such as <a title="Pachube" href="http://www.pachube.com/" target="_blank">Pachube</a> to share with the world. (Need an invite? Message&nbsp;me.)</p>
<p><strong>Mobile Air Quality&nbsp;Monitor:</strong></p>
<ul>
<li><a title="Arduino Duemilanove" href="http://arduino.cc/en/Main/ArduinoBoardDuemilanove" target="_blank">Arduino</a>&nbsp;(~$45)</li>
<li><a title="Adafruit" href="http://www.adafruit.com/index.php?main_page=product_info&amp;cPath=17_21&amp;products_id=98" target="_blank"><span class="caps">GPS</span> Sheild</a>&nbsp;($16)</li>
<li><a title="Adafruit" href="http://www.adafruit.com/index.php?main_page=product_info&amp;cPath=18&amp;products_id=99" target="_blank"><span class="caps">GPS</span></a>&nbsp;($60)</li>
<li><span class="caps">SD</span>-Card ($20-60 depending on size - the <span class="caps">SD</span>-Card library uses a <span class="caps">FAT</span>-16 environment, so <span class="caps">1GB</span> is all you&#8217;re going to&nbsp;need)</li>
<li><a title="Adafruit" href="http://www.adafruit.com/index.php?main_page=product_info&amp;cPath=10&amp;products_id=14" target="_blank">MintyBoost</a> ($20 - 12 Hour lifespan for 2 AAs, 3 for a 9V&nbsp;battery)</li>
<li>Air Quality <span class="amp">&amp;</span> Ozone Sensor ($6 each, see above for&nbsp;links)</li>
<li>Batteries (~$5 - I&#8217;d suggest&nbsp;rechargables)</li>
<li>2 Resistors&nbsp;($.15)</li>
</ul>
<p>See above for the sensor connection details, then <a title="Ladyada.net" href="http://www.ladyada.net/make/gpsshield/download.html" target="_blank">download the code</a> to run the <span class="caps">GPS</span> and log the data (plus sensor data). I&#8217;m using the <span class="caps">GPS</span> <span class="caps">CSV</span> logging&nbsp;sketch.</p>
<p>Now for the&nbsp;notes:</p>
<ul>
<li>I have no idea if this is capale of producing valid <span class="caps">AQHI</span> data, I&#8217;m researching this&nbsp;now.</li>
<li>The sensors are not calibrated, the data should only be valid relative to my own readings. I&#8217;d like to make the result reproducible across all sorts of&nbsp;devices.</li>
<li>Particulates are not being measured. Someone suggested taking apart a smoke alarm to dig out the sensor. I still have to try&nbsp;this.</li>
<li>Mapping of my results is coming soon. I intend on using this device in a setting where I can measure the effects on a highway with and without cars in the coming days. I will post the&nbsp;results.</li>
</ul>
<img src="http://feeds.feedburner.com/~r/Eightlines/~4/In6x6fUZU9w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://js-kit.com/rss/eightlines.com/blog/p=187</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://www.eightlines.com/blog/2009/06/air-quality-monitoring/</feedburner:origLink></item>
		<item>
		<title>Incoming Projects!</title>
		<link>http://feedproxy.google.com/~r/Eightlines/~3/oxLCRQJ1Bc4/</link>
		<comments>http://www.eightlines.com/blog/2009/06/incoming-projects/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 01:59:41 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
				<category><![CDATA[Ideas]]></category>

		<guid isPermaLink="false">http://www.eightlines.com/blog/?p=182</guid>
		<description><![CDATA[Its been a busy couple of months! Through work we&#8217;ve launched the Count Me In Ontario website and an upcoming energy visualization tool in cooperation with the IESO. I&#8217;ve also been busy hacking the Black &#38; Decker Power Monitor with some interesting results. Coincidentally enough, its Clean Air Day and I had to take the [...]]]></description>
			<content:encoded><![CDATA[<p>Its been a busy couple of months! Through <a title="Sonic Boom Creative Media" href="http://www.sonicboom.com/" target="_blank">work</a> we&#8217;ve launched the <a title="Count Me In Ontario" href="http://countmeinontario.ca/" target="_blank">Count Me In Ontario</a> website and an upcoming energy visualization tool in cooperation with the <a title="IESO" href="http://www.ieso.ca/" target="_blank"><span class="caps">IESO</span></a>. I&#8217;ve also been busy hacking the <a title="Black and Decker Power Monitor" href="http://www.blackanddecker.com/Energy/products.aspx" target="_blank">Black <span class="amp">&amp;</span> Decker Power Monitor</a> with some interesting results. Coincidentally enough, its <a title="Clean Air Day Website" href="http://www.cleanairday.com/html/index.php" target="_blank">Clean Air Day</a> and I had to take the day off due to Asthma. All this work in the green sector is really hitting home. So over the next little while I&#8217;m going to break the silence on my latest projects (which have closely paralleled work) hopefully it will make up for the lack of posts. (Note: my <a title="Twitter - Eightlines" href="http://Twitter.com/eightlines" target="_blank">Twitter feed</a> is much more lively&nbsp;lately.)</p>
<img src="http://feeds.feedburner.com/~r/Eightlines/~4/oxLCRQJ1Bc4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://js-kit.com/rss/eightlines.com/blog/p=182</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.eightlines.com/blog/2009/06/incoming-projects/</feedburner:origLink></item>
		<item>
		<title>Coding with a Fork</title>
		<link>http://feedproxy.google.com/~r/Eightlines/~3/i5S-2ewyrDE/</link>
		<comments>http://www.eightlines.com/blog/2009/03/coding-with-a-fork/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 02:17:51 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Found]]></category>
		<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Bespin]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.eightlines.com/blog/?p=173</guid>
		<description><![CDATA[Recently I&#8217;ve been experimenting with online coding tools, wonderfl and Bespin. Essentially both are IDE&#8217;s enabling you to write code with syntax highlighting. Wonderfl enables coding for the Flash environment, while Bespin works in the HTML/JavaScript spectrum. There&#8217;s some pretty immediate differences, Bespin is an attempt at building an environment entirely in Canvas and wonderfl [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve been experimenting with online coding tools, <a title="wonderfl web site" href="http://wonderfl.kayac.com/" target="_blank">wonderfl</a> and <a title="wonderfl web site" href="http://wonderfl.kayac.com/" target="_blank"></a><a title="Bespin homepage" href="https://bespin.mozilla.com/" target="_blank">Bespin</a>. Essentially both are <span class="caps">IDE</span>&#8217;s enabling you to write code with syntax highlighting. Wonderfl enables coding for the Flash environment, while Bespin works in the <span class="caps">HTML</span>/JavaScript spectrum. There&#8217;s some pretty immediate differences, Bespin is an attempt at building an environment entirely in Canvas and wonderfl has the ability to generate the Flash piece on the&nbsp;fly.</p>
<p>Where things start getting interesting is when you start to be able to share the code with other developers. This is a more complete feature within wonderfl so for the next little bit I&#8217;ll concentrate on its model. This looks like a feature that will come with Bespin, allowing contributors to participate in Open Source&nbsp;initiatives.</p>
<p>Wonderfl allows the audience to browse other publicly available projects (does a private mode exist?). If they like the code they are free to fork the code and develop it in their own user environment. The owner of the original code is then notified that their code has been forked and is free to observe the changes. Its a smart introduction of social sharing that has always existed in the coding environment, but never to this level of&nbsp;slickness.</p>
<p>Today the guys over at the <a title="Arduino Blog" href="http://arduino.cc/blog/?p=209" target="_blank">Arduino Blog</a> posted this interesting hack enabling Bespin to enable syntax highlighting for Arduino code. Check out the comments, Olle Jonsson has developed a python script that allows you to compile (though still in the initial stages) Arduino code. Wonderfl has already produced some fantastic applications, and Bespin appears to be just getting started. There&#8217;s something significant brewing here, coding in the cloud appears to be something to watch very closely over the next couple of&nbsp;years.</p>
<img src="http://feeds.feedburner.com/~r/Eightlines/~4/i5S-2ewyrDE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://js-kit.com/rss/eightlines.com/blog/p=173</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.eightlines.com/blog/2009/03/coding-with-a-fork/</feedburner:origLink></item>
		<item>
		<title>Twitter as the future of event broadcasting?</title>
		<link>http://feedproxy.google.com/~r/Eightlines/~3/Lt-6F4VUIMk/</link>
		<comments>http://www.eightlines.com/blog/2009/02/twitter-as-the-future-of-event-broadcasting/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 21:27:23 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
				<category><![CDATA[Ideas]]></category>

		<guid isPermaLink="false">http://www.eightlines.com/blog/?p=162</guid>
		<description><![CDATA[22 hours ago #atoc trended to number 9 on the Twitter trend&#160;chart. The Amgen Tour of California was in its first official leg and it was doused in rain. Cloud cover was so low it kept helicopters grounded and radio transmissions were inconsistent. But the Tweets were coming fast and furious live from the&#160;racecourse. 21 [...]]]></description>
			<content:encoded><![CDATA[<p>22 hours ago #atoc <a title="Twitter Trend" href="http://twitter.com/RealTimeTrends/statuses/1213545105" target="_blank">trended to number 9</a> on the Twitter trend&nbsp;chart.</p>
<p>The <a title="Amgen Tour of California" href="http://www.amgentourofcalifornia.com/" target="_blank">Amgen Tour of California</a> was in its first official leg and it was doused in rain. Cloud cover was so low it kept helicopters grounded and radio transmissions were inconsistent. But the <a title="#atoc" href="http://search.twitter.com/search?q=%23atoc" target="_blank">Tweets</a> were coming fast and furious live from the&nbsp;racecourse.</p>
<p>21 hours ago #atoc trended to&nbsp;#8.</p>
<p>During this time Lance Armstrong of team Astana crashed and photos appears on <a href="http://twitpic.com/1ij15">Twitpic</a>. Live coverage on the Amgen Tour of California website still doesn&#8217;t have any event coverage. The reporters are doing their best to fill in the time by reporting on the Women&#8217;s crit, which had some fabulous footage of the final sprint to the&nbsp;line.</p>
<p>#atoc Trends to #6 during the same&nbsp;hour.</p>
<p><a href="http://twitter.com/JakesJournal/statuses/1213710706">@FredCast</a> (publisher of a fantastic bike podcast) Begins to broadcast on <a title="Qik " href="http://qik.com/" target="_blank">Qik</a> from a team car. Live <span class="caps">TV</span> coverage is spotty, and technical notes are the only news popping up on the tour&nbsp;tracker.</p>
<p>#atoc Trends to #4 later in that&nbsp;hour.</p>
<p>Race reports start to stream in from spectators at the In and Out Burger house, and along the descent reporting time gaps before official sources. <a href="http://twitter.com/johanbruyneel" target="_blank">@johanbruyneel</a> Reports from the Astana team car that race radio is sending out mixed messages. This inevidentally leads to issues in catching Mancebo&#8217;s break from the&nbsp;peloton.</p>
<p>20 hours ago #atoc hits #1 ahead of <span class="caps">NASCAR</span>&#8217;s Daytona&nbsp;500.</p>
<p>By this time the <span class="caps">TV</span> coverage was ground based in Santa Rosa. Camera&#8217;s could cover Mancebo&#8217;s break and the chase of the peloton. The break closed from 2&#8217;30&#8221; to nothing over the last few kilometers. Twitter followers started taking bets. I predicted Mancebo would have been caught,<a href="http://twitter.com/FulSpeed/status/1213712337" target="_blank">@FulSpeed</a> thought otherwise. (We called it a draw at the end of the&nbsp;day.)</p>
<p>In the end Mancebo takes the race. 635 Twitter comments ensued in the following 3&nbsp;hours.</p>
<p>Today, the action continues. And if you needed a ride <a href="http://twitter.com/track_stand/status/1215828884" target="_blank">@track_stand</a> was offering a lift across town on the #atoc feed, but if you&#8217;re reading this now you probably missed&nbsp;it.</p>
<img src="http://feeds.feedburner.com/~r/Eightlines/~4/Lt-6F4VUIMk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://js-kit.com/rss/eightlines.com/blog/p=162</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.eightlines.com/blog/2009/02/twitter-as-the-future-of-event-broadcasting/</feedburner:origLink></item>
	</channel>
</rss>
