<?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>Mon, 07 May 2012 19:11:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Avengers, Assembled (and Visualized) – Part 2</title>
		<link>http://blog.blprnt.com/blog/blprnt/avengers-assembled-and-visualized-part-2</link>
		<comments>http://blog.blprnt.com/blog/blprnt/avengers-assembled-and-visualized-part-2#comments</comments>
		<pubDate>Sun, 06 May 2012 22:35:15 +0000</pubDate>
		<dc:creator>Jer</dc:creator>
				<category><![CDATA[1]]></category>

		<guid isPermaLink="false">http://blog.blprnt.com/?p=1592</guid>
		<description><![CDATA[Last week I shared a set of visualizations I made, exploring the history of The Avengers &#8211; the Marvel comic series which first appeared in 1963, and was last week released as a bombastic, blockbuster film (which, by the way, I enjoyed tremendously). I looked at the 570-issue archive as a whole, and tried to [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I shared a <a href="http://blog.blprnt.com/blog/blprnt/avengers-assembled-and-visualized-part-1">set of visualizations I made, exploring the history of The Avengers</a> &#8211; the Marvel comic series which first appeared in 1963, and was last week released as a bombastic, blockbuster film (which, by the way, I enjoyed tremendously). I looked at the 570-issue archive as a whole, and tried to dig out some interesting patterns concerning female characters, robots, and gods (as far as I know, there are no female robot god avengers &#8211; though I guess <a href="http://en.wikipedia.org/wiki/Jocasta_(comics)">Jocasta</a> comes pretty close). If you missed that first post, you might want to give it a quick read right now, as I&#8217;ll be picking up where I left off.</p>
<p>So far, the discussion has been mostly around the characters of the Avengers, at a collective level. Lots of data is available about each individual character, as well &#8211; for example we can look at any Avenger and see every appearance they&#8217;ve made over the last 50 years. Here&#8217;s Captain America&#8217;s record number of appearances:</p>
<p><a href="http://www.flickr.com/photos/blprnt/7130610049/" title="Captain America by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7258/7130610049_0dc8d09fb2.jpg" width="500" height="375" alt="Captain America"></a></p>
<p>And Iron Man, who&#8217;s not too far behind:</p>
<p><a href="http://www.flickr.com/photos/blprnt/7130610455/" title="Iron Man by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7193/7130610455_7d676c6433.jpg" width="500" height="375" alt="Iron Man"></a></p>
<p>An my personal favourite, Hawkeye:</p>
<p><a href="http://www.flickr.com/photos/blprnt/7130610347/" title="Hawkeye by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7113/7130610347_103022fc67.jpg" width="500" height="375" alt="Hawkeye"></a></p>
<p>In each of these graphics, I&#8217;ve marked the issues where the character has returned after a significant absence. We also, of course, see their first appearances (Hawkeye&#8217;s being in issue #16th, &#8216;<a href="http://marvel.wikia.com/Avengers_Vol_1_16">The Old Order Changeth</a>&#8216;). You can see a pile of other Avengers&#8217; &#8216;appearance maps&#8217; in <a href="http://www.flickr.com/photos/blprnt/sets/72157629567911630/">this Flickr Set</a> &#8211; if there&#8217;s another character you&#8217;d like to see, let me know.</p>
<p>For the first time here we can see that we can gets some information about the individual issues past the issue number. We can look at the title, the characters who appeared in the issue, the geographic locations involved in the issue (from Alaska to the Kree homeworld), and more (the Comic Vine API offers the possibility of concepts to be linked with individual issues as well, but this information hasn&#8217;t been well-populated in the wiki).</p>
<p>One thing that you might have noticed from the graphics so far is that there are a lot of spikes &#8211; issues in which a lot of Avengers characters are present. The most spectacular example of these &#8216;party issues&#8217; is Volume 3, #10, &#8216;Pomp &#038; Pageantry&#8221;, in which a whopping 119 Avengers appeared! Here are all of these party issues since 1963:</p>
<p><a href="http://www.flickr.com/photos/blprnt/7130610017/" title="Avengers - The Party Issues by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7080/7130610017_4c56b1c6e3.jpg" width="500" height="375" alt="Avengers - The Party Issues"></a></p>
<p>We can see that these heaps-of-heroes issues are a pretty new phenomenon &#8211; and also that the current Avengers writer, Brian Michael Bendis, LOVES a party. He&#8217;s written lots of issues with more than 30 avengers, and even a couple with more than 50. </p>
<p>Which brings us nicely into a discussion about creators. So far we&#8217;ve been focused mainly on fictional characters &#8211; what about the real people that made these comic books? Like, for example, Sam Rosen, and Artie Simek:</p>
<p><a href="http://blog.blprnt.com/blog/blprnt/avengers-assembled-and-visualized-part-2/samartie" rel="attachment wp-att-1594"><img src="http://blog.blprnt.com/wp-content/uploads/2012/05/SamArtie.png" alt="" title="SamArtie" width="550" height="289" class="alignnone size-full wp-image-1594" /></a></p>
<p>Mr. Rosen and Mr. Simek hand-lettered all of the dialogue, and drew all of the word balloons for most of the first 50 issues of the Avengers, most often alternating back and forth, issue to issue. They&#8217;re part of a group of about 7 letterers who have been responsible for most of the Avengers typography:</p>
<p><a href="http://www.flickr.com/photos/blprnt/6993859944/" title="Avengers CREATORS - letterer by blprnt_van, on Flickr"><img src="http://farm9.staticflickr.com/8006/6993859944_1701e8286c.jpg" width="500" height="378" alt="Avengers CREATORS - letterer"></a></p>
<p>Similarly, we can see that there are about 10 people who have been editors on the series for long stretches of time:</p>
<p><a href="http://www.flickr.com/photos/blprnt/7139946563/" title="Avengers CREATORS - editor by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7089/7139946563_11d7ce7de2.jpg" width="500" height="285" alt="Avengers CREATORS - editor"></a></p>
<p>You don&#8217;t see nearly this kind of consistency with pencillers:</p>
<p><a href="http://www.flickr.com/photos/blprnt/7139946769/" title="Avengers CREATORS - penciler by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7264/7139946769_b56a56d4db.jpg" width="497" height="500" alt="Avengers CREATORS - penciler"></a></p>
<p>Or inkers:</p>
<p><a href="http://www.flickr.com/photos/blprnt/6993859836/" title="Avengers CREATORS - inker by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7198/6993859836_06d3556f71.jpg" width="497" height="500" alt="Avengers CREATORS - inker"></a></p>
<p>I wondered after getting a look at how these creators were involved in the history of the series, if perhaps they (particularly the writers &#038; editors) might be responsible for some of the content decisions that I examined in the last. For example, are there certain editors or writers who included more female characters in their books?</p>
<p>I overlaid a heat map onto the creator maps just saw above, with red stripes to indicate a high number of female characters and blue/green stripes to indicate the boys-club issues. Here are all of the editors again:</p>
<p><a href="http://www.flickr.com/photos/blprnt/7139946403/" title="Avengers: Editors &amp; Female Characters by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7208/7139946403_e0e6e5c914.jpg" width="500" height="297" alt="Avengers: Editors &amp; Female Characters"></a></p>
<p>And all of the writers:</p>
<p><a href="http://www.flickr.com/photos/blprnt/6993860062/" title="Avengers: Writers &amp; Female Characters by blprnt_van, on Flickr"><img src="http://farm9.staticflickr.com/8165/6993860062_00b341d4f5.jpg" width="500" height="427" alt="Avengers: Writers &amp; Female Characters"></a></p>
<p>While it probably begs for some statistical analysis, it does seem that the gender balance gets a boost when Jim Shooter takes up the series in the early 70s. Indeed, he&#8217;s in charge during the high water mark of Avengers feminism in 1983-1984, a level which the series never gets back to. </p>
<p>We can see similar correlations for the numbers of gods/eternals per issue:</p>
<p><a href="http://www.flickr.com/photos/blprnt/6993860124/" title="Avengers: Writers &amp; Godliness by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7116/6993860124_83ea3554bf.jpg" width="500" height="420" alt="Avengers: Writers &amp; Godliness"></a></p>
<p>Or robots/synthezoids/androids per issue:</p>
<p><a href="http://www.flickr.com/photos/blprnt/7139946995/" title="Avengers: Writers and Robotitude by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7214/7139946995_03aa2ece0d.jpg" width="500" height="427" alt="Avengers: Writers and Robotitude"></a></p>
<p>From these we can see that while Brian Michael Bendis DOES like to party, he DOESN&#8217;T particularly like robots, and definitely isn&#8217;t a big fan of the gods.</p>
<p>Besides that, what have we learned from this two-part data-exploration of the Avengers? You&#8217;ve probably learned that I have too much time on my hands. I&#8217;ve learned that I really need to get my old collection out of storage and revisit some of these excellent stories. I&#8217;ve also learned that, if there&#8217;s one form of punctuation that defined the silver age of comics… it&#8217;s the ellipsis. So, to finish us off, here&#8217;s a medley of the 53 ellipsified issues in the history of Earth&#8217;s Mightiest Heroes:</p>
<p><script src="http://blprnt.com/js/processing.js"></script> </p>
<div id="pjs" width="550" height="300" style="padding-bottom:20px">
<canvas data-processing-sources="http://blog.blprnt.com/pde/Ellipsis.pde"></canvas>
</div>
<p><em>(You might see a blank box here, in which case you might want to try viewing the page in Chrome).</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blprnt.com/blog/blprnt/avengers-assembled-and-visualized-part-2/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Avengers, Assembled (and Visualized) &#8211; Part 1</title>
		<link>http://blog.blprnt.com/blog/blprnt/avengers-assembled-and-visualized-part-1</link>
		<comments>http://blog.blprnt.com/blog/blprnt/avengers-assembled-and-visualized-part-1#comments</comments>
		<pubDate>Thu, 03 May 2012 22:01:51 +0000</pubDate>
		<dc:creator>Jer</dc:creator>
				<category><![CDATA[1]]></category>

		<guid isPermaLink="false">http://blog.blprnt.com/?p=1581</guid>
		<description><![CDATA[This post is about comics. It&#8217;s also about superheroes, robots, Norse gods, shrinking men, and women made of light &#8211; so it makes sense that it was inspired in the first place by a 10 year-old. Last week, I was pointed by Santiago Ortiz to this excellent chart made by Theo Zaballos, in which he [...]]]></description>
			<content:encoded><![CDATA[<p>This post is about comics. It&#8217;s also about superheroes, robots, Norse gods, shrinking men, and women made of light &#8211; so it makes sense that it was inspired in the first place by a 10 year-old.</p>
<p>Last week, I was pointed by <a href="https://twitter.com/#!/moebio">Santiago Ortiz</a> to this excellent chart made by Theo Zaballos, in which <a href="http://patriciazaballos.com/2012/03/15/connections/">he plots the relative interestingness in Avengers characters from the animated series, over time</a>. It&#8217;s a fantastic example of the power of visualization to help us understand things &#8211; or, put another way, the power of building systems to think about systems. It&#8217;s also a reminder that visualization doesn&#8217;t always need to be pitted against huge, world-changing tasks &#8211; it can be useful in exploring small, fun, even seemingly frivolous things.</p>
<p>I started reading comics in 1985 (coincidentally, when I was 10). For years, I&#8217;d visit the comic shop every Wednesday, and pick up a stack of titles &#8211; and The Avengers was a real mainstay on my list. I was always more of a reader than a collector; my longboxes were full of dog-eared issues from incomplete series, which I revisited over and over again until the stories imprinted themselves in my brain.</p>
<p>There&#8217;s a huge storehouse of mythology, cultural touchstones, and real historical events contained in the pages of the 570 issues of the Avengers. </p>
<p>Inspired by Theo, and using <a href="http://api.comicvine.com">comicvine.com&#8217;s API</a>, I&#8217;ve put together a few datasets and some tools that I can use to visually explore some of this leotarded history.</p>
<p>The Avengers has been published pretty much continuously since 1963. Here are the covers of all 570 issues:</p>
<p><a href="http://www.flickr.com/photos/blprnt/7128032299/" title="Every Issue of the Avengers by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7180/7128032299_1cb35a2265.jpg" width="500" height="296" alt="Every Issue of the Avengers"></a></p>
<p>Now, you might be aware of a little, low budget art-house movie that&#8217;s being released tomorrow about this particular group of costumed heroes. That movie features 5 avengers &#8211; Captain America, Iron Man, Thor, Hawkeye, and Black Widow. But did you know there were 127 more Avengers? You may know that the Avengers were created by Stan Lee and Jack Kirby, but you might be surprised to hear that there were 184 other people who invented Avengers characters. In total, there have been 581 men and women who written, edited, pencilled, inked, colored, lettered, and otherwise created at least one issue of the Avengers.</p>
<p>Let&#8217;s start with a look at those characters. My first thought was to use images of the characters in my visualizations, but while the Comic Vine API provides images in all kinds of sizes, the styles of drawing are so varied that it ended up not holding together. Instead, then, I built a small tool that let me go through those characters and pick three colours that I thought represented them the best (everybody gets a shield!). Here are all of the Avengers in an overlapped plot that doesn&#8217;t really tell us much, but gives you an idea of what these icons look like:</p>
<p><a href="http://www.flickr.com/photos/blprnt/6995549928/" title="Avengers20_54_41 by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7039/6995549928_1ef534266f.jpg" width="500" height="148" alt="Avengers20_54_41"></a></p>
<p>These character icons can be drawn at any size, and give us a nice way to plot the characters that isn&#8217;t just dots or boxes. Here&#8217;s all of the Avengers again, this time plotted by their number of appearances:</p>
<p><a href="http://www.flickr.com/photos/blprnt/7141639261/" title="Avengers21_12_42 by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7073/7141639261_341657033e.jpg" width="500" height="189" alt="Avengers21_12_42"></a></p>
<p>Below Captain America is a cluster of the most consistent Avengers &#8211; Iron Man, Vision, Scarlet Witch, Thor, Hawkeye, Wasp, and Henry Pym (aka Ant Man). That blue and grey dot trailing just behind is Jarvis, the Avengers&#8217; butler &#8211; who also happens to be an honorary member of the team.</p>
<p>Using those same shield icons, but sorting by issue so that characters in an issue together form a radial line, here is every appearance of ever Avengers character in every issue:</p>
<p><a href="http://www.flickr.com/photos/blprnt/7140051659/" title="Every Avenger. by blprnt_van, on Flickr"><img src="http://farm9.staticflickr.com/8165/7140051659_658ed434fb.jpg" width="500" height="500" alt="Every Avenger."></a></p>
<p>It&#8217;s not too helpful, but we can use this same system, and filter it by any number of criteria. For example, let&#8217;s look at just first appearances of Avengers:</p>
<p><a href="http://www.flickr.com/photos/blprnt/6984526894/" title="First Appearances by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7100/6984526894_e091dea798.jpg" width="500" height="500" alt="First Appearances"></a></p>
<p>You can see the same graphic in a timeline form here:</p>
<p><a href="http://www.flickr.com/photos/blprnt/6985611646/" title="First Appearances - Timeline by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7244/6985611646_13437de2e8.jpg" width="500" height="135" alt="First Appearances - Timeline"></a></p>
<p>I built a little tool to let me assign three colours to each Avenger, so they&#8217;re all represented by small spheres (now would be a good time to look at the <a href="http://www.flickr.com/photos/blprnt/6984526894/sizes/o/in/photostream/">full resolution version</a> of that image &#8211; a good strategy for everything I&#8217;m going to put in this post) We can see a big cluster of major Avengers appearing in the first few episodes, with some other big names coming in the next few years (Vision, the Avenger with the 3rd most appearances in issues, doesn&#8217;t come along until #57). While there are a couple of major additions along the way (She-Hulk &#038; Photon in 1982), we can see that the cast of characters for the team is defined pretty early.</p>
<p>One of the first things that I was interested in was the gender balance in the Avengers over time. While there have been women on the team since the beginning (Janet Van Dyne, aka The Wasp, appears in issue #1), has this changed or increased over the 50 year span of the series?</p>
<p>Let&#8217;s have a look:</p>
<p><a href="http://www.flickr.com/photos/blprnt/6984526860/" title="Female Avengers Characters by blprnt_van, on Flickr"><img src="http://farm9.staticflickr.com/8157/6984526860_ec41f97d06.jpg" width="500" height="500" alt="Female Avengers Characters"></a></p>
<p><a href="http://www.flickr.com/photos/blprnt/7131695659/" title="Female Characters - Timeline by blprnt_van, on Flickr"><img src="http://farm9.staticflickr.com/8161/7131695659_517068dec1.jpg" width="500" height="135" alt="Female Characters - Timeline"></a></p>
<p>You&#8217;ll notice that the Wasp (in yellow), and the Scarlet Witch (in red), pretty much hold the fort for the female Avengers until the late 70s, at which time variety and frequency of female characters increases. There are some dips &#8211; 1990 to 1992, and 2005 to 2007, and overall the female ratio at the Avengers mansion peaks in the 1980s and never quite gets back up to that level again.</p>
<p>Of course, there are many other categorizations of comic characters that we can make aside from gender. I mentioned Vision before, who is a robot (OK, OK, he&#8217;s a synthezoid). How have superheroes of the electronic persuasion fared amongst Earth&#8217;s Mightiest Heroes?</p>
<p>I&#8217;m glad you asked:</p>
<p><a href="http://www.flickr.com/photos/blprnt/6984551016/" title="The Robots by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7087/6984551016_9511ac1dec.jpg" width="500" height="500" alt="The Robots"></a></p>
<p>Here we see some much more interesting patterns. Robots are big from the late 60s to the early 1990s, after which they disappear. There&#8217;s a robot renaissance of sorts from 1990 to 2005, but again they lose density (see what I did there, Avengers fans?). </p>
<p>We can do the same thing with Gods, and Eternals (if you don&#8217;t know the difference, ask your local comic shop clerk):</p>
<p><a href="http://www.flickr.com/photos/blprnt/6984550980/" title="The Gods by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7064/6984550980_2f1f8039fe.jpg" width="500" height="500" alt="The Gods"></a></p>
<p><a href="http://www.flickr.com/photos/blprnt/6985611686/" title="Gods &amp; Eternals - Timeline by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7106/6985611686_4ec97d5664.jpg" width="500" height="135" alt="Gods &amp; Eternals - Timeline"></a></p>
<p>Again, there is some real patchiness here. Now, the clever ones among you might be wondering if these patterns are tied to historical periods, or if they are linked to the preferences of specific writers, editors, or artists. Is that crowded patch of Gods in 1985 due to a cultural fascination with myth? Or do Mark Gruenwald &#038; Jim shooter just really, really like Thor? Great questions, and ones that I&#8217;ll take a look at Part 2 of this post.</p>
<p>This week-long dig through Avengers data has been fascinating. Even as an Avengers fan, it&#8217;s been surprising to see the depth and richness of content that finds its way into the pages of every issue and volume. As I&#8217;ve been working, I&#8217;ve also been reading a lot about the various people &#8211; inkers, letterers, writers, who have built the Avengers story over time. It has been a good reminder, particularly in the wake of a blockbuster film, that myths are rarely formed by individuals.</p>
<p>Finally, it should give anyone fearing a shortage of Avengers storylines and characters for possible sequels some reassurance &#8211; 5 down, 127 to go. (Mr. Whedon, if you&#8217;re looking for a researcher, you know where to find me.)</p>
<p>&#8216;Nuff said. (For now.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blprnt.com/blog/blprnt/avengers-assembled-and-visualized-part-1/feed</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Infinite Weft (Exploring the Old Aesthetic)</title>
		<link>http://blog.blprnt.com/blog/blprnt/infinite-weft-exploring-the-old-aesthetic</link>
		<comments>http://blog.blprnt.com/blog/blprnt/infinite-weft-exploring-the-old-aesthetic#comments</comments>
		<pubDate>Mon, 09 Apr 2012 03:17:51 +0000</pubDate>
		<dc:creator>Jer</dc:creator>
				<category><![CDATA[Processing]]></category>
		<category><![CDATA[Project]]></category>
		<category><![CDATA[Science & Creativity]]></category>
		<category><![CDATA[Diane Thorp]]></category>
		<category><![CDATA[Jacquard loom]]></category>
		<category><![CDATA[Joseph Marie Jacquard]]></category>
		<category><![CDATA[Loom]]></category>
		<category><![CDATA[waeving]]></category>
		<category><![CDATA[Weaving]]></category>

		<guid isPermaLink="false">http://blog.blprnt.com/?p=1558</guid>
		<description><![CDATA[How can a textile function as a digital object? This is a central question of Infinite Weft, a project that I&#8217;ve been working on for a the last few months. The project is a collaboration with my mother, Diane Thorp, who has been weaving for almost 40 years &#8211; it&#8217;s a chance for me to [...]]]></description>
			<content:encoded><![CDATA[<p>How can a textile function as a digital object? This is a central question of Infinite Weft, a project that I&#8217;ve been working on for a the last few months. The project is a collaboration with my mother, Diane Thorp, who has been weaving for almost 40 years &#8211; it&#8217;s a chance for me to combine my usually screen-based digital practice with her extraordinary hand-woven work. It&#8217;s also an exploration of mathematics, computational history, and the concept of pattern.</p>
<p>Most of us probably know that the loom played a part in the early days of computing &#8211; the <a href="http://en.wikipedia.org/wiki/Jacquard_loom">Jacquard loom</a> was the first machine to use punch cards, and its workings were very influential in the <a href="http://en.wikipedia.org/wiki/Analytical_engine">early design of programmable machines</a> (In my 1980s basement this history was actually physically embodied; sitting about 10 feet away from my mother&#8217;s two floor looms, on an Ikea bookself, sat a box of IBM punch cards that we mostly used to make paper airplanes out of). But how many of us know how a loom actually works? Though I have watched my mother weave many times, it didn&#8217;t take long at the start of this project to realize that I had no real idea how the binary weaving patterns called &#8216;<a href="http://weavolution.com/group/weaving-101/drawdowns-11101">drawdowns</a>&#8216; ended up making a pattern in a textile.</p>
<p><a href="http://www.flickr.com/photos/blprnt/6662996851/" title="IW - Process - January 8th 2012 by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7003/6662996851_c8c5bea582.jpg" width="500" height="281" alt="IW - Process - January 8th 2012"></a></p>
<p>To teach myself how this process actually happened, I built a functional software loom, where I could see the pattern manifest itself in the warp and weft (if you have Chrome you can see it in action <a href="http://blprnt.com/infiniteweft">here</a> &#8211; better documentation is coming soon). This gave me a kind of sandbox which let me see how typical weaving patterns were constructed, and what kind of problems I could expect when I started to write my own. And run into problems, I did. My first attempts at generating patterns were sloppy and boring (at best) and the generative methods I was applying weren&#8217;t very successful. Enter <a href="http://en.wikipedia.org/wiki/Ralph_Griswold">Ralph E. Griswold</a>.</p>
<p><img src="http://www.complex-weavers.org/journal/jour77rg.jpg" alt="Ralph E. Griswold" /></p>
<p>Ralph Griswold was a pioneering computer scientist, best known for developing the string programming language <a href="http://en.wikipedia.org/wiki/SNOBOL">SNOBOL</a>. He spent a decade at Bell Labs, studying non-numerical computation, and went on to become Regents&#8217; Professor at the University of Arizona. After this illustrious career in computing, he shifted his attention to the mathematics of weaving. Mr. Griswold died in 2006, but he left behind a <a href="http://www.cs.arizona.edu/patterns/weaving/index.html">huge archive of resources for weavers</a> and curious learners, including academic papers on <a href="http://www.cs.arizona.edu/patterns/weaving/webdocs/gre_dda1.pdf">pattern generation using cellular automata</a>. </p>
<p>The first successful pattern possibilities for Infinite Weft came from applying and modifying the techniques in the paper. I built a simple interface in which I could advance the automata generation by generation, and switch between a set of very simple rules (courtesy of <a href="http://en.wikipedia.org/wiki/John_von_Neumann">John von Neumann</a>). Here&#8217;s what a sample pattern generated from these von Neumann automata looks like on the software loom:</p>
<p><a href="http://blog.blprnt.com/blog/blprnt/infinite-weft-exploring-the-old-aesthetic/screen-shot-2012-04-08-at-10-39-06-pm" rel="attachment wp-att-1560"><img src="http://blog.blprnt.com/wp-content/uploads/2012/04/Screen-Shot-2012-04-08-at-10.39.06-PM-500x339.png" alt="von Neumann automata patterns on a software loom" title="Screen Shot 2012-04-08 at 10.39.06 PM" width="500" height="339" class="alignnone size-medium wp-image-1560" /></a></p>
<p>And here&#8217;s a sample, woven on a table loom with black &#038; white yarn to make the pattern clear:</p>
<p><a href="http://www.flickr.com/photos/blprnt/7039448299/" title="Infinite Weft - Samples by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7234/7039448299_6abffc566f.jpg" width="500" height="433" alt="Infinite Weft - Samples"></a></p>
<p>While these techniques produce fairly satisfactory results, the automata themselves tended to repeat after not too many generations &#8211; while you can alternate between rules, and start with different &#8216;seed&#8217; patterns, and adjust the threading of the loom to get a variety of finished patterns, the systems themselves would inevitably repeat. What about a truly infinite weft?</p>
<p>As it turns out, there are some cellular automata that are non-repeating. Given any generation N, the result of the next generation, N+1, can&#8217;t be predicted from the outcomes that have happened before. Could I apply such an automata to generate an infinite &#8216;pattern&#8217;? Well, I gave it a try, and the results look promising. Here is a look at a pattern generated using <a href="http://mathworld.wolfram.com/Rule30.html">Wolfram&#8217;s Rule 30</a>, a (quite possibly) universal cellular automaton:</p>
<p><a href="http://www.flickr.com/photos/blprnt/6660768683/" title="IW - Process - Jan. 8 2012 by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7172/6660768683_346364ea08.jpg" width="500" height="313" alt="IW - Process - Jan. 8 2012"></a></p>
<p>And a similar pattern, hand-woven by my mother:</p>
<p><a href="http://www.flickr.com/photos/blprnt/7039447923/" title="Infinite Weft - Samples by blprnt_van, on Flickr"><img src="http://farm8.staticflickr.com/7131/7039447923_d661c408c8.jpg" width="500" height="350" alt="Infinite Weft - Samples"></a></p>
<p>Now we get into some pretty interesting conceptual territory. In theory, a long enough stretch of this woven textile would be <a href="http://en.wikipedia.org/wiki/Turing_completeness">Turing-complete</a> &#8211; a computable fabric. Embedded somewhere in the pattern would be instructions to solve any conceivable problem. Past the math, this system also lets us challenge what we think of as a pattern, in a fabric context (after all, this pattern has really no pattern at all).</p>
<p>This project is still very much a work in progress &#8211; this blog post is a peak into the process and chance to get some of my thoughts into writing. The next obvious step is to finalize work on the pattern generation, and get some large-scale textile woven from my mother&#8217;s &#8216;real loom&#8217;, which is a 16-harness floor loom (for this we&#8217;re going to need a <a href="http://en.wikipedia.org/wiki/Dobby_loom">computerized dobby head</a>, which is a bit of an investment). I would also love to see other weavers outputting sections of this &#8216;infinite&#8217; weft &#8211; please <a href="mailto:blprnt@blprnt.com">get in touch</a> if you have a loom and would like to try weaving a section.</p>
<p>Source code for Infinite Weft is available in a public GitHub repository <a href="https://github.com/blprnt/Infinite-Weft">here</a>.</p>
<p>And, as always, please don&#8217;t hesitate to leave a comment if you have any questions or suggestions.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blprnt.com/blog/blprnt/infinite-weft-exploring-the-old-aesthetic/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Data in an Alien Context: Kepler Visualization Source Code</title>
		<link>http://blog.blprnt.com/blog/blprnt/data-in-an-alien-context-kepler-visualization-source-code</link>
		<comments>http://blog.blprnt.com/blog/blprnt/data-in-an-alien-context-kepler-visualization-source-code#comments</comments>
		<pubDate>Wed, 28 Mar 2012 03:29:35 +0000</pubDate>
		<dc:creator>Jer</dc:creator>
				<category><![CDATA[1]]></category>

		<guid isPermaLink="false">http://blog.blprnt.com/?p=1545</guid>
		<description><![CDATA[Last year, I released a video visualization of the 1236 exoplanets identified by the NASA&#8217;s Kepler mission. Since then, there have been another 1091 candidates identified, and I thought it&#8217;d be a good time to update my visualization &#8211; and release the source code. So, here it it: http://github.com/blprnt/Kepler-Visualization I&#8217;ve tried to comment the code [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.blprnt.com/blog/blprnt/data-in-an-alien-context-kepler-visualization-source-code/kepler22_44_33" rel="attachment wp-att-1546"><img src="http://blog.blprnt.com/wp-content/uploads/2012/03/Kepler22_44_33-500x312.png" alt="" title="Kepler22_44_33" width="500" height="312" class="alignnone size-medium wp-image-1546" /></a></p>
<p>Last year, I released a <a href="https://vimeo.com/19642643">video visualization</a> of the 1236 exoplanets identified by the NASA&#8217;s <a href="http://kepler.nasa.gov/">Kepler mission</a>. Since then, there have been another 1091 candidates identified, and I thought it&#8217;d be a good time to update my visualization &#8211; and release the source code.</p>
<p>So, here it it: <a href="http://github.com/blprnt/Kepler-Visualization">http://github.com/blprnt/Kepler-Visualization</a></p>
<p>I&#8217;ve tried to comment the code as well as possible &#8211; and the sketch overall is fairly simple. You will, of course, need <a href="http://processing.org">Processing</a> to get it running, as well as Karsten Schmidt&#8217;s esssential <a href="http://toxiclibs.org">toxiclibs</a>.</p>
<p><a href="http://blog.blprnt.com/blog/blprnt/data-in-an-alien-context-kepler-visualization-source-code/kepler22_46_6" rel="attachment wp-att-1549"><img src="http://blog.blprnt.com/wp-content/uploads/2012/03/Kepler22_46_6-500x312.png" alt="" title="Kepler22_46_6" width="500" height="312" class="alignnone size-medium wp-image-1549" /></a></p>
<p><a href="http://blog.blprnt.com/blog/blprnt/data-in-an-alien-context-kepler-visualization-source-code/kepler22_46_43" rel="attachment wp-att-1550"><img src="http://blog.blprnt.com/wp-content/uploads/2012/03/Kepler22_46_43-500x312.png" alt="" title="Kepler22_46_43" width="500" height="312" class="alignnone size-medium wp-image-1550" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blprnt.com/blog/blprnt/data-in-an-alien-context-kepler-visualization-source-code/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>TEDxVancouver: The Weight of Data</title>
		<link>http://blog.blprnt.com/blog/blprnt/tedxvancouver-the-weight-of-data</link>
		<comments>http://blog.blprnt.com/blog/blprnt/tedxvancouver-the-weight-of-data#comments</comments>
		<pubDate>Sun, 04 Mar 2012 19:50:44 +0000</pubDate>
		<dc:creator>Jer</dc:creator>
				<category><![CDATA[1]]></category>

		<guid isPermaLink="false">http://blog.blprnt.com/?p=1540</guid>
		<description><![CDATA[In November, I was asked to come back to my hometown and give a talk at TEDxVancouver. The overarching theme of the event was &#8216;The Frontier&#8217; &#8211; along with me, there would be talking about space, deep-sea science, and spiritual exploration. I decided to frame my talk around what I consider to be a largely [...]]]></description>
			<content:encoded><![CDATA[<p>In November, I was asked to come back to my hometown and give a talk at <a href="http://tedxvancouver.com/">TEDxVancouver</a>. The overarching theme of the event was &#8216;The Frontier&#8217; &#8211; along with me, there would be talking about space, deep-sea science, and spiritual exploration. I decided to frame my talk around what I consider to be a largely un-explored part of the big data conversation that has opened up over the last few years: thinking about data in a human context. I talk a bit about my history with HyperCard, rattle over a series of data-based projects, and end with a call-to-arms for artists, poets, writers and other creatives to join the discourse around data.</p>
<p>I won&#8217;t give the whole talk away, since you can watch it for yourself below. As always, I&#8217;d love to hear feedback/questions/ridicule &#8211; you can leave a comment below, or join in on <a href="https://plus.google.com/116916509982727482768/posts/5ChGUfNFcAu">this already feisty thread on Google+.</a></p>
<p> <iframe width="560" height="315" src="http://www.youtube.com/embed/Q9wcvFkWpsM" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blprnt.com/blog/blprnt/tedxvancouver-the-weight-of-data/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Eyeo Festival 2011 &#8211; New York, New York</title>
		<link>http://blog.blprnt.com/blog/blprnt/eyeo-festival-2011-new-york-new-york</link>
		<comments>http://blog.blprnt.com/blog/blprnt/eyeo-festival-2011-new-york-new-york#comments</comments>
		<pubDate>Mon, 23 Jan 2012 20:18:16 +0000</pubDate>
		<dc:creator>Jer</dc:creator>
				<category><![CDATA[Talks]]></category>

		<guid isPermaLink="false">http://blog.blprnt.com/?p=1521</guid>
		<description><![CDATA[Last year at Eyeo, I gave a talk about the work that I had done in my first year in New York City, including Cascade (a social network visualization tool), OpenPaths (a secure personal location data project) and my work with Local Projects on the 9/11 Memorial. Oh, and Batman. And Wayne Gretzky. You can [...]]]></description>
			<content:encoded><![CDATA[<p>Last year at <a href="http://eyeofestival.com">Eyeo</a>, I gave a talk about the work that I had done in my first year in New York City, including <a href="http://nytlabs.com/projects/cascade.html">Cascade</a> (a social network visualization tool), <a href="http://openpaths.cc">OpenPaths</a> (a secure personal location data project) and <a href="http://blog.blprnt.com/blog/blprnt/all-the-names">my work with Local Projects on the 9/11 Memorial</a>.</p>
<p>Oh, and Batman. And Wayne Gretzky.</p>
<p>You can watch the video below (it&#8217;s about 50 minutes). As always, questions, feedback and bizarre non-sequiturs are welcome.</p>
<p><iframe src="http://player.vimeo.com/video/35300280?color=DC6B27" width="550" height="412" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blprnt.com/blog/blprnt/eyeo-festival-2011-new-york-new-york/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Selected Works (2009 &#8211; 2011)</title>
		<link>http://blog.blprnt.com/blog/blprnt/selected-works-2009-2011</link>
		<comments>http://blog.blprnt.com/blog/blprnt/selected-works-2009-2011#comments</comments>
		<pubDate>Sun, 27 Nov 2011 16:21:46 +0000</pubDate>
		<dc:creator>Jer</dc:creator>
				<category><![CDATA[1]]></category>

		<guid isPermaLink="false">http://blog.blprnt.com/?p=1517</guid>
		<description><![CDATA[These days my spare time is typically measured in seconds &#8211; so I took advantage of a rare free morning today to put together a very simple list of the some of the work that I have built since the beginning of 2009. You can find a link to this list at the top of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.blprnt.com/selected-works"><img src="http://blog.blprnt.com/wp-content/uploads/2011/11/works5.png" alt="" title="works5" width="500" height="500" class="alignnone size-full wp-image-1526" /></a></p>
<p>These days my spare time is typically measured in seconds &#8211; so I took advantage of a rare free morning today to put together a very simple list of the some of the work that I have built since the beginning of 2009. You can find a link to this list at the top of the site &#8211; or you can just <a href="http://blog.blprnt.com/selected-works">click here</a>. As always, comments and suggestions are encouraged and appreciated.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blprnt.com/blog/blprnt/selected-works-2009-2011/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>UPDATED: Quick Tutorial &#8211; Processing &amp; Twitter</title>
		<link>http://blog.blprnt.com/blog/blprnt/updated-quick-tutorial-processing-twitter</link>
		<comments>http://blog.blprnt.com/blog/blprnt/updated-quick-tutorial-processing-twitter#comments</comments>
		<pubDate>Thu, 27 Oct 2011 17:08:32 +0000</pubDate>
		<dc:creator>Jer</dc:creator>
				<category><![CDATA[1]]></category>

		<guid isPermaLink="false">http://blog.blprnt.com/?p=1456</guid>
		<description><![CDATA[** Since I first released this tutorial in 2009, it has received thousands of views and has hopefully helped some of you get started with building projects incorporating Twitter with Processing. In late 2010, Twitter changed the way that authorization works, so I&#8217;ve updated the tutorial to get it inline with the new Twitter API [...]]]></description>
			<content:encoded><![CDATA[<p><em>** Since I first released this tutorial in 2009, it has received thousands of views and has hopefully helped some of you get started with building projects incorporating Twitter with Processing. In late 2010, Twitter changed the way that authorization works, so I&#8217;ve updated the tutorial to get it inline with the new Twitter API functionality.</em></p>
<p>Accessing information from the Twitter API with Processing is (reasonably) easy. A few people have sent me e-mails asking how it all works, so I thought I&#8217;d write a very quick tutorial to get everyone up on their feet.</p>
<p>We don&#8217;t need to know too much about how the Twitter API functions, because someone has put together a very useful Java library to do all of the dirty work for us. It&#8217;s called twitter4j, and you can <a href="http://yusuke.homeip.net/twitter4j/en/index.html">download it here</a>. We&#8217;ll be using this in the first step of the building section of this tutorial.</p>
<p><strong>1. Authentication</strong></p>
<p>Here&#8217;s the tricky part. In the olden days, Twitter used to be happy with us sending it a username and password pair for authentication. Now, all of the Twitter API functionality uses an <a href="http://oauth.net/">oAuth</a> system, which allows people to authenticate applications through a login at twitter.com (so that developers never see the user&#8217;s login information). </p>
<p>That&#8217;s pretty good from a security standpoint, but it makes our job a little bit harder. Now, instead of just needing a short username and password, we need FOUR things to authenticate our sketch: A consumer key &#038; secret, and an access token &#038; secret. You can get all 4 of these things from the twitter developer page.</p>
<p>1. Visit https://dev.twitter.com/ and login with your twitter username and password<br />
2. Click on the &#8216;Create an app&#8217; button at the bottom right<br />
3. Fill out the form that follows &#8211; you can use temporary values (like &#8220;Jer&#8217;s awesome test application&#8221;) for the first three fields.<br />
4. Once you&#8217;ve agreed to the developer terms, you&#8217;ll arrive at a page which shows the first two of the four things that we need: the Consumer key and the Consumer secret. Copy and paste these somewhere so you have them ready to access.</p>
<p><a href="http://blog.blprnt.com/blog/blprnt/updated-quick-tutorial-processing-twitter/screen-shot-2011-10-27-at-12-38-48-pm" rel="attachment wp-att-1461"><img src="http://blog.blprnt.com/wp-content/uploads/2011/10/Screen-Shot-2011-10-27-at-12.38.48-PM-500x259.png" alt="" title="Screen Shot 2011-10-27 at 12.38.48 PM" width="500" height="259" class="alignnone size-medium wp-image-1461" /></a></p>
<p>5. To get the other two values that we need, click on the button that says &#8216;Recreate my access token&#8217;. Copy and paste those two values (Access token and Access token secret) so that we have all four in the same place.</p>
<p><strong>2. Building</strong></p>
<p>1. Open up a new Processing sketch.<br />
2. Import the twitter4j library. In your downloaded twitter4j files, you&#8217;ll find the core .jar in a directory called &#8216;lib&#8217;. You&#8217;re looking for a file called something like &#8216;twitter4j-core-2.2.5.jar&#8217;. We can add this to our sketch by simply dragging the twitter4j-core-2.2.5.jar file onto your sketch window. If you want to check, you should now see this file in your sketch folder, inside of a new &#8216;code&#8217; directory.<br />
3. The first thing we&#8217;ll do in our new file is to store the credentials that we gathered in the first part of this tutorial into a ConfigurationBuilder object (this is a built-in part of the twitter4j library):</p>
<p><em>** Don&#8217;t use the credentials below &#8211; these are fake ones that I made up &#8211; use the ones that you copy &#038; pasted in steps 4 &#038; 5 above</em></p>
<pre class="brush: java; title: ; notranslate">
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey(&quot;lPFSpjBppo5u4KI5xEXaQ&quot;);
cb.setOAuthConsumerSecret(&quot;SYt3e4xxSHUL1gPfM9bxQIq6Jf34Hln9T1q9KGCPs&quot;);
cb.setOAuthAccessToken(&quot;17049577-Yyo3AEVsqZZopPTr055TFdySop228pKKAZGbJDtnV&quot;);
cb.setOAuthAccessTokenSecret(&quot;6ZjJBebElMBiOOeyVeh8GFLsROtXXtKktXALxAT0I&quot;);
</pre>
<p>4. Now we&#8217;ll make the main Twitter object that we can use to do pretty much anything you can do on the twitter website &#8211; get status updates, run search queries, find follower information, etc. This Twitter object gets built by something called the TwitterFactory, which needs our configuration information that we set above:</p>
<pre class="brush: java; title: ; notranslate">
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey(&quot;lPFSpjBppo5u4KI5xEXaQ&quot;);
cb.setOAuthConsumerSecret(&quot;SYt3e4xxSHUL1gPfM9bxQIq6Jf34Hln9T1q9KGCPs&quot;);
cb.setOAuthAccessToken(&quot;17049577-Yyo3AEVsqZZopPTr055TFdySop228pKKAZGbJDtnV&quot;);
cb.setOAuthAccessTokenSecret(&quot;6ZjJBebElMBiOOeyVeh8GFLsROtXXtKktXALxAT0I&quot;);

Twitter twitter = new TwitterFactory(cb.build()).getInstance();
</pre>
<p>5. Now that we have a Twitter object, we want to build a query to search via the Twitter API for a specific term or phrase. This is code that will not always work &#8211; sometimes the Twitter API might be down, or our search might not return any results, or we might not be connected to the internet. The Twitter object in twitter4j handles those types of conditions by throwing back an exception to us; we need to have a try/catch structure ready to deal with that if it happens:</p>
<pre class="brush: java; title: ; notranslate">
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey(&quot;lPFSpjBppo5u4KI5xEXaQ&quot;);
cb.setOAuthConsumerSecret(&quot;SYt3e4xxSHUL1gPfM9bxQIq6Jf34Hln9T1q9KGCPs&quot;);
cb.setOAuthAccessToken(&quot;17049577-Yyo3AEVsqZZopPTr055TFdySop228pKKAZGbJDtnV&quot;);
cb.setOAuthAccessTokenSecret(&quot;6ZjJBebElMBiOOeyVeh8GFLsROtXXtKktXALxAT0I&quot;);

Twitter twitter = new TwitterFactory(cb.build()).getInstance();
Query query = new Query(&quot;#OWS&quot;);

try {
  QueryResult result = twitter.search(query);
}
catch (TwitterException te) {
  println(&quot;Couldn't connect: &quot; + te);
};
</pre>
<p>5. This code is working &#8211; but we haven&#8217;t done anything with the results. Here, we&#8217;ll set the results per page parameter for the query to 100 to get the last 100 results with the term &#8216;#OWS&#8217; and spit those results into the output panel:</p>
<pre class="brush: java; title: ; notranslate">

ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey(&quot;lPFSpjBppo5u4KI5xEXaQ&quot;);
cb.setOAuthConsumerSecret(&quot;SYt3e4xxSHUL1gPfM9bxQIq6Jf34Hln9T1q9KGCPs&quot;);
cb.setOAuthAccessToken(&quot;17049577-Yyo3AEVsqZZopPTr055TFdySop228pKKAZGbJDtnV&quot;);
cb.setOAuthAccessTokenSecret(&quot;6ZjJBebElMBiOOeyVeh8GFLsROtXXtKktXALxAT0I&quot;);

Twitter twitter = new TwitterFactory(cb.build()).getInstance();
Query query = new Query(&quot;#OWS&quot;);
query.setRpp(100);

try {
  QueryResult result = twitter.search(query);
  ArrayList tweets = (ArrayList) result.getTweets();

  for (int i = 0; i &lt; tweets.size(); i++) {
    Tweet t = (Tweet) tweets.get(i);
    String user = t.getFromUser();
    String msg = t.getText();
    Date d = t.getCreatedAt();
    println(&quot;Tweet by &quot; + user + &quot; at &quot; + d + &quot;: &quot; + msg);
  };
}
catch (TwitterException te) {
  println(&quot;Couldn't connect: &quot; + te);
};
</pre>
<p>It seems stupid to come all of this way without doing something visual, so let&#8217;s throw all of the words that we see in the tweets onto the screen, quick and dirty, at random positions. The following code takes our existing instructions and puts them into the standard Processing setup/draw enclosures so that we can do some animation over time:</p>
<pre class="brush: java; title: ; notranslate">

//Build an ArrayList to hold all of the words that we get from the imported tweets
ArrayList&lt;String&gt; words = new ArrayList();

void setup() {
  //Set the size of the stage, and the background to black.
  size(550,550);
  background(0);
  smooth();

  //Credentials
  ConfigurationBuilder cb = new ConfigurationBuilder();
  cb.setOAuthConsumerKey(&quot;lPFSpjBppo5u4KI5xEXaQ&quot;);
  cb.setOAuthConsumerSecret(&quot;SYt3e4xxSHUL1gPfM9bxQIq6Jf34Hln9T1q9KGCPs&quot;);
  cb.setOAuthAccessToken(&quot;17049577-Yyo3AEVsqZZopPTr055TFdySop228pKKAZGbJDtnV&quot;);
  cb.setOAuthAccessTokenSecret(&quot;6ZjJBebElMBiOOeyVeh8GFLsROtXXtKktXALxAT0I&quot;);

  //Make the twitter object and prepare the query
  Twitter twitter = new TwitterFactory(cb.build()).getInstance();
  Query query = new Query(&quot;#OWS&quot;);
  query.setRpp(100);

  //Try making the query request.
  try {
    QueryResult result = twitter.search(query);
    ArrayList tweets = (ArrayList) result.getTweets();

    for (int i = 0; i &lt; tweets.size(); i++) {
      Tweet t = (Tweet) tweets.get(i);
      String user = t.getFromUser();
      String msg = t.getText();
      Date d = t.getCreatedAt();
      println(&quot;Tweet by &quot; + user + &quot; at &quot; + d + &quot;: &quot; + msg);

      //Break the tweet into words
      String[] input = msg.split(&quot; &quot;);
      for (int j = 0;  j &lt; input.length; j++) {
       //Put each word into the words ArrayList
       words.add(input[j]);
      }
    };
  }
  catch (TwitterException te) {
    println(&quot;Couldn't connect: &quot; + te);
  };
}

void draw() {
  //Draw a faint black rectangle over what is currently on the stage so it fades over time.
  fill(0,1);
  rect(0,0,width,height);

  //Draw a word from the list of words that we've built
  int i = (frameCount % words.size());
  String word = words.get(i);

  //Put it somewhere random on the stage, with a random size and colour
  fill(255,random(50,150));
  textSize(random(10,30));
  text(word, random(width), random(height));
}
</pre>
<p><a href="http://blog.blprnt.com/blog/blprnt/updated-quick-tutorial-processing-twitter/twitter" rel="attachment wp-att-1460"><img src="http://blog.blprnt.com/wp-content/uploads/2011/10/twitter.png" alt="" title="twitter" width="550" height="550" class="alignnone size-full wp-image-1460" /></a></p>
<p><strong>** Extra-coolness: <a href="http://scotland.proximity.on.ca/dxr/tmp/processing-mobile/examples/twitter/blprnt-twitter-demo.html">see this example working in the browser</a> with <a href="http://processingjs.org">Processing.js</a>!!</strong></p>
<p>That&#8217;s it! This example is very simple, but it&#8217;s the bare bones of what you need build a project which connects Twitter through Processing.</p>
<p>Shortly I&#8217;ll add another post which shows how to use Processing with the Twitter Streaming API, so that we can deal with large volumes of tweets over time.</p>
<p>Good luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blprnt.com/blog/blprnt/updated-quick-tutorial-processing-twitter/feed</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>138 Years of Popular Science</title>
		<link>http://blog.blprnt.com/blog/blprnt/138-years-of-popular-science</link>
		<comments>http://blog.blprnt.com/blog/blprnt/138-years-of-popular-science#comments</comments>
		<pubDate>Wed, 26 Oct 2011 02:10:57 +0000</pubDate>
		<dc:creator>Jer</dc:creator>
				<category><![CDATA[1]]></category>

		<guid isPermaLink="false">http://blog.blprnt.com/?p=1449</guid>
		<description><![CDATA[Near the end of this summer, I was asked by the publishers of Popular Science magazine to produce a visualization piece that explored the archive of their publication. PopSci has a history that spans almost 140 years, so I knew there would be plenty of material to draw from. Working with Mark Hansen, I ended [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/blprnt/6281515793/" title="Magazine shots - Popular Science by blprnt_van, on Flickr"><img src="http://farm7.static.flickr.com/6212/6281515793_5b3bd9b38e.jpg" width="500" height="375" alt="Magazine shots - Popular Science"></a></p>
<p>Near the end of this summer, I was asked by the publishers of Popular Science magazine to produce a visualization piece that explored the archive of their publication. PopSci has a history that spans almost 140 years, so I knew there would be plenty of material to draw from. Working with Mark Hansen, I ended up making a graphic that showed how different technical and cultural terms have come in and out of use in the magazine since its inception.</p>
<p>The graphic is anchored by a kind of molecular chain &#8211; decade clusters in turn contain year clusters. Every atom in these year clusters is a single issue of the magazine, and is shaded with colours extracted from the issue covers via a colour clustering routine. The size of the issue-atoms is determined by the number of words in each issue.</p>
<p><a href="http://www.flickr.com/photos/blprnt/6281520707/" title="Magazine shots - Popular Science by blprnt_van, on Flickr"><img src="http://farm7.static.flickr.com/6229/6281520707_376069f355.jpg" width="500" height="375" alt="Magazine shots - Popular Science"></a></p>
<p><a href="http://www.flickr.com/photos/blprnt/6282038098/" title="Magazine shots - Popular Science by blprnt_van, on Flickr"><img src="http://farm7.static.flickr.com/6101/6282038098_774a6cffcb.jpg" width="500" height="375" alt="Magazine shots - Popular Science"></a></p>
<p>Surrounding this chain are about 70 word frequency histograms showing the issue-by-issue usage of different terms (like &#8216;software&#8217; or &#8216;bakelite&#8217;). I used a simple space-filling algorithm to place these neatly around the molecule chain, and to stack them so that one histogram begins shortly after another ends. This ended up resulting in some interesting word chains that show how technology has progressed &#8211; some that make sense (microcomputer to e-mail) and some what are more whimsical (supernatural to periscope to datsun to fax). </p>
<p>Picking out interesting words from all of the available choices (pretty much the entire dictionary) was a tricky part of the process. I built a custom tool in Processing that pre-visualized the frequency plots of each word so that I could go through many, many possibilities and identify the ones that would be interesting to include in the final graphic. This is a really common approach for me to take &#8211; building small tools during the process of a project that help me solve specific problems. For this visualization, I actually ended up writing 4 tools in <a href="http://www.processing.org">Processing</a> &#8211; only one of which contributed visually to the final result.</p>
<p>My working process is riddled with dead-ends, messy errors and bad decisions &#8211; the &#8216;final&#8217; product usually sits on top of a mountain of iterations that rarely see the light of day. To give a bit of insight into the steps between concept and product, I&#8217;ve put together a <a href="http://www.flickr.com/photos/blprnt/sets/72157627854698933/">Flickr set</a> showing 134 process images that came out of the development of this visualization. Here are a few images from that set:</p>
<p><strong>Rough beginning</strong></p>
<p><a href="http://www.flickr.com/photos/blprnt/6281861306/" title="Popular Science - Process by blprnt_van, on Flickr"><img src="http://farm7.static.flickr.com/6043/6281861306_606da18897.jpg" width="500" height="462" alt="Popular Science - Process"></a></p>
<p><strong>Early molecular chain</strong></p>
<p><a href="http://www.flickr.com/photos/blprnt/6281860762/" title="Popular Science - Process by blprnt_van, on Flickr"><img src="http://farm7.static.flickr.com/6019/6281860762_c0ffc2c816.jpg" width="500" height="462" alt="Popular Science - Process"></a></p>
<p><strong>Denser chain with test &#8216;word span&#8217;</strong></p>
<p><a href="http://www.flickr.com/photos/blprnt/6281343855/" title="Popular Science - Process by blprnt_van, on Flickr"><img src="http://farm7.static.flickr.com/6120/6281343855_2b84323755.jpg" width="500" height="462" alt="Popular Science - Process"></a></p>
<p><strong>A diversion</strong></p>
<p><a href="http://www.flickr.com/photos/blprnt/6281856864/" title="Popular Science - Process by blprnt_van, on Flickr"><img src="http://farm7.static.flickr.com/6117/6281856864_feac178d69.jpg" width="500" height="462" alt="Popular Science - Process"></a></p>
<p><strong>Near-final</strong></p>
<p><a href="http://www.flickr.com/photos/blprnt/6281316931/" title="Popular Science - Process by blprnt_van, on Flickr"><img src="http://farm7.static.flickr.com/6098/6281316931_e392b7bb0e.jpg" width="500" height="500" alt="Popular Science - Process"></a> </p>
<p>Lost in the image records are the steps that involved the data &#8211; and there were a lot of them. The archive was text that came from an OCR (optical character recognition) process, and was incredibly messy. To make matters worse, the file names for each issue were machine-generated and didn&#8217;t tie to the actual date order of the documents. A great deal of our time was spent cleaning up this data, and compiling customized datasets (many of which never ended up getting used).</p>
<p>While the final graphic is pictured above, it looks much better in print &#8211; so make sure you get a copy! Better yet, you can order a poster-sized version of the graphic by clicking <a href="http://popsci.com/posters">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blprnt.com/blog/blprnt/138-years-of-popular-science/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Tutorial: Processing, Javascript, and Data Visualization</title>
		<link>http://blog.blprnt.com/blog/blprnt/tutorial-processing-javascript-and-data-visualization</link>
		<comments>http://blog.blprnt.com/blog/blprnt/tutorial-processing-javascript-and-data-visualization#comments</comments>
		<pubDate>Sat, 03 Sep 2011 02:16:55 +0000</pubDate>
		<dc:creator>Jer</dc:creator>
				<category><![CDATA[Processing]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://blog.blprnt.com/?p=1375</guid>
		<description><![CDATA[[The above graphic is an interactive 3D bar graph. If you can't see it, it's probably because your browser sucks can't render WebGL content. Maybe try Chrome or Firefox?] Ben Fry and Casey Reas, the initiators of the Processing project, announced at the Eyeo Festival that a new version of Processing, Processing 2.0, will be [...]]]></description>
			<content:encoded><![CDATA[<p><script src="http://blprnt.com/js/processing.js"></script> </p>
<div id="pjs" width="500" height="500" style="padding-bottom:20px">
<canvas data-processing-sources="http://blog.blprnt.com/pde/tutorial.pde"></canvas>
</div>
<p><em>[The above graphic is an interactive 3D bar graph. If you can't see it, it's probably because your browser <del>sucks</del> can't render WebGL content. Maybe try <a href="http://www.google.com/chrome">Chrome</a> or <a href="http://www.mozilla.org/en-US/firefox/new/">Firefox</a>?]</em></p>
<p><a href="http://fathom.cc/">Ben Fry</a> and <a href="http://reas.com/">Casey Reas</a>, the initiators of the <a href="http://processing.org">Processing project</a>, announced at the <a href="http://eyeofestival.com">Eyeo Festival</a> that a n<a href="http://vimeo.com/28117873">ew version of Processing, Processing 2.0, will be released in the fall (VIDEO)</a>. This 2.0 release brings a lot of really exciting changes, including vastly improved 3D performance, and a brand-new high-performance video library. Perhaps most interesting is the addition of publishing modes &#8211; Processing sketches can now be published to other formats other than the standard Java applet. The mode that is going to cause the most buzz around the interweb is Javascript mode: yes, Processing sketches can now be published, with one click, to render in pretty much any web browser. This is very exciting news for those of us who use Processing for data visualization &#8211; it means that our sketches can reach a much broader audience, and that the visual power of Processing can be combined with the interactive power of Javascript.</p>
<p>While preview releases of Processing 2.0 will be available for download very soon, you don&#8217;t have to wait to experiment with Processing and Javascript. The upcoming JS mode comes thanks to the team behind <a href="http://processingjs.org">Processing.js</a>, and we can use it to build sketches for the browser right now.</p>
<p>To get started, you can <a href="http://blprnt.com/tutorials/PJStutorial.zip">download this sample file</a>. When you unzip the file, you&#8217;ll see a directory with three files &#8211; the index.html page, processing.js, and our sketch file, called tutorial.pde. If you open the sketch file in a text editor, you&#8217;ll see something like this:</p>
<pre class="brush: java; title: ; notranslate">
void setup() {
  //instructions in here happen once when the sketch is run
  size(500,500);
  background(0);
}

void draw() {
  //instructions in here happen over and over again
}
</pre>
<p>If you&#8217;re a Processing user, you&#8217;ll be familiar with the setup and draw enclosures. If you&#8217;re not, the notes inside of each one explain what&#8217;s going on: when we run the sketch, the size is set to 500px by 500px, and the background is set to black. Nothing is happening (yet) in the draw enclosure.</p>
<p>You can see this incredibly boring sketch run if you open the index.html file in your browser (this will work in Firefox and Safari, but not in Chrome due to security settings). </p>
<p>Processing.js is a fully-featured port of Processing &#8211; all of the things that you&#8217;d expect to be able to do in Processing without importing extra libraries can be done in Processing.js. Which, quite frankly, is amazing! This means that many of your existing sketches will run, with no changes, in the browser.</p>
<p>Since this is a data visualization tutorial, let&#8217;s look at a simple representation of numbers. To keep it simple, we&#8217;ll start with a set of numbers: 13.4, 14.5, 15.0, 23.2, 30.9, 31.3, 32.9 35.1, 34.3. (These numbers are obesity percentages in the U.S. population, between the 1960s and the present &#8211; but we&#8217;re really going to use them without context).</p>
<p>Typically, if we were to put these numbers into a Processing sketch, we&#8217;d construct an array of floating point numbers (numbers with a decimal place), which would look like this:</p>
<pre class="brush: java; title: ; notranslate">
float[] myNumbers = {13.4, 14.5, 15.0, 23.2, 30.9, 31.3, 32.9, 35.1, 34.3};
</pre>
<p>However, we&#8217;re not in Java-land anymore, so we can make use of Javascript&#8217;s easier syntax (one of the truly awesome things about Processing.js is that we can include JS in our sketches, inline):</p>
<pre class="brush: java; title: ; notranslate">
var numbers = [13.4, 14.5, 15.0, 23.2, 30.9, 31.3, 32.9, 35.1, 34.3];
</pre>
<p>Our .pde file, then, looks like this:</p>
<pre class="brush: java; title: ; notranslate">

var numbers = [13.4, 14.5, 15.0, 23.2, 30.9, 31.3, 32.9, 35.1, 34.3];

void setup() {
  //instructions in here happen once when the sketch is run
  size(500,500);
  background(0);
}

void draw() {
  //instructions in here happen over and over again
}
</pre>
<p>Now that we have our helpful list of numbers (called, cleverly, &#8216;numbers&#8217;), we can access any of the numbers using its <em>index</em>. Indexes in Processing (and Javascript) are zero-based, so to get the first number out of the list, we&#8217;d use numbers[0]. To get the fourth one, we&#8217;d use numbers[3]. Let&#8217;s use those two numbers to start doing some very (very) simple visualization. Indeed, the first thing we&#8217;ll do is to draw a couple of lines:</p>
<pre class="brush: java; title: ; notranslate">
var numbers = [13.4, 14.5, 15.0, 23.2, 30.9, 31.3, 32.9, 35.1, 34.3];

void setup() {
  //instructions in here happen once when the sketch is run
  size(500,500);
  background(0);

  //Draw two lines
  stroke(255);
  line(0, 50, numbers[0], 50);
  line(0, 100, numbers[4], 100);
}

void draw() {
  //instructions in here happen over and over again
}
</pre>
<p><a href="http://blog.blprnt.com/blog/blprnt/tutorial-processing-javascript-and-data-visualization/screen-shot-2011-09-02-at-8-23-32-pm" rel="attachment wp-att-1378"><img src="http://blog.blprnt.com/wp-content/uploads/2011/09/Screen-shot-2011-09-02-at-8.23.32-PM-500x498.png" alt="" title="Screen shot 2011-09-02 at 8.23.32 PM" width="500" height="498" class="alignnone size-medium wp-image-1378" /></a></p>
<p>OK. I&#8217;ll admit. That&#8217;s a pretty crappy sketch. But, we can build on it. Let&#8217;s start by making those lines into rectangles:</p>
<pre class="brush: java; title: ; notranslate">
var numbers = [13.4, 14.5, 15.0, 23.2, 30.9, 31.3, 32.9, 35.1, 34.3];

void setup() {
  //instructions in here happen once when the sketch is run
  size(500,500);
  background(0);

  //Draw two lines
  stroke(255);
  rect(0, 50, numbers[0], 20);
  rect(0, 100, numbers[4], 20);
}

void draw() {
  //instructions in here happen over and over again
}
</pre>
<p>At this point, I&#8217;m going to introduce my very best Processing friend, <a href="http://processing.org/reference/map_.html">the map() function</a>. What the map() function allows us to do is to adjust a number that exists in a certain range so that it fits into a new range. A good real-world example of this would be converting a number (0.5) that exists in a range between 0 and 1 into a percentage:</p>
<pre class="brush: java; title: ; notranslate">
50 = map(0.5, 0, 1, 0, 100);
</pre>
<p>We can take any number inside any range, and map it to a new range. Here are a few more easy examples:</p>
<pre class="brush: java; title: ; notranslate">
500 = map(5, 0, 10, 0, 1000);
0.25 = map(4, 0, 16, 0, 1);
PI = map(180, 0, 360, 0, 2 * PI);
</pre>
<p>In our sketch, the list of numbers that we&#8217;re using ranges from 13.4 to 34.3. This means that our rectangles are pretty short, sitting in the 500 pixel-wide sketch. So, let&#8217;s map those numbers to fit onto the width of our screen (minus 50 pixels as for a buffer):</p>
<pre class="brush: java; title: ; notranslate">
var numbers = [13.4, 14.5, 15.0, 23.2, 30.9, 31.3, 32.9, 35.1, 34.3];

void setup() {
  //instructions in here happen once when the sketch is run
  size(500,500);
  background(0);

  //Draw two rectangles
  rect(0, 50, map(numbers[0], 0, 34.3, 0, width - 50), 20);
  rect(0, 100, map(numbers[4], 0, 34.3, 0, width - 50),  20);
}

void draw() {
  //instructions in here happen over and over again
}
</pre>
<p>Two bars! Wee-hoo! Now, let&#8217;s use a simple loop to get all of our numbers on the screen (this time we&#8217;ll use the max() function to find the biggest number in our list):</p>
<pre class="brush: java; title: ; notranslate">
var numbers = [13.4, 14.5, 15.0, 23.2, 30.9, 31.3, 32.9, 35.1, 34.3];

void setup() {
  //instructions in here happen once when the sketch is run
  size(500,500);
  background(0);

  for (var i = 0; i &lt; numbers.length; i++) {
    //calculate the width of the bar by mapping the number to the width of the screen minus 50 pixels
    var w = map(numbers[i], 0, max(numbers), 0, width - 50);
    rect(0, i * 25, w, 20);
  }
}

void draw() {
  //instructions in here happen over and over again
}
</pre>
<p><a href="http://blog.blprnt.com/blog/blprnt/tutorial-processing-javascript-and-data-visualization/screen-shot-2011-09-02-at-8-40-04-pm" rel="attachment wp-att-1379"><img src="http://blog.blprnt.com/wp-content/uploads/2011/09/Screen-shot-2011-09-02-at-8.40.04-PM-500x498.png" alt="" title="Screen shot 2011-09-02 at 8.40.04 PM" width="500" height="498" class="alignnone size-medium wp-image-1379" /></a></p>
<p>We&#8217;re still firmly in Microsoft Excel territory, but we can use some of Processing&#8217;s excellent visual programming features to make this graph more interesting. For starters, let&#8217;s change the colours of the bars. Using the map() function again, we&#8217;ll colour the bars from red (for the smallest number) to yellow (for the biggest number):</p>
<pre class="brush: java; title: ; notranslate">
var numbers = [13.4, 14.5, 15.0, 23.2, 30.9, 31.3, 32.9, 35.1, 34.3];

void setup() {
  //instructions in here happen once when the sketch is run
  size(500,500);
  background(0);

  for (var i = 0; i &lt; numbers.length; i++) {
    //calculate the amount of green in the colour by mapping the number to 255 (255 red &amp;amp; 255 green = yellow)
    var c = map(numbers[i], min(numbers), max(numbers), 0, 255);
    fill(255, c, 0);
    //calculate the width of the bar by mapping the number to the width of the screen minus 50 pixels
    var w = map(numbers[i], 0, max(numbers), 0, width - 50);
  	rect(0, i * 25, w, 20);
  }
}

void draw() {
  //instructions in here happen over and over again
}
</pre>
<p><a href="http://blog.blprnt.com/blog/blprnt/tutorial-processing-javascript-and-data-visualization/screen-shot-2011-09-02-at-8-39-38-pm" rel="attachment wp-att-1380"><img src="http://blog.blprnt.com/wp-content/uploads/2011/09/Screen-shot-2011-09-02-at-8.39.38-PM-500x500.png" alt="" title="Screen shot 2011-09-02 at 8.39.38 PM" width="500" height="500" class="alignnone size-medium wp-image-1380" /></a></p>
<p>This process of mapping a number to be represented by a certain dimension (in this case, the width of the bars along with the colour) is the basic premise behind data visualization in Processing. Using this simple framework, we can map to a whole variety of dimensions, including size, position, rotation, and transparency. </p>
<p>As an example, here is the same system we saw above, rendered as a radial graph (note here that I&#8217;ve added a line before the loop that moves the drawing point to the centre of the screen; I&#8217;ve also changed the width of the bars to fit in the screen):</p>
<pre class="brush: java; title: ; notranslate">
var numbers = [13.4, 14.5, 15.0, 23.2, 30.9, 31.3, 32.9, 35.1, 34.3];

void setup() {
  //instructions in here happen once when the sketch is run
  size(500,500);
  background(0);

  //move to the center of the sketch before we draw our graph
  translate(width/2, height/2);
  for (var i = 0; i &lt; numbers.length; i++) {
    //calculate the amount of green in the colour by mapping the number to 255 (255 red &amp;amp; 255 green = yellow)
    var c = map(numbers[i], min(numbers), max(numbers), 0, 255);
    fill(255, c, 0);
    //calculate the width of the bar by mapping the number to the half the width of the screen minus 50 pixels
    var w = map(numbers[i], 0, max(numbers), 0, width/2 - 50);
  	rect(0, 0, w, 20);
  	//after we draw each bar, turn the sketch a bit
  	rotate(TWO_PI/numbers.length);
  }
}

void draw() {
  //instructions in here happen over and over again
}
</pre>
<p><a href="http://blog.blprnt.com/blog/blprnt/tutorial-processing-javascript-and-data-visualization/screen-shot-2011-09-02-at-8-48-30-pm" rel="attachment wp-att-1381"><img src="http://blog.blprnt.com/wp-content/uploads/2011/09/Screen-shot-2011-09-02-at-8.48.30-PM-500x498.png" alt="" title="Screen shot 2011-09-02 at 8.48.30 PM" width="500" height="498" class="alignnone size-medium wp-image-1381" /></a></p>
<p>So far we&#8217;ve been keeping things very simple. But the possibilities using Processing and Javascript are really exciting. It&#8217;s very easy to add interactivity, and it&#8217;s even possible to take advantage of Processing&#8217;s 3D functionality <strong>in the browser</strong>. </p>
<p>Here&#8217;s our numbers again, rendered in 3D (note the change to the size() function), with the rotation controlled by the mouse (via our new friend the map() function):</p>
<pre class="brush: java; title: ; notranslate">
var numbers = [13.4, 14.5, 15.0, 23.2, 30.9, 31.3, 32.9, 35.1, 34.3];

void setup() {
  //instructions in here happen once when the sketch is run
  size(500,500,P3D);
  background(0);

}

void draw() {
  //instructions in here happen over and over again
  background(0);
  //turn on the lights so that we see shading on the 3D objects
  lights();
  //move to the center of the sketch before we draw our graph
  translate(width/2, height/2);
  //Tilt about 70 degrees on the X axis - like tilting a frame on the wall so that it's on a table
  rotateX(1.2);
  //Now, spin around the Z axis as the mouse moves. Like spinning that frame on the table around its center
  rotateZ(map(mouseX, 0, width, 0, TWO_PI));
  for (var i = 0; i &lt; numbers.length; i++) {
    //calculate the amount of green in the colour by mapping the number to 255 (255 red &amp;amp; 255 green = yellow)
    var c = map(numbers[i], min(numbers), max(numbers), 0, 255);
    fill(255, c, 0);
    //calculate the height of the bar by mapping the number to the half the width of the screen minus 50 pixels
    var w = map(numbers[i], 0, max(numbers), 0, width/2 - 50);
    //move out 200 pixels from the center
  	pushMatrix();
  		translate(200, 0);
  		box(20,20,w);
  	popMatrix();
  	//after we draw each bar, turn the sketch a bit
  	rotate(TWO_PI/numbers.length);
  }
}
</pre>
<p>Thirty lines of code, and we have an interactive, 3D data visualization (you can see this sketch running inline in the header). Now, I understand that this isn&#8217;t the best use of 3D, and that we&#8217;re only visualizing a basic dataset, but the point here is to start to imagine the possibilities of using Processing with Javascript in the browser. </p>
<p>For starters, Javascript lets us <em>very</em> easily import data from any JSON source with no parsing whatsoever &#8211; this means we can create interactive graphics that load dynamic data on the fly (more on this in the next tutorial). On top of that, because we can write Javascript inline with our Processing code, and we can integrate external Javascript functions and libraries (lie JQuery) to our sketches, we can incorporate all kinds of advanced interactivity. </p>
<p>I suspect that the release of Processing 2.0 will lead to a burst of Javascript-based visualization projects being released on the web. In the meantime, we can use the basic template from this tutorial to work with Processing.js &#8211; have fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blprnt.com/blog/blprnt/tutorial-processing-javascript-and-data-visualization/feed</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
	</channel>
</rss>

