<?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>exploration</title>
	<atom:link href="http://robertcarlsen.net/feed" rel="self" type="application/rss+xml" />
	<link>http://robertcarlsen.net</link>
	<description>accounts of success and misadventure</description>
	<lastBuildDate>Sat, 14 Aug 2010 21:49:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Mobile Logger &#8211; DB export and zip compression</title>
		<link>http://robertcarlsen.net/2010/08/14/mobile-logger-db-export-and-zip-compression-1287</link>
		<comments>http://robertcarlsen.net/2010/08/14/mobile-logger-db-export-and-zip-compression-1287#comments</comments>
		<pubDate>Sat, 14 Aug 2010 21:44:39 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=1287</guid>
		<description><![CDATA[Got two new features rolled into Mobile Logger at once&#8230;raw database export and zip compression. This sounds exciting, right?!
Actually, it&#8217;s pretty cool and useful. Some of these new export formats (GC and GPX, I&#8217;m looking at you) are XML-based and thus quite verbose. What was a manageably small CSV file or JSON string has become [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/08/db-zip.png" rel="lightbox[1287]"><img class="alignright size-thumbnail wp-image-1289" title="db-zip" src="http://robertcarlsen.net/blog/wp-content/uploads/2010/08/db-zip-150x150.png" alt="db-zip" width="150" height="150" /></a>Got two new features rolled into Mobile Logger at once&#8230;raw database export and zip compression. This sounds exciting, right?!</p>
<p>Actually, it&#8217;s pretty cool and useful. Some of these new export formats (GC and GPX, I&#8217;m looking at you) are XML-based and thus quite verbose. What was a manageably small CSV file or JSON string has become inflated much larger from all the tagging in these formats. Exporting a log in one of these formats means having send a doubly large file (approx. 300kB -&gt; 600kB). However, all the repeated tags makes them great candidates for zip compression. Those logs are about 70kB afterwards. So there&#8217;s that.<span id="more-1287"></span></p>
<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/08/db-settings.png" rel="lightbox[1287]"><img class="alignright size-thumbnail wp-image-1288" title="db-settings" src="http://robertcarlsen.net/blog/wp-content/uploads/2010/08/db-settings-150x150.png" alt="db-settings" width="150" height="150" /></a></p>
<p>Secondly, I have been thinking of making it easy to get the raw database off the device. It&#8217;s a good idea for backup and since it&#8217;s sqlite, advanced tinkerers could run custom queries and maybe figure out neat things&#8230;like where do I ride fastest, generally? To that end I&#8217;ve added a row in the settings panel to e-mail the raw database directly. This is what really pushed the compression initiative forward. The db on my device is 14MB, which is difficult for the phone to e-mail (lots of memory warnings and it took forever to send). Compressing the file makes it about 3MB, which is still large but quick enough over WiFi.</p>
<p>However, making the raw database available does expose a pretty big shortcut that I took when first putting the app together. All the sensor/log data is stored in the db as big JSON strings. This made it really easy to save locally and send to couchDB on the fly while a log was being recorded. Also, it didn&#8217;t matter what data I was storing &#8211; couchDB is schema-less and it was nice to not have to define a local schema. The huge downside is that every export feature parses the JSON strings and then formats each datum as necessary&#8230;it takes a bit of work on the phone&#8217;s part. Further, it makes it very difficult to use SQL queries to inspect the log data&#8230;aggregates, relationships&#8230;all that would have to be parsed into memory first. Ugh. Not happening.</p>
<p>So, on the horizon I suppose is gutting the data model and implementing the schema properly. The sensors on the iPhone aren&#8217;t changing &#8211; at least until we get to connect to external sensors <img src='http://robertcarlsen.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  .</p>
<p>As always, code is on <a href="http://github.com/rcarlsen/Mobile-Logger" onclick="pageTracker._trackPageview('/outgoing/github.com/rcarlsen/Mobile-Logger?referer=');">github</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2010/08/14/mobile-logger-db-export-and-zip-compression-1287/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compiling Golden Cheetah with Twitter+OAuth</title>
		<link>http://robertcarlsen.net/2010/08/12/compiling-golden-cheetah-with-twitteroauth-1279</link>
		<comments>http://robertcarlsen.net/2010/08/12/compiling-golden-cheetah-with-twitteroauth-1279#comments</comments>
		<pubDate>Fri, 13 Aug 2010 02:06:01 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Golden Cheetah]]></category>
		<category><![CDATA[biggerbrain]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[configure]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[link]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[posterity]]></category>
		<category><![CDATA[Qt]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=1279</guid>
		<description><![CDATA[Justin added a Twitter posting feature to Golden Cheetah a couple weeks ago. However, it used basic authentication, which Twitter has announced is going away in favor of OAuth only. So, after several more days of coding he did a bang up job of rolling in support using liboauth.
Now, getting liboauth and it&#8217;s prerequisites configured [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/08/Screen-shot-2010-08-12-at-22.01.08.png" rel="lightbox[1279]"><img class="alignright size-thumbnail wp-image-1283" title="Screen shot 2010-08-12 at 22.01.08" src="http://robertcarlsen.net/blog/wp-content/uploads/2010/08/Screen-shot-2010-08-12-at-22.01.08-150x150.png" alt="Screen shot 2010-08-12 at 22.01.08" width="150" height="150" /></a>Justin added a Twitter posting feature to Golden Cheetah a couple weeks ago. However, it used basic authentication, which Twitter has announced is going away in favor of OAuth only. So, after several more days of coding he did a bang up job of rolling in support using liboauth.</p>
<p>Now, getting liboauth and it&#8217;s prerequisites configured to play nicely with my Golden Cheetah dev environment has been another struggle. I have been making the OS X releases of Golden Cheetah for a while &#8211; and we package them as a universal binary (i386/ppc) with 10.4 support. I&#8217;ve had to custom compile Qt, QWT, srmio and all that stuff to enable this.</p>
<p>In brief, liboauth needed to be compiled against the same arch that GC and co. have been, and it really wanted to go native, eg x86_64 on my MacBook Pro. After a night and day of tinkering&#8230;here&#8217;s what worked. Thanks to Justin for getting this going.</p>
<p><strong>Export config flags</strong> (just makes life easier on the command line):</p>
<pre class="brush: cpp;">
export CFLAGS=-mmacosx-version-min=10.4
export CPPFLAGS=-mmacosx-version-min=10.4
</pre>
<p><strong>openssl 1.0.0a:</strong></p>
<pre class="brush: cpp;">
./config -m32
</pre>
<p><strong>liboauth 0.8.8 / curl 7.21.1:</strong></p>
<pre class="brush: cpp;">
./configure CC=&quot;gcc -arch i386&quot; CXX=&quot;g++ -arch i386&quot; -host i386
</pre>
<p><strong>Golden Cheetah:</strong></p>
<p>After getting linker errors for a while, I realized that I had to directly link to the static version of libcrypto that was installed alongside libssl in /usr/local/ssl.</p>
<pre class="brush: cpp;">
Undefined symbols:
  &quot;_EVP_MD_size&quot;, referenced from:
      _oauth_body_hash_file in liboauth.a(liboauth_la-hash.o)
      _oauth_body_hash_data in liboauth.a(liboauth_la-hash.o)
ld: symbol(s) not found
</pre>
<p>Here&#8217;s the relevant bit of src.pro:</p>
<pre class="brush: cpp;">
!isEmpty( LIBOAUTH_INSTALL ) {
INCLUDEPATH += $${LIBOAUTH_INSTALL}/include
LIBS += /usr/local/ssl/lib/libcrypto.a
LIBS +=  $${LIBOAUTH_INSTALL}/lib/liboauth.a
LIBS += -lz
LIBS += -lcurl
DEFINES += GC_HAVE_LIBOAUTH
SOURCES += TwitterDialog.cpp
HEADERS += TwitterDialog.h
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2010/08/12/compiling-golden-cheetah-with-twitteroauth-1279/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile Logger &#8211; GPX extensions</title>
		<link>http://robertcarlsen.net/2010/08/10/mobile-logger-gpx-extensions-1275</link>
		<comments>http://robertcarlsen.net/2010/08/10/mobile-logger-gpx-extensions-1275#comments</comments>
		<pubDate>Wed, 11 Aug 2010 04:55:20 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[iphone]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[gpx bike]]></category>
		<category><![CDATA[mobile logger]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=1275</guid>
		<description><![CDATA[Rolling the extra logged sensor data into the GPX export took more effort that it should have&#8230;but I uncovered and fixed a latent bug in the export feature, so that&#8217;s a win right? Regardless, it&#8217;s was nice to use the new issue tracker at bugs.robertcarlsen.net for real(z) for the first time. I&#8217;m looking to get several [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/08/gpx-ext.png" rel="lightbox[1275]"><img class="alignright size-thumbnail wp-image-1276" title="gpx-ext" src="http://robertcarlsen.net/blog/wp-content/uploads/2010/08/gpx-ext-150x150.png" alt="gpx-ext" width="150" height="150" /></a>Rolling the extra logged sensor data into the GPX export took more effort that it should have&#8230;but I uncovered and fixed a latent bug in the export feature, so that&#8217;s a win right? Regardless, it&#8217;s was nice to use the new issue tracker at <a href="http://bugs.robertcarlsen.net" onclick="pageTracker._trackPageview('/outgoing/bugs.robertcarlsen.net?referer=');">bugs.robertcarlsen.net</a> for real(z) for the first time. I&#8217;m looking to get several other features implemented before the next released update&#8230;planning on a few weeks. Otherwise, code is available, as always, on github.</p>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2010/08/10/mobile-logger-gpx-extensions-1275/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile Logger GPX + GoogleEarth</title>
		<link>http://robertcarlsen.net/2010/07/13/mobile-logger-gpx-googleearth-1269</link>
		<comments>http://robertcarlsen.net/2010/07/13/mobile-logger-gpx-googleearth-1269#comments</comments>
		<pubDate>Tue, 13 Jul 2010 14:36:44 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[iphone]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[google earth]]></category>
		<category><![CDATA[gpx]]></category>
		<category><![CDATA[mobilelogger]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=1269</guid>
		<description><![CDATA[
GPX export seems to be working, and imports fine into Google Earth. This is just a basic implementation of the essentials for a route; I&#8217;d really like to include other recorded sensors somehow into the track &#8211; maybe it could be a layer in Google Earth?
Looking at the ride data here reveals just how bad [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/07/mobilelogger-myfirstgpxfile.png" rel="lightbox[1269]"><img class="alignright size-thumbnail wp-image-1270" title="mobilelogger-myfirstgpxfile" src="http://robertcarlsen.net/blog/wp-content/uploads/2010/07/mobilelogger-myfirstgpxfile-150x150.png" alt="mobilelogger-myfirstgpxfile" width="150" height="150" /></a></p>
<p>GPX export seems to be working, and imports fine into Google Earth. This is just a basic implementation of the essentials for a route; I&#8217;d really like to include other recorded sensors somehow into the track &#8211; maybe it could be a layer in Google Earth?</p>
<p>Looking at the ride data here reveals just how bad raw GPS data can be between tall buildings in NYC. Several data points often share the same GPS location. It seems that moving quickly with a clear path to the sky gives the best performance.</p>
<p>The app also quit midway though the ride &#8211; I have to look into that.</p>
<p>GPX export is available in the <a href="http://github.com/rcarlsen/Mobile-Logger" onclick="pageTracker._trackPageview('/outgoing/github.com/rcarlsen/Mobile-Logger?referer=');">github</a> repository.</p>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2010/07/13/mobile-logger-gpx-googleearth-1269/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile Logger &#8211; GPX</title>
		<link>http://robertcarlsen.net/2010/07/13/mobile-logger-gpx-1266</link>
		<comments>http://robertcarlsen.net/2010/07/13/mobile-logger-gpx-1266#comments</comments>
		<pubDate>Tue, 13 Jul 2010 06:52:22 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[gpx]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobilelogger]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/2010/07/13/mobile-logger-gpx-1266</guid>
		<description><![CDATA[Basic GPX export has been added to the github repo. That is all.
http://github.com/rcarlsen/Mobile-Logger/commit/9e1dc73304de562c30e64fa9a9b61840e69963c3
]]></description>
			<content:encoded><![CDATA[<p>Basic GPX export has been added to the github repo. That is all.</p>
<p><a href="http://github.com/rcarlsen/Mobile-Logger/commit/9e1dc73304de562c30e64fa9a9b61840e69963c3" onclick="pageTracker._trackPageview('/outgoing/github.com/rcarlsen/Mobile-Logger/commit/9e1dc73304de562c30e64fa9a9b61840e69963c3?referer=');">http://github.com/rcarlsen/Mobile-Logger/commit/9e1dc73304de562c30e64fa9a9b61840e69963c3</a></p>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2010/07/13/mobile-logger-gpx-1266/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile Logger server down</title>
		<link>http://robertcarlsen.net/2010/06/21/mobile-logger-server-down-1262</link>
		<comments>http://robertcarlsen.net/2010/06/21/mobile-logger-server-down-1262#comments</comments>
		<pubDate>Tue, 22 Jun 2010 01:53:36 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[mobile logger]]></category>
		<category><![CDATA[sad]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/2010/06/21/mobile-logger-server-down-1262</guid>
		<description><![CDATA[The mobile logger server seems to be having some trouble at the moment. I&#8217;m investigating the issue and will update this space when there&#8217;s news.
In the meantime, I&#8217;d advice anyone having trouble logging to disable the Upload feature in the settings.
Thanks for patience!
UPDATE: It looks like the server is back online. 12:09 6/22/2010
UPDATE #2: Err, [...]]]></description>
			<content:encoded><![CDATA[<p>The mobile logger server seems to be having some trouble at the moment. I&#8217;m investigating the issue and will update this space when there&#8217;s news.</p>
<p>In the meantime, I&#8217;d advice anyone having trouble logging to disable the Upload feature in the settings.</p>
<p>Thanks for patience!</p>
<p>UPDATE: It looks like the server is back online. 12:09 6/22/2010</p>
<p>UPDATE #2: Err, I may have jumped the gun with that good news. Going to sleep on it.</p>
<p>UPDATE #3: everything seems to be working again. 8:00 6/22/2010</p>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2010/06/21/mobile-logger-server-down-1262/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gone global (again)</title>
		<link>http://robertcarlsen.net/2010/05/13/gone-global-again-1252</link>
		<comments>http://robertcarlsen.net/2010/05/13/gone-global-again-1252#comments</comments>
		<pubDate>Thu, 13 May 2010 05:35:24 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Thesis]]></category>
		<category><![CDATA[cinder]]></category>
		<category><![CDATA[itp]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[gizmodo]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[map]]></category>
		<category><![CDATA[mobile logger]]></category>
		<category><![CDATA[visualization]]></category>
		<category><![CDATA[world]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=1252</guid>
		<description><![CDATA[Thanks to a (very flattering) mention of my thesis project on Gizmodo after the ITP Spring Show, the use of Mobile Logger has quadrupled in the past two days. I had been watching the number of unique users rise on the Dashboard page, currently near 800&#8230;but then wondered what that would look like animated over [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/mobile-logger-gizmodo.png" rel="lightbox[1252]"><img class="alignright size-thumbnail wp-image-1253" title="mobile-logger-gizmodo" src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/mobile-logger-gizmodo-150x150.png" alt="mobile-logger-gizmodo" width="150" height="150" /></a>Thanks to a (very flattering) mention of my thesis project on Gizmodo after the ITP Spring Show, the use of Mobile Logger has quadrupled in the past two days. I had been watching the number of unique users rise on the <a href="http://mobilelogger.robertcarlsen.net/" onclick="pageTracker._trackPageview('/outgoing/mobilelogger.robertcarlsen.net/?referer=');">Dashboard</a> page, currently near 800&#8230;but then wondered what that would look like animated over time.</p>
<p>Here&#8217;s the world map, showing events pop up chronologically. There was the initial spread on April 12th from the public release in the app store&#8230;but just wait..wait&#8230;wait&#8230;for  May 12th. Fun!</p>
<p>Thanks Gizmodo (and Matt)!</p>
<p><object width="470" height="260"><param name="movie" value="http://www.youtube.com/v/xZJmlnVnLKU&#038;fs=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed src="http://www.youtube.com/v/xZJmlnVnLKU&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="470" height="260"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2010/05/13/gone-global-again-1252/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Riding Through Mountains (of Data)</title>
		<link>http://robertcarlsen.net/2010/05/11/riding-through-mountains-of-data-1215</link>
		<comments>http://robertcarlsen.net/2010/05/11/riding-through-mountains-of-data-1215#comments</comments>
		<pubDate>Wed, 12 May 2010 03:33:15 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Thesis]]></category>
		<category><![CDATA[itp]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[bicycle]]></category>
		<category><![CDATA[cycling]]></category>
		<category><![CDATA[final]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[mapping]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mobile logger]]></category>
		<category><![CDATA[new york city]]></category>
		<category><![CDATA[nyc]]></category>
		<category><![CDATA[nyu]]></category>
		<category><![CDATA[paper]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[sensors]]></category>
		<category><![CDATA[tracking]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=1215</guid>
		<description><![CDATA[(Here is the documentation for my thesis project at NYU&#8217;s Interactive Telecommunications Program. PDF version here.)
Riding through Mountains of Data:
Visualizations of Cycling
Robert Carlsen
Interactive Telecommunications Program
Tisch School of the Arts
New York University

Abstract
This project attempts to describe the cycling experiences of several riders in New York City through a series of visualizations. Specifically, I am interested to [...]]]></description>
			<content:encoded><![CDATA[<p>(Here is the documentation for my thesis project at NYU&#8217;s Interactive Telecommunications Program. PDF version <a href="http://robertcarlsen.net/media/itp/carlsen-thesis-final.pdf">here</a>.)</p>
<h2>Riding through Mountains of Data:<br />
Visualizations of Cycling</h2>
<h4>Robert Carlsen<br />
Interactive Telecommunications Program<br />
Tisch School of the Arts<br />
New York University<br />
</h4>
<h3><strong>Abstract</strong></h3>
<p>This project attempts to describe the cycling experiences of several riders in New York City through a series of visualizations. Specifically, I am interested to discover if riders similar to myself share a common experience through which a sense of connection could be derived.</p>
<div class="p"><!----></div>
<p>Cyclists were encouraged to record their travels using their personal mobile devices running Mobile Logger, a custom iPhone application.<br />
Log data was uploaded by the application to an online database in near real-time during each ride. This data was analyzed and filtered to provide source material for the resulting visualizations and system &#8220;dashboard&#8221; at <a href="http://mobilelogger.robertcarlsen.net" onclick="pageTracker._trackPageview('/outgoing/mobilelogger.robertcarlsen.net?referer=');">http://mobilelogger.robertcarlsen.net</a>.</p>
<div class="p"><!----></div>
<h2>Keywords</h2>
<p>Cycling, New York City, sensors, iPhone, visualization, mapping, tracking, logging, mobile, application, bicycle</p>
<div class="p"><!----></div>
<div class="p"><!----></div>
<p><span id="more-1215"></span></p>
<h2>Introduction</h2>
<p>This is an exploration in creating a sense of connection among cyclists through self-quantification and visualization. The project has two principle components: data collection using personal mobile devices and  visualization.</p>
<div class="p"><!----></div>
<p>I ride a bicycle daily through NYC, and encounter many other cyclists, walkers and drivers. We pass each other in a moment, or perhaps share a lane for a bit and then continue on our separate ways. Can we create a sense of connection by sharing our experiences? How does my 5 mile, 25 minute ride from Greenpoint to the East Village compare to someone riding from Queens? What does a ride around Prospect Park share with one in Central Park? What&#8217;s the loudest part of the city for a cyclist? Which routes are ridden most frequently and at what time of day?</p>
<div class="p"><!----></div>
<p>What do these experiences look like? How could they be recorded? What could we learn about ourselves and our world if there was a ubiquitous network of sensors collecting data about the environment as we experience it? Would analysis and visualization reveal trends and patterns in the aggregate behavior of participants in the network?</p>
<div class="p"><!----></div>
<h2>Personal Statement</h2>
<p>I&#8217;m an avid cyclist. I ride as a commuter, enthusiast and occasional racer.</p>
<div class="p"><!----></div>
<p>I can get just about anywhere in the city, whenever I want and under my own power. It also provides fitness and for many people, employment. It&#8217;s faster than walking and more maneuverable than driving. In dense city congestion it can be faster than mass transit. It&#8217;s a cheap way to get around. But above all&#8230; it&#8217;s just FUN!</p>
<div class="p"><!----></div>
<div class="p"><!----></div>
<p>Cycling in the city-and what I really mean by that is riding among several-ton moving vehicles, in all sorts of weather, often on roads not designed to accommodate bikes-is by some estimation, insane. I could describe close calls, spin tales of getting from Midtown to the East Village in less than 10 minutes at 6pm on a weekday or talk about an epic ride past Nyack where I bonked on the return trip-but there&#8217;s something really interesting about quantifying our experiences; somehow they become more tangible.</p>
<div class="p"><!----></div>
<p>I first felt the excitement of self-quantification when using a heart rate monitor for training, and later when using a PowerTap cyclecomputer which could download ride logs to my computer. Having numbers for heart rate, speed and power provided nearly endless bragging rights (and sometimes shame) among my cycling teammates. It was a way for us to connect our individual experiences in a manner that we could understand and compare.</p>
<div class="p"><!----></div>
<p>I&#8217;m certainly not the only cyclist on the roads. I see scores of other commuters as well as couriers, delivery riders and pedicabs-from folks leisurely riding around the Park to kitted racers in a pace line. However, apart from a friendly head nod, or occasional exchange of choice words I generally feel isolated as I head from here to there; in the margins of the roads (or sometimes splitting lanes), over the bridges with their scenic views of the city skyline, in the frenetic bustle of 5th Ave. Midtown at rush hour and the desolation and darkness of post-midnight industrial Greenpoint and Queens.</p>
<div class="p"><!----></div>
<p>I wonder, what do these other people experience while riding through the city? I have a clear understanding of what it feels like <em>to me</em> to be a cyclist in New York City. Is that experience a common one among other riders? How could I foster a sense of connection by relating through this shared experience?</p>
<div class="p"><!----></div>
<p>There are several ways of describing an experience. We can say that we&#8217;ve ridden some number of miles in a day, or show the raw data numbers. Visualizations are a manifestation of real events with which I&#8217;m hoping to make an emotional connection between the riders and the viewer.</p>
<div class="p"><!----></div>
<h2>Background</h2>
<p>This project really began in my first courses at ITP, resulting in a project which I called CycleSense and the subsequent visualizations created from it&#8217;s data. CycleSense attempted to provide me with a direct perception of the unseen space behind my bike while riding through traffic, with a goal of increasing spatial awareness through haptic feedback. A set of sonar range finders measured bilateral, rearward distance between my bike and traffic, driving helmet-mounted vibration motors with increasing intensity as the open space diminished.</p>
<div class="p"><!----></div>
<div class="p"><!----></div>
<p><a name="tth_fIg1"></a></p>
<p><a href="cyclesense"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/cyclesense.png" rel="lightbox[1215]"><img class="aligncenter size-medium wp-image-1216" title="cyclesense" src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/cyclesense-300x224.png" alt="cyclesense" width="300" height="224" /></a><br />
Figure 1: CycleSense: Proxemic visualization<br />
<a name="fig:cyclesense"></a></p>
<div class="p"><!----></div>
<p>However, the range needed to positively inform action at the speed of cycling in traffic is better suited for visual and aural sensing, rather than the ultrasonic sensors which had a maximum range limited to about 25 feet. While the real-time feedback goal was not entirely achieved, visualizations of the data provided me with insight into how space is maintained by traffic and myself as a vehicle in the streets (it&#8217;s alarmingly tight at times).</p>
<div class="p"><!----></div>
<p>The visualization mapped the range values onto Edward T. Hall&#8217;s Proxemic[<a name="CITEHall2008"></a>] distance categories of Intimate, Personal, Social and Public to provide context (fig  <a href="#fig:cyclesense">1</a>). Ten inches of space between myself and a multi-ton vehicle at 20 MPH can be described as intimate proximity in this system. Imagine being within an intimate space with someone, then imagine them as a large truck barreling past you and you can get the idea.</p>
<div class="p"><!----></div>
<p>I continued to explore this topic with seismi{c}ycling, which mapped bumpiness I experienced while cycling through New York City over several months. Where CycleSense used custom hardware mounted to the bicycle, I was interested in using a personal mobile device, an iPhone which I already carried, to act as a sensor in this project. By using my mobile phone with custom software, I was able to record more than 90 rides over the duration of the project. It became very easy to record consistently when I already had the sensor and data logger in my pocket. Using the network connection provided by the phone, I was able to push the readings to a database in real-time, streamlining data collection even further.</p>
<div class="p"><!----></div>
<div class="p"><!----></div>
<p>The visualization created for seism{c}ycling was an animated map, tracing each ride in turn, depicting the biggest bumps as glowing red circles. The entire visualization would scatter apart with each new bump, providing a sense of being physically rattled by rough roads. Eventually these spots accumulated to paint a portrait of my experience of the roads in NYC as a cyclist. While the end result was very satisfying for me, it was still centered on my singular experience. I wondered, what about other riders? Do we share a common experience? If so, in what ways? How are our experiences unique? I knew that the project needed to be expanded to include other people.</p>
<div class="p"><!----></div>
<h2>Work Description</h2>
<p>Overall, the work involved with this project followed the seven steps for data visualization as outlined by Ben Fry in his book &#8220;Visualizing Data&#8221;[<a name="CITEFry2008"></a>]:</p>
<div class="p"><!----></div>
<ul>
<li> <em>Acquire</em><br />
Obtain the data, whether from a file on a disk or a source over a network.</p>
<div class="p"><!----></div>
</li>
<li> <em>Parse</em><br />
Provide some structure for the data&#8217;s meaning, and order it into categories.</p>
<div class="p"><!----></div>
</li>
<li> <em>Filter</em><br />
Remove all but the data of interest.</p>
<div class="p"><!----></div>
</li>
<li> <em>Mine</em><br />
Apply methods from statistics or data mining as a way to discern patterns or place the data in mathematical context.</p>
<div class="p"><!----></div>
</li>
<li> <em>Represent</em><br />
Choose a basic visual model, such as a bar graph, list, or tree.</p>
<div class="p"><!----></div>
</li>
<li> <em>Refine</em><br />
Improve the basic representation to make it clearer and more visually engaging.</p>
<div class="p"><!----></div>
</li>
<li> <em>Interact</em><br />
Add methods for manipulating the data or controlling what features are visible.</p>
<div class="p"><!----></div>
</li>
</ul>
<div class="p"><!----></div>
<p>A significant challenge in this project was implementing data acquisition. Existing studies of cycling has largely relied on cyclist survey[<a name="CITEWilliamE.Moritz1997"></a>], case-study interview[<a name="CITEMatthewIdes2008"></a>], or logging cycling at a series of fixed locations. New York City Department of City Planning publishes an annual cycling map<a name="tthFrefAAB"></a>, depicting existing and planned bicycle route and greenways<br />
(fig <a href="#fig:bike-map">2</a>). Their methodology in generating the map is described on the department&#8217;s website:</p>
<blockquote><p>The existing and planned routes are the result of extensive fieldwork involving analysis of traffic conditions and assessment of the connectivity, accessibility, and safety of the network, as well as meetings that sought community input.</p></blockquote>
<div class="p"><!----></div>
<p><a name="tth_fIg2"></a></p>
<p><a href="bike-map"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/bike-map.jpg" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/bike-map-252x300.jpg" alt="bike-map" title="bike-map" width="252" height="300" class="aligncenter size-medium wp-image-1217" /></a><br />
Figure 2: Lower Manhattan bicycle routes. Taken from the 2010 NYC Cycling Map.<br />
<a name="fig:bike-map"></a></p>
<div class="p"><!----></div>
<p>However, I am interested in studying and comparing my personal experience with that of other cyclists, something which is only indirectly represented by survey and only inferred by fixed, external observation.</p>
<div class="p"><!----></div>
<p>The data collection portion of this project utilizes a mobile logging application to record each rider&#8217;s experience. The application uploads data to a server for storage and later analysis. Each rider may view their own data within the application and can see an aggregate view of all the data on the Mobile Logger<br />
website<a name="tthFrefAAC"></a>.</p>
<div class="p"><!----></div>
<p>I was inspired by the Personal Environmental Impact Report (PEIR) created by the Urban Sensing group at UCLA, as described by Nathan Yau, a developer of PEIR, in the book &#8220;Beautiful Data&#8221;[<a name="CITESegaran2009"></a>]. That project also uses a mobile application, but logs position at a far longer interval. It determines the mode of transportation and estimates a user&#8217;s &#8220;impact on and exposure to the environment.&#8221;</p>
<div class="p"><!----></div>
<p>Post collection, I analyzed the data looking for relationships and trends among riders and locations. This analysis is critical for the eventual visualizations. I have an initial set of questions which I&#8217;m looking to answer: Do several riders experience similar conditions at the same place and time? Where do riders go? Where do they originate? Where do they congregate? More personally, how do other riders&#8217; experiences relate to my own?</p>
<div class="p"><!----></div>
<p>Initial analysis was implemented using Google Maps to plot each ride. It was a useful tool to identify the location of new events and to verify the integrity of recorded data. Through this tool several issues with location accuracy and network connectivity were identified.</p>
<div class="p"><!----></div>
<p>Further exploration of the ride data was done using R, the language and environment for statistical computing and graphics<a name="tthFrefAAD"></a>. Several aspects of ride data were investigated, starting with simple plots of event routes then later graphs of the frequency of ride times and locations. R was also used to filter and clean the raw data.</p>
<div class="p"><!----></div>
<p>Several graphs and plots generated in R (using the excellent ggplot2 library<a name="tthFrefAAE"></a>) were further manipulated in graphics software to create initial, static visualizations, including a world map of Mobile Logger users. Graphs of ride distribution by time of day, day of week and location also helped to categorize data.</p>
<div class="p"><!----></div>
<p>Ultimately, an animated visualization of ride data in New York was created using Cinder, an open-source C++ framework<a name="tthFrefAAF"></a>. This visualization depicts events in a 3D environment primarily by location and time, showing similar inferred experiences swirling about each other.</p>
<div class="p"><!----></div>
<p>Before any of this, however, data needed to be collected and tools to achieve this needed to be audited and created.</p>
<div class="p"><!----></div>
<h2>Ubiquitous Sensing</h2>
<p>Sensors are increasingly being embedded in everyday devices and infrastructure. Many modern laptop computers include a &#8220;sudden motion sensor&#8221; designed to save the hard drive in the case of a fall. Buildings can include climate and movement sensors-which can be used to coordinate dampers to help stabilize the building in high winds or an earthquake.<a name="tthFrefAAG"></a> Small wearables like the FitBit<a name="tthFrefAAH"></a> or<br />
DirectLife<a name="tthFrefAAI"></a> track activities like walking and running as well as restlessness during sleep. Portable devices, like the iPhone include a small array of sensors, which can record movement and orientation, sound levels, location, photos and video. Fleets of cars and trucks include GPS devices not only for navigation but for tracking the vehicle&#8217;s location and speed.</p>
<div class="p"><!----></div>
<p>However, the real impact of these sensors becomes realized when imagining them networked. Adam Greenfield describes powerful scenarios resulting from &#8220;ubiquitous urban sensor networks.&#8221; He envisions advancement in sensor technology providing for a pervasiveness in which urban infrastructure, such as road surfaces, sidewalks and buildings are addressable, queryable and therefore scriptable, providing a programmatic interface to the modern city.<a name="tthFrefAAJ"></a></p>
<div class="p"><!----></div>
<p>What if each computer with a sudden motion sensor could report anomalies in real-time? Could this serve as an earthquake early warning system, as Quake Catchers is trying to implement?<a name="tthFrefABA"></a> Using GPS-enabled mobile devices, services like Waze provide navigation directions in exchange for users passively providing traffic conditions, which then informs the service&#8217;s direction algorithm.<a name="tthFrefABB"></a> SenseNetworks<a name="tthFrefABC"></a> has released the CabSense<a name="tthFrefABD"></a> application using the NYC Taxi GPS database and the GPS feature of iPhone and Android devices to point users to the best places to catch a cab.</p>
<div class="p"><!----></div>
<h2>Going mobile</h2>
<div class="p"><!----></div>
<p><a name="tth_fIg3"></a></p>
<p><a href="copenhagen-wheel"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/copenhagen-wheel.png" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/copenhagen-wheel-300x200.png" alt="copenhagen-wheel" title="copenhagen-wheel" width="300" height="200" class="aligncenter size-medium wp-image-1218" /></a><br />
Figure 3: MIT&#8217;s Copenhagen Wheel<br />
<a name="fig:copenhagen-wheel"></a></p>
<div class="p"><!----></div>
<p>Two broad categories of sensors are fixed and mobile. Fixed sensors have the benefit of being able to directly connect to existing power and communications infrastructure. They can be installed at an appropriate density and dispersion for the environment and what they are designed to monitor. For example, air quality sensors in a sparsely populated area may have different requirements than sound sensors in a city. They can remain logging when no one is present. They can be installed in inaccessible or uninhabitable locations which nevertheless would be useful to monitor-subway tracks, pipelines, transit vehicles, etc.</p>
<div class="p"><!----></div>
<p>However, when trying to describe how people move through an environment, the best they can do is to infer these experiences from afar. Mobile sensors, specifically those embedded in mobile devices, prioritize sensing a personal experience. Of course, even these sensors are limited to their specific capacity-such as movement, location, or orientation-but have the great advantage of being representative of an individual in that environment.</p>
<div class="p"><!----></div>
<p>Mobile data collection presents significant difficulties. Aside from persistent challenges of securing reliable power and communication, these sensors have to be deployed to people willing to carry them. In the case of the FitBit a user needs to acquire and use a new piece of hardware. The same challenge faces Nike+ devices and initiatives like Copenhagen Wheel, a project by the MIT Senseable City Lab<a name="tthFrefABE"></a> (fig <a href="#fig:copenhagen-wheel">3</a>), a veritable environmental lab built into the hub of a<br />
rear bicycle wheel.</p>
<div class="p"><!----></div>
<p>Using personal mobile devices as sensors in this ubiquitous network, the aforementioned challenges notwithstanding, provides an advantage that they are <em>already</em> carried by owners and are <em>already</em> used daily. The threshold for encouraging greater participation drops sharply when you <em>already</em> have the necessary tool in your pocket. This assumes that capable devices are widespread-GPS-enabled mobile devices are becoming prevalent enough to use them for large-scale personal data<br />
collection. Nielsen reports that (sensor-laden) smartphones make up 27% of the wireless market in the US, and are expected to reach 50% by the end of 2011.<a name="tthFrefABF"></a></p>
<div class="p"><!----></div>
<h2>Mobile application</h2>
<p>This becomes a trade-off between depth and breadth. Adhoc, mobile sensor widgets can be designed to record rich data beyond what is available in existing mobile devices-like air quality, heart rate, stress and breathing-but each device starts with zero units in the world. Apple introduced over 20 million GPS-enabled iPhone devices in 2009<a name="tthFrefABG"></a>-quite a head start for my project. If useful data about individual experiences and relationships could be told using the relatively limited sensors available on existing mobile devices, what would that look like?</p>
<div class="p"><!----></div>
<div class="p"><!----></div>
<p><a name="tth_fIg4"></a></p>
<p><a href="ml-dashboard-bike"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/ml-dashboard-bike.png" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/ml-dashboard-bike-300x225.png" alt="ml-dashboard-bike" title="ml-dashboard-bike" width="300" height="225" class="aligncenter size-medium wp-image-1219" /></a><br />
Figure 4: Mobile Logger on my bicycle<br />
<a name="fig:ml-dashboard"></a></p>
<div class="p"><!----></div>
<p>To that end, I released an iPhone application, named Mobile Logger<a name="tthFrefABH"></a>, to facilitate this user-centric data collection. It&#8217;s available as a free download on the Apple App Store and as open-source code on GitHub<a name="tthFrefABI"></a> under the GNU Public License. The application was written in JavaScript using the open-source Titanium Appcelerator framework<a name="tthFrefABJ"></a>, which is designed for cross-platform distribution to iPhone and Android platforms, as well as upcoming support for BlackBerry. This choice was made to allow for flexibility in the future porting of the application to a wider selection of devices.</p>
<div class="p"><!----></div>
<p>Mobile Logger acts as a dashboard for someone interested in recording their movement. The home screen presents a compass-like heading display, along with current speed, sound levels, acceleration force, trip distance and duration. Each log is stored on the device and can be inspected to reveal its route on a map. The log file can be exported via e-mail in several common formats. While logging, the data is optionally pushed to an online database at frequent intervals.</p>
<div class="p"><!----></div>
<p>To date, 164 unique devices have uploaded log data globally representing 239 events longer than 1 minute, with approximately 10 active riders in NYC. Most of these new devices appeared after public release of the application in the Apple App Store. In addition to the ambient logging, I promoted a call for participation to coincide with Earth Day on Thursday, April 22nd with the intention of benefiting from a tendency for people to ride a bicycle on that day.</p>
<div class="p"><!----></div>
<p>The application has been used in every continent, save Antarctica. To illustrate the global reach of deploying the application on an already established platform, the Mobile Logger Dashboard at http://mobilelogger.robertcarlsen.net displays a map of every location where the application has been used for longer than one minute, as well as tallies of unique devices, events, duration and distance.</p>
<div class="p"><!----></div>
<p><a name="tth_fIg5"></a></p>
<p><a href="ml-status-global"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/ml-status-global.png" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/ml-status-global-300x225.png" alt="ml-status-global" title="ml-status-global" width="300" height="225" class="aligncenter size-medium wp-image-1220" /></a><br />
Figure 5: Global users of Mobile Logger<br />
<a name="fig:globalmap"></a></p>
<div class="p"><!----></div>
<h2>Collection</h2>
<p>To facilitate collection of log data from participants I setup an online database and rudimentary application programming interface (API) for the mobile devices to utilize. The database used is Apache CouchDB, a document-oriented, schema-less database which can easily be interfaced via a &#8220;RESTful JSON API that can be accessed from any environment that allows HTTP requests&#8221;<a name="tthFrefACA"></a>. CouchDB was chosen for several reasons, among them:</p>
<ul>
<li> Most mobile devices that can access the internet support HTTP requests, eliminating the need for specific software libraries to communicate with the database.
<div class="p"><!----></div>
</li>
<li> Without a strict schema, devices with various sensor capabilities can be easily included in the database, simply adding new fields as necessary.
<div class="p"><!----></div>
</li>
<li> CouchDB includes facilities for easy replication, or cloning, of the database. This can be used to archive the live database, to make a copy which can then be queried for exploration without affecting real-time upload from mobile devices, for scalability as demand may increase requiring more server capacity and eventually for sharing the data with other interested researchers.
<div class="p"><!----></div>
</li>
<li> Queries can be constructed in JavaScript using the MapReduce paradigm to provide powerful ways to aggregate the collected data.
<div class="p"><!----></div>
</li>
<li> CouchDB can scale to hundreds of millions of documents. Each sample in a log file is treated as a separate document and a typical 24 minute log file may contain 1600 samples.
<div class="p"><!----></div>
</li>
</ul>
<div class="p"><!----></div>
<p>To provide a simplified interface for mobile devices and to provide a layer of abstraction between the database itself and open internet a middleware layer was created using Sinatra, a lightweight, Ruby-based microframework<a name="tthFrefACB"></a>. Sinatra made it easy to expose only the needed methods for adding and retrieving log data from the database. This provides security by limiting the database access only to the API methods via the middleware, enables flexibility in changing the location or name of the actual database and allows for future scalability through sharding, or splitting the database among several servers to distribute the load.</p>
<div class="p"><!----></div>
<p>The middleware layer also provides access to the data for the Mobile Logger Dashboard site, and may be used in a future version of the Mobile Logger application for real-time feedback about the overall state of the system. Eventually, this API may enable third-parties to access log data for their own analysis and visualization.</p>
<div class="p"><!----></div>
<h2>Dirty Data</h2>
<p>The raw data collected from participants can be very messy. GPS often misreports location amongst interfering objects such as tall buildings in cities. Also, this project is interested in the travels of cyclists in New York City, but there is no physical limitation preventing users from logging any type of movement (or no movement at all) anywhere in the world. The data needed to be filtered, cleaned and sorted before meaningful analysis could begin. Filtering specific locations was achieved by geohashing the location data. Geohashing creates a unique string of letters and numbers for latitude and longitude pairs, which represents a decreasing rectangular area by increasing hash length.<a name="tthFrefACC"></a> A hash of 6 characters such as &#8220;dr5rsn&#8221; represents a 600 meter wide area of Lower Manhattan (fig <a href="#fig:manhattan-geohash">6</a>). The database can be queried for specific hashes to get data associated with particular locations.<a name="tthFrefACD"></a></p>
<div class="p"><!----></div>
<div class="p"><!----></div>
<p><a name="tth_fIg6"></a></p>
<p><a href="nyu-geohash"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/nyu-geohash.png" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/nyu-geohash-300x239.png" alt="nyu-geohash" title="nyu-geohash" width="300" height="239" class="aligncenter size-medium wp-image-1221" /></a><br />
Figure 6: NYU geohash. Displayed with David Troy&#8217;s geohash demonstrator.<br />
<a name="fig:manhattan-geohash"></a></p>
<div class="p"><!----></div>
<p>Filtering events by mode of travel is another challenge. A simple solution is to factor the events by average speed, assuming that bicycles typically travel faster than walking, but slower than driving. However, I can often get around the city faster than a car, depending on congestion and time of day. Maximum speed can provide more insight, although a car may go slower in an intra-city trip than I ride descending one of the bridges. Investigating the route may also help, assuming that a bicycle is not likely to travel on highways, and vehicles not on bikeways. Unfortunately, in both regards, this is a false assumption in the city. Ultimately, some naive filtering with manual analysis was necessary to isolate cycling events from the rest of the data. The greater challenge is to identify trends and categories in the remaining ride data.</p>
<div class="p"><!----></div>
<h2>Bias</h2>
<p>In considering the collected data it becomes apparent that there are specific biases which should be addressed in order to make an honest assessment about anything derived from it. The project considers cycling as the primary activity, and as such other modes of transportation have been eliminated from consideration in the data. While using a mobile device did tap into a large pool of existing users, the iPhone is still a limiter of possible participants. Rather than targeting all cyclists in New York, this requires participants to be a cyclist (in New York City) and be an iPhone owner. While a targeted study may identify what portions of these populations actually overlap, anecdotally it seems that there is certainly a demographic bias.</p>
<div class="p"><!----></div>
<p>From a technological standpoint, Mobile Logger places significant drain on the device&#8217;s battery. Users have reported that the maximum logging duration on a full charge has been about 2 hours. In my personal use, a typical 25 minute commute consumes 15-20% of the battery charge (on an iPhone 3GS). I could get through a day with two logging sessions and light use (e-mail, web, infrequent voice calling) on a single charge. However, I often would recharge the phone over the course of the day.</p>
<div class="p"><!----></div>
<p>These considerations seem to have made the application most suitable for logging trips less than 30 minutes in length, where the device could be used solely for data collection and have limited use otherwise or be recharged during the day.<br />
The application and use case have been designed for riders like myself. Given this project&#8217;s focus in wanting to see what riders like myself are experiencing I don&#8217;t feel that this is a deleterious bias, but something certainly to be aware of when considering the data.</p>
<div class="p"><!----></div>
<p>Finally, I need to mention that data from my device is by far the most prevalent in the Manhattan area, representing 55% of the recorded samples.</p>
<div class="p"><!----></div>
<h2>Analysis</h2>
<div class="p"><!----></div>
<p><a name="tth_fIg7"></a></p>
<p><a href="device-map-false-color"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/device-map-false-color.png" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/device-map-false-color-150x300.png" alt="device-map-false-color" title="device-map-false-color" width="150" height="300" class="aligncenter size-medium wp-image-1222" /></a><br />
Figure 7: New York City ride data. Colored by device.<br />
<a name="fig:manhattan-map"></a></p>
<div class="p"><!----></div>
<p>Described earlier, geohashing provides a mechanism to isolate specific locations in the database. The adjacent hashes of &#8220;dr5r&#8221; and &#8220;dr72&#8243; encompass most of Manhattan and Brooklyn, were ride data is concentrated. Querying the database for these locations returns approximately 160,000 samples, roughly 3,000 minutes of log data (fig <a href="#fig:manhattan-map">7</a>). A typical event contains 1,600 samples at 1Hz resolution.</p>
<div class="p"><!----></div>
<p>In Manhattan, the raw data indicates 150 events were recorded by 17 devices. Simple filtering of events where the maximum speed was less than 60km/h (generally faster than a bicycle travels on flat ground) reveals that my device was the only one used in the Manhattan data set to record a trip by car. Further filtering of devices which recorded less than two minutes of data leaves 10 devices. I believe that three of these device IDs represent testing or simulator devices.</p>
<div class="p"><!----></div>
<p>Rides most often occurred at typical morning and evening commute times, with greatest density of samples in the 8-9AM and the 6-7PM hours (fig <a href="#fig:hourly-hist">8</a>). There is also a significant dispersion of my ride files throughout the evening, reflecting riding home from ITP at late hours.</p>
<div class="p"><!----></div>
<p><a name="tth_fIg8"></a></p>
<p><a href="hourly-hist"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/hourly-hist.png" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/hourly-hist-300x250.png" alt="hourly-hist" title="hourly-hist" width="300" height="250" class="aligncenter size-medium wp-image-1224" /></a><br />
Figure 8: Log samples by hour. Colored by device.<br />
<a name="fig:hourly-hist"></a></p>
<div class="p"><!----></div>
<p>Ride activity trends upwards on a daily basis with a peak on Fridays (fig <a href="#fig:day-hist">9</a>). Low activity on weekends seems to confirm that the data reflects commuting rides. The pattern is interesting, but it&#8217;s difficult to extrapolate whether this is indicative of anything other than the weekly schedules of this small group of riders.</p>
<div class="p"><!----></div>
<p><a name="tth_fIg9"></a></p>
<p><a href="day-hist"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/day-hist.png" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/day-hist-300x250.png" alt="day-hist" title="day-hist" width="300" height="250" class="aligncenter size-medium wp-image-1225" /></a><br />
Figure 9: Log samples by day of week. Colored by device.<br />
<a name="fig:day-hist"></a></p>
<div class="p"><!----></div>
<p>Three events have unusually long durations (more than 10 hours), appearing to have been accidentally resumed for a few moments long after the intended logging period ended. Filtering these events as well as those with durations of less than 1 minute leaves 123 events with an average duration of 24 minutes. One event has several breaks of 20-30 minutes, with an overall duration of 160 minutes. I spoke with the rider about this and he mentioned that he considered a trip, including stopping at various locations for errands, as one event. I<br />
had previously considered each segment of a trip as separate events, so his was an illuminating perspective which needs to be considered.</p>
<div class="p"><!----></div>
<p>Ride data was concentrated in Lower Manhattan and Brooklyn, again likely due to the stated sampling bias (fig <a href="#fig:heatmap">10</a>).<br />
The densest location is the Brooklyn entrance to the Willamsburg Bridge. The bridge path and routes to ITP&#8217;s East Village location are the most frequently represented, as well as a route through Queens to the 59th Street Bridge, likely from my own commute to Midtown.</p>
<div class="p"><!----></div>
<p><a name="tth_fIg10"></a></p>
<p><a href="sample-density-ellipse"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/sample-density-ellipse.png" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/sample-density-ellipse-122x300.png" alt="sample-density-ellipse" title="sample-density-ellipse" width="122" height="300" class="aligncenter size-medium wp-image-1226" /></a><br />
Figure 10: Ride density<br />
<a name="fig:heatmap"></a></p>
<div class="p"><!----></div>
<p>Regarding GPS performance, the mean accuracy for this data is 60 meters, with a best reported accuracy of 9 meters. Mean altitude is 18 meters (with 13 and 23 meters at lower and upper 25th percentiles), however the mean altitude accuracy is 62 meters, so I suspect that the altitude data is not entirely reliable (although these values do seem consistent with external altitude data available via the NYC Data Mine<br />
site<a name="tthFrefACE"></a>).</p>
<div class="p"><!----></div>
<p>An assumption I&#8217;ve made is that Mobile Logger would be used for ground-based travel. However, New York has many tall buildings and bridges. Indeed, there are several altitude readings in the 40 meter range, the approximate height of the Manhattan, Willamsburg and Queensboro bridges which I frequent. There are also small groupings of samples with recorded altitudes at 200 and 500 meters which have an accuracy of 228 meters and have been filtered.</p>
<div class="p"><!----></div>
<p><a name="tth_fIg11"></a></p>
<p><a href="manhattan-alt-hist"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/manhattan-alt-hist.png" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/manhattan-alt-hist-300x215.png" alt="manhattan-alt-hist" title="manhattan-alt-hist" width="300" height="215" class="aligncenter size-medium wp-image-1227" /></a><br />
Figure 11: Manhattan altitude readings, filtered.<br />
<a name="fig:manhattan-alt-hist"></a></p>
<div class="p"><!----></div>
<p>The average moving speed of rides, filtering zeroes, for the entire data set was 18.5 km/h with a standard deviation of 7.6 km/h (fig <a href="#fig:speed-device">12</a>). My average speed was fastest (of this small set) at 20.6 km/h, but I have company with other riders at 20.1 km/h and 18.5 km/h.<br />
There are two devices with markedly slow average speeds. It&#8217;s difficult to tell if these devices were used for walking, <em>very</em> casual riding, or suffered from poor GPS reception. The speed accuracy of the device seems to improve at greater velocities, such as driving and cycling quickly. Walking, even briskly, often reports zero speed.</p>
<div class="p"><!----></div>
<p><a name="tth_fIg12"></a></p>
<p><a href="mean-speed"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/mean-speed.png" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/mean-speed-300x224.png" alt="mean-speed" title="mean-speed" width="300" height="224" class="aligncenter size-medium wp-image-1228" /></a><br />
Figure 12: Average speed by device<br />
<a name="fig:speed-device"></a></p>
<div class="p"><!----></div>
<p>Average distance for the rides was 8km with a standard deviation of almost 5km, including several rides over 20km and one at 32km. My typical ride length was 8.7km and it appears like there is another rider who rides a similar distance frequently (fig <a href="#fig:event-dist">13</a>). A by-product of GPS inaccuracy is incorrect distance estimates when plotting between raw coordinates. If several location readings are off by a large amount, distance can quickly, and erroneously accumulate. One promising technique for<br />
filtering raw GPS data is outlined by Julien Cayzac, titled &#8220;The Cumulative Displacement Filter.&#8221;<a name="tthFrefACF"></a> I&#8217;m eager to apply this technique to the ride data in future development.</p>
<div class="p"><!----></div>
<p><a name="tth_fIg13"></a></p>
<p><a href="dist-event-device"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/dist-event-device.png" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/dist-event-device-294x300.png" alt="dist-event-device" title="dist-event-device" width="294" height="300" class="aligncenter size-medium wp-image-1229" /></a><br />
Figure 13: Event distances. Colored by device.<br />
<a name="fig:event-dist"></a></p>
<div class="p"><!----></div>
<p>Audio levels were recorded using a digital scale (-60 to 0 dbFS) and it is difficult to convert these values into a generally comparable unit (dbSPL) without proper microphone calibration. Nevertheless, relative assessment can be made using these values. The mean sound level recorded was -23 dbFS, with a standard deviation of 8.2 dbFS. However, little is known about circumstances of the device while recording, specifically it&#8217;s location on the participant. It could have been in a variety<br />
of places which may affect detected sound levels, such as in a pocket, backpack or attached to the bicycle itself.</p>
<div class="p"><!----></div>
<p>The accelerometer values can indicate two aspects of the device&#8217;s experience: orientation and movement. Since the application is recording at a one second resolution, subtle device movement is lost in subsequent downsampling. However, overall device orientation can be inferred by analyzing a distribution of the available values (fig <a href="#fig:acc">14</a>).<br />
Peak densities for X,Y and Z-axis accelerometer forces indicate that the (iPhone) device was primarily upright, tilted right and somewhat face down. I keep the device in the same location and position for each log, in a pocket on the shoulder strap of my backpack, which keeps it upright and angled to it&#8217;s right. I always put the device in the pocket facing forward, but when I&#8217;m in a riding position my chest is pointing downward as I reach for the<br />
handlebars. Since my logs account for 55% of the data, it&#8217;s unsurprising that my consistent position is apparent.</p>
<div class="p"><!----></div>
<p><a name="tth_fIg14"></a></p>
<p><a href="accelerometer"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/accelerometer.png" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/accelerometer-300x174.png" alt="accelerometer" title="accelerometer" width="300" height="174" class="aligncenter size-medium wp-image-1230" /></a><br />
Figure 14: Overall accelerometer forces<br />
<a name="fig:acc"></a></p>
<div class="p"><!----></div>
<p>The magnitude is a vector created from all three axes, and should have a value of 1.0 when the device is stationary, regardless of orientation. The distribution of magnitude values should indicate what degree of movement has been experienced. There is a noticeable spike at 3g, which is the upper specification of the sensor on the device and may indicate significant jostling.</p>
<div class="p"><!----></div>
<h3>Weather</h3>
<p>During 34-day window in which this data was collected (March 29-May 2), the daily average temperature ranged from 46-77 F with a mean of 59 F, minimum of 40 F and maximum of 92 F.<a name="tthFrefACG"></a> It seems as though most of the riding occurred in mild temperatures. Rain was recorded for 10 days of this period, accumulating 7 inches of water.</p>
<div class="p"><!----></div>
<p><a name="tth_fIg15"></a></p>
<p><a href="manhattan-temp-sample-hist"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/manhattan-temp-sample-hist.png" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/manhattan-temp-sample-hist-300x214.png" alt="manhattan-temp-sample-hist" title="manhattan-temp-sample-hist" width="300" height="214" class="aligncenter size-medium wp-image-1231" /></a><br />
Figure 15: Sample count by daily average temperature.<br />
<a name="fig:manhattan-temp"></a></p>
<div class="p"><!----></div>
<p>Wind speeds over this time averaged 10 km/h, including at least three days with appreciable gusts.<br />
This wind may have had an effect on ride speed, although it&#8217;s difficult to determine solely through the data. Personally, I recall several days where my trips were buffeted by wind on the bridges.</p>
<div class="p"><!----></div>
<p><a name="tth_fIg16"></a></p>
<p><a href="ride-wind-speed"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/ride-wind-speed.png" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/ride-wind-speed-300x205.png" alt="ride-wind-speed" title="ride-wind-speed" width="300" height="205" class="aligncenter size-medium wp-image-1232" /></a><br />
Figure 16: Rider speed colored by wind speed<br />
<a name="fig:wind-speed"></a></p>
<div class="p"><!----></div>
<h2>Visualization</h2>
<p>While statistical analysis and numerical representation are indispensable in identifying categories and trends  while mining the data set, eliciting an emotional response from a table is a difficult proposition for me.<br />
In cycling training software numeric summary tables, graphs and plots are often used to display the logged ride data.<br />
The graphs honestly depict the data, but how do these visuals <em>really</em> convey the recorded experience? Various plots which have become common in cycling training analysis certainly do provide some insight into the numbers, at the expense of having to learn to decipher them.</p>
<div class="p"><!----></div>
<div class="p"><!----></div>
<p><a name="tth_fIg17"></a></p>
<p><a href="golden-cheetah"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/golden-cheetah.png" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/golden-cheetah-300x223.png" alt="golden-cheetah" title="golden-cheetah" width="300" height="223" class="aligncenter size-medium wp-image-1233" /></a><br />
Figure 17: Golden Cheetah<br />
<a name="fig:golden-cheetah"></a></p>
<div class="p"><!----></div>
<p>Golden Cheetah<a name="tthFrefACH"></a>, an open-source cycling analysis application, implements several of these typical displays.<br />
This application does indeed represent ride data in tabular format, identifying average, maximal values and aggregate values (fig  <a href="#fig:golden-cheetah">17</a>). It also displays the data in a time-based graph, overlaying several metrics along a vertical axis. One particular plot, popularized by Dr. Andy Coggan, is the Pedal Force / Pedal Velocity scatterplot<a name="tthFrefACI"></a> (fig  <a href="#fig:pfpv">18</a>). This plot is highly revealing of the types of physiological exertion demanded of a rider during an effort.<br />
However, to a wider audience it is highly opaque. How could these visualizations be done in a way that is immediately apparent and meaningful to an uninitiated viewer?</p>
<div class="p"><!----></div>
<p>My goal is not to single Golden Cheetah out, but to use it as representative of cycling analysis software (full disclosure: I have been a developer with the project for several years).</p>
<div class="p"><!----></div>
<p><a name="tth_fIg18"></a></p>
<p><a href="pfpv-tt"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/pfpv-tt.png" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/pfpv-tt-300x234.png" alt="pfpv-tt" title="pfpv-tt" width="300" height="234" class="aligncenter size-medium wp-image-1234" /></a><br />
Figure 18: Pedal Force / Pedal Velocity plot for an individual time trial effort<br />
<a name="fig:pfpv"></a></p>
<div class="p"><!----></div>
<p>There are great examples of visualizations which communicate their data concisely and are visually striking enough to resonate emotionally with viewers. Aaron Koblin&#8217;s Flight Patterns (fig  <a href="#fig:flightpatterns">19</a>) show the daily patterns of air traffic across the United States.<a name="tthFrefACJ"></a></p>
<div class="p"><!----></div>
<p><a name="tth_fIg19"></a></p>
<p><a href="flight-patterns"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/flight-patterns.png" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/flight-patterns-300x220.png" alt="flight-patterns" title="flight-patterns" width="300" height="220" class="aligncenter size-medium wp-image-1235" /></a><br />
Figure 19: Flight Patterns by Aaron Koblin<br />
<a name="fig:flightpatterns"></a></p>
<div class="p"><!----></div>
<p>Cabspotting (fig  <a href="#fig:cabspotting">20</a>) by Stamen Design also tracks taxis, displaying their routes over time in San Francisco.<a name="tthFrefADA"></a></p>
<div class="p"><!----></div>
<p><a name="tth_fIg20"></a></p>
<p><a href="cabspotting"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/cabspotting.png" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/cabspotting-300x245.png" alt="cabspotting" title="cabspotting" width="300" height="245" class="aligncenter size-medium wp-image-1236" /></a><br />
Figure 20: Cabspotting by Stamen Design<br />
<a name="fig:cabspotting"></a></p>
<div class="p"><!----></div>
<p>My own project, seismi{c}ycling (fig  <a href="#fig:seismicycling">21</a>) painted a portrait of road roughness I experienced over several months in the Fall of 2009.<a name="tthFrefADB"></a></p>
<div class="p"><!----></div>
<p><a name="tth_fIg21"></a></p>
<p><a href="seismicycling"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/seismicycling.png" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/seismicycling-300x256.png" alt="seismicycling" title="seismicycling" width="300" height="256" class="aligncenter size-medium wp-image-1237" /></a><br />
Figure 21: Seismi{c}ycling<br />
<a name="fig:seismicycling"></a></p>
<div class="p"><!----></div>
<h2>What does it look like?</h2>
<p>The visualizations in this project consist of three broad components: the in-application map, the website &#8220;dashboard&#8221; and the animated off-line visualization.</p>
<div class="p"><!----></div>
<p>Within Mobile Logger, each log stored on the device can be displayed on a map, with a subset of the data points plotted to depict that log&#8217;s route (fig <a href="#fig:map-view">22</a>). Each data point can be tapped to display the speed and sound levels at that moment. This was implemented to provide value to the end user, beyond and apart from the centralized data collection component I am most interested in. I wanted the application to be able to stand alone, without the online database if necessary, or if<br />
the user preferred to opt out of sharing their data.</p>
<div class="p"><!----></div>
<p><a name="tth_fIg22"></a></p>
<p><a href="map-view-bike"></a><br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/map-view-bike.jpg" rel="lightbox[1215]"><img src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/map-view-bike-225x300.jpg" alt="map-view-bike" title="map-view-bike" width="225" height="300" class="aligncenter size-medium wp-image-1238" /></a><br />
Figure 22: Mobile Logger map view<br />
<a name="fig:map-view"></a></p>
<div class="p"><!----></div>
<div class="p"><!----></div>
<p>On the Mobile Logger Dashboard website there is a map displaying the location and duration of global use of the application and an animated marker indicating the location of the most recently logged event. This has created an immediate and profound effect in generating a sense of connection for me. I find myself frequently checking the map to look for new locations representing other people logging around the world. While this is a departure from the intended study of New York City<br />
cyclists, the excitement of acknowledging global use warrants mention.</p>
<div class="p"><!----></div>
<p>An animated visualization was created to display the ride data in a fluid, aesthetic way. This visualization plots rides in various ways in an attempt to show now only the characteristics of each ride, but also of how they relate to one another. It was designed to be standalone and installed in a semi-public location.</p>
<div class="p"><!----></div>
<h2>Personal data</h2>
<p>I&#8217;ve considered the issue of personal data privacy heavily. Each of these logs contains one-second resolution of the location of individual participants. Although the application doesn&#8217;t record personally identifiable contact information, each log (unless disabled) contains a unique identifier for the device. Over time a pattern of movements could become unique enough to isolate an individual. In an era when personal information is increasingly volunteered and/or unknowingly collected, is location privacy a specific concern?<br />
Is the solution to balance the power between the participant and users of that data through transparency? Rather, are the stated principles<a name="tthFrefADC"></a> of Sense Networks sufficient?</p>
<ul>
<li> People should own their own data
<div class="p"><!----></div>
</li>
<li> People have a right to privacy
<div class="p"><!----></div>
</li>
<li> People should receive a meaningful benefit in exchange for sharing data
<div class="p"><!----></div>
</li>
<li> Aggregate anonymous location data should be used for common good
<div class="p"><!----></div>
</li>
</ul>
<div class="p"><!----></div>
<p>In consideration of these points, I&#8217;ve made deliberate decisions regarding the data collected by this project. I&#8217;ve opted not to request personal contact information from any participant, and have additionally provided a means for participation with an anonymous device identifier. The data uploading feature of Mobile Logger may be disabled at any time, without any detriment to the usability of the application for the end user. By providing their data to the Mobile Logger system, they can<br />
see their place among other users on the Mobile Logger Dashboard and associated visualizations. I&#8217;m also considering other ways for participants to more directly benefit from sharing, perhaps with personalized data display on the Dashboard site, or real-time status of the system within the device application.</p>
<div class="p"><!----></div>
<p>If the system were to fully embrace the Sense Networks principles, a method would need to be implemented for any user to remove their historical data from the database as desired.<br />
This is my primary hesitation in opening the data set to third parties, although I&#8217;m interested in eventually making the data available to facilitate the final principle of working for the common good.</p>
<div class="p"><!----></div>
<h2>Where do we go now?</h2>
<div class="p"><!----></div>
<div class="p"><!----></div>
<p>The stated goal was to foster a sense of connection among strangers through sharing common experiences, using these visualizations as a way to make abstract numbers meaningful to uninitiated viewers.</p>
<div class="p"><!----></div>
<p>While there have only been a few riders in New York logging themselves, I have certainly had a palpable shift in my perception of riding through the city. Perhaps it&#8217;s because I&#8217;ve been looking over my own ride data lately, but I often imagine what other riders&#8217; log files would say and how ours would compare.<br />
One Mobile Logger user who also lives in my neighborhood saw screenshots of my log routes and contacted me, mentioning that he lives nearby and offered to meet up.</p>
<div class="p"><!----></div>
<p>I have progressively altered my routes in the months I have been tracking my rides. Generally, I strive for the most direct route, and the mapping feature of the mobile app enables me to immediately see if I can make improvements. However, I often prefer less-trafficked or quieter roads to busier ones, and will look for a bike lane if it&#8217;s convenient.</p>
<div class="p"><!----></div>
<p>When I cross paths with another rider, I imagine a ribbon tracing our paths and extending into possible future routes. I also like to consider where they&#8217;ve been and think about how my ride could be influenced by their route.<br />
I have also begun to strike up conversation with other riders, often describing Mobile Logger and encouraging their participation which is generally well-received.<br />
In the end, however, there are still many riders and vehicles around and I still get cut off, have close calls and epic rides (and make some ill-advised maneuvers of my own).</p>
<div class="p"><!----></div>
<p>The preliminary global data has had a profound effect on me. I noticed one day that while I was commuting home after work in Manhattan there was a training ride in Philadelphia, an evening drive in Bristol, UK and an early morning walk to the beach in southern Australia. This provides me a sense of connection to these far away strangers. Even in this abstract representation, I feel less alone knowing that other people are also moving about. Of course, technology isn&#8217;t needed<br />
to prove this, but sometimes a construct helps to shift perspective.</p>
<div class="p"><!----></div>
<p>I&#8217;m pursuing a greater density of data through encouragement of wider rider participation. Public, aggregate, real-time visualizations will help promote persistent participation if individual contributions can be recognized by the user.<br />
I&#8217;d like to solicit more feedback from participants about their experiences. Perhaps providing a mechanism to tag or annotate ride data could assist with categorization.</p>
<div class="p"><!----></div>
<p>I&#8217;m also very interested in extending the mobile application to record external sensors. I would very much like to log physiological data such as heart rate, breathing rate / depth and stress levels as well as environmental data. Perhaps this can be accomplished through various levels of commitment on the part of the rider to incorporated several devices for self-quantification. Ideally, the mobile device will act as a hub for storage and transmission.</p>
<div class="p"><!----></div>
<p>I&#8217;ve published the project&#8217;s process in the spirit of open source. This includes releasing the logger application source code, documenting collection methods and describing the visualization process. Eventually, I aim to publish the collected data for further analysis. Hopefully, this will enable other people to extend and augment the work in ways I haven&#8217;t envisioned.</p>
<div class="p"><!----></div>
<div class="p"><!----></div>
<h2>References</h2>
<dl>
<dt><a name="Fry2008"></a></dt>
<dd> Ben Fry.<br />
<em>Visualizing Data: Exploring and Explaining Data with the<br />
Processing Environment</em>.<br />
O&#8217;Reilly Media, 2008.</p>
<div class="p"><!----></div>
</dd>
<dt><a name="Hall2008"></a></dt>
<dd> E.T. Hall.<br />
A system for the notation of proxemic behavior.<br />
<em>American anthropologist</em>, 65(5):1003–1026, 1963.</p>
<div class="p"><!----></div>
</dd>
<dt><a name="MatthewIdes2008"></a></dt>
<dd> Matthew Ides.<br />
Hub and Spokes: Imageability of the Daily Bicycle Commute in New<br />
York City, 2008.</p>
<div class="p"><!----></div>
</dd>
<dt><a name="Segaran2009"></a></dt>
<dd> Toby Segaran and Jeff Hammerbacher.<br />
<em>Beautiful Data: The Stories Behind Elegant Data Solutions</em>.<br />
O&#8217;Reilly Media, 2009.</p>
<div class="p"><!----></div>
</dd>
<dt><a name="WilliamE.Moritz1997"></a></dt>
<dd> Ph.D. William E. Moritz.<br />
A SURVEY OF NORTH AMERICAN BICYCLE COMMUTERS, 1997.</dd>
</dl>
<div class="p"><!----></div>
<hr />
<h3>Footnotes:</h3>
<div class="p"><!----></div>
<p><a name="tthFtNtAAB"></a><a href="#tthFrefAAB"><sup>1</sup></a>http://www.nyc.gov/html/dcp/html/bike/cwbm.shtml</p>
<div class="p"><!----></div>
<p><a name="tthFtNtAAC"></a><a href="#tthFrefAAC"><sup>2</sup></a>http://mobilelogger.robertcarlsen.net</p>
<div class="p"><!----></div>
<p><a name="tthFtNtAAD"></a><a href="#tthFrefAAD"><sup>3</sup></a>http://www.r-project.org/</p>
<div class="p"><!----></div>
<p><a name="tthFtNtAAE"></a><a href="#tthFrefAAE"><sup>4</sup></a>http://had.co.nz/ggplot2/</p>
<div class="p"><!----></div>
<p><a name="tthFtNtAAF"></a><a href="#tthFrefAAF"><sup>5</sup></a>http://libcinder.org/</p>
<div class="p"><!----></div>
<p><a name="tthFtNtAAG"></a><a href="#tthFrefAAG"><sup>6</sup></a>http://news.wustl.edu/news/Pages/8961.aspx</p>
<div class="p"><!----></div>
<p><a name="tthFtNtAAH"></a><a href="#tthFrefAAH"><sup>7</sup></a>http://www.fitbit.com/</p>
<div class="p"><!----></div>
<p><a name="tthFtNtAAI"></a><a href="#tthFrefAAI"><sup>8</sup></a>http://www.directlife.philips.com/</p>
<div class="p"><!----></div>
<p><a name="tthFtNtAAJ"></a><a href="#tthFrefAAJ"><sup>9</sup></a>http://speedbird.wordpress.com/2009/10/11/toward-urban-systems-design/</p>
<div class="p"><!----></div>
<p><a name="tthFtNtABA"></a><a href="#tthFrefABA"><sup>10</sup></a>http://qcn.stanford.edu/</p>
<div class="p"><!----></div>
<p><a name="tthFtNtABB"></a><a href="#tthFrefABB"><sup>11</sup></a>http://www.waze.com/homepage/</p>
<div class="p"><!----></div>
<p><a name="tthFtNtABC"></a><a href="#tthFrefABC"><sup>12</sup></a>http://www.sensenetworks.com/macrosense.php</p>
<div class="p"><!----></div>
<p><a name="tthFtNtABD"></a><a href="#tthFrefABD"><sup>13</sup></a>http://cabsense.com/</p>
<div class="p"><!----></div>
<p><a name="tthFtNtABE"></a><a href="#tthFrefABE"><sup>14</sup></a><br />
senseable.mit.edu/copenhagenwheel/</p>
<p>Photos by Max Tomasinelli www.maxtomasinelli.com</p>
<div class="p"><!----></div>
<p><a name="tthFtNtABF"></a><a href="#tthFrefABF"><sup>15</sup></a>http://blog.nielsen.com/nielsenwire/consumer/smartphones-to-overtake-feature-phones-in-u-s-by-2011/</p>
<div class="p"><!----></div>
<p><a name="tthFtNtABG"></a><a href="#tthFrefABG"><sup>16</sup></a>http://www.apple.com/investor/</p>
<div class="p"><!----></div>
<p><a name="tthFtNtABH"></a><a href="#tthFrefABH"><sup>17</sup></a>http://robertcarlsen.net/dev/mobile-logger</p>
<div class="p"><!----></div>
<p><a name="tthFtNtABI"></a><a href="#tthFrefABI"><sup>18</sup></a>http://github.com/rcarlsen/Mobile-Logger</p>
<div class="p"><!----></div>
<p><a name="tthFtNtABJ"></a><a href="#tthFrefABJ"><sup>19</sup></a>http://www.appcelerator.com/</p>
<div class="p"><!----></div>
<p><a name="tthFtNtACA"></a><a href="#tthFrefACA"><sup>20</sup></a>http://couchdb.apache.org/</p>
<div class="p"><!----></div>
<p><a name="tthFtNtACB"></a><a href="#tthFrefACB"><sup>21</sup></a>http://www.sinatrarb.com/</p>
<div class="p"><!----></div>
<p><a name="tthFtNtACC"></a><a href="#tthFrefACC"><sup>22</sup></a>http://en.wikipedia.org/wiki/Geohash</p>
<div class="p"><!----></div>
<p><a name="tthFtNtACD"></a><a href="#tthFrefACD"><sup>23</sup></a>http://openlocation.org/geohash/geohash-js/</p>
<div class="p"><!----></div>
<p><a name="tthFtNtACE"></a><a href="#tthFrefACE"><sup>24</sup></a>http://www.nyc.gov/html/datamine</p>
<div class="p"><!----></div>
<p><a name="tthFtNtACF"></a><a href="#tthFrefACF"><sup>25</sup></a>http://julien.cayzac.name/code/gps/</p>
<div class="p"><!----></div>
<p><a name="tthFtNtACG"></a><a href="#tthFrefACG"><sup>26</sup></a>http://www.wunderground.com/history/</p>
<div class="p"><!----></div>
<p><a name="tthFtNtACH"></a><a href="#tthFrefACH"><sup>27</sup></a>http://goldencheetah.org/</p>
<div class="p"><!----></div>
<p><a name="tthFtNtACI"></a><a href="#tthFrefACI"><sup>28</sup></a>http://home.trainingpeaks.com/articles/cycling/quadrant-analysis.aspx</p>
<div class="p"><!----></div>
<p><a name="tthFtNtACJ"></a><a href="#tthFrefACJ"><sup>29</sup></a>http://www.aaronkoblin.com/work/flightpatterns/</p>
<div class="p"><!----></div>
<p><a name="tthFtNtADA"></a><a href="#tthFrefADA"><sup>30</sup></a>http://cabspotting.org/</p>
<div class="p"><!----></div>
<p><a name="tthFtNtADB"></a><a href="#tthFrefADB"><sup>31</sup></a>http://robertcarlsen.net/projects/seismicycling</p>
<div class="p"><!----></div>
<p><a name="tthFtNtADC"></a><a href="#tthFrefADC"><sup>32</sup></a>http://www.sensenetworks.com/principles.php</p>
<hr /><small>File translated from<br />
T<sub><span>E</span></sub>X<br />
by <a href="http://hutchinson.belmont.ma.us/tth/" onclick="pageTracker._trackPageview('/outgoing/hutchinson.belmont.ma.us/tth/?referer=');"><br />
T<sub><span>T</span></sub>H</a>,<br />
version 3.87.<br />
On 11 May 2010, 23:00.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2010/05/11/riding-through-mountains-of-data-1215/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Playing with matches&#8230;and Cinder</title>
		<link>http://robertcarlsen.net/2010/05/03/playing-with-matches-and-cinder-1199</link>
		<comments>http://robertcarlsen.net/2010/05/03/playing-with-matches-and-cinder-1199#comments</comments>
		<pubDate>Tue, 04 May 2010 02:31:19 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Thesis]]></category>
		<category><![CDATA[cinder]]></category>
		<category><![CDATA[itp]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=1199</guid>
		<description><![CDATA[Late last week The Barbarian Group released Cinder, their previously in-house C++ framework (codenamed Flint). I&#8217;d heard about it through Robert Hodgin&#8217;s blog posts / experiments, and again this past winter when Andrew from TBG spoke with me about my ITP Show Project, seismi{c}ycling, which was created in openFrameworks.
It&#8217;s been released under a permissive open [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/mobile-logger-global-map.png" rel="lightbox[1199]"><img class="alignright size-thumbnail wp-image-1200" title="mobile-logger-global-map" src="http://robertcarlsen.net/blog/wp-content/uploads/2010/05/mobile-logger-global-map-150x150.png" alt="mobile-logger-global-map" width="150" height="150" /></a>Late last week The Barbarian Group released Cinder, their previously in-house C++ framework (codenamed Flint). I&#8217;d heard about it through Robert Hodgin&#8217;s blog posts / experiments, and again this past winter when Andrew from TBG spoke with me about my ITP Show Project, seismi{c}ycling, which was created in openFrameworks.</p>
<p>It&#8217;s been released under a permissive open source license and is well organized. The online reference is a bit technical (compared to Processing or oF&#8217;s reference sections), but the framework comes with many well commented example projects.</p>
<p>Since I don&#8217;t have enough to do in the waning days of my ITP thesis, I&#8217;ve decided to create my cycling data visualizations using Cinder and have been enjoying the experience (as much as one can when under deadlines). Classes seem well thought out and there are many convenience methods and overloaded operators for common tasks when putting together a quick viz. The entire package (at least on OS X) feels unified.</p>
<p>Anyway, that&#8217;s my initial impression&#8230;only a few more days to go. Here&#8217;s an initial (rudimentary) animation of global <a href="http://robertcarlsen.net/dev/mobile-logger">Mobile Logger</a> users which I&#8217;ll be using in my <a href="http://itp.nyu.edu/shows/thesis2010/" onclick="pageTracker._trackPageview('/outgoing/itp.nyu.edu/shows/thesis2010/?referer=');">presentation</a> on Friday. The most interesting moment is April 12th, when the app went public in the App Store. Prior to that it was mostly myself and a handful of beta testers.</p>
<p><object width="470" height="260"><param name="movie" value="http://www.youtube.com/v/PRuzuOvMZL8&#038;fs=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed src="http://www.youtube.com/v/PRuzuOvMZL8&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="470" height="260"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2010/05/03/playing-with-matches-and-cinder-1199/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile Logger has gone global</title>
		<link>http://robertcarlsen.net/2010/04/24/mobile-logger-has-gone-global-1195</link>
		<comments>http://robertcarlsen.net/2010/04/24/mobile-logger-has-gone-global-1195#comments</comments>
		<pubDate>Sat, 24 Apr 2010 22:46:59 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Thesis]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[itp]]></category>
		<category><![CDATA[mobile logger]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=1195</guid>
		<description><![CDATA[The Mobile Logger application has been public for a couple of weeks and has (surprisingly, to me) been used in every continent, save Antarctica. I first noticed several events in the database from Australia, then the UK. I was mostly catching these events by coincidence when I was looking over my own data and wondered [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/04/global.gif" rel="lightbox[1195]"><img class="alignright size-thumbnail wp-image-1196" title="global" src="http://robertcarlsen.net/blog/wp-content/uploads/2010/04/global-150x150.gif" alt="global" width="150" height="150" /></a>The Mobile Logger application has been public for a couple of weeks and has (surprisingly, to me) been used in every continent, save Antarctica. I first noticed several events in the database from Australia, then the UK. I was mostly catching these events by coincidence when I was looking over my own data and wondered just where (in the world) these other users were logging from.</p>
<p>For Earth Day, I generated a map of the global users of Mobile Logger and put it on the <a href="http://mobilelogger.robertcarlsen.net" onclick="pageTracker._trackPageview('/outgoing/mobilelogger.robertcarlsen.net?referer=');">status page</a>. While the historical data is really neat, and humbling to know that people all over have tried this app, the real-time data is captivating. I added the city of the most recent event and a pulsing marker to the map. Now, the location of the newest log is marked when the status page is updated. Next, I&#8217;d like to show it when several events have been logged at the same time.</p>
<p>That&#8217;s it for now&#8230;working on the next iteration of the visualizations. I&#8217;m thinking of some Feltron-inspired summary charts, then a more detailed array of specific data. Who knows?!</p>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2010/04/24/mobile-logger-has-gone-global-1195/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
