<?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>Eric Blue's Blog &#187; Technology</title>
	<atom:link href="http://eric-blue.com/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://eric-blue.com</link>
	<description>Technology, Philosophy, and Personal Development</description>
	<lastBuildDate>Mon, 06 Feb 2012 02:30:13 +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>Jawbone UP API Discovery</title>
		<link>http://eric-blue.com/2011/11/28/jawbone-up-api-discovery/</link>
		<comments>http://eric-blue.com/2011/11/28/jawbone-up-api-discovery/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 16:42:19 +0000</pubDate>
		<dc:creator>ericblue76</dc:creator>
				<category><![CDATA[Fitness]]></category>
		<category><![CDATA[Headline]]></category>
		<category><![CDATA[IPhone]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Quantified Self]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://eric-blue.com/?p=1594</guid>
		<description><![CDATA[On Saturday I stopped by the Apple store and picked up an UP device by Jawbone. The UP is a wristband and iPhone app that will track your fitness and sleep activity and help encourage you to live a more active life style.  As with most of my Quantified Self gadets (Fitbit, Zeo, Withings, Neurosky, etc.) my first reaction was to “free my data”.  Similar to my initial journey with the Fitbit, I was inspired to find an “unofficial” way to get access to the data.]]></description>
			<content:encoded><![CDATA[<p><a href="http://eric-blue.com/wp-content/uploads/2011/11/jawbone-up-duo.jpg"><img class="aligncenter size-full wp-image-1582" title="jawbone-up-duo" src="http://eric-blue.com/wp-content/uploads/2011/11/jawbone-up-duo.jpg" alt="" width="558" height="291" /></a></p>
<p>On Saturday I stopped by the Apple store and picked up an <a href="http://jawbone.com/up/product" target="_top">UP device by Jawbone</a>. The UP is a wristband and iPhone app that will track your fitness and sleep activity and help encourage you to live a more active life style. It’s very similar to the Fitbit device, and lets you track:</p>
<ul>
<li>steps</li>
<li>distance</li>
<li>calories burned</li>
<li>active/inactive times</li>
<li>workouts</li>
<li>sleep (awake/light/deep sleep)</li>
</ul>
<p>So far I’m really impressed with both the wristband and iPhone app.  However, I was a little disappointed the wristband didn’t support ANT or Bluetooth for data synchronization.  The data sync is unique and “low impact” (battery-wise) in that it plugs into the iPhone via the headphone jack and uploads data directly to the app. After some digging I was surprised to see no way to send or save the data.  I was curious if the data was just saved to the app, or also synchronized with another server.</p>
<p>As with most of my <a href="http://quantifiedself.com/" target="_blank">Quantified Self</a> gadets (Fitbit, Zeo, Withings, Neurosky, etc.) my first reaction was to “free my data”.  My understanding is that Jawbone has exposed an API to partners, and will soon be releasing a more public API and ability to download data shortly.  Similar to my initial journey with the Fitbit, I was inspired to find an <a href="../projects/fitbit/" target="_top">“unofficial” way to get access to the data</a> (e.g. my Fitbit Hacks).  I was able to get access and save my personal data for about a year before an official method became available.  Luckily Fitbit and other companies like Zeo (especially Zeo) have taken an open approach with their APIs and have embraced the developer community.  My hope is that UP will do the same.</p>
<p>In the spirit of filling in the data gaps until that day comes and an official announcement is made I decided to do a bit of exploration yesterday morning.  Using my favorite HTTP/SSL sniffer (<a href="http://www.charlesproxy.com/" target="_top">Charles</a>) and some tinkering with the app I was able to decipher how to get access to all of the UP data.  I haven’t written a data scraper script yet, but I was able to verify a number of API requests from the command-line using LWP POST and GET.</p>
<p>I wrote up some detailed notes in my wiki yesterday and have posted a snapshot here:</p>
<p>Jawbone UP API &#8211; <a href="http://eric-blue.com/projects/up-api/" target="_blank">http://eric-blue.com/projects/up-api/</a></p>
<p>My hope is this should give others enough information to download their own data for the purpose of backing up and analysis with other software.  Since this isn&#8217;t officially supported and appears to be used only by their app I would use sparingly (no excessive requests) and don&#8217;t do anything that would violate a TOS/AUP (use at your own risk).  Otherwise, enjoy!</p>
<p>My other Quantified Self-related projects:</p>
<p><a href="http://traqs.me" target="_blank">TRAQS.me (Tools for Reporting &amp; Analysis of the Quantified Self)</a></p>
<p><a href="http://eric-blue.com/projects/fitbit/" target="_blank">Fitbit Hacks (the original &#8220;unofficial&#8221; API)</a></p>
<p><a href="http://eric-blue.com/2011/01/02/zeo-personal-sleep-coach-hacking-your-way-to-a-better-nights-sleep/" target="_blank">Zeo (Hacking your way to a better night&#8217;s sleep)</a></p>
<p><a href="http://eric-blue.com/2011/07/13/neurosky-brainwave-visualizer/" target="_blank">NeuroSky Brainwave Visualizer</a></p>
<p><a href="http://eric-blue.com/2011/07/24/mindstream-neurosky-eeg-data-streamer/" target="_blank">Mindstream &#8211; Neurosky EEG Data streamer</a></p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Jawbone+UP+API+Discovery+http://eric-blue.com/?p=1594+via+@ericblue" title="Post to Twitter"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://eric-blue.com/2011/11/28/jawbone-up-api-discovery/&amp;title=Jawbone+UP+API+Discovery" title="Post to Delicious"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-delicious-big3.png" alt="Post to Delicious" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://eric-blue.com/2011/11/28/jawbone-up-api-discovery/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Life Logging and Location Tracking</title>
		<link>http://eric-blue.com/2011/10/16/life-logging-and-location-tracking/</link>
		<comments>http://eric-blue.com/2011/10/16/life-logging-and-location-tracking/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 01:41:14 +0000</pubDate>
		<dc:creator>ericblue76</dc:creator>
				<category><![CDATA[Geocoding]]></category>
		<category><![CDATA[Memex]]></category>
		<category><![CDATA[Quantified Self]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://eric-blue.com/?p=1566</guid>
		<description><![CDATA[It&#8217;s been a while since I&#8217;ve posted.  I&#8217;ve been busy working on my Quantified Self-related interests: working on my personal tracking projects and organizing the QS Los Angeles meetups.  Yesterday I gave a ...]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a while since I&#8217;ve posted.  I&#8217;ve been busy working on my Quantified Self-related interests: working on my personal tracking projects and organizing the QS Los Angeles meetups.  Yesterday I gave a show &amp; tell presentation on my experiences with life logging and location tracking.  Many of you who read the blog are probably familiar with a lot of this since I&#8217;ve been posting my experiences on this topic for the past 3-4 years.  Check out the presentation outlining my original experience with life logging while creating my own <a href="http://eric-blue.com/2008/07/13/creating-the-ultimate-personal-travel-journal/">personal travel journal</a> and my gradual interest in the <a href="http://quantifiedself.com/">Quantified Self </a>movement and using <a href="http://eric-blue.com/2010/08/28/geolocation-gps-and-self-tracking/">GPS devices to automatically track my location</a>.</p>
<div style="width:425px" id="__ss_9714980"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/ericblue76/la-quantified-self-meetup-1011-location-tracking" title="LA Quantified Self Meetup (10/11) - Location Tracking" target="_blank">LA Quantified Self Meetup (10/11) &#8211; Location Tracking</a></strong> <object id="__sse9714980" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=laqsmeetup-locationtracking-111015141405-phpapp01&#038;rel=0&#038;stripped_title=la-quantified-self-meetup-1011-location-tracking&#038;userName=ericblue76" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse9714980" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=laqsmeetup-locationtracking-111015141405-phpapp01&#038;rel=0&#038;stripped_title=la-quantified-self-meetup-1011-location-tracking&#038;userName=ericblue76" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/ericblue76" target="_blank">ericblue76</a> </div>
</p></div>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Life+Logging+and+Location+Tracking+http://eric-blue.com/?p=1566+via+@ericblue" title="Post to Twitter"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://eric-blue.com/2011/10/16/life-logging-and-location-tracking/&amp;title=Life+Logging+and+Location+Tracking" title="Post to Delicious"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-delicious-big3.png" alt="Post to Delicious" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://eric-blue.com/2011/10/16/life-logging-and-location-tracking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Turn Your IPad Into A Virtual Monitor</title>
		<link>http://eric-blue.com/2011/08/20/how-to-turn-your-ipad-into-a-virtual-monitor/</link>
		<comments>http://eric-blue.com/2011/08/20/how-to-turn-your-ipad-into-a-virtual-monitor/#comments</comments>
		<pubDate>Sat, 20 Aug 2011 23:38:17 +0000</pubDate>
		<dc:creator>ericblue76</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[IPhone]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://eric-blue.com/?p=1542</guid>
		<description><![CDATA[This is a quick blog post, but a very nifty trick.  At various times, I&#8217;ve used multiple monitors at work to increase productivity.  I&#8217;ve usually done this using my 21&#8243; monitor as the ...]]></description>
			<content:encoded><![CDATA[<p>This is a quick blog post, but a very nifty trick.  At various times, I&#8217;ve used multiple monitors at work to increase productivity.  I&#8217;ve usually done this using my 21&#8243; monitor as the main screen, and my laptop display as the secondary.  I&#8217;ve also used a handful of virtual desktop applications that let you create multiple desktops to organize apps into different windows, and have even experimented with <a href="http://synergy-foss.org/">Synergy</a>.</p>
<p><a href="http://eric-blue.com/wp-content/uploads/2011/08/multiple_monitors.jpg"><img class="aligncenter size-medium wp-image-1552" title="multiple_monitors" src="http://eric-blue.com/wp-content/uploads/2011/08/multiple_monitors-300x172.jpg" alt="" width="300" height="172" /></a></p>
<p>For whatever reason, at home I&#8217;ve been primarily sticking with a single monitor.  I use Ubuntu and natively use virtual workspaces, but still doesn&#8217;t give me the screen real estate that a 2nd monitor provides.  Rather than invest in a 2nd monitor right now, I thought it would be pretty slick to use my iPad as a second &#8220;virtual&#8221; monitor.  It turns out this is possible AND very easy!</p>
<p>What is a virtual monitor?  Through the magic of VNC i can actually use all of my apps on my main Linux PC and at the same time add touch screen support!  What do you need?</p>
<ul>
<li>A computer (PC, Linux, or MAC) with some VNC server installed and a VNC viewer.  I don&#8217;t really have a preference on VNC software, but you can check out RealVNC (<a href="http://www.realvnc.com/">http://www.realvnc.com/</a>)</li>
</ul>
<p><a href="http://eric-blue.com/wp-content/uploads/2011/08/vnc.jpg"><img class="aligncenter size-thumbnail wp-image-1551" title="vnc" src="http://eric-blue.com/wp-content/uploads/2011/08/vnc-150x150.jpg" alt="" width="150" height="150" /></a></p>
<ul>
<li>An iPad running some VNC-capable software.  I haven&#8217;t researched extensively but I believe there are a number of solutions.  The app I&#8217;ve been running for years now is iSSH.  <a href="http://www.zinger-soft.com/iSSH_features.html">iSSH </a>is sophisticated terminal software that is capable of SSH and support VNC connections.</li>
</ul>
<p><a href="http://eric-blue.com/wp-content/uploads/2011/08/1990-1-issh-ssh-vnc-console.jpg"><img class="aligncenter size-thumbnail wp-image-1550" title="1990-1-issh-ssh-vnc-console" src="http://eric-blue.com/wp-content/uploads/2011/08/1990-1-issh-ssh-vnc-console-150x150.jpg" alt="" width="150" height="150" /></a></p>
<ul>
<li>A nifty iPad stand that turns your iPad into a swivel monitor (OK, this isn&#8217;t needed, but puts some icing on the cake).  I&#8217;d recommend the <a href="http://www.google.com/products/catalog?hl=en&amp;q=rocketfish+ipad+stand&amp;gs_upl=1120l3497l0l3613l21l14l0l0l0l0l424l2357l0.12.4-1l13l0&amp;bav=on.2,or.r_gc.r_pw.r_cp.&amp;biw=1635&amp;bih=851&amp;um=1&amp;ie=UTF-8&amp;tbm=shop&amp;cid=508886933486800168&amp;sa=X&amp;ei=p0FQTraFI-ausALhwNXuBg&amp;ved=0CDIQ8wIwAg">RocketFish iPad Stand</a>.</li>
</ul>
<p><a href="http://eric-blue.com/wp-content/uploads/2011/08/RF-ISTAND.jpg"><img class="aligncenter size-thumbnail wp-image-1548" title="RF-ISTAND" src="http://eric-blue.com/wp-content/uploads/2011/08/RF-ISTAND-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>How do you set this up?  Easy&#8230;</p>
<ol>
<li>You can opt to control your PC with VNC like most users do.  However, if you want a real &#8220;virtual&#8221; monitor/desktop you&#8217;d want a distinct workspace.  By default VNC uses :0 (your main desktop) as it&#8217;s default display.  You can create a new VNC server instance on a fresh desktop at :1.  I&#8217;m using TightVNC so the syntax may vary, but the command to setup is easy:</li>
<blockquote><p>vncserver -alwaysshared :1</p>
<p>AND to kill the isntance when your done or want to start over</p>
<p>vncserver -kill :1</p></blockquote>
<blockquote><p>Note: the -alwaysshared is needed if you want to also control the iPad &#8220;virtual&#8221; monitor from your main PC</p></blockquote>
<li>If you haven&#8217;t done so download and install iSSH from the App Store (currently $9.99 USD).  Setup either an SSH with VNC, or Raw VNC connection to your main computer.  Make sure to specify :1 as the port.</li>
<li>If you want to also control this new iPad virtual desktop from your main PC you can run vncviewer. On the command line (assuming Linux) run:</li>
</ol>
<blockquote><p>vncviewer :1</p>
<p>Note: You should see this display mirrored on your iPad as well.  You now have the choice to control exclusively from the iPad or share from the main PC.</p></blockquote>
<p>Here&#8217;s a screenshot of my iPad monitor setup using the RocketFish stand and running Firefox from my iPad.</p>
<p><a href="http://eric-blue.com/wp-content/uploads/2011/08/ipad_monitor.jpg"><img class="aligncenter size-medium wp-image-1544" title="ipad_monitor" src="http://eric-blue.com/wp-content/uploads/2011/08/ipad_monitor-278x300.jpg" alt="" width="278" height="300" /></a></p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=How+To+Turn+Your+IPad+Into+A+Virtual+Monitor+http://eric-blue.com/?p=1542+via+@ericblue" title="Post to Twitter"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://eric-blue.com/2011/08/20/how-to-turn-your-ipad-into-a-virtual-monitor/&amp;title=How+To+Turn+Your+IPad+Into+A+Virtual+Monitor" title="Post to Delicious"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-delicious-big3.png" alt="Post to Delicious" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://eric-blue.com/2011/08/20/how-to-turn-your-ipad-into-a-virtual-monitor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MindStream &#8211; NeuroSky EEG Data Streamer</title>
		<link>http://eric-blue.com/2011/07/24/mindstream-neurosky-eeg-data-streamer/</link>
		<comments>http://eric-blue.com/2011/07/24/mindstream-neurosky-eeg-data-streamer/#comments</comments>
		<pubDate>Sun, 24 Jul 2011 18:33:57 +0000</pubDate>
		<dc:creator>ericblue76</dc:creator>
				<category><![CDATA[Brain]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Headline]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Quantified Self]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://eric-blue.com/?p=1526</guid>
		<description><![CDATA[Since I last posted on the NeuroSky Brainwave Visualizer, I decided to write a simple app to &#8220;stream&#8221; brainwave/EEG data from NeuroSky devices (the MindWave &#38; MindSet).  I couldn&#8217;t find any apps to save the ...]]></description>
			<content:encoded><![CDATA[<p>Since I last posted on the <a href="http://eric-blue.com/2011/07/13/neurosky-brainwave-visualizer/">NeuroSky Brainwave Visualizer</a>, I decided to write a simple app to &#8220;stream&#8221; brainwave/EEG data from NeuroSky devices (the MindWave &amp; MindSet).  I couldn&#8217;t find any apps to save the EEG data so I decided to write a system tray app that will save data to a file and broadcast so other applications can consume the data.  The app is released as open source, requires Java (1.6 and above), and is currently in an alpha release.  Here is a brief overview from my new GitHub page <a href="https://github.com/ericblue/MindStream">https://github.com/ericblue/MindStream</a>:</p>
<p><a href="http://eric-blue.com/wp-content/uploads/2011/07/logo.jpg"><img class="aligncenter size-full wp-image-1530" title="logo" src="http://eric-blue.com/wp-content/uploads/2011/07/logo.jpg" alt="" width="168" height="168" /></a></p>
<blockquote><p>README</p>
<div>
<pre># Author: Eric Blue
# 	url   = <a href="../">http://eric-blue.com/</a>
#   email = ericblue76 (at) gmail (dot) com
# Project: Neurosky Mindstream - System tray app to stream EEG data 

[Overview]

Mindstream is a simple java-based system tray app that streams EEG brainwave data from
NeuroSky devices (MindWave,MindSet).  The app interfaces to NeuroSky devices using the
ThinkGear Socket protocol (connecting on localhost:13854), retrieves data in JSON
Format, and can "stream" to other applications.  Mindstream can save the following
data:

	* Focus levels
		- attention
		- meditation
	* EEG values
		- delta
		- theta
		- lowAlpha
		- highAlpha
		- lowBeta
		- highBeta
		- lowGamma
		- highGamma
	* Headset signal strength
		- poorSignalLevel

Streaming functions will include:

    * Saving EEG data to a CSV File
    * Listen on a socket and replay data from localhost:13854
    	- allowing other applications to connect
    * Broadcast to a URL - supporting POST/M-POST and streaming real-time data
    	- future use? Processing Javascript version of the
                Neurosky BrainWave Visualizer
    		<a href="../2011/07/13/neurosky-brainwave-visualizer/">http://eric-blue.com/2011/07/13/neurosky-brainwave-visualizer/</a>

[Current Status]

- Alpha state
- Streaming only supports writing to a CSV file
- Tested on Linux and Windows with Java 1.6 and the MindWave headset</pre>
</div>
</blockquote>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=MindStream+%E2%80%93+NeuroSky+EEG+Data+Streamer+http://eric-blue.com/?p=1526+via+@ericblue" title="Post to Twitter"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://eric-blue.com/2011/07/24/mindstream-neurosky-eeg-data-streamer/&amp;title=MindStream+%E2%80%93+NeuroSky+EEG+Data+Streamer" title="Post to Delicious"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-delicious-big3.png" alt="Post to Delicious" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://eric-blue.com/2011/07/24/mindstream-neurosky-eeg-data-streamer/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Neurosky Brainwave Visualizer</title>
		<link>http://eric-blue.com/2011/07/13/neurosky-brainwave-visualizer/</link>
		<comments>http://eric-blue.com/2011/07/13/neurosky-brainwave-visualizer/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 15:36:03 +0000</pubDate>
		<dc:creator>ericblue76</dc:creator>
				<category><![CDATA[Art]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Interesting]]></category>
		<category><![CDATA[Mind Hacks]]></category>
		<category><![CDATA[Personal Informatics]]></category>
		<category><![CDATA[Quantified Self]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Visualization]]></category>

		<guid isPermaLink="false">http://eric-blue.com/?p=1509</guid>
		<description><![CDATA[I recently purchased a Neurosky Windwave EEG device ($100 model).  The Mindwave measures your brain&#8217;s electrical activity, and can detect your level of focus (attention vs. mediation) and measure typical brainwave patterns (beta, alpha, theta, ...]]></description>
			<content:encoded><![CDATA[<p>I recently purchased a <a href="http://neurosky.com/">Neurosky</a> Windwave EEG device ($100 model).  The Mindwave measures your brain&#8217;s electrical activity, and can detect your level of focus (attention vs. mediation) and measure typical brainwave patterns (beta, alpha, theta, and delta).  There are a number games included, and a wide range of ones to download from their appstore.  I was surprised to see no immediate way to visualize or record the data coming from the device.  There is a project for Linux called <a href="http://brainstorms.puzzlebox.info/index.php?entry=entry100802-202304">Puzzlebox</a> that emulates the Thinkgear connection protocol, however it seems to only support the Mindset (a more expensive Neurosky device that communicates over Bluetooth rather than RF).  There&#8217;s also a project called <a href="http://openvibe.inria.fr/?q=bci">OpenVibe </a>that let&#8217;s you visualize brainwave data (among other things), supports a number of other devices including Emotiv, however again only supports the MindSet.</p>
<p><a href="http://eric-blue.com/wp-content/uploads/2011/07/neurosky-mindwave-bci-headset.jpg"><img class="aligncenter size-medium wp-image-1513" title="neurosky-mindwave-bci-headset" src="http://eric-blue.com/wp-content/uploads/2011/07/neurosky-mindwave-bci-headset-300x208.jpg" alt="" width="300" height="208" /></a></p>
<p>I stumbled across a VERY cool hack &#8216;<a href="http://frontiernerds.com/brain-hack">How to Hack Toy EEGs</a>&#8216;. As much as I eventually want to tinker around with some soldering and Arduindo hacking, this was a little more in depth with time permitting.  The key takeaway from this article was a very impressive <a href="http://processing.org/">Processing</a>-based visualizer to grab data from the custom serial interface and display in real-time.  With relatively little work I was able to fork the version of code and interface with the Mindwave using the official ThinkGear Socket Protocol.  I also generated builds for Windows, Linux, and Mac so anybody can download and install. You can check this out at <a href="https://github.com/ericblue/Processing-Brain-Grapher">https://github.com/ericblue/Processing-Brain-Grapher</a>.</p>
<p><a href="http://eric-blue.com/wp-content/uploads/2011/07/Screenshot-brain_grapher-2.png"><img class="aligncenter size-medium wp-image-1510" title="Screenshot-brain_grapher-2" src="http://eric-blue.com/wp-content/uploads/2011/07/Screenshot-brain_grapher-2-300x224.png" alt="" width="352" height="262" /></a></p>
<p>Here&#8217;s the README with some more in depth info:</p>
<blockquote>
<pre>[Overview]

After purchasing a Neurosky Mindwave EEG device, I was surprised to see limited apps for
viewing and visualizing EEG output (brainwave activity for delta, theta, alpha,
and beta waves). Upon discovering 'How to Hack Toy EEGs'
(<a href="http://frontiernerds.com/brain-hack">http://frontiernerds.com/brain-hack</a>), I was
inspired by the Processing visualization of the Arduino-based serial output.
I wanted to visualize the same set of data, however decided to obtain it using
Neurosky's published ThinkGear Socket Protocol
(<a href="http://developer.neurosky.com/docs/doku.php?id=thinkgear_connector_tgc">http://developer.neurosky.com/docs/doku.php?id=thinkgear_connector_tgc</a>).

This fork of kitschpatrol's original code differs in that it doesn't use the
Serial interface to obtain brainwave data.  Rather, it communicates via the ThinkGear
connector using the ThinkGear Socket Protocol and requests data in JSON format.

[MindWave/MindSet Communication]

By default the ThinkGear Connector allows applications to connect over TCP
(default 127.0.0.1:13854) and request data in either binary or JSON format.
This application will connect to the ThinkGear socket,
and read the streaming real-time data.  Format:

	{
	"eSense":
		{"attention":91,"meditation":41},
	 "eegPower":
	 	{"delta":1105014,"theta":211310,
	 	"lowAlpha":7730,"highAlpha":68568,
	 	"lowBeta":12949,"highBeta":47455,
	 	"lowGamma":55770,"highGamma":28247},
	 "poorSignalLevel":0
	 }

The default IP and port will be used, unless alternatives are specified as
environment variables (THINKGEAR_HOST and THINKGEAR_PORT).  Port forwarding can
be used on the host Windows or Mac computer to allow remote servers to connect.
To allow other hosts to connect and run Processing, run ReplayTCP
(<a href="http://www.dlcsistemas.com/html/relay_tcp.html">http://www.dlcsistemas.com/html/relay_tcp.html</a>) OR, use netcat (windows or mac)
to port forward (clients can now connect to port 13855).
Ex:  nc -l -p 13855 -c ' nc localhost 13854'

[Required Libaries]

The following required libraries are included:

- ControlP5
- JSON (See <a href="http://www.blprnt.com/processing/json.zip">http://www.blprnt.com/processing/json.zip</a>)

[Binaries]

Binaries were creating using Processing's app builder
(platforms = windows, mac &amp; linux)

[Todo]
- Re-visit previous todo from original code
- Add ability to record data (CSV, etc.)
</pre>
</blockquote>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Neurosky+Brainwave+Visualizer+http://eric-blue.com/?p=1509+via+@ericblue" title="Post to Twitter"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://eric-blue.com/2011/07/13/neurosky-brainwave-visualizer/&amp;title=Neurosky+Brainwave+Visualizer" title="Post to Delicious"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-delicious-big3.png" alt="Post to Delicious" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://eric-blue.com/2011/07/13/neurosky-brainwave-visualizer/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Automatically sync &amp; import Garmin TCX data</title>
		<link>http://eric-blue.com/2011/07/10/automatically-sync-import-garmin-tcx-data/</link>
		<comments>http://eric-blue.com/2011/07/10/automatically-sync-import-garmin-tcx-data/#comments</comments>
		<pubDate>Sun, 10 Jul 2011 22:22:26 +0000</pubDate>
		<dc:creator>ericblue76</dc:creator>
				<category><![CDATA[Fitness]]></category>
		<category><![CDATA[Health]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Quantified Self]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://eric-blue.com/?p=1501</guid>
		<description><![CDATA[Over the last few weeks, I&#8217;ve been gradually increasing the supported devices for TRAQS.me.  As of today, I&#8217;ve successfully integrated FitBit, Withings, GPS data (GPX files), MyZeo, and now Garmin Heartrate monitors (TCX files).

Devices like ...]]></description>
			<content:encoded><![CDATA[<p>Over the last few weeks, I&#8217;ve been gradually increasing the supported devices for <a href="http://traqs.me">TRAQS.me</a>.  As of today, I&#8217;ve successfully integrated FitBit, Withings, GPS data (GPX files), MyZeo, and now Garmin Heartrate monitors (TCX files).</p>
<p style="text-align: center;"><a href="/wp-content/uploads/2011/07/garminfr60-red.jpg"><img class="aligncenter" title="garminfr60-red" src="/wp-content/uploads/2011/07/garminfr60-red-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>Devices like FitBit make syncing and importing data relatively fast.  As soon as the device syncs with the ANT-based station, data is uploaded to the FitBit site and this can be easily extracted.  However, for Garmin devices like the FR60 heart-rate monitor, extracting data from the Garmin Training Center product is a manual process.  You have to manually launch the app, go to Export, and save your data as a .TCX file.</p>
<p>You can pick and choose each activity to export (tedious), or you can save the entire data (a larger file ~ 15MB of data now) which takes some time to save and process.  This is clearly less than ideal.  In an effort to have my data INSTANTLY imported and available, I spent some time researching ways to accomplish this.  The hacker in me was thrilled when I discovered a linux-based open source project called <a href="http://code.google.com/p/garmintools/">GarminTools</a>.  From the project page:</p>
<blockquote><p>&#8220;This software provides Linux users with the ability to communicate with the Garmin Forerunner 305 via the USB interface. While this is the only Garmin unit that I own, I did implement all of the <a rel="nofollow" href="http://www.garmin.com/support/pdf/IOSDK.zip">documented Garmin protocols</a> as of Rev C (May 19, 2006) over the USB physical link. This means that if you have a Garmin with a USB connection to a PC, you ought to be able to use this software to communicate with it.</p>
<p>If you&#8217;re looking for a complete solution to all of your Linux Garmin GPS needs, this is not it. I own a Garmin Forerunner 305 and wrote this code specifically so I could download and save data from that particular GPS unit to my Linux machine. I tried <a rel="nofollow" href="http://www.gpsbabel.org/">gpsbabel</a>, but found that it did not have command line options specific to the Forerunner run and lap data &#8211; all I could do was get the tracklog. That&#8217;s how all of this got started. I also wanted a few other things, like the ability to convert a track log into a Google maps encoded polyline, and (eventually) the ability to generate PNG images of heart rate and elevation data.&#8221;</p></blockquote>
<p>I&#8217;m going to eventually dig deeper into this project, but since my time is more constrained this weekend I opted for a more pragmatic (ok cheap) hack.  I discovered that the <a href="http://www.garmin.com/garmin/cms/us/intosports/training_center">Garmin Training Center</a> app stores individual TCX files each time you sync under a folder (on Windows 7) like:</p>
<blockquote><p>C:\Users\username\AppData\Roaming\GARMIN\Devices\1110044\History</p></blockquote>
<p>I figured a simple approach would be to sync this folder with my server, find any files newer than the last imported Activity/Heartrate data, and process.  A simple windows share could have sufficed, but I figured it might be easier just to sync with Dropbox and make the data available from any of my computers.  So, here&#8217;s the quick n&#8217; dirty recipe:</p>
<p>1) If you don&#8217;t already have an account, signup for <a href="http://www.dropbox.com">Dropbox</a> and install clients on your computer running Garmin Training Center, and where you ultimately want to send your .tcx files.</p>
<p>2) After your Dropbox folder is setup and you&#8217;ve done a simple test to verify sync works, you&#8217;ll want to share this folder.  Now, I&#8217;m sure there&#8217;s an easy way to share folders OUTSIDE of the Dropbox folder, however 1 minute of Googling with no luck made me look for another option.  On Windows-based machines you can actually do the equivalent of a Unix symlink using the <a href="http://technet.microsoft.com/en-us/sysinternals/bb896768">Junction program</a> from sysinternals.  Here&#8217;s how to set it up:</p>
<ul>
<li>Download and install Junction from the URL (you can copy the junction.exe file to c:\windows\system32)</li>
<li>Go to the command prompt (cmd), cd to your Dropbox directory, and run:</li>
<li>c:\windows\system32\junction GarminHistory C:\Users\username\AppData\Roaming\GARMIN\Devices\1110044\History</li>
<li>Do a directory listing and verify the new GarminHistory folder exists under Dropbox and syncs properly</li>
</ul>
<p>3) Go to your destination server where Dropbox is installed and presto, you have all of your workout/activity/heartrate data available in .TCX format!</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Automatically+sync+%26+import+Garmin+TCX+data+http://eric-blue.com/?p=1501+via+@ericblue" title="Post to Twitter"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://eric-blue.com/2011/07/10/automatically-sync-import-garmin-tcx-data/&amp;title=Automatically+sync+%26+import+Garmin+TCX+data" title="Post to Delicious"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-delicious-big3.png" alt="Post to Delicious" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://eric-blue.com/2011/07/10/automatically-sync-import-garmin-tcx-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TRAQS.me &#8211; Tools for Reporting &amp; Analysis of the Quantified Self</title>
		<link>http://eric-blue.com/2011/06/26/traqs-me/</link>
		<comments>http://eric-blue.com/2011/06/26/traqs-me/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 03:40:41 +0000</pubDate>
		<dc:creator>ericblue76</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Fitness]]></category>
		<category><![CDATA[Geocoding]]></category>
		<category><![CDATA[Health]]></category>
		<category><![CDATA[Memex]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Personal Informatics]]></category>
		<category><![CDATA[Quantified Self]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://eric-blue.com/?p=1484</guid>
		<description><![CDATA[A month ago around this time I was anxiously awaiting the first annual Quantified Self conference in Mountain View, CA. This was a fantastic conference on many levels and, although a little late, deserves a ...]]></description>
			<content:encoded><![CDATA[<p>A month ago around this time I was anxiously awaiting the first annual <a href="http://www.quantifiedself.com/conference/">Quantified Self conference</a> in Mountain View, CA. This was a fantastic conference on many levels and, although a little late, deserves a future post detailing the great sessions, people, and companies who were there.  I didn&#8217;t have an official speaking session, but I used this event as a milestone to make forward progress on my <a href="http://eric-blue.com/2011/03/13/fitness-tracking-platform-update-on-progress/">personal project for fitness tracking</a>.</p>
<p>Since last August when the project was originally envisioned, I&#8217;ve made a lot of progress on not only building this system for my own use, but also expanding on the original idea of just &#8216;tracking fitness&#8217;.  Fitness is one significant component of improving oneself and general well-being.  But, when most people think of fitness, it&#8217;s associated with simply going to the gym, running on the treadmill, or pumping iron indoors, and tracking these activities in some journal.  The scope of my project has since grown to include tracking for sleep quality, detailed location tracking and geocoding, and heart rate monitoring.  I&#8217;d like to eventually expand the scope further to include nutrition tracking, health metrics (blood pressure, nutrient levels/blood tests, cholesterol, etc.), and even more subject things like mood and factors that affect emotional well-being.</p>
<p>With this in mind, my personal project has evolved into a more general purpose tool for tracking and analysing data related to the Quantified Self.  Hence, my new project name TRAQS.me (Tools for Reporting &amp; Analysis of the Quantified Self) or simply put, it&#8217;s a tool that (Tracks &#8220;Me&#8221;).  I&#8217;ve put together a slideshow/presentation that gives a decent overview of the entire project:<br />
<center><br />
<a target="newwin" href="http://www.slideshare.net/ericblue76/traqsme-presentation"><img class="aligncenter size-full wp-image-1495" title="traqsme" src="http://eric-blue.com/wp-content/uploads/2011/06/traqsme.png" alt="" width="517" height="287" /></a><br />
</center><br />
I&#8217;ve also put up a site at <a href="http://traqs.me">http://traqs.me</a> that contains the presentation and a static <a href="http://traqs.me/demo/">demo</a> (HTML pages) that illustrate the Dashboard, Report, and Map features.  The code is still a few weeks away from getting to the point that I&#8217;m ready to distribute a binary installer, and a little further out until the code is shareable (probably on GitHub).  I&#8217;m still working out what portion of the code will be released as open source (splitting out the data import, reporting/data export, and UI components), entertaining how traqs.me could be used by others as an online service, and ultimately figuring out how to license appropriately.  Stay tuned for more!</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=TRAQS.me+%E2%80%93+Tools+for+Reporting+%26+Analysis+of+the+Quantified+Self+http://eric-blue.com/?p=1484+via+@ericblue" title="Post to Twitter"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://eric-blue.com/2011/06/26/traqs-me/&amp;title=TRAQS.me+%E2%80%93+Tools+for+Reporting+%26+Analysis+of+the+Quantified+Self" title="Post to Delicious"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-delicious-big3.png" alt="Post to Delicious" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://eric-blue.com/2011/06/26/traqs-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox Scrapbook Hacks &#8211; Viewing and Saving Webpages from Anywhere!</title>
		<link>http://eric-blue.com/2011/04/03/firefox-scrapbook-hacks-viewing-and-saving-webpages-from-anywhere/</link>
		<comments>http://eric-blue.com/2011/04/03/firefox-scrapbook-hacks-viewing-and-saving-webpages-from-anywhere/#comments</comments>
		<pubDate>Sun, 03 Apr 2011 20:12:00 +0000</pubDate>
		<dc:creator>ericblue76</dc:creator>
				<category><![CDATA[Headline]]></category>
		<category><![CDATA[IPhone]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Knowledge]]></category>
		<category><![CDATA[Knowledge Management]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Memex]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://eric-blue.com/?p=1444</guid>
		<description><![CDATA[This weekend I decided to wrap up a couple cool knowledge management &#8220;hacks&#8221; and share some code on GitHub.  I primarily use the Firefox Scrapbook plugin to save all web pages of interest and use ...]]></description>
			<content:encoded><![CDATA[<p>This weekend I decided to wrap up a couple cool knowledge management &#8220;hacks&#8221; and share some code on GitHub.  I primarily use the <a href="http://amb.vis.ne.jp/mozilla/scrapbook/">Firefox Scrapbook plugin </a>to save all web pages of interest and use it as a general &#8220;digital snippet&#8221; repository. Since I started using Scrapbook in 2006 there have been a number of online services that have come along to offer this functionality (namely Evernote, Zotero, and countless others).  Some of these services make it very easy to universally access and save webpages between multiple devices.  As part of my usual DIY philosophy, I&#8217;ve made an effort to stick with Scrapbook and build the missing features myself.  This is in large part due to data ownership (it&#8217;s my data and I don&#8217;t want to be tied to a single service/company), plus it&#8217;s fun to tinker and make these useful &#8220;hacks&#8221;.</p>
<p>In Dec &#8216;09 I shared a blog post about how to <a href="http://eric-blue.com/2009/12/07/how-to-synchronize-your-digital-scrapbook/">synchronize the scrapbook data between multiple computers</a>. This was the first major step to sharing data between multiple devices, but still lacked some of the ubiquity that I desired.  In a nutshell I&#8217;ve made 2 <span style="text-decoration: underline;">major</span> enhancements to Scrapbook:</p>
<ol>
<li>An email &#8216;bridge&#8217; to Scrapbook so I can email links from any device (PC, iPhone, iPad) and have them saved by Scrapbook</li>
<li>A centralized web-interface to browse/search/filter my scrapbook data.</li>
</ol>
<p>I&#8217;ll start off with the less visually-stunning hack (email bridge), but by far the craftier of two.</p>
<p><strong>Hack #1 &#8211; Scrapbook Email Interface</strong></p>
<p>Whenever I began synchronizing my Scrapbook data between the 2-3 computers this solved a huge problem with being able to save webpages from anywhere.  Since 2009 a lot has changed, and devices like iPhone and iPad (yes, Apple fan boy to a degree) have changed the way we consume news.  Recently I&#8217;ve been using apps on the iPad like Zite and Flipboard to consolidate my Twitter, Facebook, and Googler Reader feeds into a single personalized newspaper.  This means that now &gt; 50% of my reading time is spent from a device that has no visibility into my Scrapbook data.  I simply wanted a way to automatically email a link (built nativily into these apps) and have it automagically saved into my Scrapbook folder.  I could have simply cut corners and wrote a script to hand-edit the Scrapbook RDF Files and save the web page using something like wget or curl.  But, it just wouldn&#8217;t be the same&#8230;. I want the webpage saved EXACTLY as Firefox would normally render and save it.</p>
<p>This poses a bit of a technical challenge, since Scrapbook runs inside Firefox and there&#8217;s no native way to interface with a plugin running inside a browser.  After researching a number of approaches, I came across 2 Firefox plugins that let you build interfaces inside firefox (http, telent, etc.) that actually let you control the browser and execute Javascript.  Of the 2 plugins; <a href="https://addons.mozilla.org/en-us/firefox/addon/pow-plain-old-webserver/">POW </a>and <a href="https://addons.mozilla.org/en-US/firefox/addon/mozrepl/">MozRepl</a>, I decided to go with POW (Plain Old Webserver).  Both plugins are wicked cool in the sense that they&#8217;re non-traditional and very powerful.  POW runs a webserver inside firefox and let&#8217;s you run your &#8217;server-side&#8217; scripts as Javascript.  I&#8217;ve basically written a server process that runs INSIDE the client and executes XPCOM/Javascript to control the web browser windows and invokes the Scrapbook plugin API directly.</p>
<p>The setup process is simple:</p>
<ol>
<li>Setup and install the POW and Scrapbook plugins in your browser</li>
<li>Configure POW to run a desired port and create a new directory /scrapbook/</li>
<li>Copy the index.sjs (server-side javascript) to this new /scrapbook/ directory</li>
<li>Setup a new email box or alias (e.g. yourusername+scrapbook@gmail.com)</li>
<li>Either run scrapbook2email.pl manually or run as a CRON job every couple minutes</li>
<li>Simply send emails to your new Scrapbook email, run the email script, and watch your pages be saved automatically</li>
</ol>
<p>At a high-level this is accomplished with 2 scripts:</p>
<p><strong>Email Interface script (Perl)</strong></p>
<p>This script uses IMAP to retrieve scrapbook email requests from a designated folder. Along with doing basic sender/recipient validation, the script is also aware of plain text/multipart messages.  Once the email request is parsed, the link of the requested web page to be saved will be extracted.  Given the request URL the script will then contact the POW server and pass the requested URL (e.g. http://127.0.0.1:6670/scrapbook/?url=http://yourwebpagetobesaved.com/?articleID=3q4e3332).  Note that this version of the script requires that Firefox/POW be running and makes no attempt to launch for you.</p>
<p>For a copy of the script click <a href="https://github.com/ericblue/Scrapbook-Email-Interface/blob/master/email2scapbook.pl" target="_blank">here</a> (GitHub).</p>
<p><strong>Scrapbook/POW Bridge (Server-Side Javascript)</strong></p>
<p>This script does the heavy lifting, and is essentially running at the other end of the POW server URL (http://127.0.0.1:6670/scrapbook/). Once the requested URL is detected the browser will spawn a new tab, automatically execute the Scrapbook Capture request, and save the webpage to a new top-level folder (e.g. Unfiled/MM-DD-YYYY). This script was tested with Scrapbook v.1.3.7.</p>
<p>For a copy of the script click <a href="https://github.com/ericblue/Scrapbook-Email-Interface/blob/master/index.sjs" target="_blank">here</a> (GitHub).</p>
<p>It&#8217;s nifty now to email a link to my Scrapbook Bot and wihin a couple minutes a little notify popup shows in Firefox indicating my page was saved.</p>
<p><strong>Hack #2 &#8211; Scrapbook Browser</strong></p>
<p>This code was actually written back in Dec &#8216;09 after I wrote the synchronize blog post (and around the time I wrote the Document Viewer), however I haven&#8217;t shared until now.  What I&#8217;ve done is write a simple Perl/JQuery web app that used Simile&#8217;s Exhibit to view Scrapbook data in a tile, table, or timeline.  This interface also has a file/folder view so you can browse snippets just like you can through the native Scrapbook plugin interface within Firefox.</p>
<p>Here are some screenshots:</p>
<p><strong>Tile View</strong></p>
<p style="text-align: center;"><a title="scrapbook-tile by ericblue76, on Flickr" href="http://www.flickr.com/photos/56683314@N00/5585601153/"><img class="aligncenter" src="http://farm6.static.flickr.com/5190/5585601153_605e15c3fd.jpg" alt="scrapbook-tile" width="500" height="310" /></a></p>
<p><strong>Timeline View</strong></p>
<p style="text-align: center;"><a title="scrapbook-timeline by ericblue76, on Flickr" href="http://www.flickr.com/photos/56683314@N00/5585600779/"><img class="aligncenter" src="http://farm6.static.flickr.com/5067/5585600779_e8533b8361.jpg" alt="scrapbook-timeline" width="500" height="315" /></a></p>
<p><strong>Table View</strong></p>
<p style="text-align: center;"><a title="scrapbook-table by ericblue76, on Flickr" href="http://www.flickr.com/photos/56683314@N00/5585601333/"><img class="aligncenter" src="http://farm6.static.flickr.com/5228/5585601333_7d561d97d9.jpg" alt="scrapbook-table" width="500" height="310" /></a></p>
<p><strong>Folder View</strong></p>
<p style="text-align: center;"><a title="scrapbook-folder by ericblue76, on Flickr" href="http://www.flickr.com/photos/56683314@N00/5585601017/"><img class="aligncenter" src="http://farm6.static.flickr.com/5308/5585601017_c970c25570.jpg" alt="scrapbook-folder" width="500" height="289" /></a></p>
<p style="text-align: left;">To download the code click <a href="https://github.com/ericblue/Scrapbook-Browser" target="_blank">here</a> (GitHub).</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Firefox+Scrapbook+Hacks+%E2%80%93+Viewing+and+Saving+Webpages+from+Anywhere%21+http://eric-blue.com/?p=1444+via+@ericblue" title="Post to Twitter"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://eric-blue.com/2011/04/03/firefox-scrapbook-hacks-viewing-and-saving-webpages-from-anywhere/&amp;title=Firefox+Scrapbook+Hacks+%E2%80%93+Viewing+and+Saving+Webpages+from+Anywhere%21" title="Post to Delicious"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-delicious-big3.png" alt="Post to Delicious" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://eric-blue.com/2011/04/03/firefox-scrapbook-hacks-viewing-and-saving-webpages-from-anywhere/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Fitness Tracking Platform: Update on Progress</title>
		<link>http://eric-blue.com/2011/03/13/fitness-tracking-platform-update-on-progress/</link>
		<comments>http://eric-blue.com/2011/03/13/fitness-tracking-platform-update-on-progress/#comments</comments>
		<pubDate>Sun, 13 Mar 2011 23:58:19 +0000</pubDate>
		<dc:creator>ericblue76</dc:creator>
				<category><![CDATA[Fitness]]></category>
		<category><![CDATA[Health]]></category>
		<category><![CDATA[InfoViz]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Personal Development]]></category>
		<category><![CDATA[Personal Informatics]]></category>
		<category><![CDATA[Quantified Self]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://eric-blue.com/?p=1407</guid>
		<description><![CDATA[Last August, I enthusiastically blogged about an idea I had for creating a Fitness Tracking Platform; personal informatics for fitness.  Since that time I&#8217;ve been gradually making progress and am getting closer to fulfilling that ...]]></description>
			<content:encoded><![CDATA[<p>Last August, I enthusiastically blogged about an idea I had for creating a <a href="http://eric-blue.com/2010/08/14/fitness-tracking-platform-personal-informatics-for-fitness/">Fitness Tracking Platform</a>; personal informatics for fitness.  Since that time I&#8217;ve been gradually making progress and am getting closer to fulfilling that original vision.  I figured I would do a quick writeup and share some of the progress I&#8217;ve made, and layout a simple roadmap for taking it to the next level.  For right now I have some screenshots I can share.  In the coming weeks I plan on putting up an actual demo application, and may release a large portion of the code as open source.  Ultimately, I still need to figure out what I plan to do with it, but my immediate goal is to build something that is practical and useful for myself.  The original idea started out to mainly track fitness related data (and that&#8217;s primarily what I&#8217;ve been doing), but the application for this could apply generically to any form of self tracking.  It&#8217;s possible this could be one of the earliest efforts to create an open source application for personal tracking (see the <a href="http://quantifiedself.com/self-tracking-links-to-get-you-started/">Quantified Self list of software</a>).</p>
<p><strong>What&#8217;s Been Done So Far?</strong></p>
<p>If you look at the <a href="http://eric-blue.com/wp-content/uploads/2010/08/Fitness_Tracking_Platform.jpg">original diagram I created</a>, there where a few different components to this tracking platform (local storage, data collection scripts/api integration, and the presentation layer).</p>
<ul>
<li><strong>Local Storage &#8211; Personal copy of data stored in MySQL</strong>.  I created the local storage piece almost immediately after writing the article in Aug.  I chose to use MySQL as a database, and created a schema that was suited towards collecting my initial data set of interest: data from my FitBit and WiThings scale.  The schema accounts for storing both daily and intraday activity for calories burned/consumed, activity score (+very active, moderately active, and lightly active), total distance, steps taken, sleep, and weight.  I&#8217;ve now created about a dozen or so SQL queries that will generate useful reports on this historical data.</li>
</ul>
<ul>
<li><strong>Data collection scripts/API Integration. </strong>I immediately leveraged the<a href="http://eric-blue.com/projects/fitbit/"> Perl FitBit API </a>I originally wrote last April to sync data from the FitBit site to my local database.  I created a nightly cron job that will request the daily + intraday stats and save to the db using Perl::DBI.  I also took a similar approach with the WiThings scale.  Although I haven&#8217;t created a Perl wrapper yet for Withings, they do publish and easy to use <a href="http://www.withings.com/en/api/bodyscale">REST API</a> for getting access to your weight.  This script also runs on a nighly basis and saves weight information to the local database.</li>
</ul>
<ul>
<li><strong>Presentation Layer</strong>.  This has been the most complicated piece so far.  I&#8217;ve created a Java-based webapp using Spring 3.0/Jetty to build the analytics UI.  For now the UI is built with 2 major views: a dashboard, and reporting interface.  The dashboard displays both historical and daily information in a visually-pleasing format using Google Charts.  You can see a daily snapshot (+ weekly, quarterly, and yearly views) and see stats on your activity, distance, steps taken, weight, sleep and intraday stats (activity and sleep level on an hourly basis).  I&#8217;ve also built a light home-grown reporting interface that integrates with the Google Visualization API and easily builds dynamic tables and charts based on the provided SQL queries.</li>
</ul>
<p><strong>Screenshots</strong></p>
<ul>
<li>Dashboard View</li>
</ul>
<p style="text-align: center;"><a title="dashboard by ericblue76, on Flickr" href="http://www.flickr.com/photos/56683314@N00/5523777619/"><img class="aligncenter" src="http://farm6.static.flickr.com/5253/5523777619_2aebd6852b.jpg" alt="dashboard" width="499" height="500" /></a></p>
<ul>
<li>Historical Stats &#8211; Multiple Activity Logs</li>
</ul>
<p style="text-align: center;"><a title="historical by ericblue76, on Flickr" href="http://www.flickr.com/photos/56683314@N00/5524370032/"><img class="aligncenter" src="http://farm6.static.flickr.com/5100/5524370032_f9cb7461c8.jpg" alt="historical" width="500" height="212" /></a></p>
<ul>
<li>Historical Stats &#8211; Distance Bar Chart</li>
</ul>
<p style="text-align: center;"><a title="historical2 by ericblue76, on Flickr" href="http://www.flickr.com/photos/56683314@N00/5524935054/"><img class="aligncenter" src="http://farm6.static.flickr.com/5015/5524935054_5a6257c9cd.jpg" alt="historical2" width="500" height="212" /></a></p>
<ul>
<li>Daily Stats</li>
</ul>
<p style="text-align: center;"><a title="daily by ericblue76, on Flickr" href="http://www.flickr.com/photos/56683314@N00/5524369764/"><img class="aligncenter" src="http://farm6.static.flickr.com/5174/5524369764_7523be1e36.jpg" alt="daily" width="500" height="213" /></a></p>
<ul>
<li>Intraday Stats</li>
</ul>
<p style="text-align: center;"><a title="intraday by ericblue76, on Flickr" href="http://www.flickr.com/photos/56683314@N00/5524370070/"><img class="aligncenter" src="http://farm6.static.flickr.com/5171/5524370070_29ac8c1a96.jpg" alt="intraday" width="500" height="212" /></a></p>
<ul>
<li>Reporting</li>
</ul>
<p style="text-align: center;"><a title="report_closeup by ericblue76, on Flickr" href="http://www.flickr.com/photos/56683314@N00/5524524164/"><img class="aligncenter" src="http://farm6.static.flickr.com/5059/5524524164_17005eabdc.jpg" alt="report_closeup" width="500" height="233" /></a></p>
<p><strong>Immediate Next Steps?</strong></p>
<p>The current code is fairly stable and mostly ready for a demo.  Before I make it live I&#8217;m planning on adding a few major features:</p>
<ol>
<li>Geo-Location support &#8211; I&#8217;ve been <a href="http://eric-blue.com/2010/08/28/geolocation-gps-and-self-tracking/">tracking GPS coordinates</a> since I purchased my QStarz device in September.  I&#8217;m thinking of adding a couple Map and GPS tracklog views to the Dashboard.  And, this could lead to some interesting location-based reporting as well.  I have a ton of saved .gpx files, so it&#8217;s a matter of writing an integration script to parse and store in the db.  And, some lightweight presentation layer to dynamically generate .KML and overlay on top of Google Maps.</li>
<li>Simple mobile interface.  I&#8217;d like to be able to access the interface using my iPhone and having some light interface to get quick stats and graphs would be nice.</li>
<li>Come up with a catchy project name.  As I stated earlier, although the original scope of this was for fitness tracking, this type of platform can be used for tracking any type of personal statistics.</li>
</ol>
<p><strong>Future Roadmap</strong></p>
<ol>
<li>Tracking detailed sleep info from <a href="http://www.myzeo.com/">MyZeo</a>.  Since I wrote the original vision I had the chance to do a review for the <a href="http://eric-blue.com/2011/01/02/zeo-personal-sleep-coach-hacking-your-way-to-a-better-nights-sleep/">MyZeo sleep device</a>.  I&#8217;ve also <a href="https://github.com/ericblue/Perl-Zeo-API">created a Perl API</a> so it&#8217;s simply a matter of writing the integration script to start recording in the MySQL DB.</li>
<li>Tracking workout info from my iPhone app &#8211; iFitness.  I also have about 10 years worth of workout information either stored from previous products (like CrossTrainer) or written down.</li>
<li>Tracking heartrate info from my Garmin heartrate monitor watch.</li>
<li>Integrate with the new official <a href="http://fitbit.com">Fitbit</a> API.  Since I wrote my initial (unofficial) Perl API, fitbit has embraced the developer community and <a href="http://dev.fitbit.com/">released a support API </a>(yes!)</li>
</ol>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Fitness+Tracking+Platform%3A+Update+on+Progress+http://eric-blue.com/?p=1407+via+@ericblue" title="Post to Twitter"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://eric-blue.com/2011/03/13/fitness-tracking-platform-update-on-progress/&amp;title=Fitness+Tracking+Platform%3A+Update+on+Progress" title="Post to Delicious"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-delicious-big3.png" alt="Post to Delicious" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://eric-blue.com/2011/03/13/fitness-tracking-platform-update-on-progress/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Kicking iTunes to the Curb</title>
		<link>http://eric-blue.com/2011/03/06/kicking-itunes-to-the-curb/</link>
		<comments>http://eric-blue.com/2011/03/06/kicking-itunes-to-the-curb/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 01:52:15 +0000</pubDate>
		<dc:creator>ericblue76</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[IPhone]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://eric-blue.com/?p=1397</guid>
		<description><![CDATA[I&#8217;ve had a love/hate relationship with iTunes over the years and I&#8217;m happy to say that I&#8217;m finally moving on.  The major pain point I&#8217;m experiencing right now is with sync times.  I came to ...]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a love/hate relationship with iTunes over the years and I&#8217;m happy to say that I&#8217;m finally moving on.  The major pain point I&#8217;m experiencing right now is with sync times.  I came to the realization that I&#8217;ve actually stopped listening to most of my music due to the simple fact that it takes forever to sync (my current device is an iPhone 4).  I decided to take my music collection to the next level and found a couple great programs to help out.  My goals?</p>
<ol>
<li>Find an alternative to iTunes that let&#8217;s me access ALL of my music on the go with a low barrier to syncing/listening</li>
<li>Cleanup my music collection (meta tags, filenames, etc.) since my iTunes use (abuse) has left many songs forgotten and neglected</li>
<li>Free my Music&#8230; while I&#8217;m in the mood to completely ditch iTunes I might as well get rid of all my DRM-protected music.  I&#8217;m doing this for both philosophical and practical reasons.</li>
</ol>
<p style="text-align: center;"><a href="http://eric-blue.com/wp-content/uploads/2011/03/itunesdrm.gif"><img class="aligncenter size-medium wp-image-1400" title="itunesdrm" src="http://eric-blue.com/wp-content/uploads/2011/03/itunesdrm-225x300.gif" alt="" width="225" height="300" /></a></p>
<p><strong>SubSonic (</strong><a href="http://www.subsonic.org/">http://www.subsonic.org/</a>)</p>
<p>Subsonic is an open source music (free) java-based streaming server for Windows, Mac, and Linux.  Right of the bat, I have to say it&#8217;s one of the most impressive open source apps I&#8217;ve come across.  I had it setup on Ubuntu in &lt; 5 minutes and it works flawlessly!  Subsonic provides a web interface so you can access and listen to your music from anywhere.  I have it hosted on my own personal server and have tested it seamlessly over both 3G and Wi-Fi. The great thing about this product is there are applications for iPhone, Android and Windows 7 that let you stream music to your phone.  The app I chose for iPhone was iSub Music Streamer.  It cost $5 USD, but is probably the best money I&#8217;ve spent in the app store.  Things I really like?</p>
<ul>
<li>Transcoding &#8211; Even if you don&#8217;t have all .MP3s on your server, Subsonic can convert and stream other types on the fly (like AAC, AIF, M4A).  You can also customize audio bitrate based on bandwith usage (Wi-Fi or 3G), but by default I don&#8217;t limit.</li>
<li>Caching &#8211; Once you&#8217;ve played the song it will be cached.  You can also queue or cache songs ahead of time and force the app into offline mode.</li>
<li>Playlists &#8211; You can create both server-side and client side playlists.  This makes it really easy to share with multiple devices (iPhone(s), iPad, PC, media center, etc.)</li>
<li>Podcasts &#8211; This feature completely eliminates the need for Iphone.  Plug in an RSS Podcast URL and Subsonic will download your podcast .MP3s and keep them updated on demand.</li>
</ul>
<p>A viable alternative to iTunes?  You bet!  No sync times and music is available from anywhere.  I&#8217;m rediscovering my music collection all over again and listening to music I haven&#8217;t really bothered with in years.</p>
<p><strong>Jaikoz Audio Tagger </strong>(<a href="http://www.jthink.net/jaikoz/">http://www.jthink.net/jaikoz/</a>)</p>
<p>Years ago I used a very good Windows program called MP3Tag to cleanup my music collection.  This program would let you bulk-edit the MP3 ID3 tags (Artist, Album, Track, Year, etc.) and rename files.  This program still works well but I found an even better alternative.  Jaikoz (20GBP-~$33USD) is another amazingly slick app. It does everything that MP3 tag does plus more:</p>
<ul>
<li>Integration with online metadata sites like MusicBrainz and Discogs to automatically identify files</li>
<li>Acoustic fingerprinting using Amplified.  If you have a file with no identifiable information in the filename or metadata Amplified will most likely find it (think Shazam or SoundHound)</li>
<li>Adds album cover art and lyrics</li>
</ul>
<p>A few years ago I blogged about an incident where my first iPod Video music db became corrupt and I lost information on about 500+ songs (meta data was non-existant in most of them and files were renamed to something like QD3K33.mp3).  Unbelievably Jaikoz was able to recover about 95+% of the files and even added album cover art and lyrics!</p>
<p><strong>Noteburner </strong>(<a href="http://www.noteburner.com/">http://www.noteburner.com/</a>)</p>
<p>Since Rhapsody and Amazon started offering .MP3 downloads all of my online music purchases have been through them.  However, I still have (had) hundreds of DRM-protected songs that I purchased through iTunes and Rhapsody.  Back in 2008 I went through some pain to burn the Rhapsody purchases to CD and then rip them again back to .MP3.  This time around I wanted to find a way to make it easier.  I&#8217;ve used virtual CDRW software in the past like <a href="http://cdburnerxp.se/">CDBurnerXP </a>and it worked well.  Noteburner, a worthly alternative ($39.95), offers many of the features of CDBurnerXP but also burns to CD and converts to MP3 in a single-step process!  Simply install, select as your preferred CD-RW drive for burning and burn the playlist.  Noteburner will automatically create the virtual CD, read the CD-TEXT provided by itunes, and create the .MP3 file.  Once you have all your converted files, simply load them into Jaikoz and get the full range of meta tags including album cover art and lyrics.</p>
<p>My total cost for this little project was less than $75 and I couldn&#8217;t be happier.  I now have a clean music collection that I can access from anywhere in the world, and don&#8217;t have to feel the iTunes pain ever again.  C-ya!!</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Kicking+iTunes+to+the+Curb+http://eric-blue.com/?p=1397+via+@ericblue" title="Post to Twitter"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://eric-blue.com/2011/03/06/kicking-itunes-to-the-curb/&amp;title=Kicking+iTunes+to+the+Curb" title="Post to Delicious"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-delicious-big3.png" alt="Post to Delicious" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://eric-blue.com/2011/03/06/kicking-itunes-to-the-curb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

