<?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>blprnt.blg</title>
	<atom:link href="http://blog.blprnt.com/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.blprnt.com</link>
	<description>Jer Thorp &#124; There is an art to evolution...</description>
	<lastBuildDate>Tue, 20 Jul 2010 15:59:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Visualizing Pressible: EdLab Artist-in-Residency in NYC</title>
		<link>http://blog.blprnt.com/blog/blprnt/visualizing-pressible-edlab-artist-in-residency-in-nyc</link>
		<comments>http://blog.blprnt.com/blog/blprnt/visualizing-pressible-edlab-artist-in-residency-in-nyc#comments</comments>
		<pubDate>Tue, 20 Jul 2010 15:59:39 +0000</pubDate>
		<dc:creator>Jer</dc:creator>
				<category><![CDATA[Announcements]]></category>

		<guid isPermaLink="false">http://blog.blprnt.com/?p=1107</guid>
		<description><![CDATA[Visualizing Pressible: Blog Clusters &#038; Growth of a System from blprnt on Vimeo. For July and half of August, I&#8217;m the artist-in-residence at EdLab, a research group which is part of Teachers College at Columbia University. I&#8217;ll be working with data from Pressible, a network of sites published by Teachers College students, faculty and staff. [...]]]></description>
			<content:encoded><![CDATA[<p><object width="500" height="281"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=13470772&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=13470772&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="281"></embed></object>
<p><a href="http://vimeo.com/13470772">Visualizing Pressible: Blog Clusters &#038; Growth of a System</a> from <a href="http://vimeo.com/user313340">blprnt</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>For July and half of August, I&#8217;m the artist-in-residence at <a href="http://edlab.tc.columbia.edu/">EdLab</a>, a research group which is part of Teachers College at Columbia University.</p>
<p>I&#8217;ll be working with data from <a href="http://pressible.org/">Pressible</a>, a network of sites published by Teachers College students, faculty and staff. I&#8217;m interested in looking at the growth of this system, and in examining intertextuality between content in a network with a broad range of research interests.</p>
<p>I&#8217;ll posting about my process in as much detail as I can on my own Pressible site: <a href="http://blprnt.pressible.org/">blprnt.pressible.org</a>. On that site, you&#8217;ll already find some early aesthetic and structural explorations, and you&#8217;ll be able to follow along with the project as it moves towards completion.</p>
<p>This residency will keep me in NYC until at least the end of August; if you are in the area and would like to connect, please get in touch.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blprnt.com/blog/blprnt/visualizing-pressible-edlab-artist-in-residency-in-nyc/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Wired UK, Barabási Lab and BIG data</title>
		<link>http://blog.blprnt.com/blog/blprnt/wired-uk-barabasi-lab-and-big-data</link>
		<comments>http://blog.blprnt.com/blog/blprnt/wired-uk-barabasi-lab-and-big-data#comments</comments>
		<pubDate>Mon, 12 Jul 2010 19:37:52 +0000</pubDate>
		<dc:creator>Jer</dc:creator>
				<category><![CDATA[Information Visualization]]></category>
		<category><![CDATA[Processing]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[barabasi]]></category>
		<category><![CDATA[big data]]></category>
		<category><![CDATA[infoviz]]></category>
		<category><![CDATA[print]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[wireduk]]></category>

		<guid isPermaLink="false">http://blog.blprnt.com/?p=1093</guid>
		<description><![CDATA[Over the last year, I&#8217;ve produced five data-driven pieces for Wired UK. Four of them have been for the two-page infoporn spread that can be found in every issue. I&#8217;ve looked at the UK&#8217;s National DNA Database, used mined Twitter data to find people&#8217;s travel paths, and mapped traffic in some of the world&#8217;s busiest [...]]]></description>
			<content:encoded><![CDATA[<p>Over the last year, I&#8217;ve produced five data-driven pieces for <a href="http://www.wired.co.uk">Wired UK</a>. Four of them have been for the two-page infoporn spread that can be found in every issue. I&#8217;ve looked at the <a href="http://blog.blprnt.com/blog/blprnt/wired-uk-july-09-visualizing-a-nations-dna">UK&#8217;s National DNA Database</a>, used mined Twitter data to find people&#8217;s travel paths, and mapped traffic in some of the world&#8217;s busiest sea ports. </p>
<p>In <a href="http://www.wired.co.uk/wired-magazine">the August issue</a>, out on newsstands right now, I had a chance to work with some spectacular data and extremely talented people. The piece looks at a very, very big data set &#8211; cellular phone records from a pool of 10 million users in an anonymous European country. This data came (under a very strict layer of confidentiality) from Barabási Lab in Boston, where they have been using this information to find out some <a href="http://www.barabasilab.com/pubs-humandynamics.php">fascinating things about human mobility patterns</a>. </p>
<p>In this post, I&#8217;ll walk through the process of creating this piece. Along the way, I&#8217;ll show some draft images and unused experiments that eventually evolved into the final project.</p>
<p><strong>Working With Big Data</strong></p>
<p>I can&#8217;t get into a lot of detail about the specifics of the data set, but needless to say, phone records for 10 million individuals take up a lot of space. All told, the data for this project consisted of more than 5.5GB of flattened text files. I should say, at this point, that I don&#8217;t work on a supercomputer &#8211; I churn out all of my work from an often overheated 2.33GHZ MacBook Pro. Since the deadline was reasonably tight on this project, I decided to rule out a distributed computing approach to get at all of this data, and instead chose to work with a subset of the full list of records. Working in <a href="http://www.processing.org">Processing</a>, I built a simple script that could filter out a smaller dataset from the complete files. I built several of these at varying file sizes, giving me a nice set of data to work with both in prototyping and in production stages. This is a strategy that I often employ, even with more minimal datasets &#8211; save the heavy lifting until the final render.</p>
<p>The first thing I did with the trimmed-down data was to construct &#8216;call histories&#8217; for each user in the set. I rendered out these histories as stacked bars of individual calls, which could then be placed into a histogram. Here&#8217;s a graph of about 10,000 users, sorted by their total time spent on the phone :</p>
<p><a title="Wired UK &amp;amp; Barabási Lab: Process by blprnt_van, on Flickr" href="http://www.flickr.com/photos/blprnt/4787589444/"><img src="http://farm5.static.flickr.com/4122/4787589444_b482b8ec16.jpg" alt="Wired UK &amp;amp; Barabási Lab: Process" width="500" height="313" /></a></p>
<p>Here we see a very obvious power law distribution, with a few people talking a lot (really, a lot &#8211; 28.3 hours a week), and most callers talking relatively little (these is also a tail of text-only users at the very end). The problem here, of course, is that on a computer screen &#8211; or even in print &#8211; it&#8217;s hard to get into the data to learn anything useful. When I zoom into the graph, we can start to see the individual call histories (I&#8217;ve enlarged a few columns for detail). Here, long calls are rendered yellow, short calls are rendered red, and text messages are flat blue rectangles:</p>
<p><a title="Wired UK &amp;amp; Barabási Lab: Process by blprnt_van, on Flickr" href="http://www.flickr.com/photos/blprnt/4787589478/"><img src="http://farm5.static.flickr.com/4096/4787589478_61aa14b599.jpg" alt="Wired UK &amp;amp; Barabási Lab: Process" width="500" height="180" /></a></p>
<p>I took the same graph as above, and added another set of columns extending below &#8211; here the white bars show us how many &#8216;friends&#8217; the individual callers had &#8211; ie. how many people they are regularly talking to over the week:</p>
<p><a title="Wired UK &amp;amp; Barabási Lab: Process by blprnt_van, on Flickr" href="http://www.flickr.com/photos/blprnt/4786958611/"><img src="http://farm5.static.flickr.com/4139/4786958611_9d5d074bb1.jpg" alt="Wired UK &amp;amp; Barabási Lab: Process" width="500" height="313" /></a></p>
<p>If I sort this graph by number of friends (rather than total call time), we can see that the two measures (talkativeness, and number of friends) don&#8217;t seem to be strongly correlated:</p>
<p><a title="Wired UK &amp;amp; Barabási Lab: Process by blprnt_van, on Flickr" href="http://www.flickr.com/photos/blprnt/4787590016/"><img src="http://farm5.static.flickr.com/4076/4787590016_f6aa8869a5.jpg" alt="Wired UK &amp;amp; Barabási Lab: Process" width="500" height="313" /></a></p>
<p>It&#8217;s interesting to note here as well, that the data set includes linkage information &#8211; so I can also visualize who is calling who within our group of individuals:</p>
<p><a title="Wired UK &amp;amp; Barabási Lab: Process by blprnt_van, on Flickr" href="http://www.flickr.com/photos/blprnt/4786958691/"><img src="http://farm5.static.flickr.com/4076/4786958691_d3c245980b.jpg" alt="Wired UK &amp;amp; Barabási Lab: Process" width="500" height="313" /></a></p>
<p>There is some interesting information to be dug up in here, but the long aspect of the graph and the general over-detail involved makes it not very usable &#8211; particularly for a magazine piece.</p>
<p><strong>Ooh, and then Aaah.</strong></p>
<p>The Infoporn section in Wired is a two page spread;  I always think of it as needing to serve two separate purposes for two different kinds of readers. First, it needs to be visually pleasing. I want people to say &#8216;Oooh&#8230;!&#8217; when they turn the page to it. Once they&#8217;re hooked, though, I want them to learn something &#8211; the &#8216;Aaah!&#8217; moment.</p>
<p>The data used in the graphs above seemed too complex to do anything truly revealing with &#8211; so perhaps it could be built into something sexy enough to draw an &#8216;Oooh!&#8217; or two? In order to fit the long tails of these graphs onto the page, I wondered if I could add a bit of a curl to them. To make this structural change evident, I turned the graphs on a slight angle and rendered them in 3D. Here, we see five of these graphs, totaling about a million individual users, arranged into a single, tower-like shape:</p>
<p><a title="Wired UK &amp;amp; Barabási Lab: Process by blprnt_van, on Flickr" href="http://www.flickr.com/photos/blprnt/4787001405/"><img src="http://farm5.static.flickr.com/4137/4787001405_ffc546ccfa.jpg" alt="Wired UK &amp;amp; Barabási Lab: Process" width="500" height="313" /></a></p>
<p>While these structures took a little while to render, I could quite easily generate a unique set of them, which I assembled as a line trailing off to the page edge on the left:</p>
<p><a title="Wired UK &amp;amp; Barabási Lab: Process by blprnt_van, on Flickr" href="http://www.flickr.com/photos/blprnt/4786959411/"><img src="http://farm5.static.flickr.com/4114/4786959411_e108b3d5df.jpg" alt="Wired UK &amp;amp; Barabási Lab: Process" width="500" height="283" /></a></p>
<p><strong>Getting Personal</strong></p>
<p>So far, the visuals for this project only tell a part of the story: that our individual calling habits fall into predictable patterns when placed with the larger whole (some excellent text from <a href="http://lobstermedia.com/">Michael Dumiak</a> helps clarify this in the final piece). There&#8217;s another crucial piece, though. Cel phone usage data is inherently locative, since our provider always knows from which of their cel towers we are placing the call.</p>
<p>This is where the fun starts &#8211; we can use this locative data to track the mobility patterns of individual people (it&#8217;s worth saying here that all of the data the I worked with was anonymized). To do this, I created a tool (again, in Processing) to make &#8216;mobility cubes&#8217; &#8211; which show a history of an individual&#8217;s movements over time:</p>
<p><a href="http://www.flickr.com/photos/blprnt/4787590038/" title="Wired UK &amp;amp; Barabási Lab: Process by blprnt_van, on Flickr"><img src="http://farm5.static.flickr.com/4143/4787590038_e6399346de.jpg" width="470" height="500" alt="Wired UK &amp;amp; Barabási Lab: Process"></a></p>
<p>The individual above, for example, travels around an area less than a square kilometer over a period of just under three days. If I flatten this graph, we can see that this person travels mostly between two locations:</p>
<p><a href="http://www.flickr.com/photos/blprnt/4787589416/" title="Wired UK &amp;amp; Barabási Lab: Process by blprnt_van, on Flickr"><img src="http://farm5.static.flickr.com/4116/4787589416_8169d2a72e.jpg" width="446" height="424" alt="Wired UK &amp;amp; Barabási Lab: Process"></a></p>
<p>From the data, we can identify a lot of individuals like this &#8211; commuters &#8211; who travel short distances between two places (home, and work). We can also find travelers (people who cover a long distance in a short period of time):</p>
<p><a href="http://www.flickr.com/photos/blprnt/4787077865/" title="Wired UK &amp;amp; Barabási Lab: Process by blprnt_van, on Flickr"><img src="http://farm5.static.flickr.com/4073/4787077865_4321ce49ae.jpg" width="500" height="352" alt="Wired UK &amp;amp; Barabási Lab: Process"></a></p>
<p>And others who seem to follow more elaborate (but often still regular) mobility patterns:</p>
<p><a href="http://www.flickr.com/photos/blprnt/4787589582/" title="Wired UK &amp;amp; Barabási Lab: Process by blprnt_van, on Flickr"><img src="http://farm5.static.flickr.com/4081/4787589582_05fda2b088.jpg" width="500" height="497" alt="Wired UK &amp;amp; Barabási Lab: Process"></a></p>
<p>We can assemble a &#8216;mobility cube&#8217; for each individual in the database &#8211; and very quickly gain a mechanism for recognizing patterns amongst these people:</p>
<p><a href="http://www.flickr.com/photos/blprnt/4787590370/" title="Wired UK &amp;amp; Barabási Lab: Process by blprnt_van, on Flickr"><img src="http://farm5.static.flickr.com/4076/4787590370_e721ae5268.jpg" width="500" height="281" alt="Wired UK &amp;amp; Barabási Lab: Process"></a></p>
<p>Which brings us to the underlying point of the piece &#8211; we are all leaving digital trails behind us, as we make our way around our individual lives. These trails are largely considered individual &#8211; even ethereal &#8211; yet technology is making these trails more visible and more readable everyday.</p>
<p>Of course, to see the final piece &#8211; the polished assembly of some of the drafts and artifacts you&#8217;ve seen in this post &#8211; you&#8217;ll have to buy the magazine. Wired UK is available on newsstands in the UK, and to <a href="https://www.magazineboutique.co.uk/secureonline/quicksubs_tpl.asp?m=1207&#038;src=W321">all of our clever subscribers</a>.</p>
<p>If you want to read more about this &#8211; and you should &#8211; I&#8217;d highly recommend Albert-László Barabási&#8217;s <a href="http://www.amazon.com/Bursts-Hidden-Pattern-Behind-Everything/dp/0525951601">Bursts</a>, which goes into much more detail about human mobility &#038; predictability.</p>
<p>Finally, huge thanks have to go out to László and his team at the lab, without whom this piece would have never made it to print!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blprnt.com/blog/blprnt/wired-uk-barabasi-lab-and-big-data/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Calgary to Newcastle</title>
		<link>http://blog.blprnt.com/blog/blprnt/calgary-to-newcastle</link>
		<comments>http://blog.blprnt.com/blog/blprnt/calgary-to-newcastle#comments</comments>
		<pubDate>Tue, 01 Jun 2010 10:27:54 +0000</pubDate>
		<dc:creator>Jer</dc:creator>
				<category><![CDATA[Event]]></category>

		<guid isPermaLink="false">http://blog.blprnt.com/?p=1091</guid>
		<description><![CDATA[I&#8217;ve spent the last 8 weeks or so traveling around, doing a lot of speaking and teaching. Below is an overview of some of the places I&#8217;ve been and things I&#8217;ve been doing. First stop was the Alberta College of Art and Design, where Adam Tindale arranged for me to teach a workshop on Processing. [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Jer on stage by johnnybelmont, on Flickr" href="http://www.flickr.com/photos/johndavey/4603011821/"><img src="http://farm2.static.flickr.com/1382/4603011821_4cf749a614.jpg" alt="Jer on stage" width="500" height="333" /></a></p>
<p>I&#8217;ve spent the last 8 weeks or so traveling around, doing a lot of speaking and teaching. Below is an overview of some of the places I&#8217;ve been and things I&#8217;ve been doing.</p>
<p>First stop was the <a href="www.acad.ab.ca">Alberta College of Art and Design</a>, where <a href="http://www.adamtindale.com/">Adam Tindale</a> arranged for me to teach a workshop on <a href="http://www.processing.org">Processing</a>. Adam has a good thing going in Alberta &#8211; his students were great, and despite it being at the very end of the term we had a good turn out and I think people learned a lot. While I was there, I had the chance to see Adam perform live, which was a definite highlight &#8211; he mixed generative music with sets of abstract geometric forms live-coded in Processing.</p>
<p>I left Alberta and headed east for <a href="http://www.fitc.ca">FITC</a> in Toronto, where I gave a presentation titled &#8216;Hacking the Newsroom&#8217;. I also had the opportunity to sit on a panel organized by Tali Krakowsky, called &#8216;Storytelling: Absorbed, Obsessed, and Immersed&#8217;. I was humbled to be included in this group with John Underkoffler, Alex McDowell and Ben Kreukniet. You can read a good overview of the panel and our discussions <a href="http://serialconsign.com/2010/05/absorbed-obsessed-and-immersed-fitc">here</a>.</p>
<p>From Toronto, to Prague, where I was part of <a href="http://transistor.ciant.cz/2010/">Transistor 2010</a>, an event themed on digital archival run by a Czech new media organization called <a href="http://www.ciant.cz/">CIANT</a>. The event was hosted at Prague&#8217;s famous <a href="http://www.famu.cz/">FAMU</a> school &#8211; many thanks to Eric Rosenzveig who invited me to take part and to Barbora and the staff at CIANT for taking care of me!</p>
<p><a href="http://www.multi-mania.be/2010/">MultiMania</a> is a free one-day conference that is organized in Kortrijk, Belgium by the lovely and talented Koen de Wegghelaire. Yes, you read that right &#8211; free. Not only that, it&#8217;s a huge event, held in a sparkling new conference centre, and packed with excellent presenters. I was really, really impressed. Again, I talked about data visualization, with a focus on some of the projects I have done with the NYTimes APIs.</p>
<p>Those of you who have read my blog for any period of time will know that I am a big fan of Daniel Shiffman, who teaches at New York&#8217;s ITP. Daniel&#8217;s book, <a href="http://www.learningprocessing.com/">Learning Processing</a>, is not only the best Processing text out there, it&#8217;s the best &#8216;learning to program&#8217; book that I have ever encountered. I was thrilled, then, to be asked last minute to join Daniel for a &#8216;Processing Salon&#8217; in Amsterdam, at <a href="http://mediamatic.net">Mediamatic</a>. The event turned out to be very popular &#8211; 160+ people crowded into the space to hear the two of us talk about our work in Processing. This was the first &#8211; and probably only &#8211; time I&#8217;ve spoken in a space where a plywood bike track snaked its way through the crowd!</p>
<p>Finally, I made it to Newcastle last week for <a href="http://www.thinkingdigital.co.uk/">Thinking Digital</a>. Thinking Digital is a three-day event held at <a href="http://www.thesagegateshead.org/">The Sage Gateshead</a>, a very distinctive building just across the equally distinctive <a href="http://en.wikipedia.org/wiki/Gateshead_Millennium_Bridge">Millenium Bridge</a> from Newcastle. Thinking Digital is loosely styled after events like <a href="http://www.ted.com">TED</a> and <a href="http://www.poptech.org/">PopTech</a>, bringing together speakers from a variety of disciplines &#8211; the TDC10 lineup included an origami expert, a mathematician, a comedian, along with the usual mix of &#8216;social media experts&#8217; and &#8216;branding experts&#8217;. It was a really solid event &#8211; organizers looking for a model of a well-run conference should look to Herb Kim and his Codeworks team.</p>
<p>I am in the process of getting the three (four?) versions of my presentation up on SlideShare. In the meantime, if you attended any of these events and have questions or feedback, please feel free to leave a comment or to get in touch via <a href="mailto:blprnt@blprnt.com">e-mail.</a></p>
<p>My whirlwind of speaking behind me, I&#8217;ll be spending another week in the UK before heading back to North America for <a href="http://www.flashbelt.com">FlashBelt</a>. I&#8217;ll be in London from the 9th to the 14th &#8211; if anyone fancies a pint while I&#8217;m there, let me know!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blprnt.com/blog/blprnt/calgary-to-newcastle/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Your Random Numbers &#8211; Getting Started with Processing and Data Visualization</title>
		<link>http://blog.blprnt.com/blog/blprnt/your-random-numbers-getting-started-with-processing-and-data-visualization</link>
		<comments>http://blog.blprnt.com/blog/blprnt/your-random-numbers-getting-started-with-processing-and-data-visualization#comments</comments>
		<pubDate>Mon, 12 Apr 2010 02:56:54 +0000</pubDate>
		<dc:creator>Jer</dc:creator>
				<category><![CDATA[Information Visualization]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Processing]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[numbers]]></category>
		<category><![CDATA[pedagogy]]></category>
		<category><![CDATA[teaching]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://blog.blprnt.com/?p=1046</guid>
		<description><![CDATA[Over the last year or so, I&#8217;ve spent almost as much time thinking about how to teach data visualization as I&#8217;ve spent working with data. I&#8217;ve been a teacher for 10 years &#8211; for better or for worse this means that as I learn new techniques and concepts, I&#8217;m usually thinking about pedagogy at the [...]]]></description>
			<content:encoded><![CDATA[<p>Over the last year or so, I&#8217;ve spent almost as much time thinking about how to teach data visualization as I&#8217;ve spent working with data. I&#8217;ve been a teacher for 10 years &#8211; for better or for worse this means that as I learn new techniques and concepts, I&#8217;m usually thinking about pedagogy at the same time. Lately, I&#8217;ve also become convinced that this massive &#8216;open data&#8217; movement that we are currently in the midst of is sorely lacking in educational components. The amount of available data, I think, is quickly outpacing our ability to use it in useful and novel ways. How can basic data visualization techniques be taught in an easy, engaging manner?</p>
<p>This post, then, is a first sketch of what a lesson plan for teaching <a href="http://www.processing.org">Processing</a> and data visualization might look like. I&#8217;m going to start from scratch, work through some examples, and (hopefully) make some interesting stuff. One of the nice things, I think, about this process, is that we&#8217;re going to start with fresh, new data &#8211; I&#8217;m not sure what kind of things we&#8217;re going to find once we start to get our hands dirty. This is what is really exciting about data visualization; the chance to find answers to your own, possibly novel questions.</p>
<p><strong>Let&#8217;s Start With the Data</strong></p>
<p>We&#8217;re not going to work with an old, dusty data set here. Nor are we going to attempt to bash our heads against an unnecessarily complex pile of numbers. Instead, we&#8217;re going to start with a data set that I made up &#8211; with the help of a couple of hundred of my <a href="http://www.twitter.com/blprnt">Twitter</a> followers. Yesterday morning, I posted this request:</p>
<p><a rel="attachment wp-att-1047" href="http://blog.blprnt.com/blog/blprnt/your-random-numbers-getting-started-with-processing-and-data-visualization/picture-5-2"><img class="alignnone size-full wp-image-1047" title="Picture 5" src="http://blog.blprnt.com/wp-content/uploads/2010/04/Picture-5.png" alt="" width="500" height="88" /></a></p>
<p>Even on a Saturday, a lot of helpful folks pitched in, and I ended up with about 225 numbers. And so, we have the easiest possible dataset to work with &#8211; a single list of whole numbers. I&#8217;m hoping that, as well as being simple, this dataset will turn out to be quite interesting &#8211; maybe telling us something about how the human brain thinks about numbers.</p>
<p>I wrote a quick Processing sketch to scrape out the numbers from the post, and then to put them into a Google Spreadsheet. You can see the whole dataset here: <a href="http://spreadsheets.google.com/pub?key=t6mq_WLV5c5uj6mUNSryBIA&amp;output=html">http://spreadsheets.google.com/pub?key=t6mq_WLV5c5uj6mUNSryBIA&amp;output=html</a></p>
<p>I chose to start from a Google Spreadsheet in this tutorial, because I wanted people to be able to generate their own datasets to work with. Teachers &#8211; you can set up a spreadsheet of your own, and get your students to collect numbers by any means you&#8217;d like. The &#8216;User&#8217; and &#8216;Tweet&#8217; columns are not necessary; you just need to have a column called &#8216;Number&#8217;.</p>
<p>It&#8217;s about time to get down to some coding. The only tricky part in this whole process will be connecting to the Google Spreadsheet. Rather than bog down the tutorial with a lot of confusing semi-advanced code, I&#8217;ll let you download <a href="http://www.blprnt.com/tutorials/MyRandom.zip">this sample sketch</a> which has the Google Spreadsheet machinery in place.</p>
<p>Got it? Great. Open that sketch in Processing, and let&#8217;s get started. Just to make sure we&#8217;re all in the same place, you should see a screen that looks like this:</p>
<p><a rel="attachment wp-att-1049" href="http://blog.blprnt.com/blog/blprnt/your-random-numbers-getting-started-with-processing-and-data-visualization/picture-7"><img class="alignnone size-medium wp-image-1049" title="Picture 7" src="http://blog.blprnt.com/wp-content/uploads/2010/04/Picture-7-500x365.png" alt="" width="500" height="365" /></a></p>
<p>At the top of the sketch, you&#8217;ll see three String values that you can change. You&#8217;ll definitely have to enter your own Google username and password. If you have your own spreadsheet of number data, you can enter in the key for your spreadsheet as well. You can find the key right in the URL of any spreadsheet.</p>
<p>The first thing we&#8217;ll do is change the size of our sketch to give us some room to move, set the background color, and turn on smoothing to make things pretty. We do all of this in the setup enclosure:</p>
<pre class="brush: java;">
void setup() {
  //This code happens once, right when our sketch is launched
 size(800,800);
 background(0);
 smooth();
};
</pre>
<p>Now we need to get our data from the spreadsheet. One of the advantages of accessing the data from a shared remote file is that the remote data can change and we don&#8217;t have to worry about replacing files or changing our code.</p>
<p>We&#8217;re going to ask for a list of the &#8216;random&#8217; numbers that are stored in the spreadsheet. The most easy way to store lists of things in Processing is in an Array. In this case, we&#8217;re looking for an array of whole numbers &#8211; integers. I&#8217;ve written a function that gets an integer array from Google &#8211; you can take a look at the code on the &#8216;GoogleCode&#8217; tab if you&#8217;d like to see how that is done. What we need to know here is that this function &#8211; called getNumbers &#8211; will return, or send us back, a list of whole numbers. Let&#8217;s ask for that list:</p>
<pre class="brush: java;">
void setup() {
  //This code happens once, right when our sketch is launched
 size(800,800);
 background(0);
 smooth();

 //Ask for the list of numbers
 int[] numbers = getNumbers();
};
</pre>
<p>OK.</p>
<p><strong>World&#8217;s easiest data visualization!</strong></p>
<pre class="brush: java;">
 fill(255,40);
 noStroke();
 for (int i = 0; i &lt; numbers.length; i++) {
   ellipse(numbers[i] * 8, width/2, 8,8);
 };
</pre>
<p>What this does is to draw a row of dots across the screen, one for each number that occurs in our Google list. The dots are drawn with a low alpha (40/255 or about 16%), so when numbers are picked more than once, they get brighter. The result is a strip of dots across the screen that looks like this:</p>
<p><a rel="attachment wp-att-1054" href="http://blog.blprnt.com/blog/blprnt/your-random-numbers-getting-started-with-processing-and-data-visualization/picture-15"><img class="alignnone size-medium wp-image-1054" title="Picture 15" src="http://blog.blprnt.com/wp-content/uploads/2010/04/Picture-15-500x38.png" alt="" width="500" height="38" /></a></p>
<p>Right away, we can see a couple of things about the distribution of our &#8216;random&#8217; numbers. First, there are two or three very bright spots where numbers get picked several times. Also, there are some pretty evident gaps (one right in the middle) where certain numbers don&#8217;t get picked at all.</p>
<p>This could be normal though, right? To see if this distribution is typical, let&#8217;s draw a line of &#8216;real&#8217; random numbers below our line, and see if we can notice a difference:</p>
<pre class="brush: java;">
fill(255,40);
 noStroke();
 //Our line of Google numbers
 for (int i = 0; i &lt; numbers.length; i++) {
   ellipse(numbers[i] * 8, height/2, 8,8);
 };
 //A line of random numbers
 for (int i = 0; i &lt; numbers.length; i++) {
   ellipse(ceil(random(0,99)) * 8, height/2 + 20, 8,8);
 };
</pre>
<p>Now we see the two compared:</p>
<p><a rel="attachment wp-att-1055" href="http://blog.blprnt.com/blog/blprnt/your-random-numbers-getting-started-with-processing-and-data-visualization/picture-16"><img class="alignnone size-medium wp-image-1055" title="Picture 16" src="http://blog.blprnt.com/wp-content/uploads/2010/04/Picture-16-500x33.png" alt="" width="500" height="33" /></a></p>
<p>The bottom, random line doesn&#8217;t seem to have as many bright spots or as evident of gaps as our human-picked line. Still, the difference isn&#8217;t that evident. Can you tell right away which line is our line from the group below?</p>
<p><a rel="attachment wp-att-1056" href="http://blog.blprnt.com/blog/blprnt/your-random-numbers-getting-started-with-processing-and-data-visualization/picture-17"><img class="alignnone size-medium wp-image-1056" title="Picture 17" src="http://blog.blprnt.com/wp-content/uploads/2010/04/Picture-17-500x157.png" alt="" width="500" height="157" /></a></p>
<p>OK. I&#8217;ll admit it &#8211; I was hoping that the human-picked number set would be more obviously divergent from the sets of numbers that were generated by a computer. It&#8217;s possible that humans are better at picking random numbers than I had thought. Or, our sample set is too small to see any kind of real difference. It&#8217;s also possible that this quick visualization method isn&#8217;t doing the trick. Let&#8217;s stay on the track of number distribution for a few minutes and see if we can find out any more.</p>
<p>Our system of dots was easy, and readable, but not very useful for empirical comparisons. For the next step, let&#8217;s stick with the classics and</p>
<p><strong>Build a bar graph.</strong></p>
<p>Right now, we have a list of numbers. Ours range from 1-99, but let&#8217;s imagine for a second that we had a set of numbers that ranged from 0-10:</p>
<p>[5,8,5,2,4,1,6,3,9,0,1,3,5,7]</p>
<p>What we need to build a bar graph for these numbers is a list of <em>counts</em> &#8211; how many times each number occurs:</p>
<p>[1,2,1,2,1,3,1,1,1,1]</p>
<p>We can look at this list above, and see that there were two 1s, and three 5s.</p>
<p>Let&#8217;s do the same thing with our big list of numbers &#8211; we&#8217;re going to generate a list 99 numbers long that holds the counts for each of the possible numbers in our set. But, we&#8217;re going to be a bit smarter about it this time around and package our code into a function &#8211; so that we can use it again and again without having to re-write it. In this case the function will (eventually) draw a bar graph &#8211; so we&#8217;ll call it (cleverly) barGraph:</p>
<pre class="brush: java;">
void barGraph( int[] nums ) {
  //Make a list of number counts
 int[] counts = new int[100];
 //Fill it with zeros
 for (int i = 1; i &lt; 100; i++) {
   counts[i] = 0;
 };
 //Tally the counts
 for (int i = 0; i &lt; nums.length; i++) {
   counts[nums[i]] ++;
 };
};
</pre>
<p>This function constructs an array of counts from whatever list of numbers we pass into it (that list is a list of integers, and we refer to it within the function as &#8216;nums&#8217;, a name which I made up). Now, let&#8217;s add the code to draw the graph (I&#8217;ve added another parameter to go along with the numbers &#8211; the y position of the graph):</p>
<pre class="brush: java;">

void barGraph(int[] nums, float y) {
  //Make a list of number counts
 int[] counts = new int[100];
 //Fill it with zeros
 for (int i = 1; i &lt; 100; i++) {
   counts[i] = 0;
 };
 //Tally the counts
 for (int i = 0; i &lt; nums.length; i++) {
   counts[nums[i]] ++;
 };

 //Draw the bar graph
 for (int i = 0; i &lt; counts.length; i++) {
   rect(i * 8, y, 8, -counts[i] * 10);
 };
};
</pre>
<p>We&#8217;ve added a function &#8211; a set of instructions &#8211; to our file, which we can use to draw a bar graph from a set of numbers. To actually draw the graph, we need to call the function, which we can do in the setup enclosure. Here&#8217;s the code, all together:</p>
<pre class="brush: java;">

/*

 #myrandomnumber Tutorial
 blprnt@blprnt.com
 April, 2010

 */

//This is the Google spreadsheet manager and the id of the spreadsheet that we want to populate, along with our Google username &amp; password
SimpleSpreadsheetManager sm;
String sUrl = &quot;t6mq_WLV5c5uj6mUNSryBIA&quot;;
String googleUser = &quot;YOUR USERNAME&quot;;
String googlePass = &quot;YOUR PASSWORD&quot;;

void setup() {
  //This code happens once, right when our sketch is launched
 size(800,800);
 background(0);
 smooth();

 //Ask for the list of numbers
 int[] numbers = getNumbers();
 //Draw the graph
 barGraph(numbers, 400);
};

void barGraph(int[] nums, float y) {
  //Make a list of number counts
 int[] counts = new int[100];
 //Fill it with zeros
 for (int i = 1; i &lt; 100; i++) {
   counts[i] = 0;
 };
 //Tally the counts
 for (int i = 0; i &lt; nums.length; i++) {
   counts[nums[i]] ++;
 };

 //Draw the bar graph
 for (int i = 0; i &lt; counts.length; i++) {
   rect(i * 8, y, 8, -counts[i] * 10);
 };
};

void draw() {
  //This code happens once every frame.
};
</pre>
<p>If you run your code, you should get a nice minimal bar graph which looks like this:</p>
<p><a rel="attachment wp-att-1065" href="http://blog.blprnt.com/blog/blprnt/your-random-numbers-getting-started-with-processing-and-data-visualization/picture-18"><img class="alignnone size-medium wp-image-1065" title="Picture 18" src="http://blog.blprnt.com/wp-content/uploads/2010/04/Picture-18-500x90.png" alt="" width="500" height="90" /></a></p>
<p>We can help distinguish the very high values (and the very low ones) by adding some color to the graph. In Processing&#8217;s standard RGB color mode, we can change one of our color channels (in this case, green) with our count values to give the bars some differentiation:</p>
<pre class="brush: java;">

 //Draw the bar graph
 for (int i = 0; i &lt; counts.length; i++) {
   fill(255, counts[i] * 30, 0);
   rect(i * 8, y, 8, -counts[i] * 10);
 };
</pre>
<p>Which gives us this:</p>
<p><a rel="attachment wp-att-1066" href="http://blog.blprnt.com/blog/blprnt/your-random-numbers-getting-started-with-processing-and-data-visualization/picture-19"><img title="Picture 19" src="http://blog.blprnt.com/wp-content/uploads/2010/04/Picture-19-500x66.png" alt="" width="500" height="66" /></a></p>
<p>Or, we could switch to Hue/Saturation/Brightness mode, and use our count values to cycle through the available hues:</p>
<pre class="brush: java;">
//Draw the bar graph
 for (int i = 0; i &lt; counts.length; i++) {
   colorMode(HSB);
   fill(counts[i] * 30, 255, 255);
   rect(i * 8, y, 8, -counts[i] * 10);
 };
</pre>
<p>Which gives us this graph:</p>
<p><a rel="attachment wp-att-1067" href="http://blog.blprnt.com/blog/blprnt/your-random-numbers-getting-started-with-processing-and-data-visualization/picture-20"><img class="alignnone size-medium wp-image-1067" title="Picture 20" src="http://blog.blprnt.com/wp-content/uploads/2010/04/Picture-20-500x67.png" alt="" width="500" height="67" /></a></p>
<p>Now would be a good time to do some comparisons to a real random sample again, to see if the new coloring makes a difference. Because we defined our bar graph instructions as a function, we can do this fairly easily (I built in an easy function to generate a random list of integers called getRandomNumbers &#8211; you can see the code on the &#8216;GoogleCode&#8217; tab):</p>
<pre class="brush: java;">
void setup() {
  //This code happens once, right when our sketch is launched
 size(800,800);
 background(0);
 smooth();

 //Ask for the list of numbers
 int[] numbers = getNumbers();
 //Draw the graph
 barGraph(numbers, 100);

 for (int i = 1; i &lt; 7; i++) {
 int[] randoms = getRandomNumbers(225);
 barGraph(randoms, 100 + (i * 130));
 };
};
</pre>
<p><a rel="attachment wp-att-1070" href="http://blog.blprnt.com/blog/blprnt/your-random-numbers-getting-started-with-processing-and-data-visualization/picture-21"><img title="Picture 21" src="http://blog.blprnt.com/wp-content/uploads/2010/04/Picture-21-498x500.png" alt="" width="498" height="500" /></a></p>
<p>I know, I know. Bar graphs. Yay. Looking at the graphic above, though, we can see more clearly that our humanoid number set is unlike the machine-generated sets. However, I actually think that the color is more valuable than the dimensions of the bars. Since we&#8217;re dealing with 99 numbers, maybe we can display these colours in a grid and see if any patterns emerge? A really important thing to be able to do with data visualization is to</p>
<p><strong>Look at datasets from multiple angles.</strong></p>
<p>Let&#8217;s see if the grid gets us anywhere. Luckily, a function to make a grid is pretty much the same as the one to make a graph (I&#8217;m adding two more parameters &#8211; an x position for the grid, and a size for the individual blocks):</p>
<pre class="brush: java;">
void colorGrid(int[] nums, float x, float y, float s) {
 //Make a list of number counts
 int[] counts = new int[100];
 //Fill it with zeros
 for (int i = 0; i &lt; 100; i++) {
   counts[i] = 0;
 };
 //Tally the counts
 for (int i = 0; i &lt; nums.length; i++) {
   counts[nums[i]] ++;
 };

//Move the drawing coordinates to the x,y position specified in the parameters
 pushMatrix();
 translate(x,y);
 //Draw the grid
 for (int i = 0; i &lt; counts.length; i++) {
   colorMode(HSB);
   fill(counts[i] * 30, 255, 255, counts[i] * 30);
   rect((i % 10) * s, floor(i/10) * s, s, s);

 };
 popMatrix();
};
</pre>
<p>We can now do this to draw a nice big grid:</p>
<pre class="brush: java;">
 //Ask for the list of numbers
 int[] numbers = getNumbers();
 //Draw the graph
 colorGrid(numbers, 50, 50, 70);
</pre>
<p><a rel="attachment wp-att-1075" href="http://blog.blprnt.com/blog/blprnt/your-random-numbers-getting-started-with-processing-and-data-visualization/picture-22"><img class="alignnone size-medium wp-image-1075" title="Picture 22" src="http://blog.blprnt.com/wp-content/uploads/2010/04/Picture-22-499x500.png" alt="" width="499" height="500" /></a></p>
<p>I can see some definite patterns in this grid &#8211; so let&#8217;s bring the actual numbers back into play so that we can talk about what seems to be going on. Here&#8217;s the full code, one last time:</p>
<pre class="brush: java;">

/*

 #myrandomnumber Tutorial
 blprnt@blprnt.com
 April, 2010

 */

//This is the Google spreadsheet manager and the id of the spreadsheet that we want to populate, along with our Google username &amp; password
SimpleSpreadsheetManager sm;
String sUrl = &quot;t6mq_WLV5c5uj6mUNSryBIA&quot;;
String googleUser = &quot;YOUR USERNAME&quot;;
String googlePass = &quot;YOUR PASSWORD&quot;;

//This is the font object
PFont label;

void setup() {
  //This code happens once, right when our sketch is launched
 size(800,800);
 background(0);
 smooth();

 //Create the font object to make text with
 label = createFont(&quot;Helvetica&quot;, 24);

 //Ask for the list of numbers
 int[] numbers = getNumbers();
 //Draw the graph
 colorGrid(numbers, 50, 50, 70);
};

void barGraph(int[] nums, float y) {
  //Make a list of number counts
 int[] counts = new int[100];
 //Fill it with zeros
 for (int i = 1; i &lt; 100; i++) {
   counts[i] = 0;
 };
 //Tally the counts
 for (int i = 0; i &lt; nums.length; i++) {
   counts[nums[i]] ++;
 };

 //Draw the bar graph
 for (int i = 0; i &lt; counts.length; i++) {
   colorMode(HSB);
   fill(counts[i] * 30, 255, 255);
   rect(i * 8, y, 8, -counts[i] * 10);
 };
};

void colorGrid(int[] nums, float x, float y, float s) {
 //Make a list of number counts
 int[] counts = new int[100];
 //Fill it with zeros
 for (int i = 0; i &lt; 100; i++) {
   counts[i] = 0;
 };
 //Tally the counts
 for (int i = 0; i &lt; nums.length; i++) {
   counts[nums[i]] ++;
 };

 pushMatrix();
 translate(x,y);
 //Draw the grid
 for (int i = 0; i &lt; counts.length; i++) {
   colorMode(HSB);
   fill(counts[i] * 30, 255, 255, counts[i] * 30);
   textAlign(CENTER);
   textFont(label);
   textSize(s/2);
   text(i, (i % 10) * s, floor(i/10) * s);
 };
 popMatrix();
};

void draw() {
  //This code happens once every frame.

};
</pre>
<p>And, our nice looking number grid:</p>
<p><a rel="attachment wp-att-1076" href="http://blog.blprnt.com/blog/blprnt/your-random-numbers-getting-started-with-processing-and-data-visualization/picture-23"><img class="alignnone size-medium wp-image-1076" title="Picture 23" src="http://blog.blprnt.com/wp-content/uploads/2010/04/Picture-23-500x487.png" alt="" width="500" height="487" /></a></p>
<p><strong>BINGO!</strong></p>
<p>No, really. If this was a bingo card, and I was a 70-year old, I&#8217;d be rich. Look at that nice line going down the X7 column &#8211; 17, 27, 37, 47, 57, 67, 77, 87, and 97 are all appearing with good frequency. If we rule out the Douglas Adams effect on 42, it is likely that most of the top 10 most-frequently occurring numbers would have a 7 on the end. Do numbers ending with 7s &#8216;feel&#8217; more random to us? Or is there something about the number 7 that we just plain like?</p>
<p>Contrasting to that, if I had played the x0 row, I&#8217;d be out of luck. It seems that numbers ending with a zero don&#8217;t feel very random to us at all. This could also explain the black hole around the number 50 &#8211; which, in a range from 0-100, appears to be the &#8216;least random&#8217; of all.</p>
<p>Well, there we have it. A start-to finish example of how we can use Processing to visualize simple data, with a goal to expose underlying patterns and anomalies. The techniques that we used in this project were fairly simple &#8211; but they are useful tools that can be used in a huge variety of data situations (I use them myself, all the time).</p>
<p>Hopefully this tutorial is (was?) useful for some of you. And, if there are any teachers out there who would like to try this out with their classrooms, I&#8217;d love to hear how it goes.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blprnt.com/blog/blprnt/your-random-numbers-getting-started-with-processing-and-data-visualization/feed</wfw:commentRss>
		<slash:comments>51</slash:comments>
		</item>
		<item>
		<title>2 == 3 Sale on Etsy Prints</title>
		<link>http://blog.blprnt.com/blog/blprnt/2-3-sale-on-etsy-prints</link>
		<comments>http://blog.blprnt.com/blog/blprnt/2-3-sale-on-etsy-prints#comments</comments>
		<pubDate>Mon, 05 Apr 2010 23:27:27 +0000</pubDate>
		<dc:creator>Jer</dc:creator>
				<category><![CDATA[1]]></category>

		<guid isPermaLink="false">http://blog.blprnt.com/?p=1041</guid>
		<description><![CDATA[I am going to be traveling for a few months starting at the end of April, and I have a pile of prints here that will be sitting idle if they don&#8217;t get shipped out the door before then. So, how &#8217;bout a sale? Single prints: 15% off 2 prints: 25% off 3 prints: Third [...]]]></description>
			<content:encoded><![CDATA[<p><a title="NYTimes - 2008 - Print by blprnt_van, on Flickr" href="http://www.flickr.com/photos/blprnt/3352711922/"><img src="http://farm4.static.flickr.com/3577/3352711922_a7e431a165.jpg" alt="NYTimes - 2008 - Print" width="500" height="334" /></a></p>
<p>I am going to be traveling for a few months starting at the end of April, and I have a pile of prints here that will be sitting idle if they don&#8217;t get shipped out the door before then. So, how &#8217;bout a sale?</p>
<p><strong>Single prints:</strong> 15% off</p>
<p><strong>2 prints:</strong> 25% off</p>
<p><strong>3 prints:</strong> Third (least expensive) print is free!</p>
<p><strong>Free print: </strong>I&#8217;ll ship a <a href="http://www.etsy.com/view_listing.php?listing_id=33076546">free 18&#8243;x10&#8243; flower.trees print</a> to a random person who Tweets about this sale, using the hashtag #blprnts. I&#8217;ll draw this winner at 10PM PST, on Tuesday April 6th.</p>
<p>You can check out what I have in stock at my <a href="http://blprnt.etsy.com" target="_blank">Etsy store</a>. If you purchase via Etsy (this is easiest), I&#8217;ll refund you the discount/free print. Otherwise, <a href="mailto:blprnt@blprnt.com">get in touch</a> and we can sort things out. All prints are on Hahnemühle photo-rag paper, and are printed with archival-quality inks. They are shipped flat. Some prints are editions (signed and numbered) &#8211; all prints come signed.</p>
<p>I&#8217;ll be shipping prints on Tuesday, April 13th. Please <em>get orders in to me by Sunday, April 11th</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blprnt.com/blog/blprnt/2-3-sale-on-etsy-prints/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No Fixed Address: Leaving Vancouver</title>
		<link>http://blog.blprnt.com/blog/blprnt/no-fixed-address-leaving-vancouver</link>
		<comments>http://blog.blprnt.com/blog/blprnt/no-fixed-address-leaving-vancouver#comments</comments>
		<pubDate>Wed, 24 Mar 2010 22:51:42 +0000</pubDate>
		<dc:creator>Jer</dc:creator>
				<category><![CDATA[Announcements]]></category>

		<guid isPermaLink="false">http://blog.blprnt.com/?p=1033</guid>
		<description><![CDATA[I&#8217;ve lived in Vancouver for 17 years (29, if you count time served in the suburbs). It&#8217;s a beautiful city, with a lot to offer. Today&#8217;s bright spring day is about as good of a demonstration of its benefits as is possible. It&#8217;s a city full of great people, doing interesting things, and as such [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Urgent flight out of YVR by Nick Dobbing, on Flickr" href="http://www.flickr.com/photos/wovenland/3131480541/"><img src="http://farm4.static.flickr.com/3034/3131480541_f78424f2e9.jpg" alt="Urgent flight out of YVR" width="500" height="500" /></a></p>
<p>I&#8217;ve lived in Vancouver for 17 years (29, if you count time served in the suburbs). It&#8217;s a beautiful city, with a lot to offer. Today&#8217;s bright spring day is about as good of a demonstration of its benefits as is possible. It&#8217;s a city full of great people, doing interesting things, and as such has a long history of cultural and creative production.</p>
<p>All of that said, I&#8217;m leaving.</p>
<p>For personal reasons, I&#8217;m going to find myself without fixed address as of April 1st. After thinking it over for a little while, I&#8217;ve decided to take this opportunity to pull up roots and re-locate. I <a href="http://www.youtube.com/watch?v=GeLNx2ibM44">haven&#8217;t really felt at home in Vancouver</a> over the last few months and the <a href="http://www.stopbcartscuts.ca/">political situation in this province</a> certainly doesn&#8217;t help matters. All in all, I&#8217;ll be happy to get away for a while.</p>
<p>I&#8217;m not sure where I will end up. I&#8217;m going to spend most of April visiting my family on Vancouver Island, and in May &amp; June <a href="http://blog.blprnt.com/blog/blprnt/springsummer-2010-speaking-dates">I&#8217;ll be traveling in Europe and the US to do some speaking and teaching</a>. The plan is to give a new location serious consideration starting in July. I&#8217;ve begun to generate a short list of creative cities where I could easily live (with a <a href="http://www.flickr.com/photos/blprnt/3368651494/in/set-72157615629359704/">dog</a>) &#8211; if you have any suggestions, I&#8217;d love to hear them.</p>
<p>In the meantime, please expect some sporadicity in posts as I bounce around.</p>
<p>(top photo by <a href="http://www.flickr.com/photos/wovenland/">Nick Dobbing</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blprnt.com/blog/blprnt/no-fixed-address-leaving-vancouver/feed</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Spring/Summer 2010 Speaking Dates</title>
		<link>http://blog.blprnt.com/blog/blprnt/springsummer-2010-speaking-dates</link>
		<comments>http://blog.blprnt.com/blog/blprnt/springsummer-2010-speaking-dates#comments</comments>
		<pubDate>Mon, 15 Mar 2010 01:26:19 +0000</pubDate>
		<dc:creator>Jer</dc:creator>
				<category><![CDATA[Travel]]></category>
		<category><![CDATA[Belgium]]></category>
		<category><![CDATA[minneapolis]]></category>
		<category><![CDATA[Newcastle]]></category>
		<category><![CDATA[speaking]]></category>
		<category><![CDATA[Toronto]]></category>
		<category><![CDATA[UK]]></category>

		<guid isPermaLink="false">http://blog.blprnt.com/?p=1028</guid>
		<description><![CDATA[I&#8217;ll be racking up some airmiles over the next couple of months, traveling to present at a series of excellent events. At the end of April, I&#8217;ll be in Toronto for FITC, where I&#8217;ll be talking about data visualization, the NYTimes API, and showing a nice set of work that nobody has seen, yet. I&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be racking up some airmiles over the next couple of months, traveling to present at a series of excellent events.</p>
<p>At the end of April, I&#8217;ll be in Toronto for <a href="http://fitc.ca">FITC</a>, where I&#8217;ll be talking about data visualization, the NYTimes API, and showing a nice set of work that nobody has seen, yet. I&#8217;ll also be speaking on a panel called &#8216;<a href="http://www.fitc.ca/events/presentations/presentation.cfm?event=102&amp;presentation_id=1138">Storytelling: Absorbed, Obsessed And Immersed</a>&#8216; with Tali Krakoswky, John Underkoffler, Ben Kreukniet and Alex McDowell. <em><a href="http://fitc.ca">FITC</a> &#8211; April 24th to April 27th, Toronto, Canada</em></p>
<p>At the end of May I&#8217;ll be Newcastle to speak at <a href="http://www.thinkingdigital.co.uk/">Thinking Digital</a>. This event brings together a group of interesting people from different disciplines &#8211; the <a href="http://www.thinkingdigital.co.uk/venue/index.php">venue</a> and <a href="http://www.thinkingdigital.co.uk/speakers/index.php">speaker lineup</a> look fantastic. Again, I&#8217;ll be talking about data visualization, with an emphasis on deconstructing some of the work that I&#8217;ve done for Wired UK. <em><a href="http://www.thinkingdigital.co.uk/">Thinking Digital</a> &#8211; May 25th to 27th, Newcastle upon Tyne, UK</em></p>
<p>A couple of weeks later I&#8217;ll be in Minneapolis for my favourite event of the year &#8211; <a href="http://www.flashbelt.com/">Flashbelt</a>. I&#8217;ll be giving a completely new talk, which I will share details about over the next couple of days. If you&#8217;ve been thinking about coming to Flashbelt in previous years but have never taken the leap &#8211; this year is the year to do it. <em><a href="http://www.flashbelt.com/">Flashbelt</a> &#8211; June 13th to 16th, Minneapolis, USA</em></p>
<p><em><span style="font-style: normal;">The most valuable thing I take out of being part of these events is meeting interesting people. If you are going to be around for any of these events and would like to meet for a beer &#8211; please don&#8217;t hesitate to get in touch.</span></em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blprnt.com/blog/blprnt/springsummer-2010-speaking-dates/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Missing Piece of the OpenData / OpenGov Puzzle: Education</title>
		<link>http://blog.blprnt.com/blog/blprnt/the-missing-piece-of-the-opendata-opengov-puzzle-education</link>
		<comments>http://blog.blprnt.com/blog/blprnt/the-missing-piece-of-the-opendata-opengov-puzzle-education#comments</comments>
		<pubDate>Sun, 07 Mar 2010 23:46:35 +0000</pubDate>
		<dc:creator>Jer</dc:creator>
				<category><![CDATA[Information Visualization]]></category>
		<category><![CDATA[Journalism]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Processing]]></category>
		<category><![CDATA[Science]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[opendata]]></category>
		<category><![CDATA[opengov]]></category>
		<category><![CDATA[pipedream]]></category>
		<category><![CDATA[policy]]></category>

		<guid isPermaLink="false">http://blog.blprnt.com/?p=1019</guid>
		<description><![CDATA[Yesterday, I tweeted a quick thought that I had, while walking the dog: A few people asked me to expand on this, so let&#8217;s give it a try: We are facing a very different data-related problem today than we were facing only a few years ago. Back then, the call was solely for more information. [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday, I <a href="http://www.twitter.com/blprnt">tweeted</a> a quick thought that I had, while walking the dog:</p>
<p><img class="alignnone size-medium wp-image-1020" title="Picture 5" src="http://blog.blprnt.com/wp-content/uploads/2010/03/Picture-5-500x67.png" alt="Picture 5" width="500" height="67" /></p>
<p>A few people asked me to expand on this, so let&#8217;s give it a try:</p>
<p>We are facing a very different data-related problem today than we were facing only a few years ago. Back then, the call was solely for more information. Since then, corporations and governments have started to answer this call and the result has been a flood of data of all shapes and sizes. While it&#8217;s important to remain on track with the goal of making data available, we are now faced with a parallel and perhaps more perplexing problem: What do we do with it all?</p>
<p>Of course, an industry has developed around all of this data; start-ups around the world are coming up with new ideas and data-related products every day. At the same time, open-sourcers are releasing helpful tools and clever apps by the dozen. Still, in a large part these groups are looking at the data with fiscal utility in mind. It seems to me that if we are going to make the most of this information resource, it&#8217;s important to bring more people in on the game &#8211; and to do that requires education.</p>
<p>At the post-secondary level, efforts should be made to educate academics for whom this new pile of data could be useful: journalists, social scientists, historians, contemporary artists, archivists, etc. I could imagine cross-disciplinary workshops teaching the basics:</p>
<ol>
<li>A survey of what kind of data is available, and how to find it.</li>
<li>A brief overview of common data formats (CSV, JSON, XML, etc).</li>
<li>An introduction to user-friendly exploration tools like <a href="http://manyeyes.alphaworks.ibm.com/manyeyes/">ManyEyes</a> &amp; <a href="http://www.tableausoftware.com/public/">Tableau</a></li>
<li>A primer in <a href="http://www.processing.org">Processing</a> and how it can be used to quickly prototype and build specialized visualization tools.</li>
</ol>
<p>The last step seems particularly important to me, as it encourages people to think about new ways to engage with information. In many cases, datasets that are becoming available are novel in their content, structure, and complexity &#8211; encouraging innovation in an academic framework is essential. Yes, we do need to teach people how to make bar graphs and scatter charts; but let&#8217;s also facilitate exploration and experimentation.</p>
<p>Why workshops? While this type of teaching could certainly be done through tutorials, or with a well-written text book, it&#8217;s my experience that teaching these subjects is much more effective one-on-one. This is particularly true for students who come at data from a non-scientific perspective (and these people are the ones that we need the most).</p>
<p>The long-term goal of such an initiative would be to increase data-literacy. In a perfect world, this would occur even earlier &#8211; at the highschool level. Here&#8217;s where I put on my utopian hat: teaching data literacy to young people would mean that they could find answers to their own questions, rather than waiting for the media to answer those questions for them. It also teaches them, in a practical way, about transparency and accountability in government. The education system is already producing a generation of bloggers and citizen journalists &#8211; let&#8217;s make sure they have the skills they need to be dangerous. Veering a bit to the right, these are hugely valuable skills for workers in an &#8216;idea economy&#8217; &#8211; a nation with a data-literate workforce is a force to be reckoned with.</p>
<p>Ideally this educational component would be build in to government projects like data.gov or data.hmg.gov.uk (are you listening, Canada?). More than that, it would be woven into the education mandate of governments at federal and local levels. Of course, I&#8217;m not holding my breath.</p>
<p>Instead, I&#8217;ve started to plan a bit of a project for the summer. Like last year, I taught a series of workshops at my studio in Vancouver, which were open to people of all skill levels. This year, I&#8217;m going to extend my reach a bit and offer a couple of <strong>free</strong>, online presentations covering some of the things that I&#8217;ve talked about in this post. One of these workshops will be specifically targeted to youth. At the same time, I&#8217;ll be publishing course outlines and sample materials for my sessions so that others can host similar events.</p>
<p>Stay tuned for details &#8211; and if you have any questions or would like to lend a hand, feel free to leave a comment or <a href="mailto:blprnt@blprnt.com">get in touch</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blprnt.com/blog/blprnt/the-missing-piece-of-the-opendata-opengov-puzzle-education/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>State of the Union(s)</title>
		<link>http://blog.blprnt.com/blog/blprnt/state-of-the-unions</link>
		<comments>http://blog.blprnt.com/blog/blprnt/state-of-the-unions#comments</comments>
		<pubDate>Thu, 28 Jan 2010 06:12:21 +0000</pubDate>
		<dc:creator>Jer</dc:creator>
				<category><![CDATA[Journalism]]></category>
		<category><![CDATA[Processing]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[data visualization]]></category>
		<category><![CDATA[nytimes]]></category>
		<category><![CDATA[obama]]></category>
		<category><![CDATA[state of the union]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://blog.blprnt.com/?p=1015</guid>
		<description><![CDATA[I was asked at the end of last week to produce a graphic for the Opinion page today &#8211; the idea was to compare the texts of various &#8216;state of the union&#8217; addresses from around the world. The final result (pictured above) is not extraordinarily data-heavy. It worked quite nicely in the printed layout, where [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/blprnt/4309607264/" title="New York Times, 01/27/10 - State of the Union Graphic by blprnt_van, on Flickr"><img src="http://farm5.static.flickr.com/4034/4309607264_03b98784d8.jpg" width="500" height="465" alt="New York Times, 01/27/10 - State of the Union Graphic" /></a></p>
<p>I was asked at the end of last week to produce a graphic for <a href="http://www.nytimes.com/2010/01/27/opinion/27state-of-the-world.html">the Opinion page toda</a>y &#8211; the idea was to compare the texts of various &#8216;state of the union&#8217; addresses from around the world. The final result (pictured above) is not extraordinarily data-heavy. It worked quite nicely in the printed layout, where the individual &#8216;tentacles&#8217; trailed to the text of the speeches that they index.</p>
<p>The process behind this piece was relatively simple. Each speech was indexed using a Processing application that I wrote which counts the frequency of individual names (the program ignores commonly used or unimportant words). The words for each speech were then ranked by mentions per thousand words (you can see a version of the piece with numbers <a href="http://www.flickr.com/photos/blprnt/4308870277/in/photostream/">here</a>)</p>
<p>Almost every project I work on involves a period of &#8216;data exploration&#8217; in which I try shake as many interesting things out of the information as I can. Even though this piece had a short turn-around, I did a fair amount of poking around, generating some simple bar graphs:</p>
<p><a href="http://www.flickr.com/photos/blprnt/4310264839/" title="State of the Union Graphs by blprnt_van, on Flickr"><img src="http://farm5.static.flickr.com/4046/4310264839_bfaab20523.jpg" width="500" height="499" alt="State of the Union Graphs" /></a></p>
<p>Another avenue I explored was to use the word weights to determine a &#8216;score&#8217; for each sentence. By doing this, I can try to find the &#8216;kernel&#8217; of the speech &#8211; the sentence that sums up the entire text in the most succinct way. This, I think was fairly successful. Here are the &#8216;power sentences&#8217; for the UK:</p>
<p><a href="http://www.flickr.com/photos/blprnt/4310297221/" title="SOTU analysis - Sentence Weighting- UK by blprnt_van, on Flickr"><img src="http://farm3.static.flickr.com/2721/4310297221_451b40a12d.jpg" width="500" height="103" alt="SOTU analysis - Sentence Weighting- UK" /></a></p>
<p>The Netherlands:</p>
<p><a href="http://www.flickr.com/photos/blprnt/4311034678/" title="SOTU analysis - Sentence Weighting - Netherlands by blprnt_van, on Flickr"><img src="http://farm3.static.flickr.com/2760/4311034678_604e9bc7ae.jpg" width="500" height="87" alt="SOTU analysis - Sentence Weighting - Netherlands" /></a></p>
<p>And Botswana:</p>
<p><a href="http://www.flickr.com/photos/blprnt/4310297241/" title="SOTU analysis - Sentence Weighting - Botswana by blprnt_van, on Flickr"><img src="http://farm5.static.flickr.com/4030/4310297241_4600853a10.jpg" width="500" height="86" alt="SOTU analysis - Sentence Weighting - Botswana" /></a></p>
<p>Which brings us to tonight&#8217;s State of the Union Address by Barack Obama. What was the &#8216;power sentence&#8217; from this speech? I ran the weighting algorithm on the address and this is what it came up with:</p>
<p><a href="http://www.flickr.com/photos/blprnt/4310312761/" title="The Most Important Sentence From Obama's State of the Union Address? by blprnt_van, on Flickr"><img src="http://farm3.static.flickr.com/2802/4310312761_e47b9a0ed0.jpg" width="500" height="74" alt="The Most Important Sentence From Obama's State of the Union Address?" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blprnt.com/blog/blprnt/state-of-the-unions/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Haiti &amp; Avatar &#8211; updates.</title>
		<link>http://blog.blprnt.com/blog/blprnt/haiti-avatar-updates</link>
		<comments>http://blog.blprnt.com/blog/blprnt/haiti-avatar-updates#comments</comments>
		<pubDate>Tue, 26 Jan 2010 06:57:40 +0000</pubDate>
		<dc:creator>Jer</dc:creator>
				<category><![CDATA[Information Visualization]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[avatar]]></category>
		<category><![CDATA[canada]]></category>
		<category><![CDATA[data visualization]]></category>
		<category><![CDATA[foreign aid]]></category>
		<category><![CDATA[haiti]]></category>

		<guid isPermaLink="false">http://blog.blprnt.com/?p=1012</guid>
		<description><![CDATA[This post is a bit of a swiss-army knife. Without being too long-winded, I&#8217;m going to clarify some misunderstandings, update some figures, talk about Canadian foreign policy, respond to some criticism and remove a rock from a horse&#8217;s hoof. To start, then, let&#8217;s Clarify some misunderstandings I published a post last week comparing Haiti aid per [...]]]></description>
			<content:encoded><![CDATA[<p>This post is a bit of a swiss-army knife. Without being too long-winded, I&#8217;m going to clarify some misunderstandings, update some figures, talk about Canadian foreign policy, respond to some criticism and remove a rock from a horse&#8217;s hoof. To start, then, let&#8217;s</p>
<p><strong>Clarify some misunderstandings</strong></p>
<p>I published a <a href="http://blog.blprnt.com/blog/blprnt/finding-perspective-haiti-earthquake-aid-in-avatar-minutes">post last week comparing Haiti aid per capita to Avatar ticket prices</a>. The post got a lot of attention, and the figures and general concept were cross-posted and re-hashed in many places. Some people seemed to have misunderstood the post, though, and thought that I was comparing the contributions of individual governments to the production costs of Avatar. This is not what I did.</p>
<p>To get my figures for &#8216;Avatar minutes&#8217; I started with the total aid contribution for a country, and divided it by that country&#8217;s population to get a per-capita aid figure. I then calculated how many minutes of Avatar that per-person contribution would pay for, using a ticket price of $8.50 (with a running time of 162 minutes, an &#8216;Avatar minute&#8217; is about 5.25 cents). So, with Canada&#8217;s aid contribution of $5.5M, and a population of 33.3M, the per-person donation is about 3 Avatar minutes. Now, before any of you angry Canadians start frothing at the mouth, let me</p>
<p><strong>Update some figures</strong></p>
<p><a title="Haiti/Avatar Updates by blprnt_van, on Flickr" href="http://www.flickr.com/photos/blprnt/4306071946/"><img src="http://farm5.static.flickr.com/4061/4306071946_772d42179c.jpg" alt="Haiti/Avatar Updates" width="500" height="289" /></a></p>
<p>When I published by post last week, I used the data that was then available. Many people commented about my use of the figure $5.5M for Canada, since very shortly after the post it was announced that the Canadian government was drastically increasing their Haiti aid contributions, and at the same time stated that they would match Canadian citizen&#8217;s contributions dollar-for-dollar, with no capping amount. I highlighted Canada in my post not to shame the government, but because I live in Canada. Again, I used the data available. I promised at the time to update the figures as more information became available, so, without further ado:</p>
<ul>
<li>Canada: 74 minutes</li>
<li>Sweden: 47 minutes</li>
<li>Norway: 41 minutes</li>
<li>Denmark: 39 minutes</li>
<li>Luxembourg: 28 minutes</li>
<li>Finland: 27 minutes</li>
<li>Guyana: 25 minutes</li>
<li>Spain: 19 minutes</li>
<li>Estonia: 14 minutes</li>
<li>Australia: 12 minutes</li>
<li>Ireland: 12 minutes</li>
<li>Switzerland: 11 minutes</li>
<li>USA: 10 minutes</li>
<li>France: 9.5 minutes</li>
<li>Germany: 5 minutes</li>
<li>Netherlands: 5 minutes</li>
<li>Italy: 3 minutes</li>
<li>Japan: 1 minute</li>
</ul>
<p>The contributions pledged by the Canadian government are impressive. But the point of the original post was not to single out any individual country for either congratulation or condemnation. Instead, it was to take the figures and put them into some kind of context.</p>
<p>$130,733,775 is a lot of money. Really. But our measure of amounts always depends on what context we put the numbers in. $130 million is a lot of money when compared to my yearly income. But it&#8217;s not that much money compared to the 2010 olympic budget &#8211; $1,700 million for a two-week sporting event. It&#8217;s just under half of the estimated production costs of Avatar ($280M). It&#8217;s less than 4% of Canada&#8217;s foreign aid budget.</p>
<p><a title="Comparing Millions by blprnt_van, on Flickr" href="http://www.flickr.com/photos/blprnt/4306107428/"><img src="http://farm5.static.flickr.com/4017/4306107428_aee83f2d36.jpg" alt="Comparing Millions" width="500" height="250" /></a></p>
<p>If we add up ALL of the contributions to Haiti Aid, we get an even bigger amount of money &#8211; $1.75 billion dollars. A huge amount, to be sure, but again, a number that needs to be looked at in context. $1.75B is just a little bit less than Avatar has made in global ticket sales. It&#8217;s about 50% of Canada&#8217;s foreign aid budget, and 0.25% of last year&#8217;s monstrous US financial bailout. It is, repeating myself from the last paragraph, pretty much exactly what Vancouver is spending on next month&#8217;s winter games.</p>
<p><a title="Comparing Billions by blprnt_van, on Flickr" href="http://www.flickr.com/photos/blprnt/4305363471/"><img src="http://farm5.static.flickr.com/4010/4305363471_65036897d5.jpg" alt="Comparing Billions" width="500" height="250" /></a></p>
<p>All of this mention of Canada and foreign aid may have already have tipped you off that I&#8217;d like to</p>
<p><strong>Talk about Canadian Foreign Policy</strong></p>
<p><a href="http://www.canada.com/finance/rrsp/budget_2005/story.html?id=eecae534-9fc5-4b07-97bb-08565385ca1d">Canada&#8217;s foreign aid budget is $3.45B</a>, or about 0.25% of Canada&#8217;s GDP. Compare that to the Danes, who spend 0.83% of their GDP on aid (up this year from 0.82%, despite a record forecast deficit), or to the Swedes who spend about 0.92%. Canadians like to believe that we are a shining example of global citizenry, but largely this is an artifact of the pre-Mulroney governments of the 1970s and 1980s. The Center for Glocal Development ranked Canada 11th in their <a href="http://www.cgdev.org/section/initiatives/_active/cdi/">Commitment to Development Index from 2009</a>, behind countries like Sweden, Denmark, Netherlands, Ireland, Spain, and Australia.</p>
<p>This index includes factors like aid, trade, investment, and migration. As the report notes, our migration levels of unskilled immigrants from developing countries has changed very little since the 1980s (we rank 11th on the list for migration). <br style="font-weight: normal; letter-spacing: 0px !important; text-indent: 0px; padding: 0px; margin: 0px;" /><br style="font-weight: normal; letter-spacing: 0px !important; text-indent: 0px; padding: 0px; margin: 0px;" />Like many other Canadians I grew up feeling proud about my country and about our role in the world. Unfortunately, the more I look into the actual figures, I realize that we have in many ways failed to maintain these ideals in the last 30 years.</p>
<p>I hope that the Canada&#8217;s actions on Haiti mark a change for our government (and not, say, <a href="http://www.economist.com/opinion/displaystory.cfm?story_id=15213212">a convenient way to buy some much-needed PR</a>). I would like nothing more than to see Canada return to the role of the good global citizen. In the meantime, I will continue watching the government&#8217;s record with a deserved amount of criticality.</p>
<p>Speaking of criticality, let me finish this post by taking a moment to</p>
<p><strong>Respond to some criticism</strong></p>
<p>Jen Stirrup wrote a <a href="http://jenstirrup.blogspot.com/2010/01/data-visualisation-beauty-or-clarity.html">nicely detailed blog post</a> in response to my Avatar/Haiti piece, in which she argues that the visualization puts beauty in advance of clarity. If we take the images that I used in the post as examples of data visualizations, I can&#8217;t help but agree. However, these images weren&#8217;t intended to be stand-alone graphics. Instead, they are screenshots of an animated, interactive visualization tool that I built to explore the data. As is very often the case when I work with data, I wrote a little program using Processing which was constructed specifically to deal with this data. I use the term &#8216;little&#8217; here to emphasize the fact that it was a quick project &#8211; from the time that I had the idea to the time when I pressed &#8216;publish&#8217; last Sunday was about 4 hours.</p>
<p>I would love to develop a workflow to take these interactive visualization tools to a stage where they can be shared more easily &#8211; at this point they tend to sit around while I harbour the best intentions to clean up the code enough for a proper release. In the meantime I can say that if you ask nicely, I&#8217;m usually willing to share my messy pre-release code. I will also be posting a brief video which might give you a better feel for how the project behaves &#8211; which, for the sake of continuity, I&#8217;ll title &#8216;<strong>Remove a rock from a horse&#8217;s hoof&#8217;</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blprnt.com/blog/blprnt/haiti-avatar-updates/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
