<?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:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Jon Udell</title>
	<atom:link href="http://blog.jonudell.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.jonudell.net</link>
	<description>Strategies for Internet citizens</description>
	<lastBuildDate>Mon, 29 Jun 2009 15:41:10 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<image>
		<url>http://www.gravatar.com/blavatar/ed11d15029dd6171df341c0cdb725294?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Jon Udell</title>
		<link>http://blog.jonudell.net</link>
	</image>
			<item>
		<title>New England still too wet. Escaping to sunny Old England.</title>
		<link>http://blog.jonudell.net/2009/06/29/new-england-still-too-wet-escaping-to-sunny-old-england/</link>
		<comments>http://blog.jonudell.net/2009/06/29/new-england-still-too-wet-escaping-to-sunny-old-england/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 15:39:38 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=1746</guid>
		<description><![CDATA[
We&#8217;re just back from a Caribbean vacation &#8212; with a couple of interesting souvenirs in tow. Under normal circumstances I&#8217;d feel a twinge of regret about turning around a day later and heading out again. But I&#8217;m not really in the mood to build an ark, which after 40 days of rain is about to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1746&subd=jonudell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>
We&#8217;re just back from a Caribbean vacation &#8212; with a couple of interesting <a href="http://bit.ly/x4Nsx">souvenirs</a> in tow. Under normal circumstances I&#8217;d feel a twinge of regret about turning around a day later and heading out again. But I&#8217;m not really in the mood to build an ark, which after 40 days of rain is about to become the new summer sport here in New England. And while the wet isn&#8217;t letting up yet here, the weather looks lovely in Old England. So it&#8217;s actually a great time to head off to London for a Tuesday visit and talk at Nature Publishing, panels and a talk at the <a href="http://www.guardian.co.uk/activate">Activate conference</a> on Wednesday, and another talk at the Guardian on Thursday. That one is open to the guests &#8212; for the first time, I gather. The  <a href="http://upcoming.yahoo.com/event/3012361">writeup</a> also notes:
</p>
<blockquote><p>
Many people will then head down to the Rotunda bar for drinks on the canal waterfront after the talk at about 6.
</p></blockquote>
<p>
In all these venues I&#8217;ll be expanding on the themes I&#8217;ve written about here lately: collaborative curation, computational thinking for everyone, community calendars as a motivating case study, and Azure as platform for doing stuff in the cloud.
</p>
<p>
By the time I get home for July 4, it ought to be dry here. If not, I&#8217;ll break out my cubit-calibrated tape measure and get to work on that ark.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/1746/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/1746/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/1746/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/1746/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/1746/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/1746/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/1746/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/1746/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/1746/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/1746/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1746&subd=jonudell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2009/06/29/new-england-still-too-wet-escaping-to-sunny-old-england/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>It&#8217;s the headings, stupid!!!</title>
		<link>http://blog.jonudell.net/2009/06/18/its-the-headings-stupid/</link>
		<comments>http://blog.jonudell.net/2009/06/18/its-the-headings-stupid/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 13:37:07 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=1741</guid>
		<description><![CDATA[
My recent adventure in naming the times of day was so much fun that I lost track of the original purpose of the exercise, which was to improve accessibility for sight-impaired users.


When I interpersed time-of-day labels into each day&#8217;s event listing, I used HTML DIV tags. Wrong, wrong, wrong! Those labels are structural elements, and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1741&subd=jonudell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>
My recent adventure in <a href="http://blog.jonudell.net/2009/06/15/when-does-afternoon-begin/">naming the times of day</a> was so much fun that I lost track of the original purpose of the exercise, which was to improve accessibility for sight-impaired users.
</p>
<p>
When I interpersed time-of-day labels into each day&#8217;s event listing, I used HTML DIV tags. Wrong, wrong, wrong! Those labels are structural elements, and as my accessibility consultant Susan Gerhart gently reminded me, screen readers depend on HTML headings to find and announce them. The labels should have been second-level headings &#8212; i.e., HTML H2 tags.
</p>
<p>
It gets worse. When Susan prompted me to take another look at what I&#8217;d done, I found that the date labels were inexplicably tagged as paragraphs (P) instead of the top-level headers (H1) that they logically are.
</p>
<p>
Oh. Right. Of course. Duh. Fixed. Sorry.
</p>
<p>
What was I thinking? How could somebody like me, who has preached about the <a href="http://elmcity.info/doublesearch/?q=udell+%22heads%2C+decks%2C+and+leads%22">attention-focusing power of heads, decks, and leads</a>, screw up something so basic as this?
</p>
<p>
Easily, as it turns out, in the absence of feedback. If you yourself don&#8217;t depend on a design feature, there is a natural tendency to forget why it matters to others.
</p>
<p>
Coincidentally (or not) Susan recently wrote an essay, and published a companion audio recording, that will help me &#8212; and I hope others &#8212; not to forget again. Entitled <a href="http://asyourworldchanges.wordpress.com/2009/05/31/hear-me-stumble-around-white-house-recovery-and-data-gov-web-sites/">Hear Me Stumble Around White House, Recovery, and Data GOV web sites</a>, it&#8217;s a blow-by-blow account of her efforts to navigate those sites with a screen reader.
</p>
<p>
In <a href="http://apodder.org/stumbles/AYWC_USG_1_White_House.mp3">this recording</a> you can hear Susan and her screen reader trying to make sense of whitehouse.gov. If you&#8217;ve never heard a screen reader in action, it&#8217;s worth listening for that alone. You&#8217;ll get a very clear sense of how these tools depend on the hierarchy of the page.
</p>
<p>
Simultaneously you&#8217;ll hear Susan narrate her intention &#8212; to read an article about cybersecurity &#8212; and her frustration. For example:
</p>
<blockquote><p>
I was thrown off by the slide show at the top of the page. Once I hit the cybersecurity story, the next time I traverse this section the story was about the Supreme Court nominee.
</p></blockquote>
<p>
Despite this randomness, the page does at least identify the top stories with H1 tags. And <i>Signed Legislation</i> is an H2. But none of the headlines under <i>Signed Legislation</i> are H3s, they&#8217;re Ps.
</p>
<p>
Over at recovery.gov and data.gov Susan finds none at all, and reacts to their omissions less gently she did to mine:
</p>
<blockquote><p>
It&#8217;s the headings, stupid!!!
</p></blockquote>
<p>
Thanks. I will try not to forget that again.
</p>
<hr />
<p>
PS: In a follow-up to her blog essay, Susan links to detailed reports by accessibility pioneer <a href="http://jimthatcher.com/">Jim Thatcher</a> on the issues he found with <a href="http://jimthatcher.com/data.htm">data.gov</a> and <a href="http://jimthatcher.com/recovery.htm">recovery.gov</a>.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/1741/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/1741/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/1741/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/1741/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/1741/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/1741/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/1741/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/1741/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/1741/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/1741/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1741&subd=jonudell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2009/06/18/its-the-headings-stupid/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://apodder.org/stumbles/AYWC_USG_1_White_House.mp3" length="18989097" type="audio/mpeg" />
	
		<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>Endangered languages and linguistic best practices</title>
		<link>http://blog.jonudell.net/2009/06/17/endangered-languages-and-linguistic-best-practices/</link>
		<comments>http://blog.jonudell.net/2009/06/17/endangered-languages-and-linguistic-best-practices/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 13:24:14 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=1734</guid>
		<description><![CDATA[
Daniel Everett&#8217;s recent Long Now talk about endangered languages (writeup, mp3) includes this gem reported by Stewart Brand:


Among other things, the wide variety of verb forms are used to account for the directness of evidence for a statement. Everett originally went to the Pirahã in 1977 as a Christian missionary. They challenged him to provide [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1734&subd=jonudell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>
Daniel Everett&#8217;s recent Long Now talk about endangered languages (<a href="http://blog.longnow.org/2009/03/23/daniel-everett-endangered-languages-lost-knowledge-and-the-future/">writeup</a>, <a href="http://fora.tv/media/rss/Long_Now_Podcasts/podcast-2009-03-20-everett.mp3">mp3</a>) includes this gem reported by Stewart Brand:
</p>
<blockquote><p>
Among other things, the wide variety of verb forms are used to account for the directness of evidence for a statement. Everett originally went to the Pirahã in 1977 as a Christian missionary. They challenged him to provide evidence for the existence of Jesus, and lost interest when he couldn&#8217;t. Eventually so did he. The Pirahã made him an atheist.
</p></blockquote>
<p>
This is so interesting that it&#8217;s worth unpacking for those who won&#8217;t have time to listen. Among the sixteen suffixes for verbs, there are three that convey the source of evidence:
</p>
<p>
<i>I heard that Dan went fishing.</i>
</p>
<p>
<i>I saw Dan go fishing.</i>
</p>
<p>
<i>I deduce, from the available evidence, that Dan went fishing.</i>
</p>
<p>
These assertions might not be true. The Pirahã, being human, do sometimes lie. But I love the idea of a culture in which evidence-based thinking is baked into the language.
</p>
<p>
There are only a few hundred Pirahã, and their language is only one of thousands &#8212; more than half unwritten &#8212; that are endangered. The talk ends with plea to preserve and document those languages.
</p>
<p>
It has never been easier to capture and disseminate recorded audio, or to <a href="http://librivox.org">collaboratively curate</a> such material, so I hope these capabilities will be put to good use in the quest to preserve linguistic diversity.
</p>
<p>
But no matter what, we&#8217;re going to continue to lose languages. Maybe, though, if we can identify some of the ways of thinking encoded in those languages, we can carry them forward.
</p>
<p>
Respect for the source of evidence is a great example. I could have simply told you about what Daniel Everett said, and what Stewart Brand wrote about what Daniel Everett said. But it was possible to form links to the audio and text, so I did.
</p>
<p>
I wonder how many other best practices are encoded in those thousands of endangered languages. And I wonder if it might be possible to identify and catalog more of them.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/1734/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/1734/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/1734/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/1734/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/1734/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/1734/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/1734/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/1734/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/1734/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/1734/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1734&subd=jonudell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2009/06/17/endangered-languages-and-linguistic-best-practices/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
<enclosure url="http://fora.tv/media/rss/Long_Now_Podcasts/podcast-2009-03-20-everett.mp3" length="43519400" type="audio/mpeg" />
	
		<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>When does afternoon begin?</title>
		<link>http://blog.jonudell.net/2009/06/15/when-does-afternoon-begin/</link>
		<comments>http://blog.jonudell.net/2009/06/15/when-does-afternoon-begin/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 20:44:10 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=1728</guid>
		<description><![CDATA[
When I invited folks to become calendar curators for the elmcity project, the person who stepped forward in Prescott AZ was Susan Gerhart, whom I interviewed here. One of her great insights about web design is that the right thing for a vision-impaired user is almost always also the right thing for everyone. She calls [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1728&subd=jonudell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>
When I invited folks to become calendar curators for the <a href="http://elmcity.cloudapp.net">elmcity project</a>, the person who stepped forward in Prescott AZ was Susan Gerhart, whom I interviewed <a href="http://blog.jonudell.net/2008/06/30/from-seeing-to-hearing-a-conversation-with-susan-gerhart-about-assistive-technologies-for-the-sight-impaired/">here</a>. One of her great insights about web design is that the right thing for a vision-impaired user is almost always also the right thing for everyone. She calls this the <a href="http://asyourworldchanges.wordpress.com/2008/10/06/using-the-curb-cuts-principle-to-reboot-computing/">curb cuts principle</a>:
</p>
<blockquote><p>
Curb cuts for wheelchairs also guide blind persons into street crossings and prevent accidents for baby strollers, bicyclists, skateboarders, and inattentive walkers.
</p></blockquote>
<p>
So I shouldn&#8217;t have been surprised when Susan noticed that the HTML rendering of the calendar need some curb cuts. Within each day, the events show up as a long undifferentiated list. She suggested that subdividing the list by time of day &#8212; morning, afternoon, evening &#8212; will be helpful to folks using screen readers. But in fact, it&#8217;s just plain helpful. So I&#8217;m testing a version of that idea now.
</p>
<p>
Ionically I was just thinking about this same principle in another context. The new version of <a href="http://oakland.crimespotting.org/#">Oakland Crimespotting</a>, which I <a href="http://blog.jonudell.net/2009/06/05/more-usefully-cool-stuff-from-stamen/">raved about</a>, segments incidents using this vocabulary:
</p>
<p>
light, dark, commute, nightlife, day, night, swing shift
</p>
<p>
In that spirit, I&#8217;m trying this:
</p>
<p>
morning, lunch, afternoon, evening, night
</p>
<p>
This of course leads to the question: When do these times begin and end?
</p>
<p>
I was fascinated to see that both Google and Bing return the same <a href="http://uk.answers.yahoo.com/question/index?qid=20070521090603AAae1bo">Yahoo answers</a> page for the query <a href="http://elmcity.info/doublesearch/?q=morning+afternoon+evening">morning afternoon evening</a>.
</p>
<p>
For now, though, I&#8217;m going with this ruleset:
</p>
<pre>
  Morning:  5:00 AM to 11:30 AM
    Lunch: 11:30 AM to  1:00 PM
Afternoon:  1:30 PM to  5:30 PM
  Evening:  5:30 PM to  9:00 PM
   Night:   9:00 PM to  5:00 AM
</pre>
<p>
But I&#8217;ll make these rules &#8212; and maybe even the time-of-day names &#8212; configurable on a per-location basis.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/1728/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/1728/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/1728/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/1728/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/1728/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/1728/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/1728/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/1728/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/1728/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/1728/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1728&subd=jonudell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2009/06/15/when-does-afternoon-begin/feed/</wfw:commentRss>
		<slash:comments>8</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>Bulk search-and-replace for blog entries</title>
		<link>http://blog.jonudell.net/2009/06/10/bulk-search-and-replace-for-blog-entries/</link>
		<comments>http://blog.jonudell.net/2009/06/10/bulk-search-and-replace-for-blog-entries/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 16:20:04 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=1719</guid>
		<description><![CDATA[
Last night I realized there was one more step needed to restore my 2002-2006 archive. All of my references into that archive from this blog, which started in December 2006, had to be redirected. What&#8217;s more, they had to be remapped. Old URLs like http://weblog.infoworld.com/udell/2006/12/04.html#a1571 had to become new URLs like http://jonudell.net/udell/2006-12-04-hunting-the-elusive-search-strategy.html.


Even without the remapping, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1719&subd=jonudell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>
Last night I realized there was one more step needed to restore my <a href="http://jonudell.net/udell/2002-2006-index.html">2002-2006 archive</a>. All of my references into that archive from this blog, which started in December 2006, had to be redirected. What&#8217;s more, they had to be remapped. Old URLs like http://weblog.infoworld.com/udell/2006/12/04.html#a1571 had to become new URLs like http://jonudell.net/udell/2006-12-04-hunting-the-elusive-search-strategy.html.
</p>
<p>
Even without the remapping, it&#8217;s not obvious how to do a simple search and replace (say, from <i>weblog.infoworld.com/udell</i> to <i>jonudell.net/udell</i>) across a set of blog entries. I tried the export/edit/import route, but &#8212; at least in the case of WordPress &#8212; that doesn&#8217;t seem to be a way to update existing stuff.
</p>
<p>
So I wound up writing a script that uses the MetaWeblog API to fetch my current blog entries, find references to the old namespace, adjust them to point to the new namespace, and update the entries. It&#8217;s <a href="http://jonudell.net/examples/metaweblog-search-replace.py">here</a> for my own future reference, and for yours if you need it.
</p>
<p>
As always in these situations, I end up wondering <a href="http://blog.jonudell.net/2007/11/26/what-would-a-civilian-do/">what a civilian would do</a>. Blog publishing systems don&#8217;t seem have bulk search-and-replace capability. They do, however, have APIs. There could be a tool or service that helps people make these kinds of changes. It&#8217;d be hard to avoid the <a href="http://www.25hoursaday.com/weblog/2008/10/05/ThePortableContactsAPIKillingThePasswordAntiPatternOnceAndForAll.aspx">password anti-pattern</a>, so if this were a cloud-based service rather than a locally-installed tool you&#8217;d want to change your password after using it. But still, it should be doable.
</p>
<p>
Do such tools or services exist?</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/1719/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/1719/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/1719/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/1719/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/1719/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/1719/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/1719/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/1719/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/1719/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/1719/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1719&subd=jonudell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2009/06/10/bulk-search-and-replace-for-blog-entries/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>Rebooting my 2002-2006 archive</title>
		<link>http://blog.jonudell.net/2009/06/09/rebooting-my-2002-2006-archive/</link>
		<comments>http://blog.jonudell.net/2009/06/09/rebooting-my-2002-2006-archive/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 04:13:03 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=1620</guid>
		<description><![CDATA[
While spot-checking my mostly-reconstructed 2002-2006 blog, I found this plaint from 2002:

When you are a writer whose entire corpus exists online, woven into a fabric of citation and commentary, it is incredibly painful to see that fabric torn apart.

Déjà vu all over again. In 2002 I had to sacrifice the linkage to my 1999-2002 BYTE.com [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1620&subd=jonudell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>
While spot-checking my mostly-reconstructed <a href="http://jonudell.net/udell/2002-2006-index.html">2002-2006 blog</a>, I found <a href="http://jonudell.net/udell/2002-11-29-sherman-set-the-wayback-machine-to-last-week.html">this plaint</a> from 2002:</p>
<blockquote><p>
When you are a writer whose entire corpus exists online, woven into a fabric of citation and commentary, it is incredibly painful to see that fabric torn apart.</p></blockquote>
<p>
Déjà vu all over again. In 2002 I had to sacrifice the linkage to my 1999-2002 BYTE.com and restore it <a href="http://jonudell.net/bytecols/">here</a>. Now I&#8217;ve done the same for my <a href="http://jonudell.net/udell/2002-2006-index.html">2002-2006 InfoWorld blog</a>. Since its former namespace isn&#8217;t being redirected, and since all the old links were broken anyway, I&#8217;ve taken this opportunity to create new descriptive names that incorporate dates and titles.
</p>
<p>
The reboot isn&#8217;t 100% clean, but it&#8217;s automated and reproducible so I can address categories of problems as they show up.
</p>
<p>
I&#8217;m glad I&#8217;m not in publishing anymore. It turns out to be a lousy way to keep your stuff published. When a commercial <a href="http://blog.jonudell.net/2007/05/22/hosted-lifebits/">hosted lifebits</a> service comes online, I&#8217;ll be customer #1.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/1620/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/1620/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/1620/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/1620/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/1620/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/1620/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/1620/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/1620/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/1620/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/1620/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1620&subd=jonudell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2009/06/09/rebooting-my-2002-2006-archive/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>Scribbling in the margins of iCalendar</title>
		<link>http://blog.jonudell.net/2009/06/08/scribbling-in-the-margins-of-icalendar/</link>
		<comments>http://blog.jonudell.net/2009/06/08/scribbling-in-the-margins-of-icalendar/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 19:22:29 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=1587</guid>
		<description><![CDATA[
Last week I mentioned three ways for elmcity curators to categorize events:



If a source iCalendar feed uses the CATEGORIES property, they&#8217;ll be included.


If all of the events from a feed can be categorized, you can name that category in the Delicious metadata, using category=CATEGORY. All events from the feed will inherit it in the same [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1587&subd=jonudell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>
Last week I <a href="http://blog.jonudell.net/2009/06/04/categorizing-events/">mentioned</a> three ways for <a href="http://elmcity.cloudapp.net">elmcity</a> curators to categorize events:
</p>
<ol>
<li>
<p>If a source iCalendar feed uses the CATEGORIES property, they&#8217;ll be included.</p>
</li>
<li>
<p>If all of the events from a feed can be categorized, you can name that category in the Delicious metadata, using category=CATEGORY. All events from the feed will inherit it in the same way that they all inherit the default clickthrough link specified with url=URL.</p>
</li>
<li>
<p>If all of the events from an Upcoming or Eventful venue can be categorized, you can also name that category in the Delicious metadata. To do that, bookmark the venue URL and use the patterns venue={UPCOMING|EVENTFUL} and category=CATEGORY.</p>
</li>
</ol>
<p>
Now I&#8217;ve added a fourth. In any iCalendar app you can now use these patterns in the Description field:
</p>
<p>url=http://www.harlowspub.com</p>
<p>category=music,bluegrass</p>
<p>The  url=… and category=… patterns can occur anywhere in the description.</p>
<p><p>This is particularly useful for recurring events. As discussed <a href="http://blog.jonudell.net/2009/04/16/a-power-tool-for-calendar-curators/">here</a>, recurring events are a great way to build critical mass because your curation effort keeps paying dividends.
</p>
<p>
For example, one of the events I found when exploring the <a href="http://elmcity.cloudapp.net/services/elmcity/search">search page</a> for Keene is the Monday night bluegrass jam at Harlow’s Pub. </p>
<p>Here&#8217;s the description I entered into Windows Live Calendar — which also could have been entered into Google Calendar, or any other iCalendar app:</p>
<blockquote><p>
The Birch Benders host a Bluegrass picking party at Harlow&#8217;s Pub in Peterborough every Monday night – 8 pm until they kick us out (11 or so).  url=http://www.harlowspub.com category=music
</p></blockquote>
<p>Here&#8217;s the rendered result:</p>
<p> Mon 08:00 PM  Bluegrass night with the Birchbenders (recurring events) (music) </p>
<p>
The same data shows up in the downstream <a href="http://elmcity.cloudapp.net/services/elmcity/xml">XML</a>, <a href="http://elmcity.cloudapp.net/services/elmcity/ics">ICS</a>, and <a href="http://elmcity.cloudapp.net/services/elmcity/json">JSON</a> feeds.
</p>
<p>
Since the iCalendar spec allows for a CATEGORIES element, this approach shouldn&#8217;t be necessary. But not all calendar apps allow you to tag events in this way. Outlook does, but Google Calendar, Live Calendar, and Apple iCal don&#8217;t.
</p>
<p>
Fortunately we can scribble in the margins. I first used that phrase in an <a href="http://www.infoworld.com/d/developer-world/filling-in-margins-832">InfoWorld story</a> about a feature of the Internet&#8217;s Domain Name System called the TXT record. Although it is possible to define more specific record types, it&#8217;s hard to get everyone to agree to use them. So developers have historically &#8220;scribbled in the margins&#8221; of the DNS. And we can do the same with iCalendar.
</p>
<hr />
<p>
PS: The title of that InfoWorld story was actually <i>Filling in the Margins</i>, which wasn&#8217;t what I wrote and which I never liked. The title I wrote was <i>Scribbling in the Margins</i>, and I used it for the blog entry that introduced the InfoWorld article. I&#8217;ll have that entry back online soon, along with the rest of my archive from that era. But meanwhile, when I search for the title using <a href="http://elmcity.info/doublesearch/?q=udell+scribbling+in+the+margins">doublesearch</a>, I notice an interesting point of comparison between Google and Bing. It&#8217;s been over a month since that blog archive went dark, and Google has now evidently forgotten about it. But Bing <a href="http://cc.bingj.com/cache.aspx?q=udell+scribbling+in+the+margins&amp;d=76176504396891&amp;mkt=en-US&amp;setlang=en-US&amp;w=46cc05dc,5717ae0a">remembers</a>. I don&#8217;t have any special insight into how Bing works, but I&#8217;ll be interested to see how long it keeps remembering.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/1587/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/1587/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/1587/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/1587/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/1587/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/1587/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/1587/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/1587/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/1587/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/1587/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1587&subd=jonudell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2009/06/08/scribbling-in-the-margins-of-icalendar/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>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 this] [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1583&subd=jonudell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><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>
  <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/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&blog=109309&post=1583&subd=jonudell&ref=&feed=1" /></div>]]></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>More usefully cool stuff from Stamen</title>
		<link>http://blog.jonudell.net/2009/06/05/more-usefully-cool-stuff-from-stamen/</link>
		<comments>http://blog.jonudell.net/2009/06/05/more-usefully-cool-stuff-from-stamen/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 14:21:50 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=1574</guid>
		<description><![CDATA[
My plumber&#8217;s last name is Thieme. I was just looking up his phone number, and got distracted when I realized that the people search in Live Bing does a fair job of visualizing the geographic distribution of surnames. If you do a people search for Thieme, New Hampshire, and start panning around at county and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1574&subd=jonudell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>
My plumber&#8217;s last name is Thieme. I was just looking up his phone number, and got distracted when I realized that the people search in <s>Live</s> Bing does a fair job of visualizing the geographic distribution of surnames. If you do a people search for Thieme, New Hampshire, and start panning around at county and state resolutions, you can see where Thiemes have clustered and where they haven&#8217;t.
</p>
<p>
As I was doing this, I suddenly realized: Why don&#8217;t maps offer named zoom levels? If you want to pan across the country at state or county resolution, it requires an enormous amount of continuous zooming in and out. Of course the sizes of states and counties vary as you move across the country. But that&#8217;s the whole point. Computers can do the math and automate those adjustments.
</p>
<p><img style="float:right;" src="http://jonudell.net/img/time-pie.png"></p>
<p>
What prompted this thought was the newly-redesigned <a href="http://oakland.crimespotting.org/#">Oakland Crimespotting</a>, which features a nifty new widget for selecting times of day. Stamen Designs&#8217; Eric Rodenbeck, whom I recently <a href="http://blog.jonudell.net/2009/05/26/a-conversation-with-eric-rodenbeck-about-usefully-cool-design-and-engineering/">interviewed</a>, calls it the time pie. It&#8217;s fun to spin your way through the hours, making contiguous or discontiguous selections. But what&#8217;s really useful are the named slices: light, dark, commute, nightlife, day, night, swing shift. As Stamen&#8217;s blog <a href="http://content.stamen.com/node/171">notes</a>:
</p>
<blockquote><p>
The last time slices (day, night and swing) are the ways that the police view this information, and one thing we hope will come from the project is a better understanding of how the police view their data as it&#8217;s collected.
</p></blockquote>
<p>
Nice!
</p>
<p>
What you may not notice, as you navigate the new interface, is that every adjustment is reflected in an exquisitely detailed URL. It&#8217;s not obvious because the URLs are really long, and the changes happen outside the visible part of the browser&#8217;s location window. But watch:
</p>
<p>
<b>Default</b>: http://oakland.crimespotting.org/map/#dtend=2009-06-04T20:35:28-07:00&amp;lat=37.806&amp;types=AA,Mu,Ro,SA,DP,Na,Al,Pr,Th,VT,Va,Bu,Ar&amp;lon=-122.270&amp;hours=16-23&amp;zoom=14&amp;dtstart=2009-05-28T20:35:28-07:00
</p>
<p>
<b>Hide all crime types</b>: http://oakland.crimespotting.org/map/#dtend=2009-06-04T23:59:59-07:00&amp;lat=37.806&amp;<span style="color:blue;font-size:larger;font-weight:bold;">types=</span>&amp;lon=-122.270&amp;hours=0-23&amp;zoom=14&amp;dtstart=2009-05-28T23:59:59-07:00
</p>
<p>
<b>Show all and extend dates to max range</b>: http://oakland.crimespotting.org/map/#dtend=2009-06-04T23:59:59-07:00&amp;lat=37.806&amp;<span style="color:blue;font-size:larger;font-weight:bold;">types=AA,Mu,Ro,SA,DP,Na,Al,Pr,Th,VT,Va,Bu,Ar</span>&amp;lon=-122.270&amp;hours=0-23&amp;zoom=14&amp;<span style="color:blue;font-size:larger;font-weight:bold;">dtstart=2009-05-08T00:00:00-07:00</span>
</p>
<p>
<b>Narcotics only</b>: http://oakland.crimespotting.org/map/#dtend=2009-06-04T23:59:59-07:00&amp;lat=37.806&amp;<span style="color:blue;font-size:larger;font-weight:bold;">types=Na</span>&amp;lon=-122.270&amp;hours=0-23&amp;zoom=14&amp;dtstart=2009-05-08T00:00:00-07:00
</p>
<p>
<b>Nighttime narcotics</b>: http://oakland.crimespotting.org/map/#dtend=2009-06-04T23:59:59-07:00&amp;lat=37.806&amp;types=Na&amp;lon=-122.270&amp;<span style="color:blue;font-size:larger;font-weight:bold;">hours=16-23</span>&amp;zoom=14&amp;dtstart=2009-05-08T00:00:00-07:00
</p>
<p>
<b>Wee hours narcotics</b>: http://oakland.crimespotting.org/map/#dtend=2009-06-04T23:59:59-07:00&amp;lat=37.806&amp;types=Na&amp;lon=-122.270&amp;<span style="color:blue;font-size:larger;font-weight:bold;">hours=1-4</span>&amp;zoom=14&amp;dtstart=2009-05-08T00:00:00-07:00
</p>
<p>
As noted on the Stamen blog, this means that:
</p>
<blockquote><p>
It&#8217;s now possible to navigate and link to recent newsworthy events like the <a href="http://oakland.crimespotting.org/#lon=-122.265&amp;dtend=2007-08-02T23:57:54-07:00&amp;zoom=16&amp;hours=6-11&amp;types=AA,Mu,Ro,SA,DP,Na,Al,Pr,Th,VT,Va,Bu,Ar&amp;lat=37.801&amp;dtstart=2007-08-01T23:56:31-07:00">assassination of journalist Chauncey Bailey</a>, the <a href="http://oakland.crimespotting.org/#lon=-122.269&amp;dtend=2009-01-07T23:59:59-07:00&amp;zoom=15&amp;hours=16-23&amp;types=AA,Mu,Ro,SA,DP,Na,Al,Pr,Th,VT,Va,Bu,Ar&amp;lat=37.805&amp;dtstart=2009-01-06T23:58:36-07:00">Oscar Grant riots</a> from January 2009, and the <a href="http://oakland.crimespotting.org/#lon=-122.172&amp;dtend=2009-03-21T23:59:59-07:00&amp;zoom=15&amp;hours=10-18&amp;types=AA,Mu,Ro,SA,DP,Na,Al,Pr,Th,VT,Va,Bu,Ar&amp;lat=37.769&amp;dtstart=2009-03-20T23:58:36-07:00">Lovelle Mixon incident</a> from this past March.
</p></blockquote>
<p>
The Stamen crew is renowned for brilliance, and rightly so. But the principles at work here &#8212; thoughtful naming, granular linking &#8212; are ones that we all can and should practice, in the many small ways that we can as we explore and co-create the infosphere.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/1574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/1574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/1574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/1574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/1574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/1574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/1574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/1574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/1574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/1574/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1574&subd=jonudell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2009/06/05/more-usefully-cool-stuff-from-stamen/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>

		<media:content url="http://jonudell.net/img/time-pie.png" medium="image" />
	</item>
		<item>
		<title>Categorizing events</title>
		<link>http://blog.jonudell.net/2009/06/04/categorizing-events/</link>
		<comments>http://blog.jonudell.net/2009/06/04/categorizing-events/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 20:18:02 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=1568</guid>
		<description><![CDATA[
Curation is always a two-step tango. First you collect, then you categorize. Until now, the elmcity project has been all about collecting. But as the nodes of this network of community hubs start to light up, and as curators gather growing numbers of  calendar feeds, it&#8217;s time to start enabling them to categorize as [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1568&subd=jonudell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>
Curation is always a two-step tango. First you collect, then you categorize. Until now, the <a href="http://elmcity.cloudapp.net">elmcity project</a> has been all about collecting. But as the nodes of this network of community hubs start to light up, and as curators gather growing numbers of  calendar feeds, it&#8217;s time to start enabling them to categorize as well.
</p>
<p>
This is a classic hard problem. How do you get people to tag hundreds or thousands of items? What makes the problem even harder, in the domain of events, is that once those items fade into the past, any effort invested in tagging them is lost.
</p>
<p>
My answer is, at least for now: Don&#8217;t worry too much about tagging individual events. Instead, gain leverage by finding ways to tag sources of events. Here are two good strategies:
</p>
<h2>1. Categorizing iCalendar feeds</h2>
<p>
The obvious place to start is with the iCalendar feeds that curators are collecting. There&#8217;s already a mechanism in place to capture metadata about those feeds. Here, for example, is the iCalendar feed for the 2009 Board of Supervisors meetings in Prescott, AZ:
</p>
<p>
http://fusecal.com/calendar/ical/3200531?h=b75b09c8-50c2-11de-9169-00163e12298c
</p>
<p>
That&#8217;s an iCalendar feed that was made from this web page:
</p>
<p>
http://www.co.yavapai.az.us/Events.aspx/id=32794
</p>
<p>
If you check the <a href="http://delicious.com/prescottaz/trusted+ics+feed">Delicious metadata</a> for Prescott&#8217;s iCalendar feeds, you&#8217;ll see this structure:
</p>
<pre>
title: Board of Supervisors
  url: http://fusecal.com/calendar/ical/3200531?h=b75b09c8-50c2-11de-9169-00163e12298c
  tag: trusted
  tag: ics
  tag: feed
  tag: url=http://www.co.yavapai.az.us/Meetings.aspx/folderid=1488&amp;year=2009
  tag: category=government
</pre>
<p>
The url= tag was already there. It provides the all-important link back to a human-readable authoritative source for events coming from this feed. It&#8217;s best if individual events provide their own links, but often in iCalendar feeds they don&#8217;t, so this is the default link.
</p>
<p>
What&#8217;s new is the category= tag. Now all events coming from this feed will carry that category. For example:
</p>
<blockquote>
<div class="eventDate"><b>Mon Jun 15 2009</b></div>
<p class="eventBlurb">
<span class="eventStart"></span><br />
<span class="eventTitle"><a title="Regular Meeting - Cottonwood  N/A " href="http://www.co.yavapai.az.us/Events.aspx?id=32794">Regular Meeting &#8211; Cottonwood N/A </a></span><br />
<span class="eventSource">(Board of Supervisors)</span><br />
<span class="eventSource">(<b>government</b>)</span>
</p></blockquote>
<p>
The same info travels downstream, to the aggregated Prescott iCalendar feed:
</p>
<blockquote>
<pre>
BEGIN:VEVENT
CATEGORIES:<b>government</b>
DESCRIPTION:Regular Meeting - Cottonwood N/A \n\n****************
nfrom  FuseCal.com\n ******************************\n\n
DTSTART;VALUE=DATE:20090615
LOCATION: (see http://www.co.yavapai.az.us/Events.aspx?id=32794)
SEQUENCE:0
SUMMARY:Regular Meeting - Cottonwood N/A
UID:633797255542010000-1196352865@elmcity.cloudapp.net
URL:http://www.co.yavapai.az.us/Events.aspx?id=32794
END:VEVENT
</pre>
</blockquote>
<p>
And to the aggregated XML feed:
</p>
<blockquote>
<pre>
&lt;event&gt;
&lt;title&gt;Regular Meeting - Cottonwood N/A&lt;/title&gt;
&lt;url&gt;http://www.co.yavapai.az.us/Events.aspx?id=32794&lt;/url&gt;
&lt;source&gt;Board of Supervisors&lt;/source&gt;
&lt;dtstart&gt;2009-06-15T00:00:00&lt;/dtstart&gt;
&lt;categories&gt;<b>government</b>&lt;/categories&gt;
&lt;/event&gt;
</pre>
</blockquote>
<p>
This strategy only works, for course, for feeds that can be categorized. And that won&#8217;t always be true. Events coming from the <a href="http://readitnews.com/events">ReadItNews</a> feed don&#8217;t fit into any single category (or short list of categories). So they&#8217;ll remain untagged for now. That&#8217;s OK. Better to make some progress than to make none. This partial approach yields a nice return on investment. And thanks to the bulk editing feature of Delicious, it&#8217;s really quick and easy to select a set of feeds and then tag them with a category= tag.
</p>
<h2>2. Categorizing Eventful and Upcoming venues</h2>
<p>
We can use a variation of this strategy to categorize sources of events coming from Eventful and Upcoming. In this case, the lever is the venue. Not all venues host events that can be categorized. But some do, and in those cases, why not exploit that?
</p>
<p>
The strategy here is to bookmark and tag the event&#8217;s venue URL from Upcoming or Eventful. Here are two examples:
</p>
<p><b>Upcoming</b></p>
<pre>
title: Venue: Prescott YMCA - Upcoming
  url: http://upcoming.yahoo.com/venue/435420
  tag: venue=upcoming
  tag: category=recreation
</pre>
<p><b>Eventful</b></p>
<pre>
title: Venue: Raven Cafe
  url: http://eventful.com/prescott/venues/raven-cafe-/V0-001-000366078-7
  tag: venue=eventful
  tag: category=music
</pre>
<p>
If you check the <a href="http://elmcity.cloudapp.net/services/prescottaz/html">default HTML view</a> of Prescott&#8217;s aggregated events, you&#8217;ll see that these categories indeed show up. They&#8217;re also in the downstream <a href="http://elmcity.cloudapp.net/services/prescottaz/xml">XML</a>, <a href="http://elmcity.cloudapp.net/services/prescottaz/ics">ICS</a>, and <a href="http://elmcity.cloudapp.net/services/prescottaz/json">JSON</a> feeds.
</p>
<h2>But can&#8217;t the source iCalendar feeds provide per-event categories?</h2>
<p>
Yes, some do. In the case of Prescott, the <a href="http://www.prescottlibrary.info/">public library</a>&#8217;s iCalendar feed uses the CATEGORIES property, so those categories show up too. For example:
</p>
<blockquote>
<p class="eventBlurb">
<span class="eventStart">Thu 02:00 PM  </span><br />
<span class="eventTitle"><a title="Sign up for Computer Mentor" href="http://nonumber.prescottlibrary.info/evanced/lib/eventsignup.asp?ID=8426">Sign up for Computer Mentor</a></span><br />
<span class="eventSource">(Prescott Library)</span><br />
 <span class="eventSource">(<b>Adult Computer Class,library</b>)</span>
</p>
</blockquote>
<p>
Here we see a list of two categories. The first item, <b>Adult Computer Class</b>, was in the original iCalendar feed. The second item, <b>library</b>, was inherited from the feed metadata specified by the curator.
</p>
<p>
There&#8217;s a long way to go with this stuff. But this is a nice start!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/1568/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/1568/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/1568/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/1568/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/1568/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/1568/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/1568/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/1568/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/1568/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/1568/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1568&subd=jonudell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2009/06/04/categorizing-events/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>
	</item>
		<item>
		<title>Talking with Jamie Heywood about PatientsLikeMe</title>
		<link>http://blog.jonudell.net/2009/06/01/talking-with-jamie-heywood-about-patientslikeme/</link>
		<comments>http://blog.jonudell.net/2009/06/01/talking-with-jamie-heywood-about-patientslikeme/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 14:36:57 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=1562</guid>
		<description><![CDATA[
Jamie Heywood joined me for this week&#8217;s Innovators show. His quest to cure ALS (Amyotrophic Lateral Sclerosis, aka Lou Gehrig&#8217;s Disease) is featured in a book and a movie. In this conversation, we explore Jamie&#8217;s current project: PatientsLikeMe. It&#8217;s a website where people pool data about their medical conditions, their drug regimes and related therapies, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1562&subd=jonudell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>
Jamie Heywood joined me for <a href="http://itc.conversationsnetwork.org/series/innovators.html">this week&#8217;s Innovators show</a>. His quest to cure ALS (Amyotrophic Lateral Sclerosis, aka Lou Gehrig&#8217;s Disease) is featured in <a href="http://www.jonathanweiner.com/keeper.html">a book</a> and <a href="http://westcityfilms.com/smsf.html">a movie</a>. In this conversation, we explore Jamie&#8217;s current project: <a href="http://patientslikeme.com">PatientsLikeMe</a>. It&#8217;s a website where people pool data about their medical conditions, their drug regimes and related therapies, and their outcomes.
</p>
<p>
Of course people have been sharing medical information online since it became possible to do so. But PatientsLikeMe differs from other online health communities in several ways. The profile of a user is someone who is grappling with a serious, life-changing illness where:
</p>
<ul>
<li>
<p>
You are very debilitated, perhaps even unable to go to work.
</p>
</li>
<li>
<p>
You can tell if your treatment is helping. (If you have Parkinson&#8217;s disease or depression, for example, you can judge what works or doesn&#8217;t. If you have breast cancer, you can&#8217;t.)
</p>
</li>
<li>
<p>
You are in a situation where both diagnosis and treament are ambiguous.
</p>
</li>
</ul>
<p>
The data that you report brings you into direct contact with other patients who share similar conditions and treatments. In this sense, PatientsLikeMe is a uniquely data-driven social network:
</p>
<blockquote>
<p>
It is the richest open quantified human-to-human network that exists. There are a couple of hundred measured channels on which you can evaluate yourself against everyone else that you might be interested in connecting to. And you can go across any of those channels to anyone else in the world.
</p>
</blockquote>
<p>
The data you report also brings you into direct contact with drug companies:
</p>
<blockquote><p>
It connects you with the people who are developing the drugs to treat your disease. This cuts out an immense amount of inefficiency and middlemen, and can potentially make the system much better. It&#8217;s a way of rationalizing and accelerating discovery.
</p></blockquote>
<p>
For that reason, Jamie sees no need to apologize for PatientsLikeMe&#8217;s business model, which is to sell the data it collects to drug companies. This arrangement may even, arguably, be a form of citizen science:
</p>
<blockquote><p>
Do I think that we&#8217;ll be using crowdsourcing to interpret the RNA signature in blood? No. But in the real world, when you ask what it means to have ALS, each patient in the system is a representative of their own specific phenotype of this illness. Which is a way of putting it into the process of discovery. Because if you&#8217;re not in there &#8212; if you&#8217;re different, and everyone is unique in some way &#8212; the specific components of your own health and its impacts on your life will not be addressed in the process of treatment.
</p></blockquote>
<p>
What about privacy? Jamie admits, honestly, that there can be no guarantees, and does not think people who expect guarantees should use PatientsLikeMe. It isn&#8217;t for everyone. But there are a number of folks who, after evaluating the risk of participating (pseudonymously) in the service, conclude that the benefit outweighs that risk. They are part of a collective experiment that I will be watching with the greatest interest.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/1562/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/1562/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/1562/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/1562/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/1562/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/1562/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/1562/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/1562/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/1562/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/1562/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1562&subd=jonudell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2009/06/01/talking-with-jamie-heywood-about-patientslikeme/feed/</wfw:commentRss>
		<slash:comments>1</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>Useful feedback from old friends and new friends</title>
		<link>http://blog.jonudell.net/2009/05/27/useful-feedback-from-old-friends-and-new-friends/</link>
		<comments>http://blog.jonudell.net/2009/05/27/useful-feedback-from-old-friends-and-new-friends/#comments</comments>
		<pubDate>Thu, 28 May 2009 00:33:16 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=1553</guid>
		<description><![CDATA[
In the last few days I&#8217;ve received useful feedback on the elmcity project from an old friend (whom I&#8217;ve never met in person), and a new friend (whom I have). The old friend is Jake Ochs, an accomplished technologist who, like John Faughnan, was a valued online correspondent back in the BYTE era. The new [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1553&subd=jonudell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>
In the last few days I&#8217;ve received useful feedback on the <a href="http://elmcity.cloudapp.net">elmcity project</a> from an old friend (whom I&#8217;ve never met in person), and a new friend (whom I have). The old friend is Jake Ochs, an accomplished technologist who, like <a href="http://itc.conversationsnetwork.org/shows/detail3743.html">John Faughnan</a>, was a valued online correspondent back in the BYTE era. The new friend is Mykel Nahorniak whom I met at <a href="http://transparencycamp.org/">Transparency Camp 2009</a>. Mykel is cofounder of the social event listing platform <a href="http://localist.com">Localist</a>, and has been curating the elmcity project&#8217;s Baltimore hub.
</p>
<p>
Both Mykel and Jake are intrigued by the elmcity project, but are skeptical about the approach and likely outcome. Here&#8217;s Mykel, quoted with permission from email:
</p>
<blockquote>
<p>
It&#8217;s already a challenge to convince a local venue that they need a Web site, let alone a Twitter presence, let alone an iCal feed. I think the return a lot of businesses are seeing from social media has helped motivate these local businesses, though.
</p>
<p>
Really, it&#8217;s about giving them a tangible return on their efforts. What incentive do these businesses have to curate their calendars in a specific format when, realistically, it&#8217;s not going to equal the return they&#8217;d get on, say, curating a Twitter account. That&#8217;s what needs to be determined on our end. Specific examples that would give a business no excuse to say &#8220;no.&#8221;
</p>
</blockquote>
<p>
And here&#8217;s Jake, writing on <a href="http://www.critical-masses.com/jakeofalltrades/gospel-time-according-jon">his blog</a>:</p>
<blockquote>
<p>
I can&#8217;t help but feel that Jon is missing the bigger picture. Well, he&#8217;s &#8220;getting&#8221; the bigger picture -that calendar-ish data will probably be a &#8220;big&#8221; thing. His recombinant approach to existing tools and ideas, though, probably isn&#8217;t it. The ability to create such mashups is a hallmark of the &#8220;Web 2.0&#8243; era and Jon, once again, displays his masterful ability to create something powerful from simple, existing substrates. Historically, it&#8217;s been the entrepreneurs that somehow grasp a simple concept regarding human behavior -or an evolved human behavior- and bring that concept to bear on a traditionally complex problem that win out in the marketplace. I don&#8217;t have any idea what that concept will look like, so don&#8217;t ask, but I highly doubt that it will contain the recombinant DNA of existing solutions when it debuts.
</p>
<p>
Mind you, I said when it debuts. After the magical mystery viral calendar tool of the future gains traction, a clamor will be made for an API that will draw the tool into the prevailing social tapestry. (Facebook and Twitter today, who knows what tomorrow?) I wonder, though, will iCal make it into that mix when the day comes or is iCal&#8217;s fundamentally one-way nature not be up to the task of the wonder collaboration of tomorrow?
</p>
</blockquote>
<p>
Lately I&#8217;ve been pitching my project to folks who don&#8217;t dwell the geek ghetto. And I&#8217;ve been telling plain stories that seem to resonate &#8212; at least in the old-fashioned way, one-on-one and face-to-face. Here&#8217;s one of them:
</p>
<blockquote>
<p>
<b>The Monday night chess club</b>
</p>
<p>
The chess club in Keene gets together on Monday nights at 6:30. They used to gather at the Best Western hotel. Then they switched to the E.F. Lane hotel. For at least a year after the move, the Keene Sentinel&#8217;s community bulletin board continued to list the event at the Best Western. If the chess club had published its own authoritative feed, and communicated the address of that feed to the Sentinel &#8212; instead of transmitting a copy of soon-to-be-stale data &#8212; there might be a few more chess players showing up on Monday nights.
</p>
</blockquote>
<p>
Why should businesses want to publish information in a syndication-friendly format? Because, like all of us, they want to be the authoritative source for information about themselves. And because they don&#8217;t want to have to remember, and refresh, every touchpoint to which they have transmitted data by value rather than by reference.
</p>
<p>
Is iCal&#8217;s &#8220;fundamentally one-way nature up to the task of the wonder collaboration of tomorrow?&#8221; True, iCalendar is a <a href="http://blog.jonudell.net/2008/10/13/celebrating-icalendars-10th-anniversary-the-best-is-yet-to-come/">decade-old</a> standard that has never rocked the Internet, and maybe never will. But one-way? That limitation exists only in the eye of the beholder. The chess club can publish a calendar that the Keene Sentinel can subscribe to.<sup>1</sup> The Sentinel, in turn, can aggregate those subscriptions into a combined calendar that members of the chess club &#8212; and others in the community &#8212; can subscribe to. Those other individuals and organizations can also be publishers and subscribers. The system I am building is not really about iCalendar. It&#8217;s about the principles, patterns, and practices that make pub/sub ecosystems such fertile ground for communication and collaboration.
</p>
<p>
Of coure Mykel and Jake are right, and I value their skepticism. I haven&#8217;t yet figured out how to make the chess club anecdote go viral, or tell it in a way that business can&#8217;t say no to. But I&#8217;m warming to the task, and I&#8217;m starting to connect with <a href="http://friendfeed.com/dwitzel">environmental activists</a>, <a href="http://friendfeed.com/anachrolibrarian">librarians</a>, <a href="http://friendfeed.com/finalcut">civic-minded geeks</a>, and <a href="http://friendfeed.com/doubt">colleagues</a> who can help me advance the story.
</p>
<hr />
<p>
<sup>1</sup> The infrastructure that I&#8217;m building is dedicated to this purpose. If you&#8217;re a newspaper, a library, a chamber of commerce, or some other natural attention hub in your community, I want to help you syndicate calendars through your hub.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/1553/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/1553/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/1553/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/1553/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/1553/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/1553/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/1553/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/1553/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/1553/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/1553/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1553&subd=jonudell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2009/05/27/useful-feedback-from-old-friends-and-new-friends/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 Eric Rodenbeck about usefully cool design and engineering</title>
		<link>http://blog.jonudell.net/2009/05/26/a-conversation-with-eric-rodenbeck-about-usefully-cool-design-and-engineering/</link>
		<comments>http://blog.jonudell.net/2009/05/26/a-conversation-with-eric-rodenbeck-about-usefully-cool-design-and-engineering/#comments</comments>
		<pubDate>Tue, 26 May 2009 10:04:53 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=1548</guid>
		<description><![CDATA[
My guest for this week&#8217;s ITConversations show is Eric Rodenbeck, the creative director of Stamen Design. His 2008 ETech talk wowed me, and inspired this meditation on time, space, and data.


Near the end of this interview, as we were discussing the tension between graphic design and engineering sensibilities, Eric said:



When it was just me, working [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1548&subd=jonudell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>
My guest for <a href="http://itc.conversationsnetwork.org/shows/detail4113.html">this week&#8217;s ITConversations show</a> is Eric Rodenbeck, the creative director of <a href="http://stamen.com">Stamen Design</a>. His <a href="http://itc.conversationsnetwork.org/shows/detail3769.html">2008 ETech talk</a> wowed me, and inspired <a href="http://blog.jonudell.net/2009/02/11/time-space-and-data/">this meditation</a> on time, space, and data.
</p>
<p>
Near the end of this interview, as we were discussing the tension between graphic design and engineering sensibilities, Eric said:
</p>
<blockquote>
<p>
When it was just me, working as a designer, I was having fun, but I wasn&#8217;t able to be effective. And when Mike [<a href="http://stamen.com/studio/mike">Michal Migurski</a>, Stamen's technical architect] was doing tech work for PR companies, it wasn&#8217;t all that great. But when we came together, suddenly we had something.</p>
<p>
Even in a design studio that we control, though, it&#8217;s hard to address that split between the lush sexy design versus the tech. Versus! Why is it always versus?
</p>
</blockquote>
<p>
Exactly. Eric also notes another false dichotomy: cool versus useful. We violently agreed that coolness and utility are two sides of the same coin.
</p>
<p>
For that reason, it would fun to also talk to Eric&#8217;s technical partner Mike Magurski. In this interview, we learn that he created the original API for <a href="http://oakland.crimespotting.org">Oakland Crimespotting</a> by scraping <a href="http://gismaps.oaklandnet.com/crimewatch/wizard.asp">this police site</a>, which (still) produces map images like this:
</p>
<p>
<img style="border-style:solid;border-width:thin;" src="http://jonudell.net/img/oakland-crime-icons.png">
</p>
<p>
Mike&#8217;s task was to identify and locate incidents by writing code that would scan those images for &#8220;purple bras, boxing gloves, and hypodermic needles.&#8221; Which is funny, but also sad. So many more usefully cool things will be able to happen when publishers of data finally start to learn <a href="http://oakland.crimespotting.org/api">how to publish data</a>.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/1548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/1548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/1548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/1548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/1548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/1548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/1548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/1548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/1548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/1548/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1548&subd=jonudell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2009/05/26/a-conversation-with-eric-rodenbeck-about-usefully-cool-design-and-engineering/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>

		<media:content url="http://jonudell.net/img/oakland-crime-icons.png" medium="image" />
	</item>
		<item>
		<title>IronPython and the elmcity project: Together again</title>
		<link>http://blog.jonudell.net/2009/05/20/ironpython-and-the-elmcity-project-together-again/</link>
		<comments>http://blog.jonudell.net/2009/05/20/ironpython-and-the-elmcity-project-together-again/#comments</comments>
		<pubDate>Wed, 20 May 2009 12:16:37 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=1544</guid>
		<description><![CDATA[
In the first installment of this elmcity+azure series my plan was to build an Azure-based calendar aggregator using IronPython. That turned out not to be possible at the time, because IronPython couldn&#8217;t run at full strength in Azure&#8217;s medium-trust environment. So I switched to C#, and have spent the past few months working in that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1544&subd=jonudell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>
In the <a href="http://blog.jonudell.net/2008/11/07/hello-world/">first installment</a> of this <a href="http://delicious.com/judell/elmcity+azure">elmcity+azure</a> series my plan was to build an Azure-based calendar aggregator using IronPython. That turned out not to be possible at the time, because IronPython couldn&#8217;t run at full strength in Azure&#8217;s medium-trust environment. So I switched to C#, and have spent the past few months working in that language.
</p>
<p>
It&#8217;s been a long while since I&#8217;ve worked intensively in a compiled and statically-typed language. But I love being contrarian. At a time when <a href="http://blog.thinkrelevance.com/2008/2/7/grokking-groovy">low ceremony languages are surging in popularity</a>, I&#8217;m revisiting the realm of high ceremony. It&#8217;s been an enjoyable challenge, I&#8217;ve gotten good results, and it&#8217;s given me a chance to reflect in a more balanced way on the &#8220;ceremony vs. essence&#8221; dialogue.
</p>
<p>
Meanwhile, Azure has moved forward. It now provides a full-trust environment. That means you can run <a href="http://blog.smarx.com/posts/php-asp-net-in-windows-azure">PHP</a>, which is interesting to a lot of folks, but it also means you can run IronPython, which is interesting to me.
</p>
<p>
In this entry I&#8217;ll show you how I&#8217;m starting to integrate IronPython in the two main components of my Azure project: the <i>web role</i> that provides the (currently minimal) user interface, and the <i>worker role</i> that does calendar aggregation.
</p>
<h2>
Using IronPython in an ASP.NET MVC Azure web role<br />
</h2>
<p>
The elmcity service writes a lot of log data to an Azure table. I&#8217;ll want curators to be able to query the slices of that log that pertain to the cities whose calendars they are curating. For Providence, RI, which uses the elmcity (and delicious) id mashablecity, the URLs for those queries might look something like this:
</p>
<p>
/services/mashablecity/log_info (log entries of type &#8220;info&#8221;)
</p>
<p>
/services/mashablecity/log_exception (log entries of type &#8220;exception&#8221;)
</p>
<p>
Here&#8217;s an URL route to carve out a namespace shaped like that:
</p>
<pre>
routes.MapRoute(
 "services",
 "services/{id}/{what}",
 new { controller="LogServices", action="QueryLog", id="", what="" },
 );
</pre>
<p>
Here&#8217;s a simplified version of the corresponding LogServicesController.cs:
</p>
<pre>
[HandleError]
public class ServicesController : Controller
  {
  public ActionResult QueryLog(string id, string what)
    {
    return new ObjectResult(id, what);
    }
  }

public class ObjectResult: ActionResult
  {
  string id;
  string what;

  public ObjectResult( string id, string what)
    {
    this.id = id;
    this.what = what;
    }

  public override void ExecuteResult(ControllerContext context)
    {
    switch (this.what)
      {
      case "log_info":
         var script_url = make_script_url(this.id, this.what);
         var args = new List() { this.id, this.what };
         var result = new ContentResult
          {
          ContentType = "text/plain",
          Content = Utils.run_ironpython(script_url, args),
          ContentEncoding = UTF8
          };
        result.ExecuteResult(context);
        break;
      case  "log_exception":
      // etc
      }
    }
</pre>
<p>
This fragment takes in the URL parameters, forms the URL that IronPython will use to fetch the script that it runs, packages the parameters into a list, calls a method to invoke IronPython, and dumps the script&#8217;s output into the outgoing HTTP response.
</p>
<p>
Here&#8217;s the code to invoke IronPython:
</p>
<pre>
public static ScriptEngine python = Python.CreateEngine();

public static string run_ironpython(string script_url, List args)
  {
  var ipy_args = new IronPython.Runtime.List();
  foreach (var item in args)
    ipy_args.Add(item);
  var result = "";
  try
    {
    var s = Utils.FetchUrl(script_url).data_as_string;
    var source = python.CreateScriptSourceFromString(s,
      SourceCodeKind.Statements);
    var scope = python.CreateScope();
    var sys = python.GetSysModule();
    sys.SetVariable("argv", args);
    source.Execute(scope);
    result = scope.GetVariable("result").ToString();
    }
  catch (Exception e)
    {
    result = e.Message.ToString() + e.StackTrace.ToString();
    }
  return result;
  }
</pre>
<p>
Whatever the script deposits in a Python variable called <i>result</i> winds up as the content of the HTTP response.
</p>
<h2>
Using IronPython in an Azure worker role<br />
</h2>
<p>
Until recently I&#8217;ve been running some IronPython maintenance scripts from a standalone client machine. Now I&#8217;ve pushed them to the cloud. Here&#8217;s the scheduler that sets a timer to invoke a handler on a periodic basis:
</p>
<pre>
public static void scheduler (ElapsedEventHandler handler, int minutes)
  {
  var timer = new Timer();
  timer.Elapsed += handler;
  timer.AutoReset = true;
  timer.Interval = 1000 * 60 * minutes;
  timer.Start();
  }
</pre>
<p>
And here&#8217;s the handler:
</p>
<pre>
public static void IronPythonHandler(object o, ElapsedEventArgs e)
  {
  try
    {
    var s = Utils.FetchUrl(Configurator.ADMIN_SCRIPT).data_as_string;
    var source = python.CreateScriptSourceFromString(s,
       SourceCodeKind.Statements);
    var scope = python.CreateScope();
    source.Execute(scope);
    ts.write_log_message("info", "IronPythonHandler");
    }
  catch (Exception ex)
    {
    ts.write_log_message("exception", "IronPythonHandler",
      ex.Message.ToString() + ex.StackTrace.ToString());
    }
  }
</pre>
<h2>Best of both worlds</h2>
<p>
I&#8217;m still sorting out how I want to combine these two worlds, and I&#8217;m having a blast doing it. Could I have written the whole system in IronPython, had the option been available when I started? Undoubtedly. But high ceremony, coupled with a sophisticated tool like Visual Studio, has its charms. So does low ceremony and emacs. Using both together, and leveraging all their strengths, is really productive. And it&#8217;s loads of fun too.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/1544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/1544/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/1544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/1544/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/1544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/1544/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/1544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/1544/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/1544/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/1544/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1544&subd=jonudell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2009/05/20/ironpython-and-the-elmcity-project-together-again/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 Philip Rosedale about organizational dynamics</title>
		<link>http://blog.jonudell.net/2009/05/18/talking-with-philip-rosedale-about-organizational-dynamics/</link>
		<comments>http://blog.jonudell.net/2009/05/18/talking-with-philip-rosedale-about-organizational-dynamics/#comments</comments>
		<pubDate>Mon, 18 May 2009 15:32:11 +0000</pubDate>
		<dc:creator>Jon Udell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.jonudell.net/?p=1542</guid>
		<description><![CDATA[
On this week&#8217;s Innovators show I talked with Philip Rosedale about the ways in which Second Life, the virtual world, and Linden Lab, the real company, are laboratories for experimenting with social, economic, and organizational principles.


As I was editing the show, I sent some of the notable quotes to Twitter:


On transparency and central control:


As communication [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1542&subd=jonudell&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>
On this week&#8217;s <a href="http://itc.conversationsnetwork.org/shows/detail4112.html">Innovators show</a> I talked with Philip Rosedale about the ways in which Second Life, the virtual world, and Linden Lab, the real company, are laboratories for experimenting with social, economic, and organizational principles.
</p>
<p>
As I was editing the show, I sent some of the notable quotes to Twitter:
</p>
<p>
On transparency and central control:
</p>
<blockquote><p>
As communication technology makes transparency cheaper, the need for central control drops.
</p></blockquote>
<p>
On why Second Life works well for group meetings:
</p>
<blockquote><p>
We spatialize the audio so you hear where everyone&#8217;s voice is coming from.
</p></blockquote>
<p>
On distributed development:
</p>
<blockquote><p>
We don&#8217;t specialize roles by geographic location.
</p></blockquote>
<p>
The Linden Lab experience with decentralization, transparency, and fluid team formation echoes what we&#8217;ve heard from <a href="http://blog.jonudell.net/2009/02/09/a-conversation-with-andy-singleton-about-distributed-software-development/">Andy Singleton</a>. Philip Rosedale adds this thoughtful observation:
</p>
<blockquote><p>
There&#8217;s a tension between people&#8217;s desire to work together in a cohesive, familial kind of unit, and the organization&#8217;s need to have people work together in the way that&#8217;s optimal for projects, where you want to attack a problem, work together, disband, and then reform to work with different people on the next problem.</p></blockquote>
<p>
Even if you will never fly an avatar around in Second Life, or use the in-world construction kit to build a 3D object, it&#8217;s fascinating to hear about the organizational strategies that Philip Rosedale believes make it all possible.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonudell.wordpress.com/1542/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonudell.wordpress.com/1542/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonudell.wordpress.com/1542/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonudell.wordpress.com/1542/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonudell.wordpress.com/1542/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonudell.wordpress.com/1542/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonudell.wordpress.com/1542/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonudell.wordpress.com/1542/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonudell.wordpress.com/1542/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonudell.wordpress.com/1542/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jonudell.net&blog=109309&post=1542&subd=jonudell&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.jonudell.net/2009/05/18/talking-with-philip-rosedale-about-organizational-dynamics/feed/</wfw:commentRss>
		<slash:comments>1</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>
	</channel>
</rss>