<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Jon Udell &#187; Search Results  &#187;  screencast</title>
	<atom:link href="http://blog.jonudell.net/search/screencast/feed/rss2/" rel="self" type="application/rss+xml" />
	<link>http://blog.jonudell.net</link>
	<description>Strategies for Internet citizens</description>
	<lastBuildDate>Sat, 11 Feb 2012 19:45:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.jonudell.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Jon Udell &#187; Search Results  &#187;  screencast</title>
		<link>http://blog.jonudell.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.jonudell.net/osd.xml" title="Jon Udell" />
	<atom:link rel='hub' href='http://blog.jonudell.net/?pushpress=hub'/>
		<item>
		<title>How George Bailey can save Delicious</title>
		<link>http://blog.jonudell.net/2010/12/17/how-george-bailey-can-save-delicious/</link>
		<comments>http://blog.jonudell.net/2010/12/17/how-george-bailey-can-save-delicious/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 16:49:14 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[azure]]></category>
		<category><![CDATA[delicious]]></category>
		<category><![CDATA[elmcity]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=2747</guid>
		<description><![CDATA[Every Christmas we watch It&#8217;s a Wonderful Life. This year I&#8217;ll be imagining Jimmy Stewart saying, to a panicked crowd of delicious.com users rushing for the exits, &#8220;Now, hold on, it&#8217;ll work out, we&#8217;ve just got to stick together.&#8221; If you&#8217;ve never used the social bookmarking service that began life with the whimsical domain name [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=2747&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
Every Christmas we watch It&#8217;s a Wonderful Life. This year I&#8217;ll be imagining Jimmy Stewart saying, to a panicked crowd of delicious.com users rushing for the exits, &#8220;Now, hold on, it&#8217;ll work out, we&#8217;ve just got to stick together.&#8221;
</p>
<p>
If you&#8217;ve never used the social bookmarking service that began life with the whimsical domain name del.icio.us, here&#8217;s the <a href="http://en.wikipedia.org/wiki/Delicious.com">Wikipedia summary</a>. The service began in 2003, and by 2004 had transformed my work practices more profoundly than almost anything else before or since. I&#8217;ve written scores of essays explaining how and why. Here are some of my favorites:
</p>
<p>
2004: <a href="http://www.infoworld.com/d/developer-world/collaborative-knowledge-gardening-020">Collaborative knowledge gardening</a>
</p>
<p>
2005: <a href="http://jonudell.net/udell/gems/delicious/delicious.html">Language evolution with del.icio.us</a> (screencast)</a>
</p>
<p>
2005: <a href="http://jonudell.net/udell/2005-06-23-collaborative-filtering-with-delicious.html">Collaborative filtering with del.icio.us</a>
</p>
<p>
2006: <a href="http://jonudell.net/udell/2006-08-22-delicious-is-a-database.html">Del.icio.us is a database</a>
</p>
<p>
2007: <a href="http://blog.jonudell.net/2007/12/12/discovering-versus-teaching-principles-of-social-information-management/">Discovering and teaching principles of information management</a>
</p>
<p>
2007: <a href="http://blog.jonudell.net/2007/11/27/social-information-management/">Social information management</a>
</p>
<p>
2008: <a href="http://blog.jonudell.net/2008/11/17/twine-delicious-and-event-driven-service-integration/">Twine, del.icio.us, and event-driven service integration</a>
</p>
<p>
2008: <a href="http://blog.jonudell.net/2008/12/29/databasing-trusted-feeds-with-delicious/">Databasing trusted feeds with del.icio.us</a>
</p>
<p>
2008: <a href="http://blog.jonudell.net/2008/10/22/why-and-how-to-blurb-your-social-bookmarks/">Why and how to blurb your social bookmarks</a>
</p>
<p>
2009: <a href="http://blog.jonudell.net/2009/02/26/collaborative-curation-as-a-service/">Collaborative curation as a service</a>
</p>
<p>
Since the now-infamous leak of an internal Yahoo! slide naming delicious as one of a set of doomed services, there&#8217;s been some great gallows humor. Ed Kohler:
</p>
<blockquote><p>
The easiest way to shut down Wikileaks would be to have Yahoo! acquire it.
</p></blockquote>
<p>
And Anil Dash:
</p>
<blockquote><p>
It seems like @pinboardIN is the most successful product Yahoo!&#8217;s had a hand in launching in five years. Congrats, @baconmeteor.
</p></blockquote>
<p>
Anil is referring to <a href="http://pinboard.in/">pinboard.in</a>, one of several delicious-like services to which delicious users began fleeing. Pinboard is notable for a clever model in which the price of a lifetime subscription rises with the number of users. When I first checked yesterday morning, that price was $6.90. I signed up at $7.24. Neil Saunders started tracking it at <a href="http://twitter.com/#!/search/pinboardwatch">#pinboardwatch</a>; it got to $7.74 last night; it&#8217;s $8.17 now. Maybe I should&#8217;ve bought 100 accounts at $6.90!
</p>
<p>
But seriously, this is a moment to reflect on how we can preserve the value we collectively create online. As some of you know, I have made heavy use of delicious in my own service, <a href="http://elmcity.cloudapp.net">elmcity</a>. When the news broke, Jeremy Dunck <a href="http://twitter.com/#!/jdunck/status/15554197000814592">asked</a>: &#8220;Bad news for elmcity, huh?&#8221;
</p>
<p>
Actually that&#8217;s the least of my worries. The folks who curate elmcity calendar hubs use delicious to configure their hubs, and to list the feeds aggregated by their hubs. It&#8217;ll be a bit inconvenient to transition to another bookmarking service, but it&#8217;s no big deal. And of course all the existing data is cached in an Azure database; the elmcity service doesn&#8217;t depend on live access to delicious.
</p>
<p>
The real concern is far broader. Millions of us have used delicious to create named sets of online resources. We can recreate our individual collections in other services, but not our collaborative efforts. In <a href="http://www.readwriteweb.com/archives/deliciouss_data_policy_is_like_setting_a_museum_on.php">Delicious&#8217;s Data Policy is Like Setting a Museum on Fire</a>, Marshall Kirkpatrick writes:
</p>
<blockquote><p>
One community of non-profit technologists has been bookmarking links with the tag &#8220;NPTech&#8221; for years &#8211; they have 24,028 links categorized as relevant for organizations seeking to change the world and peoples&#8217; lives using technology. Wouldn&#8217;t it be good to have that body of data, metadata and curated resources available elsewhere once Delicious is gone?
</p></blockquote>
<p>
The problem with &#8220;elsewhere,&#8221; of course, is that there&#8217;s no elsewhere immune to the same business challenges faced by Yahoo!. Maybe now is the time for a new model to emerge. Except it wouldn&#8217;t be new at all. The Building and Loan service that George Bailey ran in It&#8217;s a Wonderful Life wasn&#8217;t a bank, it was a coop, and its customers were shareholders. Could delicious become the first user-owned Internet service? Could we users collectively make Yahoo! an offer, buy in as shareholders, and run the service ourselves?
</p>
<p>
It&#8217;s bound to happen sooner or later. My top Christmas wish: delicious goes first.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/2747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/2747/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/2747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/2747/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonudell.wordpress.com/2747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonudell.wordpress.com/2747/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonudell.wordpress.com/2747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonudell.wordpress.com/2747/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/2747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/2747/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/2747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/2747/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/2747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/2747/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=2747&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2010/12/17/how-george-bailey-can-save-delicious/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0d7c7e171fc0ad3dacc9b1ed203e3e50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonudell</media:title>
		</media:content>
	</item>
		<item>
		<title>Using sparkcasts to enhance step-by-step instructions</title>
		<link>http://blog.jonudell.net/2010/12/14/using-sparkcasts-to-enhance-step-by-step-instructions/</link>
		<comments>http://blog.jonudell.net/2010/12/14/using-sparkcasts-to-enhance-step-by-step-instructions/#comments</comments>
		<pubDate>Tue, 14 Dec 2010 20:25:44 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=2740</guid>
		<description><![CDATA[A non-profit organization chartered to promote arts and culture within its community will be curating a new elmcity hub. The curator plans to invite dozens of member organizations to contribute to the hub &#8212; that is, to manage their public schedules using calendar applications, and to convey the URLs of their calendar feeds to the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=2740&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
A non-profit organization chartered to promote arts and culture within its community will be curating a new elmcity hub. The curator plans to invite dozens of member organizations to contribute to the hub &#8212; that is, to manage their public schedules using calendar applications, and to convey the URLs of their calendar feeds to the hub. It&#8217;s critical that these member organizations will be able to easily accomplish this task. I&#8217;ve been pointing to a <a href="http://www.delicious.com/judell/icalpub+howto">series of how-to articles</a> but it was time to make the instructions clearer and simpler. It was also time to revisit how to use screencasting to explain step-by-step procedures.
</p>
<p>
I started with the two web applications that make publishing calendar feeds as simple as it can be: Google Calendar and Hotmail Calendar. Here&#8217;s the new and improved explanation of <a href="http://jonudell.net/elmcity/publishing-feeds-from-google-and-hotmail-calendars.html">How to publish a calendar feed from Google Calendar or Hotmail Calendar</a>. I&#8217;ll soon learn how well this new explanation works for the intended audience. Meanwhile, here are some notes on the techniques I discovered.
</p>
<h2>Using sparkcasts</h2>
<p>
My earlier explanations didn&#8217;t use screencasts, they were just textual narrations with embedded static screenshots. That&#8217;s an appropriate way to explain step-by-step procedures. Screencasts can be overkill.
</p>
<p>
But it is nice to be able to show motion and sequential flow. I wondered: if sparklines are &#8220;intense word-sized graphics&#8221; that appear inline with text, is there a similarly lightweight way to use screencasts? Well, that&#8217;s how this explanation works. The steps are all written as text. Each step comes with a Watch! link that opens a quick little inline screencast.
</p>
<h2>Using Firebug to prepare screencasts</h2>
<p>
As I <a href="http://blog.jonudell.net/2010/12/09/democratizing-design/">mentioned the other day</a>, Firebug is an amazing tool for making mockups based on live web pages. And sometimes you can do more than just take screenshots of those mockups. Sometimes you can interact with them.
</p>
<p>
I used that method to temporarily alter both Google Calendar and Hotmail Calendar for these sparkcasts. In my case, both include several private calendars that were irrelevant to my explanation. Using Firebug I was able to remove them. I also made the address shown in Gmail look like the generic <b>YourAccountName@gmail.com</b> instead of <b>judell@gmail.com</b>. If subsequent interaction with the page doesn&#8217;t trigger a refresh of these altered elements, the changes will persist. Handy!
</p>
<h2>Using Camtasia to make animated GIFs</h2>
<p>
A movie-style screencast is a fairly heavy object, and it would be cumbersome to embed lots of these on a page. Animated GIFs are lighter. And it turns out that Camtasia can produce that format. Nice!
</p>
<h2>Using jQuery to reload animated GIFs</h2>
<p>
On the first try, I made each sparkcast loop forever, and used jQuery to show only the current one. But that wasn&#8217;t ideal. What I really wanted was for each sparkcast to play once when shown, then stop and offer a Replay link. If you view <a href="http://jonudell.net/elmcity/publishing-feeds-from-google-and-hotmail-calendars.html">the source of this page</a>, you&#8217;ll see the solution I came up with. It turns out that when you dynamically reload an animated GIF, you need to decorate its URL in a unique way; otherwise the browser won&#8217;t replay it.
</p>
<h2>Using Image Magick to control the looping of animated GIFs</h2>
<p>
Once I figured out how to replay a play-once GIF, I had to make all the GIFs stop looping. I&#8217;m sure that PhotoShop and others of its ilk can do that, but I like Image Magick&#8217;s ability to automate repetitive tasks. The Image Magick incantation to make an animated GIF play once goes like this:
</p>
<pre>
mogrify -loop 1 howto-01.gif
</pre>
<p>
Now that I&#8217;ve written this down, I can forget it until I need it again!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/2740/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/2740/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/2740/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/2740/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonudell.wordpress.com/2740/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonudell.wordpress.com/2740/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonudell.wordpress.com/2740/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonudell.wordpress.com/2740/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/2740/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/2740/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/2740/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/2740/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/2740/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/2740/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=2740&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2010/12/14/using-sparkcasts-to-enhance-step-by-step-instructions/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0d7c7e171fc0ad3dacc9b1ed203e3e50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonudell</media:title>
		</media:content>
	</item>
		<item>
		<title>To PIP (picture-in-picture video) or not to PIP?</title>
		<link>http://blog.jonudell.net/2010/06/10/to-pip-picture-in-picture-video-or-not-to-pip/</link>
		<comments>http://blog.jonudell.net/2010/06/10/to-pip-picture-in-picture-video-or-not-to-pip/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 22:06:34 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=2481</guid>
		<description><![CDATA[I&#8217;m just wrapped up a screencast about the elmcity project. It&#8217;ll stand in for me at an upcoming event I can&#8217;t attend, and serve as an explanation I can point others too. This is the first screencast I&#8217;ve worked on in ages, and also the first in which I appear as a picture-in-picture talking head. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=2481&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
I&#8217;m just wrapped up a screencast about the <a href="http://elmcity.cloudapp.net">elmcity project</a>. It&#8217;ll stand in for me at an upcoming event I can&#8217;t attend, and serve as an explanation I can point others too. This is the first screencast I&#8217;ve worked on in ages, and also the first in which I appear as a picture-in-picture talking head. The process has been challenging, and I want to write about it while the details are fresh.
</p>
<h2>Software teleprompters</h2>
<p>
After writing the script, I realized I&#8217;d need a teleprompter in order to read it effectively into the camera. You&#8217;d expect to find lots of software prompters floating around on the web, including some free ones, and you&#8217;d be right about that. But I had to work through a bunch of them before I found one that worked well for me. I tried <a href="http://www.cueprompter.com/">CuePrompter</a>, <a href="http://telekast.sourceforge.net/">TeleKast</a>, and many others. All failed in some dimension of control: margins, speed, transport. Finally I settled on <a href="http://www.promptdog.com/">PromptDog</a>, which is free to try but is the one I&#8217;ll buy when I go this route again. It does everything well, but what really put it over the top for me was the way it wires scroll speed to the mouse wheel.
</p>
<p>
If you&#8217;ve read from a software-based teleprompter before, you&#8217;ll already know this, but it was new to me. No matter what scroll speed you choose, you need to vary it as you go along. That&#8217;s because words and sentences take varying amounts of time to speak, but you need to keep your eyes focused near the top of the screen where the camera sits. With most of the programs I tried, you manage this focal zone by stopping and starting the scroll. But for me, at least, the stops and starts were distracting. PromptDog&#8217;s mouse-wheel-driven variable speed control made it much easier to stay in the focal zone. Reading from a software teleprompter is hard, at least for me. I was happy for all the help I could get.
</p>
<h2>Picture-in-picture video</h2>
<p>
For this screencast, I upgraded from Camtasia 5 to Camtasia 7. It can record directly from a camcorder, but my second-hand Panasonic PV-GS400 doesn&#8217;t seem to work well in that mode. So I recorded to tape, imported the results to a file, and imported that file into Camtasia as a PIP (picture-in-picture) video. On import you tell Camtasia how big your PIP window will be, and where it will show up in the larger video window. I made the PIP window a quarter the size of, vertically centered in, and flush right with the larger 1024&#215;768 video window.
</p>
<p>
I&#8217;d sssumed you could move the PIP window around, and grow it or shrink it, to accomodate different kinds of underlying screencast action. But that assumption was wrong. For a given segment of PIP video, the window stays where you put it. This leads to my first feature request for Camtasia 8: a PIP preview rectangle when recording the screen.
</p>
<p>
Often it&#8217;s OK to let the PIP video just overlay the screen action. But sometimes you don&#8217;t want it to hide an essential part of the screen. To avoid that, you have to compose the screen around the PIP window. Lacking a  visual cue for the PIP window&#8217;s borders, I had to guess. Often I guessed wrong, and had to recompose and reshoot a piece of screen action.
</p>
<p>
Note that you <i>can</i> vary the size and location of the PIP window by splitting the PIP video into segments and assigning different sizes and locations to each segment. That&#8217;s a lot of work, though. And you don&#8217;t really want to split the PIP video into segments because then you can&#8217;t manipulate the whole track.
</p>
<h2>Editing audio, motion video, and screen video all together</h2>
<p>
I made things hard on myself because I&#8217;d forgotten that Camtasia invites you to do more integrated editing than you should. In principle you can, for example, run a noise-reduction pass on your audio in Camtasia. In practice, I would prefer to do that in Adobe Audition, which does the job faster and better. What I should have done is grab the sound track out of the captured motion video, run Audition&#8217;s noise reducer, recombine the audio and video, and then import into Camtasia for editing.
</p>
<p>
Instead I edited everything down in Camtasia, then tried to do an export/process/import pass on the audio. When you export, Camtasia renders the audio based on your edits. Unfortunately it came out a few seconds longer than expected. I think that&#8217;s because the differing frame rates for screen video on the one hand, and motion video plus audio on the other, make it hard to keep things in synch. Next time around I&#8217;m going to try matching the frame rates to see if that helps.
</p>
<p>
(In the end I decided it was worth redoing the edit anyway, so I split the AVI file I&#8217;d recorded from the camcorder, fixed the audio, imported it back into Camtasia, and redid the relatively few edits I&#8217;d made to the PIP video.)
</p>
<p>
In the past, I&#8217;ve done some carefully edited screencasts where things that I say are tightly synched to things happening on screen. (&#8220;&#8230;when I click on <i>this link</i>, we see that &#8230;) It&#8217;s easy to pull that off when you can&#8217;t see the speaker, because you can mess with the screen video, or the audio, or both. When you can see the speaker, it&#8217;s much harder. Motion video isn&#8217;t nearly so forgiving as audio, so you have to do almost all the synch adjustment in the screen video. Or else re-record some or all of the motion video.
</p>
<p><h3>To PIP or not to PIP?</h3>
<p></a>
</p>
<p>
Is all this effort worth the trouble? When Scott Hanselman <a href="http://www.hanselman.com/blog/YourOpinionMattersScreencastTechniquesSurveyRESULTS.aspx">surveyed his readers</a> about screencasts, he asked, among other things, &#8220;PIP or no PIP?&#8221; More than half agreed with the statement: &#8220;Too much PIP (Picture in Picture) video of the presenter is distracting.&#8221; And I think that&#8217;s true for screencasts that show how to do stuff with software.
</p>
<p>
When a screencast shows <i>why</i> to do stuff with software, though, I think the talking head may make more sense. Now, my instinct is to be a voice only, as I am on my <a href="http://www.itconversations.com/series/innovators.html">podcast</a>. But if the screencast is going to represent me at an event, it seems like I should try to project myself there.
</p>
<p>
More broadly, the topic is something I care about and have struggled to communicate effectively. If this method of presentation works better than others I&#8217;ve tried, even if only for some people, then it&#8217;s worth doing. My communication kit needs as many tools as I can pack into it.
</p>
<p>
Now that I&#8217;ve knocked the rust off my screencasting skills, I&#8217;m looking forward to redoing this video based on feedback. And since it was made for a ten-minute conference slot, I should probably also do some shorter versions that will work in different contexts.
</p>
<p>
One thing that&#8217;s becoming terribly clear: If I want these to make sense to broad audiences, I need to speak plainly and illustrate with simple everyday examples. I&#8217;ve been embarrassingly slow to figure that out, but I am learning. In the screencast I just wrapped, which is all about syndication, I never use that word. It&#8217;s a start!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/2481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/2481/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/2481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/2481/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonudell.wordpress.com/2481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonudell.wordpress.com/2481/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonudell.wordpress.com/2481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonudell.wordpress.com/2481/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/2481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/2481/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/2481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/2481/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/2481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/2481/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=2481&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2010/06/10/to-pip-picture-in-picture-video-or-not-to-pip/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0d7c7e171fc0ad3dacc9b1ed203e3e50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonudell</media:title>
		</media:content>
	</item>
		<item>
		<title>Talking with Herbert Van de Sompel about a web that remembers</title>
		<link>http://blog.jonudell.net/2010/04/22/talking-with-herbert-van-de-sompel-about-a-web-that-remembers/</link>
		<comments>http://blog.jonudell.net/2010/04/22/talking-with-herbert-van-de-sompel-about-a-web-that-remembers/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 16:00:42 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/2010/04/22/talking-with-herbert-van-de-sompel-about-a-web-that-remembers/</guid>
		<description><![CDATA[The endnotes for the book I&#8217;m now reading are a mixture of conventional citations and URLs. The former, expressed as publisher, book or journal title, author, date, and page number, seem not nearly so useful as the latter. Would you rather visit the library or click a link? But nowadays cited URLs also come with [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=2378&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
The endnotes for the book I&#8217;m now reading are a mixture of conventional citations and URLs. The former, expressed as publisher, book or journal title, author, date, and page number, seem not nearly so useful as the latter. Would you rather visit the library or click a link? But nowadays cited URLs also come with disclaimers like this: <i>Accessed July 27, 2009</i>. It might be inconvenient to verify a conventional citation in its original context, but I know that if I had to, I could. There&#8217;s no guarantee that I&#8217;ll be able to revisit a cited URL. Even if the page itself has not gone missing, there&#8217;s no way to know that the page I view on April 22, 2010 is the same one that the author viewed on July 27, 2009.
</p>
<p>
This anecdote was the springboard for my <a href="http://itc.conversationsnetwork.org/shows/detail4456.html">conversation with Herbert Van de Sompel</a> about <a href="http://mementoweb.org/">Memento</a>, a proposed (and <a href="http://www.mementoweb.org/demo/">prototyped</a>) method for adding the dimension of time to the web&#8217;s existing mechanism for content negotiation.
</p>
<p>
That mechanism has, to be sure, not taken the world by storm. The most common scenario involves a browser telling a multilingual server that its user prefers to read, say, French. A <a href="http://arxiv.org/abs/0911.1112">paper</a> about Memento published last fall walks through the HTTP protocol that enables this negotiation. Odds are, though, that you&#8217;ve never seen this actually happen. It&#8217;s much more likely for a multilingual website to present itself as &#8220;a multiplication of language-specific mini-sites, instead of thinking of it as one site, with one set of URIs, only with different versions and languages available.&#8221; Wikipedia, for example, works that way.
</p>
<p>
The quote comes from a <a href="http://www.w3.org/QA/2006/02/content_negotiation.html">2006 W3C article</a>, <i>Content Negotiation: Why it is useful, and how to make it work</i>. The article blames the awkwardness of Apache&#8217;s implementation of the protocol (since corrected):
</p>
<blockquote><p>
For a long time, with the most popular negotiation-enabled Web server (the ubiquitous apache), failed negotiation (for instance, a reader of french being proposed only english and german variants of a document), resulted in a nasty &#8220;406 not acceptable&#8221; HTTP error, which, while technically conforming to HTTP, failed to follow the recommendation that a server should try to serve some resource rather than an error message, whenever possible.
</p></blockquote>
<p>
Is there any reason to suppose that time negotiation will succeed where language negotiation has so far mainly failed? That&#8217;s a hard question, and one I wish I&#8217;d thought to ask Herbert in the interview, but maybe we can continue the dialogue here.
</p>
<p>
Meanwhile, the fact that content negotiation is tricky to get right doesn&#8217;t invalidate the core of the Memento proposal. Time is fundamental, the web could have a reliable memory, and if we can build such a memory into the fabric of the web the benefits will be profound.
</p>
<p>
Examples are everywhere. Consider <a href="http://mediabugs.org">mediabugs.org</a>. Founded by Scott Rosenberg, whom I <a href="http://blog.jonudell.net/2010/03/30/talking-with-scott-rosenberg-about-say-everything-dreaming-in-code-and-mediabugs/">interviewed last week</a>, the site is dedicated to finding and fixing errors in media reports. A few days ago, the first bug was marked Closed:Corrected. The mediabugs.org <a href="http://mediabugs.org/bugs/wrong-location-for-andy-warhol-good-for-the-jews-in-ebay-express">bug page</a> initially said:
</p>
<blockquote><p>
Listing for Josh Kornbluth&#8217;s show &#8220;Andy Warhol: Good for the Jews?&#8221; says the show is at the Jewish Community Center in SF, but actually it&#8217;s at The Jewish Theater in the Theater Artaud building.</p>
<p>There&#8217;s a comment pointing out the error but it&#8217;s still showing with the wrong info on the Express home page.
</p></blockquote>
<p>
And later:
</p>
<blockquote><p>
This is fixed now!
</p></blockquote>
<p>
If you visit the <a href="http://www.eastbayexpress.com/ebx/Event?oid=1680372">original news report</a>, though, there&#8217;s no record of the correction. It&#8217;s no big deal in this particular case, but media organizations should want to be transparent about when and how they alter published items.
</p>
<p>
Likewise governments. The <a href="http://citability.org/">Citability</a> project aims to account for the history of changes made to items published on government websites. As with mediabugs.org, the approach will initially require third-parties to monitor and chronicle the changes.
</p>
<p>
The Memento idea is that media organizations, governments, and other kinds of web publishers will be accountable for their own change histories.<sup>1</sup> And they&#8217;ll do so in a standard way, so that people viewing these sites in browsers can straightforwardly say: &#8220;Show me this page as it existed on July 7, 2009.&#8221;
</p>
<p>
This is wildly ambitious, but I applaud the ambition. Every since I made the <a href="http://jonudell.net/udell/gems/umlaut/umlaut.html">Heavy Metal umlaut</a> screencast, I have imagined what it would be like to scroll back and forth along the timelines of evolving web pages. At one point Andy Baio sponsored a contest to write a script that would animate the revision history for any Wikipedia page, and I made a screencast of <a href="http://jonudell.net/udell/gems/wikiAnimate/wikiAnimate.html">Dan Phiffer&#8217;s solution</a>.
</p>
<p>
Clearly we want this. Will it be hard to arrive at a well-known and well-used standard? Sure. Is it worth doing? Absolutely.
</p>
<hr />
<p>
<sup>1</sup> Third-party watchdogs will often be needed, of course. We&#8217;d like to trust self-reported change histories, but we&#8217;d also like to verify them. Even so, third parties shouldn&#8217;t be the only mechanisms. Self-reported histories should exist.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/2378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/2378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/2378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/2378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonudell.wordpress.com/2378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonudell.wordpress.com/2378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonudell.wordpress.com/2378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonudell.wordpress.com/2378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/2378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/2378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/2378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/2378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/2378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/2378/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=2378&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2010/04/22/talking-with-herbert-van-de-sompel-about-a-web-that-remembers/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0d7c7e171fc0ad3dacc9b1ed203e3e50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonudell</media:title>
		</media:content>
	</item>
		<item>
		<title>How to create a Pivot visualization of a WordPress blog</title>
		<link>http://blog.jonudell.net/2010/04/02/how-to-create-a-pivot-visualization-of-a-wordpress-blog/</link>
		<comments>http://blog.jonudell.net/2010/04/02/how-to-create-a-pivot-visualization-of-a-wordpress-blog/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 16:45:28 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[pivot]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=2350</guid>
		<description><![CDATA[I&#8217;ve posted the Python script I used to make the Pivot visualization of this blog. I need to set it aside for now and do other things, but here&#8217;s a snapshot of the process for my future self and for anyone else who&#8217;s interested. Using deepzoom.py to create Deep Zoom images and collections I&#8217;m using [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=2350&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
I&#8217;ve posted the <a href="http://github.com/judell/wordpress2pivot">Python script</a> I used to make the <a href="http://blog.jonudell.net/2010/03/29/a-pivot-visualization-of-my-wordpress-blog/">Pivot visualization of this blog</a>. I need to set it aside for now and do other things, but here&#8217;s a snapshot of the process for my future self and for anyone else who&#8217;s interested.
</p>
<h2>Using deepzoom.py to create Deep Zoom images and collections</h2>
<p>
I&#8217;m using <a href="http://github.com/openzoom/deepzoom.py/blob/master/deepzoom.py">this Python component</a> to create Deep Zoom images and collections. I made the following changes to it:
</p>
<p>
1. <tt>tile_size=256</tt> (not <tt>254</tt>) at <a href="http://github.com/openzoom/deepzoom.py/blob/master/deepzoom.py#L59">line 59</a>, <a href="http://github.com/openzoom/deepzoom.py/blob/master/deepzoom.py#L160">line 160</a>, and <a href="http://github.com/openzoom/deepzoom.py/blob/master/deepzoom.py#L224">line 224</a>
</p>
<p>
2. <tt>source_path.name</tt> instead of <tt>source_path</tt> at <a href="http://github.com/openzoom/deepzoom.py/blob/master/deepzoom.py#L291">line 291</a>
</p>
<p>
3. <tt>destination + '.xml'</tt> instead of <tt>destination</tt> at <a href="http://github.com/openzoom/deepzoom.py/blob/master/deepzoom.py#L341">line 341</a>
</p>
<p>
Let&#8217;s assume that Python is installed, along with the Python Imaging Library, and that your current directory contains the files 001.jpg, 002.jpg, and 003.jpg:
</p>
<pre>
001.jpg
002.jpg
003.jpg
</pre>
<p>
For each image file, you could run deepzoom.py thrice from the command line, like so:
</p>
<pre>
python deepzoom.py -d 001.xml 001.jpg
python deepzoom.py -d 002.xml 002.jpg
python deepzoom.py -d 003.xml 003.jpg
</pre>
<p>
My script doesn&#8217;t actually do it that way, it enumerates JPEGs and instantiates deepzoom.py&#8217;s ImageCreator object once for each. But either way, for each JPEG you end up with a DZI (Deep Zoom Image) package that consists of (for 001.jpg):
</p>
<ul>
<li>A settings file: 001.xml</li>
<li>A subdirectory: 001_files</li>
<li>More subdirectories (named 0, 1, etc.) inside 001_files</li>
<li>JPG files inside those subdirectories</li>
</ul>
<p>
Now, in this case, the current directory looks like this (using -&gt; to mark additions):
</p>
<pre>
001.jpg
-&gt; 001.xml
-&gt; 001_files
002.jpg
-&gt; 002.xml
-&gt; 002_files
003.jpg
-&gt; 003.xml
-&gt; 003_files</span>
</pre>
<p>
To build a collection, do something like this in Python:</p>
<pre>
from deepzoom import *
images = ['001.xml','002.xml', '003.xml']
creator = CollectionCreator()
creator.create(images, 'dzc_output')
</pre>
</p>
<p><p>
Now the current directory looks like:
</p>
<pre>
001.jpg
001.xml
001_files
002.jpg
002.xml
002_files
003.jpg
003.xml
003_files
-&gt; dzc_output.xml
-&gt; dzc_output_files
</pre>
<p>
The Pivot collection&#8217;s CXML file will refer to dzc_output.xml, like so:
</p>
<pre>
&lt;Items ImgBase="dzc_output.xml"&gt;
</pre>
<h2>Using IECapt to grab screenshots</h2>
<p>
This <a href="http://iecapt.sourceforge.net/">tool</a> uses Internet Explorer, so only works on Windows. There is also <a href="http://cutycapt.sourceforge.net/">CutyCapt</a> for WebKit, which I haven&#8217;t tried but would be curious to hear about.
</p>
<p>
Here&#8217;s an example of the IECapt command line I&#8217;m using:
</p>
<p>
iecapt &#8211;url=http://blog.jonudell.net/&#8230; &#8211;delay=1000 &#8211;out=tmp.jpg
</p>
<p>
The result in most cases is a tall skinny JPEG, because it renders the whole page &#8212; which can be very long &#8212; before imaging it. When I ran it over a 600-item collection, it hung a couple of times because of JavaScript errors. So I went to Internet Options-&gt;Browsing in IE, checked <i>Disable script debugging</i>, and unchecked <i>Display a notification about every script error</i>.
</p>
<h2>Using ImageMagic to crop screenshots</h2>
<p>
Here&#8217;s a picture of an image produced by IECapt, overlaid with a rectangle marking where I want to crop:
</p>
<p>
<a href="http://jonudell.net/img/pivot-crop.png"><img style="border-color:black;border-width:thin;" width="500" src="http://jonudell.net/img/pivot-crop.png"></a>
</p>
<p>
The rectangle&#8217;s origin is at x=30 and y=180. Its width is 530 pixels, and height 500. Here&#8217;s the ImageMagick command to crop a captured image in tmp.jpg into a cropped image in 001.jpg:
</p>
<p>
convert -quality 100 -crop 530&#215;500+30+180 -border 1&#215;1 -bordercolor Black tmp.jpg 001.jpg
</p>
<p>
I&#8217;m writing this down here mainly for myself. ImageMagic can do everything under the sun, but it always takes me a while to dig up the recipe for a given operation.
</p>
<h2>Parsing the WordPress export file</h2>
<p>
I found to my surprise that WordPress currently exports invalid XML. So the script starts with a search-and-replace that looks for this:
</p>
<pre>
xmlns:wp="http://wordpress.org/export/1.0/"
</pre>
<p>
And replaces it with this:
</p>
<pre>
xmlns:wp="http://wordpress.org/export/1.0/"
xmlns:atom="http://www.w3.org/2005/Atom"
</pre>
<p>
Then it walks through the items in the Atom feed, extracting the various things that will become Pivot facets. For the description, it tries to parse the <tt>content:encoded</tt> element as XML, and find the first paragraph element within it. If that fails, it just treats the element as text and grabs the beginning of it.
</p>
<p><h2>Weaving the collection</h2>
</p>
<p>
There are two control files that need to be synchronized. First, there&#8217;s dzc_output.xml, for the Deep Zoom collection. It has elements like this:
</p>
<p>
&lt;I Id=&#8221;596&#8243; N=&#8221;596&#8243; Source=&#8221;2245.xml&#8221;&gt;
</p>
<p>
Then there&#8217;s pivot.cxml which drives the visualization. It has elements like this:
</p>
<pre>
&lt;Item Id="596" Img="#596"
  Name="Freebase Gridworks: A power tool for data scrubbers"
  Href="http://blog.jonudell.net/2010/03/26/...
&lt;Description&gt;&lt;![CDATA[
I've had many conversations with Stefano Mazzocchi and David Huynh [1, 2, 3]
about the data magic they performed at MIT's Project Simile and now perform
at Metaweb. If you're somebody who values clean data and has wrestled with
the dirty stuff, these screencasts about a forthcoming product called
Freebase Gridworks will make you weep with joy.
]]&gt;&lt;/Description&gt;
&lt;Facets&gt;
  &lt;Facet Name="date"&gt;
    &lt;DateTime Value="2010-03-26T00:00:00-00:00" /&gt;
  &lt;/Facet&gt;
&lt;Facet Name="tag"&gt;
&lt;String Value="freebase" /&gt;
&lt;String Value="gridworks" /&gt;
&lt;String Value="metaweb" /&gt;
&lt;/Facet&gt;
  &lt;Facet Name="comments"&gt;
    &lt;Number Value="24" /&gt;
  &lt;/Facet&gt;
&lt;/Facets&gt;
&lt;/Item&gt;
</pre>
<p>
In this example, <tt>Source="2245.xml"</tt> in dzc_output.xml refers to a Deep Zoom image whose name comes from the WordPress post_id for that entry, which is:
</p>
<p>
&lt;wp:post_id&gt;2245&lt;/wp:post_id&gt;
</p>
<p>
But <tt>Id="596"</tt>, which is the connection between dzc_output.xml and pivot.cxml, comes from a counter in the script that increments for each item processed. I don&#8217;t know why the numbering of items in the WordPress export file is sparse, but it is, hence the difference.
</p>
<h2>Things to do</h2>
<p>
Here are some ideas for next steps.
</p>
<p>
1. Check the comment logic. I just noticed the counts seem odd. Maybe because I&#8217;m counting all comments instead of approved comments?
</p>
<p>
2. Use HTML Tidy to ensure that item content will parse as XML, and then count various kinds of elements within it: tables, images, etc.
</p>
<p>
2. Use APIs of various services &#8212; Twitter, bit.ly, etc. &#8212; to count reactions to each item.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/2350/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/2350/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/2350/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/2350/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonudell.wordpress.com/2350/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonudell.wordpress.com/2350/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonudell.wordpress.com/2350/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonudell.wordpress.com/2350/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/2350/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/2350/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/2350/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/2350/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/2350/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/2350/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=2350&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2010/04/02/how-to-create-a-pivot-visualization-of-a-wordpress-blog/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0d7c7e171fc0ad3dacc9b1ed203e3e50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonudell</media:title>
		</media:content>

		<media:content url="http://jonudell.net/img/pivot-crop.png" medium="image" />
	</item>
		<item>
		<title>Freebase Gridworks: A power tool for data scrubbers</title>
		<link>http://blog.jonudell.net/2010/03/26/freebase-gridworks-a-power-tool-for-data-scrubbers/</link>
		<comments>http://blog.jonudell.net/2010/03/26/freebase-gridworks-a-power-tool-for-data-scrubbers/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 13:55:42 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[freebase]]></category>
		<category><![CDATA[gridworks]]></category>
		<category><![CDATA[metaweb]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=2245</guid>
		<description><![CDATA[I&#8217;ve had many conversations with Stefano Mazzocchi and David Huynh [1, 2, 3] about the data magic they performed at MIT&#8217;s Project Simile and now perform at Metaweb. If you&#8217;re somebody who values clean data and has wrestled with the dirty stuff, these screencasts about a forthcoming product called Freebase Gridworks will make you weep [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=2245&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
I&#8217;ve had many conversations with Stefano Mazzocchi and David Huynh [<a href="http://blog.jonudell.net/2009/09/28/talking-with-stefano-mazzocchi-about-reconciling-web-naming-systems/">1</a>, <a href="http://blog.jonudell.net/2008/08/25/motivating-people-to-write-the-semantic-web-a-conversation-with-david-huynh-about-parallax/">2</a>, <a href="http://blog.jonudell.net/2007/12/06/simile-semantic-web-mashups-for-the-rest-of-us/">3</a>] about the data magic they performed at MIT&#8217;s Project Simile and now perform at Metaweb. If you&#8217;re somebody who values clean data and has wrestled with the dirty stuff, these screencasts about a forthcoming product called Freebase Gridworks will make you weep with joy.
</p>
<p>
There&#8217;s <a href="http://vimeo.com/10081183">one by David</a>, and another by <a href="http://vimeo.com/10287824">Stefano</a>. Using common public datasets about food, international disasters, and US government contracts, they fly through a series of transformations that:
</p>
<ul>
<p>
<li>Merge similar names using a host of methods:</p>
<ul>
<li>Automatic title-casing</li>
<li>A rich expression language</li>
<li>Analysis of &#8220;edit distance&#8221; between similar phrases, using several clustering algorithms</li>
<li></li>
</ul>
</li>
<p>
<li>Split multi-valued facets</li>
</p>
<p>
<li>Create new facets (e.g., a year column from a data column)</li>
</p>
<p>
<li>Morph linear scales to log scales where appropriate</li>
</p>
</ul>
<p>
It&#8217;s all live, undoable, and fully instrumented, by which I mean that every transformation updates the counts of the values in each facet, and displays histograms of the new distribution of values &#8212; along with sliders for selecting and focusing on subsets.
</p>
<p>
As the open data juggernaut picks up steam, a lot of folks are going to discover what some of us have known all along. Much of the data that&#8217;s lying around is a mess. That&#8217;s partly because nobody has ever really looked at it. As a new wave of visualization tools arrives, there will be more eyeballs on more data, and that&#8217;s a great thing. But we&#8217;ll also need to be able to lay hands on the data and clean up the messes we can begin to see. As we do, we&#8217;ll want to be using tools that do the kinds of things shown in the Gridworks screencasts.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/2245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/2245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/2245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/2245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonudell.wordpress.com/2245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonudell.wordpress.com/2245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonudell.wordpress.com/2245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonudell.wordpress.com/2245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/2245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/2245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/2245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/2245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/2245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/2245/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=2245&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2010/03/26/freebase-gridworks-a-power-tool-for-data-scrubbers/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0d7c7e171fc0ad3dacc9b1ed203e3e50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonudell</media:title>
		</media:content>
	</item>
		<item>
		<title>Upcoming talk at Kynetx Impact</title>
		<link>http://blog.jonudell.net/2010/02/25/upcoming-talk-at-kynetx-impact/</link>
		<comments>http://blog.jonudell.net/2010/02/25/upcoming-talk-at-kynetx-impact/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 18:25:59 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=2163</guid>
		<description><![CDATA[As Phil Windley mentioned the other day, I&#8217;ll be speaking at the Kynetx Impact conference, April 27-28 in Salt Lake City. Last year I interviewed Phil about what Kynetx does. It&#8217;s hard to boil it down to an elevator pitch without examples, so here&#8217;s one that came up today: Scott Hanselman&#8217;s Put Missing Kids on [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=2163&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
As Phil Windley <a href="http://www.windley.com/archives/2010/02/jon_udell_to_speak_at_spring_kynetx_impact_conference.shtml">mentioned the other day</a>, I&#8217;ll be speaking at the <a href="http://kynetximpactspring2010.eventbrite.com/">Kynetx Impact</a> conference, April 27-28 in Salt Lake City. Last year I <a href="http://blog.jonudell.net/2009/03/23/a-conversation-with-phil-windley-about-contextualized-browsing/">interviewed Phil</a> about what Kynetx does. It&#8217;s hard to boil it down to an elevator pitch without examples, so here&#8217;s one that came up today: Scott Hanselman&#8217;s <a href="http://www.hanselman.com/blog/PutMissingKidsOnYour404PageEntirelyClientSideSolutionWithYQLJQueryAndMSAjax.aspx">Put Missing Kids on your 404 Page</a> application.
</p>
<p>
Inspired by a <a href="http://tech.bluesmoon.info/2010/02/missing-kids-on-your-404-page.html">PHP solution to the problem</a>, Scott set out to replicate it for ASP.NET.
</p>
<blockquote>
<p>
But then I realized that a server-side solution wasn&#8217;t really necessary.
</p>
<p>
Could I do it all on the client side? This way anyone could add this feature to their site, regardless of their server-side choice.
</p>
</blockquote>
<p>
One next step, as Scott points out, is to add geolocation so the list of kids you see will be more relevant to you. But there are lots of ways to contextualize that list based on aspects of your identity. And this is what Kynetx applications do: Contextualize your experience of the web based on aspects of your identity.
</p>
<p>
My own interest in this idea dates back to the <a href="http://jonudell.net/LibraryLookup.html">LibraryLookup project</a>, which was an early demonstration of the power of client-driven contextualization. It evolved from a bookmarklet to a browser plug-in, but then stalled there for lack of a ubiquitous client-side technology.
</p>
<p>
Now there is: jQuery. What Scott&#8217;s example shows, as do all Kynetx applications, is that we&#8217;re ready to make clients more equal partners in the dance of the web. Among other things, this possibility raises horny issues about the control of content &#8212; issues that I explored in a <a href="http://jonudell.net/udell/gems/intermediation/intermediation.html">2005 screencast</a>.
</p>
<p>
But there&#8217;s also a deep connection between Phil&#8217;s work and the ongoing saga of digital identity. Phil <a href="http://www.worldcat.org/title/digital-identity/oclc/61266094">wrote a book</a> on that subject, and has been a key organizer of the <a href="http://www.internetidentityworkshop.com/">Internet Identity Workshop</a>. When he started Kynetx he wasn&#8217;t really thinking about a tie-in to Information Cards and the identity metasystem. But the connection emerged organically.
</p>
<p>
In a Kynetx-enhanced version of the Missing Kids 404 Page application, your browser would present selected aspects of your identity to the services that provide the data, and a Kynetx application would personalize that data in ways meaningful to you.
</p>
<p>
The Internet began as a network of peers. That arrangement didn&#8217;t last long, and there have been several efforts to restore the original symmetry. In the early 2000s, during Napster&#8217;s heyday, there was a flurry of interest in peer-to-peer architectures. Thanks to today&#8217;s more capable and more standardized browsers, we&#8217;re seeing a new wave of interest. I&#8217;m looking foward to hanging out at the Kynetx conference and meeting folks who are riding that wave.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/2163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/2163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/2163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/2163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonudell.wordpress.com/2163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonudell.wordpress.com/2163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonudell.wordpress.com/2163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonudell.wordpress.com/2163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/2163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/2163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/2163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/2163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/2163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/2163/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=2163&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2010/02/25/upcoming-talk-at-kynetx-impact/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0d7c7e171fc0ad3dacc9b1ed203e3e50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonudell</media:title>
		</media:content>
	</item>
		<item>
		<title>Shiny new uses for familiar old things</title>
		<link>http://blog.jonudell.net/2010/02/11/shiny-new-uses-for-familiar-old-things/</link>
		<comments>http://blog.jonudell.net/2010/02/11/shiny-new-uses-for-familiar-old-things/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 21:01:20 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[knightfoundation]]></category>
		<category><![CDATA[shinynewthing]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=2132</guid>
		<description><![CDATA[Last year I applied for a grant from a philanthropic group, the Knight Foundation, that wants to save journalism by funding the development of new technological methods. I was conflicted about applying because the project I put forward is already well supported by my employer, Microsoft. But since my proposal was to redistribute all of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=2132&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
Last year I applied for a grant from a philanthropic group, the <a href="http://www.newschallenge.org/">Knight Foundation</a>, that wants to save journalism by funding the development of new technological methods. I was conflicted about applying because the <a href="http://elmcity.cloudapp.net">project</a> I put forward is already well supported by my employer, Microsoft. But since my proposal was to redistribute all of the grant, as a way of exploring an idea about improving the flow of information in communities, I thought it was fair to give it a shot.</p>
<p>
My proposal advanced to the final round and was then rejected. Given my initial ambivalence I was OK with that. But the stated rationale has been bugging me ever since. The letter said:
</p>
<blockquote>
<p>
Because there are thousands of proposals and only a few of them advance, we are able to choose only the most innovative ideas. These are new kinds of technologies or techniques, usually things we have never heard of before.
</p>
</blockquote>
<p>
The meme woven into that paragraph has a name: <a href="http://elmcity.info/doublesearch/?q=%22shiny+new+thing%22">Shiny New Thing</a> syndrome. It is a plague. Technology journalism feeds it. Thought leaders, including <a href="http://www.evilgeniuschronicles.org/wordpress/2007/07/17/why-i-dropped-scoble-and-seceded-from-the-hunt-for-newer-shinier-things/">Dave Slusher</a>, <a href="http://jeremy.zawodny.com/blog/archives/009248.html">Jeremy Zawodny</a>, and <a href="http://www.codinghorror.com/blog/archives/000916.html">Jeff Atwood</a>, have denounced it.
</p>
<p>
I&#8217;m clearly biased, since all my best work involves creative remixing of ideas and technologies that are as common as dirt. But I do wonder about the harm that&#8217;s done when we equate innovation with shiny new things.
</p>
<p>
Old things are full of latent value that we&#8217;ve yet to discover and unlock. Why? It takes a <i>long</i> time for real understanding to sink in. In Net infrastructure, consider how long it&#8217;s taken us to grok what HTTP, REST, HTML, and JavaScript really are and can do. In education, look at the high-value uses that <a href="http://blog.jonudell.net/2010/02/01/talking-with-sal-khan-about-youtube-tutoring-as-guerilla-public-service/">Sal Khan</a> and <a href="http://blog.mrmeyer.com/?p=5633">Dan Meyer</a> find for low-tech screencasting and blogging tools. In journalism and civic life, read what Alan Rusbridger says about Will Perrin&#8217;s compelling &#8212; and yet so last-century &#8212; use of Typepad to <a href="http://talkaboutlocal.org/2010/01/25/cudlipp/">activate communities</a>.
</p>
<p>
Well, I try to do my part. On my show, which is called <a href="http://itc.conversationsnetwork.org/series/innovators.html">Interviews with Innovators</a>, I feature people who are more likely to be evolutionary repurposers than revolutionary creators. Maybe I should rename the show Shiny Old Things.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/2132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/2132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/2132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/2132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonudell.wordpress.com/2132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonudell.wordpress.com/2132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonudell.wordpress.com/2132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonudell.wordpress.com/2132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/2132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/2132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/2132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/2132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/2132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/2132/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=2132&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2010/02/11/shiny-new-uses-for-familiar-old-things/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0d7c7e171fc0ad3dacc9b1ed203e3e50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonudell</media:title>
		</media:content>
	</item>
		<item>
		<title>Talking with Sal Khan about YouTube tutoring as guerilla public service</title>
		<link>http://blog.jonudell.net/2010/02/01/talking-with-sal-khan-about-youtube-tutoring-as-guerilla-public-service/</link>
		<comments>http://blog.jonudell.net/2010/02/01/talking-with-sal-khan-about-youtube-tutoring-as-guerilla-public-service/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 15:07:06 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[salkhan]]></category>
		<category><![CDATA[screencasts]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=2113</guid>
		<description><![CDATA[My guest for this week&#8217;s Innovators show is Sal Khan. He&#8217;s the creator of http://khanacademy.org, a catalog of more than 1000 YouTube video lessons in math, physics, biology, chemistry, and economics. All of these videos are made by Sal himself, in an engagingly personal style, using simple screencasting tools. When I first got interested in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=2113&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
My guest for this week&#8217;s <a href="http://itc.conversationsnetwork.org/shows/detail4386.html">Innovators show</a> is Sal Khan. He&#8217;s the creator of <a href="http://khanacademy.org">http://khanacademy.org</a>, a catalog of more than 1000 YouTube video lessons in math, physics, biology, chemistry, and economics. All of these videos are made by Sal himself, in an engagingly personal style, using simple screencasting tools.
</p>
<p>
When I first got interested in screencasting, I envisioned the medium not only as a way to demonstrate software, but also as a way to share knowledge at Internet scale. Sal&#8217;s work fulfills that vision, and points the way toward a profound and much-needed disruption of our educational system.
</p>
<p>
At its core, Sal&#8217;s project isn&#8217;t about YouTube screencasts. It&#8217;s about intuition.
</p>
<blockquote>
<p>
I always got frustrated by what went on in the classroom. You see otherwise intelligent peers memorizing facts and not really caring about the actual intuition. And because they didn&#8217;t care about the intution in their junior year, when that same idea pops up in senior year, it&#8217;s like they&#8217;ve never seen it before. It boggled my mind. You&#8217;re just relabeling the same concept over and over.
</p>
</blockquote>
<p>
Sal cares about the intuition, and he wants others to care about the intution too. The first beneficiary of that desire was his cousin Nadia, whom he tutored remotely. Then followed other cousins and family friends. Then it dawned on him that there were no limits. The project could scale out. He could become a superempowered individual, reaching anyone who finds value in his method.
</p>
<p>
One of the key ingredients of that method is improvisation. These videos aren&#8217;t carefully planned, and they aren&#8217;t edited. As a viewer, you find yourself looking over the shoulder of a smart and broadly knowledgeable person who is solving problems by thinking on his feet. You watch a practitioner at work: engaged with his medium, wrestling with his tools, correcting false starts.
</p>
<p>
It was Chris Gemignani who first showed me the value of this approach, in a screencast that teaches how to do <a href="http://www.juiceanalytics.com/writing/recreating-ny-times-cancer-graph/">unexpectedly powerful and elegant Excel charting</a>. He did it in one take. I&#8217;d have been tempted to edit out the false starts. But Chris knew better. Learning how a practitioner really thinks about solving a problem is even more valuable than learning the solution to the problem.
</p>
<p>
One thing that Sal&#8217;s lessons can&#8217;t be, of course, is interactive. Nor does he pretend that these videos will make teachers obsolete. But he does suggest, and I violently agree, that teachers can and should become curators of online assets like the ones Sal is creating, and should know when and how to weave those assets into their classes.
</p>
<p>
Teachers should also become connectors. Sal won&#8217;t be the only game in town. Other superempowered tutors will emerge. Each will have a unique style. For a given student, a given subject, and a given problem, one or another of those styles may be right. The best teachers will know their own strengths and limitations, will know which online tutors complement their strengths in a variety of ways, and will connect their students with those tutors.
</p>
<p>
Sal Khan is on fire. He burns with a passion to share his intuitions with anyone and everyone. It is a beautiful thing to see. He has abandoned a lucrative career in finance to do this fulltime, and I am quite sure he will find a way to keep doing it.
</p>
<hr />
<p>
PS: The title of this piece refers to Richard Ankrom&#8217;s <a href="http://ankrom.org/freeway_signs.html">Los Angeles freeway project</a>. At a busy intersection, millions of motorists have been directed to North 5 by a sign that Caltrans omitted. Ankrom created and installed that missing sign.
</p>
<p>
PPS: I wrote to my son&#8217;s math teacher about Sal Khan. She replied: &#8220;Thanks for that link to the Khan Academy. I was overwhelmed by how many video lessons he has! He does seem like an inspiring man. Unfortunately, You Tube is blocked here at the high school.&#8221;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/2113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/2113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/2113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/2113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonudell.wordpress.com/2113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonudell.wordpress.com/2113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonudell.wordpress.com/2113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonudell.wordpress.com/2113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/2113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/2113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/2113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/2113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/2113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/2113/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=2113&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2010/02/01/talking-with-sal-khan-about-youtube-tutoring-as-guerilla-public-service/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0d7c7e171fc0ad3dacc9b1ed203e3e50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonudell</media:title>
		</media:content>
	</item>
		<item>
		<title>Magic glasses and magic projectors: Private versus public augmentation of experience</title>
		<link>http://blog.jonudell.net/2009/10/08/magic-glasses-and-magic-projectors-private-versus-public-augmentation-of-experience/</link>
		<comments>http://blog.jonudell.net/2009/10/08/magic-glasses-and-magic-projectors-private-versus-public-augmentation-of-experience/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 15:01:57 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=1929</guid>
		<description><![CDATA[At its core, your browser is powered by an engine called the Document Object Model, hereafter DOM. You can think of the DOM as an outline, and the browser as an outline processor that shows and hides things, displays things in different ways, and even adds, removes, or rearranges things. Nowadays what you see, when [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=1929&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
At its core, your browser is powered by an engine called the Document Object Model, hereafter DOM. You can think of the DOM as an outline, and the browser as an outline processor that shows and hides things, displays things in different ways, and even adds, removes, or rearranges things. Nowadays what you see, when you view a web page, is the result of a complex interaction between data and code. The data is the HTML content of the page, and the code is its JavaScript behavior. But these are slippery terms. A lot of content never originates as HTML, but is instead produced dynamically &#8212; by a web server, but also quite possibly in the browser as it manipulates the DOM. And a lot of behavior happens opportunistically in response to content on the page.
</p>
<p>
This arrangement has radical implications. For example, back in 2002 I invented <a href="http://jonudell.net/LibraryLookup.html">LibraryLookup</a>, a bookmarklet that noticed when you were visiting an Amazon or Barnes and Noble book page and offered a one-click search for that book in your local library. A few years later, a Firefox extension called <a href="https://addons.mozilla.org/en-US/firefox/addon/748">Greasemonkey</a> arrived on the scene. It offered two capabilities that, working together, enabled a zero-click LibraryLookup. First, it could call out to a web service. Second, it could modify the DOM based on the response. Putting these two things together, I wrote a <a href="http://jonudell.net/udell/2006-01-30-further-adventures-in-lightweight-service-composition.html">script</a> that would notice that you were visiting an Amazon book page, check to see if the book was available at your local library, and if so, insert a paragraph into the DOM that said: &#8220;Hey, it&#8217;s available at the [YOUR LIBRARY NAME] library!&#8221;
</p>
<p>
Is this kosher? I think so, but it&#8217;s a tricky question. At the time I made <a href="http://jonudell.net/udell/gems/intermediation/intermediation.html">a short screencast</a> that reflected on questions of ownership and fair use in an environment that&#8217;s designed and built to support intermediation and remixing. These questions were still largely hypothetical, though, because Firefox users who had also installed Greasemonkey were a very small number indeed.
</p>
<p>
But now, thanks to modern browser-independent JavaScript libraries like jQuery, those hypothetical questions are becoming very real. Here&#8217;s Phil Windley demonstrating his 2009 version of LibraryLookup:
</p>
<p>
<a href="http://www.youtube.com/watch?v=MMPxLu_foiQ"><img src="http://jonudell.net/img/library-lookup-kynetx.png"></a>
</p>
<p>
The example comes from Phil&#8217;s recent essay <a href="http://www.windley.com/archives/2009/09/the_forgotten_edge_and_the_purposecentric_web.shtml">The Forgotten Edge: Building a Purpose-Centric Web</a>, which makes the case for contextualized browsing as enabled by libraries like jQuery and by infrastructure like that provided by Phil&#8217;s company, <a href="http://kynetx.com">Kynetx</a>.
</p>
<p>
In Phil&#8217;s next blog item, <a href="http://www.windley.com/archives/2009/09/claiming_my_right_to_a_purposecentric_web_sidewiki.shtml#comments">Claiming My Right to a Purpose-Centric Web: SideWiki</a>, he asserts:
</p>
<blockquote><p>
I claim the right to mash-up, remix, annotate, augment, and otherwise modify Web content for my purposes in my browser using any tool I choose and I extend to everyone else that same privilege.
</p></blockquote>
<p>
That item grew a long tail of comments. It includes some interesting back-and-forth between Phil Windley and Dave Winer, but I want to focus on this observation from <a href="http://yardley.ca/about/">Greg Yardley</a>:
</p>
<blockquote>
<p>
Sites also generally come with a contract attached &#8211; some implicit (the view-through), some explicit (the click-through) &#8211; and these contracts, done correctly, are generally enforceable.
</p>
<p>
This whole post mystifies me, because you don&#8217;t have the the right to mash-up, remix, annotate, augment, and otherwise modify Web content &#8211; it&#8217;s not your content.
</p>
</blockquote>
<p>
Earlier in the thread, <a href="http://irgupf.com/about/">Jeremy Pickens</a> cited an example of such a contract: Google&#8217;s terms of service:
</p>
<blockquote>
<p>
8.2 You should be aware that Content presented to you as part of the Services, including but not limited to advertisements in the Services and sponsored Content within the Services may be protected by intellectual property rights which are owned by the sponsors or advertisers who provide that Content to Google (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this Content (either in whole or in part) unless you have been specifically told that you may do so by Google or by the owners of that Content, in a separate agreement.
</p>
</blockquote>
<p>
In response to Greg Yardley, <a href="http://www.loosingsite.com/">Phil Rees</a> cites fair use:
</p>
<blockquote>
<p>
Actually we do have those rights.
</p>
<p>http://www.law.cornell.edu/uscode/17/107.html</p>
</blockquote>
<p>
I believe so too. Sooner or later, that belief will be tested.
</p>
<p>
After my <a href="http://itc.conversationsnetwork.org/shows/detail4047.html">March interview with Phil about Kynetx</a>, I <a href="http://blog.jonudell.net/2009/03/23/a-conversation-with-phil-windley-about-contextualized-browsing/">wrote</a>:
</p>
<blockquote>
<p>
There&#8217;s a continuum of ways in which I can modify a web page in a browser, ranging from font enlargement to translation to contexual overlays. I wouldn&#8217;t draw a line anywhere along that continuum. It seems to me that I&#8217;m entitled to view the world through any lens I choose.
</p>
<p>
This doesn&#8217;t only apply to my view of the virtual world, by the way. It will apply to my view of the physical world too. We don&#8217;t yet have magic glasses that overlay web prices on shelf items, or web reputations on store signage, but someday we will.
</p>
<p>
I can&#8217;t see how I could be prevented from creating a heads-up display &#8212; for realspace or cyberspace &#8212; that&#8217;s advantageous to me. But I&#8217;ve got a hunch that those magic glasses are going to be controversial.
</p>
</blockquote>
<p>
I wonder if it&#8217;s going to boil down to magic glasses versus magic projectors. Or, in other words, private versus public augmentation of our experiences of the virtual and real worlds. I can wear my magic glasses, but I can&#8217;t necessarily project the view that I&#8217;m seeing.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/1929/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/1929/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/1929/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/1929/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonudell.wordpress.com/1929/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonudell.wordpress.com/1929/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonudell.wordpress.com/1929/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonudell.wordpress.com/1929/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/1929/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/1929/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/1929/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/1929/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/1929/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/1929/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=1929&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2009/10/08/magic-glasses-and-magic-projectors-private-versus-public-augmentation-of-experience/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0d7c7e171fc0ad3dacc9b1ed203e3e50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonudell</media:title>
		</media:content>

		<media:content url="http://jonudell.net/img/library-lookup-kynetx.png" medium="image" />
	</item>
		<item>
		<title>Talking with Peter O&#8217;Toole about gathering clinical data and sharing medical knowledge</title>
		<link>http://blog.jonudell.net/2009/07/15/talking-with-peter-otoole-about-gathering-clinical-data-and-sharing-medical-knowledge/</link>
		<comments>http://blog.jonudell.net/2009/07/15/talking-with-peter-otoole-about-gathering-clinical-data-and-sharing-medical-knowledge/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 14:14:31 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[expertsystems]]></category>
		<category><![CDATA[healthcare]]></category>
		<category><![CDATA[mtuitive]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=1786</guid>
		<description><![CDATA[My guest for this week&#8217;s Innovators show is Peter O&#8217;Toole from mTuitive, a company whose authoring toolkit for clinical data collection I featured in a 2006 screencast. mTuitive is working at the intersection of a number of disciplines that all need to come together to deliver cheaper and better health care. First, usability. Designing clinical [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=1786&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
My guest for this week&#8217;s <a href="http://itc.conversationsnetwork.org/shows/detail4174.html">Innovators show</a> is Peter O&#8217;Toole from <a href="http://www.mtuitive.com/">mTuitive</a>, a company whose <a href="http://mtuitive.com/Authoring.htm">authoring toolkit</a> for clinical data collection I featured in a <a href="http://jonudell.net/udell/2006-07-31-the-screening-room-7-mtuitive-mentat-and-the-tao-of-expert-systems.html">2006 screencast</a>. mTuitive is working at the intersection of a number of disciplines that all need to come together to deliver cheaper and better health care.
</p>
<p>
First, usability. Designing clinical data gathering systems that capture what&#8217;s right for the patient, along with what&#8217;s mandated by the insurance company, requires a careful balancing of constraints and freedom in software user interfaces.
</p>
<p>
Second, knowledge engineering. Clinical systems don&#8217;t merely record data, they embody medical protocols that reflect an ever-changing consensus about methods and best practices. mTuitive&#8217;s authoring system aims to enable leading practioners to encode that knowledge in ways that can then guide others. But knowledge grows at the edge as well as at the center. So mTuitive also enables practitioners to extend and modify the software, injecting local knowledge and custom. Who owns this knowledge? Who&#8217;s liable for the consequences of its use? These are some of the implications we discussed.
</p>
<p>
Third, semantics. Electronic medical records are still mainly narrative in form, says Peter O&#8217;Toole. But we&#8217;re moving toward more computable ways of describing observations about, say, the nature and size of tumors.
</p>
<p>
Fourth, social software. My hunch, and Peter O&#8217;Toole&#8217;s too, is that progress toward the nirvana of medical records that are both semantically rich and interoperable will be powered by a two-stroke engine. One stroke of the piston will be driven by centrally-defined standards and centrally-imposed legislation. But the other will be driven by networked collaboration, at the edge, among doctors who pool and codify their experiential knowledge using ad-hoc, Web 2.0-like methods.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/1786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/1786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/1786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/1786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonudell.wordpress.com/1786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonudell.wordpress.com/1786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonudell.wordpress.com/1786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonudell.wordpress.com/1786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/1786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/1786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/1786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/1786/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/1786/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/1786/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=1786&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2009/07/15/talking-with-peter-otoole-about-gathering-clinical-data-and-sharing-medical-knowledge/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0d7c7e171fc0ad3dacc9b1ed203e3e50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonudell</media:title>
		</media:content>
	</item>
		<item>
		<title>Replaying history</title>
		<link>http://blog.jonudell.net/2009/06/08/replaying-history/</link>
		<comments>http://blog.jonudell.net/2009/06/08/replaying-history/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 18:19:30 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=1583</guid>
		<description><![CDATA[In his writeup on Google Wave, Dare Obasanjo says: I&#8217;m sure there are thousands of Web developers out there right now asking themselves &#8220;would my app be better if users could see each others&#8217; edits in real time?&#8221;,&#8221;should we add a playback feature to our service as well&#8221; [ed note - wikipedia could really use [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=1583&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
In his <a href="http://www.25hoursaday.com/weblog/2009/06/04/DevelopersOnGoogleWave.aspx">writeup</a> on Google Wave, Dare Obasanjo says:
</p>
<blockquote><p>
I&#8217;m sure there are thousands of Web developers out there right now asking themselves &#8220;would my app be better if users could see each others&#8217; edits in real time?&#8221;,&#8221;should we add a playback feature to our service as well&#8221; [ed note - wikipedia could really use this] and &#8220;why don&#8217;t we support seamless drag and drop in our application?&#8221;. All inspired by their exposure to Google Wave.
</p></blockquote>
<p>
Indeed, every application that preserves a change history needs playback. Wikipedia, as Dare notes, is a prime candidate. Back in 2006, I made this LazyWeb request:
</p>
<blockquote><p>
Animation is the best way to visualize the flow of change, as I discovered when I made my <a href="http://jonudell.net/udell/gems/umlaut/umlaut.html">Wikipedia screencast</a>. For Wikipedia, and indeed for all kinds of living documents supported by revision history and diff tools, I can imagine being able to isolate a paragraph or section and autogenerate the screencast of its evolution. I can even imagine the content of such visualizations being considered not just cutting-room floor debris but, rather, part of the &#8220;real&#8221; document, like footnotes.
</p></blockquote>
<p>
Andy Baio responded by sponsoring a <a href="http://waxy.org/2005/06/automating_wiki/">contest</a> for a tool that would do just that. And I made a <a href="http://jonudell.net/udell/gems/wikiAnimate/wikiAnimate.html">screencast</a> demonstrating Dan Phiffer&#8217;s <a href="http://phiffer.org/projects/wikipedia-animate/">winning entry</a>.
</p>
<p>
That script is unavailable at the moment because, ironically, Dan&#8217;s server reports:
</p>
<blockquote><p>
Oh noes! I got HACK*D. I&#8217;m sifting through my files and should restore things back to normal soon.
</p></blockquote>
<p>
In any case, it probably wasn&#8217;t practical for routine use. Fetching every revision on the fly really hammers Wikipedia. What&#8217;s really needed &#8212; again, not just for Wikipedia but everywhere &#8212; is a general way to query change history, and return a stream of versions and differences.
</p>
<p>
One way of doing the latter would be to use <a href="http://en.wikipedia.org/wiki/FeedSync">FeedSync</a>, an open extension to RSS/Atom that supports synchronization in Live Mesh. Another would be to use Google&#8217;s <a href="http://www.waveprotocol.org/draft-protocol-spec">Wave protocol</a>. Because FeedSync deals with lists of items, which can be arbitrary chunks of content, whereas Wave deals with lists of document-mutation operations, like <i>delete-element</i> and <i>start-annotation</i>, it seems to me that FeedSync is more general, albeit less immediately useful for collaborative editing.
</p>
<p>
To explain why generality matters, consider change animation in a very different domain: software configuration. My wife, for example, sometimes changes her settings &#8212; in Word or Firefox &#8212; in ways that cause problems. If these apps persisted their settings to Live Mesh, as they could and arguably should, I&#8217;d be able to debug a mishap locally or remotely. But ideally, the change visualization would be sufficiently user-friendly so that she&#8217;d have a shot at figuring it out for herself.
</p>
<hr />
<p>
PS: Speaking of history and restoration, I&#8217;ve been feeling like an amnesiac ever since my InfoWorld archive went dark. So in spare moments I&#8217;ve been reconstructing and republishing it. I&#8217;ll have the text of all the old blog entries up soon. And I&#8217;ve been restoring the screencasts as well. I&#8217;m keeping track of my progress at <a href="http://delicious.com/judell/screencast+restored">delicious.com/judell/screencast+restored</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/1583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/1583/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/1583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/1583/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonudell.wordpress.com/1583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonudell.wordpress.com/1583/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonudell.wordpress.com/1583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonudell.wordpress.com/1583/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/1583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/1583/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/1583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/1583/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/1583/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/1583/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=1583&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2009/06/08/replaying-history/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0d7c7e171fc0ad3dacc9b1ed203e3e50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonudell</media:title>
		</media:content>
	</item>
		<item>
		<title>A conversation with Phil Windley about contextualized browsing</title>
		<link>http://blog.jonudell.net/2009/03/23/a-conversation-with-phil-windley-about-contextualized-browsing/</link>
		<comments>http://blog.jonudell.net/2009/03/23/a-conversation-with-phil-windley-about-contextualized-browsing/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 17:19:56 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=1287</guid>
		<description><![CDATA[This week&#8217;s Innovators show has the lowdown on Phil Windley&#8216;s new company, Kynetx. The first application of the Kynetx technology is Azigo&#8217;s RemindMe service. It alters search-results pages to highlight cases where the user has &#8212; but would likely have forgotten about &#8212; a discount-qualifying membership. There are a number of moving parts in this [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=1287&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
This week&#8217;s <a href="http://itc.conversationsnetwork.org/shows/detail4047.html">Innovators show</a> has the lowdown on <a href="http://www.windley.com/">Phil Windley</a>&#8216;s new company, <a href="http://www.kynetx.com/">Kynetx</a>. The first  application of the Kynetx technology is Azigo&#8217;s <a href="http://www.azigo.com/remindme/">RemindMe</a> service. It alters search-results pages to highlight cases where the user has &#8212; but would likely have forgotten about &#8212; a discount-qualifying membership.
</p>
<p>
There are a number of moving parts in this scenario. On the back end, Kynetx provides a rules engine that decides how to rewrite a page based on the context of the user&#8217;s &#8220;web episode&#8221; and the user&#8217;s membership in an organization like AAA. Membership is asserted by an Information Card that the user installs, then presents on request to a browser extension. It asks the Kynetx service for a chunk of page-modifying JavaScript, then runs that code locally to effect the change specified by the rule.
</p>
<p>
If you&#8217;ve followed the Internet identity saga &#8212; a story that Phil has helped to write, as author of <a href="http://www.worldcat.org/oclc/61266094">a book on digital identity</a> and as an organizer of the <a href="http://www.internetidentityworkshop.com">Internet Identity Workshop</a> &#8212; you&#8217;ll be thrilled to see that the Kynetx system is responsible for the minting and real-word use of Information Cards. As Phil explains in this interview, the cards as currently used convey no extra information, they merely signify membership. Still, it&#8217;s great to see this key technology finally percolate out into the mainstream.
</p>
<p>
Kynetx will mainly serve companies that want to solidify and enhance high-value relationships with customers by means of &#8220;permission-based context management.&#8221;  Refreshingly, the <a href="http://wiki.kynetx.com/pages/KNS_Anti-Lexicon">Kynetx wiki</a> qualifies that definition in a way that will make Doc Searls smile:
</p>
<blockquote>
<p>The following anti-lexicon contains words and concepts that Kynetx doesn&#8217;t use:
</p>
<ul>
<li> <b>exploit</b> &#8211; while opportunities might be exploited, people never should be.
</li>
</ul>
<ul>
<li> <b>eyeballs</b> &#8211; we&#8217;re not doing optometry
</li>
</ul>
<ul>
<li> <b>target</b> &#8211; you target enemies, not customers.
</li>
</ul>
</blockquote>
<p>
Near the end of the interview, Phil refers explicitly to Doc&#8217;s <a href="http://cyber.law.harvard.edu/projectvrm/">VRM</a> (Vendor Relationship Management) campaign:
</p>
<blockquote><p>
We see ourselves as plumbing for VRM. For example, we&#8217;re putting together a green choice card. If you install it, as you search around the web it will show you which companies have been ranked well or poorly in terms of social responsibility. Right now it&#8217;s just a demo, and we don&#8217;t have great data, but suppose we did, and there were enough of those cards out there, and Constellation Brands was determined by Fortune Magazine to be the least socially responsible company in 2008. If every time a cardholder found a Constellation product on Google there was a little icon indicating that, and there were a lot of people with the card, you could change the company&#8217;s behavior. They&#8217;d want to get the icon off that page.
</p></blockquote>
<p>
It&#8217;s a fascinating notion, and it leads to an issue that I should&#8217;ve raised with Phil in the interview but will raise here instead. A couple of years ago, during my period of infatuation with Greasemonkey, I made a 4-minute screencast entitled <a href="http://jonudell.net/udell/2005-04-03-content-services-and-the-yin-yang-of-intermediation.html">Content, services, and the yin-yang of intermediation</a>. At the time, I&#8217;d just invented a <a href="http://jonudell.net/udell/gems/LibraryLookup.user.js">Greasemonkey-enabled version</a> of <a href="http://jonudell.net/LibraryLookup.html">LibraryLookup</a> that was more aggressive than the standard bookmarklet version.
</p>
<p>
With the standard version, you click a bookmarklet while on an Amazon page, and a query against your local library pops up in a window. With the Greasemonkey-enhanced version, the Amazon page itself is rewritten to say:
</p>
<p>
&#8220;Hey! This book&#8217;s available at the Keene Public Library!&#8221;
</p>
<p>
Or:
</p>
<p>
&#8220;Due back at the Keene Public Library on March 28.&#8221;
</p>
<p>
But does the user of a web-based service have the right to modify pages in these ways? The screencast ponders that question. Three years ago there wasn&#8217;t enough client-side page rewriting going on to raise that question in a big way, and I guess there still isn&#8217;t, but now that jQuery is making the capability broadly available it&#8217;s bound to come up.
</p>
<p>
There&#8217;s a continuum of ways in which I can modify a web page in a browser, ranging from font enlargement to <a href="http://gallery.live.com/liveItemDetail.aspx?li=9ca66480-2d87-4341-87f6-86875d9a0908">translation</a> to contexual overlays. I wouldn&#8217;t draw a line anywhere along that continuum. It seems to me that I&#8217;m entitled to view the world through any lens I choose.
</p>
<p>
This doesn&#8217;t only apply to my view of the virtual world, by the way. It will apply to my view of the physical world too. We don&#8217;t yet have magic glasses that overlay web prices on shelf items, or web reputations on store signage, but someday we will.
</p>
<p>
I can&#8217;t see how I could be prevented from creating a heads-up display &#8212; for realspace or cyberspace &#8212; that&#8217;s advantageous to me. But I&#8217;ve got a hunch that those magic glasses are going to be controversial.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/1287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/1287/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/1287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/1287/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonudell.wordpress.com/1287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonudell.wordpress.com/1287/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonudell.wordpress.com/1287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonudell.wordpress.com/1287/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/1287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/1287/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/1287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/1287/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/1287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/1287/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=1287&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2009/03/23/a-conversation-with-phil-windley-about-contextualized-browsing/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0d7c7e171fc0ad3dacc9b1ed203e3e50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonudell</media:title>
		</media:content>
	</item>
		<item>
		<title>A conversation with @psnh about the ice storm, social media, and customer service</title>
		<link>http://blog.jonudell.net/2009/01/12/a-conversation-with-psnh-about-the-ice-storm-social-media-and-customer-service/</link>
		<comments>http://blog.jonudell.net/2009/01/12/a-conversation-with-psnh-about-the-ice-storm-social-media-and-customer-service/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 12:59:19 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=980</guid>
		<description><![CDATA[On this week&#8217;s ITConversations show I asked Martin Murray, who is chief spokesperson for Public Service of New Hampshire &#8212; and @psnh on Twitter &#8212; to tell the story behind this atypical pattern of Twitter followers: The quantum jump occurs on December 13, and corresponds to the epic ice storm on December 11/12. The storm [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=980&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
On this week&#8217;s <a href="http://itc.conversationsnetwork.org/shows/detail3964.html">ITConversations show</a> I asked Martin Murray, who is chief spokesperson for Public Service of New Hampshire &#8212; and <a href="http://twitter.com/psnh">@psnh</a> on Twitter &#8212; to tell the story behind this atypical pattern of Twitter followers:
</p>
<p>
<img src="http://jonudell.net/img/psnh-twitter.jpg">
</p>
<p>
The quantum jump occurs on December 13, and corresponds to the epic ice storm on December 11/12. The storm temporarily knocked the majority of New Hampshire&#8217;s homes and businesses off the power grid, and for many the outage lasted days or even weeks.
</p>
<p>
When I visited the Public Service of New Hampshire website to check on the status, I was delighted to find Martin&#8217;s Twitter feed. <a href="http://twitter.com/garylerude/status/1055200931">Gary Lerude</a> had anticipated my question:
</p>
<blockquote><p>
@psnh How about an online map showing the areas without power? We could see the progress of the crews as the power is restored.
</p></blockquote>
<p>
Three minutes later Martin replied:
</p>
<blockquote><p>
@garylerude Good idea &#8211; working on it!
</p></blockquote>
<p>
I <a href="http://twitter.com/judell/status/1055384437">thanked @psnh</a> for the response, and for the company&#8217;s ongoing restoration efforts, and added:
</p>
<blockquote><p>
@psnh Incidentally if you need help publishing your data online and creating maps, lots of us here are good at that and happy to help.
</p></blockquote>
<p>
The response:
</p>
<blockquote><p>
@judell Yes, ur google map screencast of Keene walking tour comes to mind. We may follow up on ur offer!
</p></blockquote>
<p>
Whoa. This is definitely not how your grandfather&#8217;s utility company handles public relations!
</p>
<p>
In this interview we discuss Martin&#8217;s use of social media in the wake of the storm. Of course he has been interviewed <a href="http://www.unionleader.com/article.aspx?headline=PSNH+reaches+out+on+Twitter%2C+YouTube%2C+Flickr&amp;articleId=12740a9f-8730-4699-9056-18108bbc638d">elsewhere and more prominently</a> on that subject. So I also asked Martin to reflect on how business-as-usual may change going forward.
</p>
<p>
Of special interest to me is the portion of that chart beyond Dec 13. True, the follower count has plateaued. But it hasn&#8217;t plummeted, and won&#8217;t, because it costs followers nothing to stay tuned in to a quiescent channel. If PSNH uses that channel judiciously from now on, I&#8217;ll stay tuned in. If the channel annoys me, I can silence it. That&#8217;s analogous to unsubscribing from an email newsletter, but better from my perspective because the unsubscribe mechanism is obvious, uniform, immediately effective, and fully under my control.
</p>
<p>
How will PSNH use this channel for normal, non-crisis operations? Martin thinks that customer service with a human voice is the way forward, and I violently agree.
</p>
<p>
Consider this exchange:
</p>
<blockquote>
<p>
@psnh <a href="http://twitter.com/psnh/status/1092360491">tweets</a>: &#8220;Explanation/options re high &#8216;estimated&#8217; bills sent to some customers: <a href="http://tinyurl.com/8de4kl">http://tinyurl.com/8de4kl&#8221;</a>
</p>
<p>
@sjudd <a href="http://twitter.com/sjudd/status/1092630897">tweets</a>: &#8220;The real question is why are the estimated bills higher than expected? Will you tell us later if any estimate was lower than actual?&#8221;
</p>
<p>
@psnh replies by direct message (quoted with permission of both parties): &#8220;I doubt any est bills were lower than expected. Computer based it on Dec 07 usage. Apologies for the error!&#8221;
</p>
</blockquote>
<p>
That&#8217;s what customer service used to be and &#8212; let&#8217;s hope &#8212; will be again.
</p>
<hr />
<a name="update"></a><br />
<b>Update</b>: Here&#8217;s a similar effect produced by the February 2010 wind storm:</p>
<p><a href="http://jonudell.net/img/psnh-twitter-2010.png"><img width="450" src="http://jonudell.net/img/psnh-twitter-2010.png"></a></p>
<p>In Dec 2008, @psnh went from zero to almost 2000 followers as a result of an epic ice storm. A year later the count had crept up to 2600. Then 2010&#8242;s epic wind storm spiked it to 4000.</p>
<p>To put these seemingly dramatic numbers in context, though, both storms created outages for more than half the company&#8217;s customers. New Hampshire is a small state, with population of only 1.3 million, but even so these storms affected on the order of half a million people. Yet even now @psnh is reaching fewer than one percent of them.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/980/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/980/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/980/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/980/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonudell.wordpress.com/980/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonudell.wordpress.com/980/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonudell.wordpress.com/980/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonudell.wordpress.com/980/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/980/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/980/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/980/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/980/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/980/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/980/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=980&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2009/01/12/a-conversation-with-psnh-about-the-ice-storm-social-media-and-customer-service/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0d7c7e171fc0ad3dacc9b1ed203e3e50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonudell</media:title>
		</media:content>

		<media:content url="http://jonudell.net/img/psnh-twitter.jpg" medium="image" />

		<media:content url="http://jonudell.net/img/psnh-twitter-2010.png" medium="image" />
	</item>
		<item>
		<title>Two IronPythonic spreadsheets</title>
		<link>http://blog.jonudell.net/2008/12/09/two-ironpythonic-spreadsheets/</link>
		<comments>http://blog.jonudell.net/2008/12/09/two-ironpythonic-spreadsheets/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 18:31:03 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=855</guid>
		<description><![CDATA[I should get a life, I know, but I can&#8217;t help myself, one of my favorite pastimes is figuring out new ways to wrangle information. One of the reasons that IronPython had me at hello is that, my fondness for the Python programming language notwithstanding, IronPython sits in an interesting place: on Windows, side by [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=855&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
I should get a life, I know, but I can&#8217;t help myself, one of my favorite pastimes is figuring out new ways to wrangle information. One of the reasons that IronPython had me at hello is that, my fondness for the Python programming language notwithstanding, IronPython sits in an interesting place: on Windows, side by side with Office, where a lot of information gets wrangled &#8212; particularly in spreadsheets.
</p>
<p>
There are now two interestingly different IronPython applications that marry Python and the spreadsheet. The first, <a href="http://resolversystems.com/">Resolver One</a>, I <a href="http://blog.jonudell.net/2007/09/27/first-look-at-resolver-an-ironpython-based-spreadsheet/">wrote about</a> last year and featured in a screencast. In this case, IronPython runs the whole show. It drives the user interface, and it also drives the recalculation engine.
</p>
<p>
More recently <a href="http://inference.us">Blue Reference</a>, whose Inference suite integrates statistical and analytical tools like <a href="http://www.mathworks.com/products/matlab/">MATLAB</a> and <a href="http://www.r-project.org/">R</a> into Office, has taken a different tack. Its <a href="http://inferencefordotnet.com/">Inference for .NET</a> taps the general-purpose scripting capabilities of the dynamic .NET languages, including IronPython and IronRuby.
</p>
<p>
Now to be clear, I&#8217;m not in Blue Reference&#8217;s target market. Their customers are doing scientific and technical work that benefits from the ability to embed live R or MATLAB analysis into documents. I don&#8217;t know, but would be curious to find out, how those folks &#8212; or others &#8212; might also want to leverage more general-purpose glue languages like IronPython or IronRuby.
</p>
<p>
In any case, there are clear tradeoffs between the two approaches. With Inference, the IronPython engine is loosely coupled to the Office apps. That buys you the full fidelity of the applications, but costs you Pythonic impedance.
</p>
<p>
With Resolver One there is no impedance. The application and your data are made of Pythonic stuff. You give up a ton of affordances in order to get that unification, but it enables some really interesting things.
</p>
<p>
Here&#8217;s one example: <a href="http://www.resolversystems.com/documentation/index.php/Row_and_Column_level_Formulae.html">row- and column-level formulae</a>. This is a pretty handy idea all by itself. Instead of putting a formula into the first row of a column and then copying it down, you put it into the column header where it applies to the whole column automatically.
</p>
<p>
Michael Foord has a nice example (<a href="http://www.voidspace.org.uk/python/weblog/arch_d7_2008_11_22.shtml#e1034">screencast</a>, <a href="http://www.resolversystems.com/documentation/index.php/Column_Level_Formulae_Example.html">article</a>) that shows how to do some nifty data aggregation using Python list comprehensions.
</p>
<p>
He starts with a worksheet of People:
</p>
<table border="0" cellpadding="4" cellspacing="0">
<tr style="font-weight:bold;">
<td>Name</td>
<td>Age</td>
<td>Country</td>
<td>Job</td>
</tr>
<tr>
<td>Stan</td>
<td>23</td>
<td>USA</td>
<td>Blogger</td>
</tr>
<tr>
<td>Wendy</td>
<td>66</td>
<td>AUS</td>
<td>Analyst</td>
</tr>
<tr>
<td>Eric</td>
<td>33</td>
<td>UK</td>
<td>Developer</td>
</tr>
</table>
<p>
In a second worksheet, he aggregates by Country, like so:
</p>
<table border="0" cellpadding="4" cellspacing="0">
<tr style="font-weight:bold;">
<td>Country</td>
<td align="center">People</td>
<td>Number of People</td>
<td>Average Age</td>
</tr>
<tr>
<td>USA</td>
<td align="center">[&lt;Stan&gt;,&lt;Kenny&gt;,&lt;Craig&gt;]</td>
<td align="center">3</td>
<td align="center">30.7</td>
</tr>
<tr>
<td>UK</td>
<td align="center">[&lt;Eric&gt;,&lt;Kyle&gt;]</td>
<td align="center">3</td>
<td align="center">41.3</td>
</tr>
</table>
<p>
Here&#8217;s the column-level formula that does that:
</p>
<p>
=[person for person in &lt;People&gt;.ContentRows if person['Country'] == #Name#_]
</p>
<p>
In other words, for each row make a list of People whose Country attribute equals the value in the Name column of the row. And stick that value into the current cell. If you&#8217;re familiar with Python, you&#8217;ll notice that the syntax &#8212; [&lt;Eric&gt;,&lt;Kyle&gt;] &#8212; looks like how Python prints out a list. That because it really is a Python list sitting in that cell.
</p>
<p>
Now the other columns can refer to that list. Here&#8217;s Number of People:
</p>
<p>
=len(#People#_)
</p>
<p>
Here&#8217;s Average Age:
</p>
<p>
=AVERAGE(person['Age'] for person in #People#_)
</p>
<p>
This idea of having live Python objects sitting in a spreadsheet is what really grabbed me the first time I saw Resolver, and it still does.
</p>
<p>
Here&#8217;s another little example of my own. Yesterday I was revisiting some of the code I used in my <a href="http://delicious.com/judell/keenecrime">crime analysis project</a>. These kinds of projects invariably turn into pipelines that transform data one stage at a time. Typically I store those intermediate results in files, which tends to be awkward.
</p>
<p>
This time around, I did the pipeline as a Resolver spreadsheet like so:
</p>
<p>
<a href="http://jonudell.net/img/resolver-geocode-pipeline.png"><img width="450" src="http://jonudell.net/img/resolver-geocode-pipeline.png"></a>
</p>
<p>
The column-level formula on D combines the fields in A, B, and C into an URL-encoded string in D.
</p>
<p>
The formula on E calls a geocoding service with an URL made from the string in D and puts the XML result in E.
</p>
<p>
The formula on F parses the XML in E, creates a Python dictionary, and dumps that into F.
</p>
<p>
The formulae on G and H extract the lat and lon values out of the object in F and stick them into G and H.
</p>
<p>
I dunno, maybe it&#8217;s just me, but I think that&#8217;s cool.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/855/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/855/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/855/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/855/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonudell.wordpress.com/855/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonudell.wordpress.com/855/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonudell.wordpress.com/855/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonudell.wordpress.com/855/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/855/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/855/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/855/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/855/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/855/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/855/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&amp;blog=109309&amp;post=855&amp;subd=jonudell&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2008/12/09/two-ironpythonic-spreadsheets/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0d7c7e171fc0ad3dacc9b1ed203e3e50?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonudell</media:title>
		</media:content>

		<media:content url="http://jonudell.net/img/resolver-geocode-pipeline.png" medium="image" />
	</item>
	</channel>
</rss>
