<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>iamthewalr.us</title>
	<atom:link href="http://iamthewalr.us/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://iamthewalr.us/blog</link>
	<description>by Colin Barrett</description>
	<lastBuildDate>Sun, 06 Jun 2010 00:57:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>I&#8217;ll see you around, but not at, WWDC10</title>
		<link>http://iamthewalr.us/blog/2010/06/ill-see-you-around-but-not-at-wwdc10/</link>
		<comments>http://iamthewalr.us/blog/2010/06/ill-see-you-around-but-not-at-wwdc10/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 23:49:59 +0000</pubDate>
		<dc:creator>Colin Barrett</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[wwdc]]></category>

		<guid isPermaLink="false">http://iamthewalr.us/blog/?p=291</guid>
		<description><![CDATA[My first WWDC was in 2006, when I flew in from Hawaii and stayed in a youth hostel in the Tenderloin with four friends. We were still too young to drink so we weren&#8217;t anywhere to be found at WWDC&#8217;s famous parties, but we made our own fun: staying up until dawn talking to a [...]]]></description>
			<content:encoded><![CDATA[<p>My first WWDC was in 2006, when I flew in from Hawaii and stayed in a youth hostel in the Tenderloin with four friends. We were still too young to drink so we weren&#8217;t anywhere to be found at WWDC&#8217;s famous parties, but we made our own fun: staying up until dawn talking to a security researcher about the NSA; playing games until we couldn&#8217;t stay up anymore; just straight up talking about nothing; crowding so many attendees into the lounge that the router refused to hand out more IPs.<sup id="fnref:dhcp over shouting"><a href="#fn:dhcp over shouting" rel="footnote">1</a></sup></p>

<p>I&#8217;ve attended every year since (although I haven&#8217;t been back to that youth hostel). Every year, that is, except this year. I don&#8217;t mind the preponderance of iPhone and iPad sessions that some have complained about &#8212; I too am primarily focused on iPhone OS lately. <strong>I&#8217;m not going this year because of the $300 price bump.</strong><sup id="fnref:bump"><a href="#fn:bump" rel="footnote">2</a></sup></p>

<p>WWDC is on the whole a fantastic experience and anyone who develops for Apple platforms should think long and hard about attending; however I&#8217;ve felt that the sessions, which make up the bulk of the conference, have been less than relevant to me the past few years. There hasn&#8217;t been a lot of content actually tailored for &#8220;experts&#8221;, Apple&#8217;s track names aside &#8212; maybe three or four sessions throughout the week. That&#8217;s not worth $1600, especially when last year they put the videos up for sale within a month or two.</p>

<p>Last year, I told myself that I was going for the labs &#8212; and indeed, I did get some fantastic help there. But did I really get $1600 worth of help? Is an hour of lab time really worth roughly order of magnitude more than my own time? I thought a lot about it and decided I couldn&#8217;t justify it this year. Not this year, when there&#8217;s an aging Macbook Pro to replace, RAM to upgrade, and a new phone to buy.<sup id="fnref:hardware"><a href="#fn:hardware" rel="footnote">3</a></sup></p>

<p>Fortunately, I&#8217;m a San Francisco resident, <strong>so I&#8217;ll get to experience the best of WWDC for free</strong>, or at least, at no additional charge. This year, I&#8217;ll see you all at the many parties and gatherings, impromptu or otherwise. But don&#8217;t look for me on the conference floor.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:dhcp over shouting">
<p>We ended up devising DHCP Over Shouting, in which you pick an IP by choosing one at random and then asking very loudly if anybody else is using it.&#160;<a href="#fnref:dhcp over shouting" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:bump">
<p>Originally I thought it was a $400 bump, but <a href="http://twitter.com/atomicbird/status/15519141638">Tom Harrington tells me</a> that the erstwhile early bird pricing was $1300, not $1200.&#160;<a href="#fnref:bump" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:hardware">
<p>I&#8217;m still on a 2G iPhone, my Rev A Macbook Pro turns four this summer, and my iMac still has only 2GB of RAM in it. Jiminy.&#160;<a href="#fnref:hardware" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://iamthewalr.us/blog/2010/06/ill-see-you-around-but-not-at-wwdc10/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Kaleidoscope 1.0</title>
		<link>http://iamthewalr.us/blog/2010/06/kaleidoscope-1-0/</link>
		<comments>http://iamthewalr.us/blog/2010/06/kaleidoscope-1-0/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 22:02:12 +0000</pubDate>
		<dc:creator>Colin Barrett</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[diff viewer]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[sofa]]></category>

		<guid isPermaLink="false">http://iamthewalr.us/blog/?p=283</guid>
		<description><![CDATA[New €29 file comparison utility from Sofa. I beta tested it and it&#8217;s an absolutely gorgeous product &#8212; I use it every day. It can compare images in addition to text files and its integration with Mercurial and other version control systems is great. My only issue is that it doesn&#8217;t show you files that [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.kaleidoscopeapp.com/">New €29 file comparison utility from Sofa</a>. I beta tested it and it&#8217;s an absolutely gorgeous product &#8212; I use it every day. It can compare images in addition to text files and its integration with Mercurial and other version control systems is great. My only issue is that it doesn&#8217;t show you files that are completely new or deleted outright in the application&#8217;s UI &#8212; instead it prints a message to your terminal. I&#8217;ve been told they&#8217;re working on it.</p>

<p>My favorite part, though, is the website. Every part of if oozes attention to detail, right down to the source code. Definitely check it out in Safari and pay close attention to the icon. Wow.</p>
]]></content:encoded>
			<wfw:commentRss>http://iamthewalr.us/blog/2010/06/kaleidoscope-1-0/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Code Bubbles IDE</title>
		<link>http://iamthewalr.us/blog/2010/05/code-bubbles-ide/</link>
		<comments>http://iamthewalr.us/blog/2010/05/code-bubbles-ide/#comments</comments>
		<pubDate>Wed, 26 May 2010 19:56:47 +0000</pubDate>
		<dc:creator>Colin Barrett</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://iamthewalr.us/blog/?p=281</guid>
		<description><![CDATA[Andrew Bragdon, Brown University:


  The essential goal of this project is to make it easier for developers to see many fragments of code (or other information) at once without having to navigate back and forth. Each of these fragments is shown in a bubble.


A surprisingly deep exploration of an idea I&#8217;ve been dreaming about [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cs.brown.edu/people/acb/codebubbles_site.htm">Andrew Bragdon, Brown University:</a></p>

<blockquote>
  <p>The essential goal of this project is to make it easier for developers to see many fragments of code (or other information) at once without having to navigate back and forth. Each of these fragments is shown in a bubble.</p>
</blockquote>

<p>A surprisingly deep exploration of an idea I&#8217;ve been dreaming about for quite a while now. The idea of having a virtual workspace where you can browse classes and edit code <a href="http://www.squeak.org/">isn&#8217;t new</a>, but I&#8217;m not aware of any other development environment that correctly identifies the <em>function</em> &#8212; not the file or class &#8212; as the atomic unit of programming.</p>

<p>Too bad it&#8217;s built for Java, which unfortunately is still <i>de rigueur</i> among  Computer Science academics.</p>
]]></content:encoded>
			<wfw:commentRss>http://iamthewalr.us/blog/2010/05/code-bubbles-ide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The User</title>
		<link>http://iamthewalr.us/blog/2010/02/the-user/</link>
		<comments>http://iamthewalr.us/blog/2010/02/the-user/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 02:25:50 +0000</pubDate>
		<dc:creator>Colin Barrett</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://iamthewalr.us/blog/?p=275</guid>
		<description><![CDATA[Let&#8217;s talk about users. This user is, seemingly, a mythical creature; commonly believed to be a slow, lumbering creature grazing the Internet, credit card in hand, clicking on things essentially at random. Occasionally users are captured and studied in a lab by people who graduated from prestigious universities with a degree in the important-sounding field [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s talk about users. This user is, seemingly, a mythical creature; commonly believed to be a slow, lumbering creature grazing the Internet, credit card in hand, clicking on things essentially at random. Occasionally users are captured and studied in a lab by people who graduated from prestigious universities with a degree in the important-sounding field of &#8220;Human-Computer Interaction&#8221;. In most cases, these users are released back into the wild unharmed.</p>

<p>It is also commonly believed that the user is a creature of such low intelligence that it either cannot (or worse, refuses to) understand how a computer works. There are several opinions on what to do about this. Some believe users completely unfit to actually use computers and clap their hands over their ears at the first mention of the beasts. Others, recognizing the revenue potential of building a product for use by people other than computer professionals (also called &#8220;geeks&#8221; or &#8220;nerds&#8221;), declare a sort of fealty to the user and try their hardest to help the user by writing things like manuals, documentation and FAQs and staying up all night &#8220;optimizing the user workflow to improve our first-run funnel&#8221;.</p>

<p>Still others, observing the fact that users seem to be multiplying at an alarming rate, wring their hands day and night about a future where there aren&#8217;t any more programmers, geeks or nerds and the entire planet is covered by nothing but drooling, stammering <em>users</em>. &#8220;Who will create content for the users if there&#8217;s nothing but users?&#8221; they cry. Shouts of &#8220;Our entire civilization will fall apart if there aren&#8217;t Atari 2600s to learn to program on!&#8221; are followed by breast-beating, hemming, hawing and more handwringing.</p>

<p>Reader, I have some startling news for you. It has recently been discovered that users are in fact, <em>people</em>. In case you&#8217;re unfamiliar with the term, people are human beings who are generally very busy. How did this happen? How could we have mistaken people, especially very busy, very smart people like doctors, lawyers, auto mechanics and baseball umpires, for slow, dimwitted users?</p>

<h3>Sauropods, swamps and Sam Neill</h3>

<p>To answer that question, we need to make a short detour into history of paleontology. In the latter half of the 19th century, <a href="http://en.wikipedia.org/wiki/Bone_Wars">the Bone Wars</a> were raging, and <a href="http://en.wikipedia.org/wiki/Illiad#The_major_characters">the Achilles and Hector</a> of the Bone Wars were Othniel Charles Marsh and Edward Drinker Cope. This was a time when wealthy men raced to out do one another on the field of scientific combat and careful scientific study took a backseat to egos and sensationalism. Many, many mistakes were made. One of the most famous is poor <em>Brontosaurus</em>, discovered by Marsh in 1877.</p>

<p>You may remember <em>Brontosaurus</em> if you grew up obsessed with dinosaurs, like I did. At age 8 I was absolutely captivated by anything that had been extinct for at least 65 million years. <em>Brontosaurus</em>, meaning &#8220;thunder lizard&#8221;, was truly an impressive animal to imagine. Up to 80 feet long, it had a massive body, huge legs and an unbelievably long neck and tail. <em>Brontosaurus</em>, like the other sauropods, was said to live in marshy swamps. After all, an animal that massive needs a tremendous amount of energy to simply hold itself up, and there&#8217;s no way it could get enough with a small mouth with which to chew food. Clearly, <em>Brontosaurus</em> needed the buoyancy of water simply to live.</p>

<p>It turns out this was all terribly wrong. Firstly, there wasn&#8217;t any animal quite like the <em>Brontosaurus</em> that Marsh described. What Marsh found was an adult <em>Apatosaurus</em> skeleton with the head of a <em>Camarasaurus</em>. Secondly, it turns out that sauropods had plenty of energy. Like birds, they didn&#8217;t chew their food at all; they swallowed it whole and mashed it up in a part of their stomach called <a href="http://en.wikipedia.org/wiki/Gizzard#Dinosaurs">the gizzard</a>; the size of their mouth wasn&#8217;t a limiting factor. In reality, they were probably quite active animals &#8212; <em>Jurassic Park</em> depicts one standing on its hind legs to munch on some leaves. Thirdly, it turns out that sauropods didn&#8217;t live in the water at all &#8212; in fact, <a href="http://en.wikipedia.org/wiki/The_Dinosaur_Heresies">analysis by Robert T. Bakker</a> showed that sauropods hated it, and would move out as an area became wet.</p>

<h3>Whither users</h3>

<p>If you haven&#8217;t already guessed it, Reader, the point of that aside was that just like Marsh, we nerds created users out of thin air by making a lot of quick, baseless assumptions. Marsh assumed sauropods chewed their food, and so he saw a water-bound reptilian sloth instead of an unmasticating lizard with a gizzard. We assumed that users were incapable of comprehending computers, and so we saw a blithering idiot instead of a busy person too focused on completing a task to take the time to learn how the internet works.</p>

<p>As more and more people depend on computers for every day things, the products that succeed are going to be ones that figure this out. People don&#8217;t want to mess with multiple windows or command lines because they want to &#8220;just do&#8221; whatever one thing that they&#8217;re doing. People click on the first link on Google &#8212; even if it&#8217;s &#8220;clearly&#8221; a news article &#8212; because they&#8217;re trying to get to Facebook and that&#8217;s how they&#8217;ve gotten there the past 50,000 times.</p>

<p>Trying to understand the behavior of people solely through metrics, usability lab studies and surveys is like trying to figure out the habits of creatures that lived hundred of millions years ago based a on handful of fossilized bone fragments. When you have limited data it&#8217;s very easy to get an assumption wrong. And one wrong assumption can lead you down a very long rabbit hole.</p>
]]></content:encoded>
			<wfw:commentRss>http://iamthewalr.us/blog/2010/02/the-user/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Annus Mirabilis</title>
		<link>http://iamthewalr.us/blog/2010/01/annus-mirabilis/</link>
		<comments>http://iamthewalr.us/blog/2010/01/annus-mirabilis/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 02:46:50 +0000</pubDate>
		<dc:creator>Colin Barrett</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://iamthewalr.us/blog/?p=269</guid>
		<description><![CDATA[All signs point to 2010 being Apple&#8217;s annus mirabilis.

The introduction of the iPad is only the beginning. WWDC10 looks like it&#8217;s going to be fantastic; typical release cycles seem to point where we&#8217;re likely going to see the release iPhone OS 4.0 along with a new iPhone, and the first tidbits of Mac OS X. [...]]]></description>
			<content:encoded><![CDATA[<p>All signs point to 2010 being Apple&#8217;s <a href="http://en.wikipedia.org/wiki/Annus_mirabilis">annus mirabilis</a>.</p>

<p>The introduction of the iPad is only the beginning. WWDC10 looks like it&#8217;s going to be fantastic; typical release cycles seem to point where we&#8217;re likely going to see the release iPhone OS 4.0 along with a new iPhone, and the first tidbits of Mac OS X. Additionally, while we have seen <a href="http://www.apple.com/ipad/app-store/#iwork">something from the iWork team</a> this year, we haven&#8217;t seen anything from the iLife team yet.</p>

<p>It&#8217;s also worth noting that Snow Leopard featured very few new features and interface changes; I highly doubt that Apple&#8217;s designers were paid to do nothing for the entire Snow Leopard cycle. I&#8217;m geared up for all kinds of crazy Mac OS X stuff this WWDC.</p>

<p>There&#8217;s also the usual array of new hardware announcements; a brief glance at <a href="http://buyersguide.macrumors.com/">the numbers</a> makes me think we&#8217;re in for a wild, wild year on that front as well.</p>

<p>I&#8217;ve been following Apple news since the early &#8217;90s<sup id="fnref:life"><a href="#fn:life" rel="footnote">1</a></sup> and I can&#8217;t recall ever being as excited about what&#8217;s coming next as I am right now.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:life">
<p>Basically, as soon as I was old enough to follow news.&#160;<a href="#fnref:life" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://iamthewalr.us/blog/2010/01/annus-mirabilis/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>UISearchDisplayController and UILocalizedIndexedCollation</title>
		<link>http://iamthewalr.us/blog/2009/12/uisearchdisplaycontroller-and-uilocalizedindexedcollation/</link>
		<comments>http://iamthewalr.us/blog/2009/12/uisearchdisplaycontroller-and-uilocalizedindexedcollation/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 01:12:06 +0000</pubDate>
		<dc:creator>Colin Barrett</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://iamthewalr.us/blog/?p=266</guid>
		<description><![CDATA[Over the years, I have been, for the most part, pleased with Apple&#8217;s documentation for Cocoa, and its documentation for Cocoa Touch has been no different. However, there are always some some cases where two things jut up against each other in odd ways.

I recently encountered an example of this: How do you build a [...]]]></description>
			<content:encoded><![CDATA[<p>Over the years, I have been, for the most part, pleased with Apple&#8217;s documentation for Cocoa, and its documentation for Cocoa Touch has been no different. However, there are always some some cases where two things jut up against each other in odd ways.</p>

<p>I recently encountered an example of this: How do you build a <code>UITableView</code> combining the powers of both <code>UISearchDisplayController</code> and <code>UILocalizedIndexedCollation</code>? The documentation for each is excellent &#8212; particularly the <a href="http://developer.apple.com/iphone/library/samplecode/TableSearch/index.html">TableSearch</a> and <a href="http://developer.apple.com/iphone/library/samplecode/TableViewSuite/index.html">TableViewSuite</a> code samples &#8212; but I noticed no mention of how to combine the two à la the Contacts application.</p>

<p><img src="http://farm3.static.flickr.com/2749/4231826145_01089881ce.jpg"/></p>

<p>The non-obvious bits are:</p>

<ol>
<li>How to display the small magnifying glass symbol.</li>
<li>How to scroll the <code>UISearchBar</code> in to view when the magnifying glass symbol is tapped.</li>
<li>How this integrates with <code>UILocalizedIndexedCollation</code>. </li>
</ol>

<p>The first one is relatively simple: <code>UITableView.h</code> declares an <code>NSString</code> constant <code>UITableViewIndexSearch</code>. The second one takes a little thinking, but isn&#8217;t hard:</p>

<pre><code>CGRect searchBarFrame = self.searchDisplayController.searchBar.frame;
[tableView scrollRectToVisible:searchBarFrame animated:NO];
</code></pre>

<p>Since a view&#8217;s <code>frame</code> is in the coordinates of its superview and since <code>UISearchBar</code> is inserted as a subview of <code>UITableView</code> (a subclass of <code>UIScrollView</code>), we can use this <code>UIScrollView</code> method to scroll the <code>UISearchBar</code> into place.</p>

<p>The last one is a little trickier, and is best explained with some code up front:<sup id="fnref:dotsyntax"><a href="#fn:dotsyntax" rel="footnote">1</a></sup></p>

<pre><code>// in sectionIndexTitlesForTableView:
return [[NSArray arrayWithObject:UITableViewIndexSearch] arrayByAddingObjectsFromArray:
        [[UILocalizedIndexedCollation currentCollation] sectionIndexTitles]];

// in tableView:sectionForSectionIndexTitle:atIndex:
if (title == UITableViewIndexSearch) {
    CGRect searchBarFrame = self.searchDisplayController.searchBar.frame;
    [tableView scrollRectToVisible:searchBarFrame animated:NO];
    return -1;
} else {
    UILocalizedIndexedCollation *currentCollation = [UILocalizedIndexedCollation currentCollation];
    return [currentCollation sectionForSectionIndexTitleAtIndex:index-1];
}
</code></pre>

<p>In <code>sectionIndexTitlesForTableView:</code> we construct an array that starts with <code>UITableViewIndexSearch</code> and is followed by the section index titles from the current collation.</p>

<p>In <code>tableView:sectionForSectionIndexTitle:atIndex:</code> we check the special case of <code>UITableViewIndexSearch</code>, handle it with a call to <code>scrollRectToVisible:animated:</code> as noted above. Returning <code>-1</code> isn&#8217;t the greatest idea but for now <code>UITableView</code> seems to ignore it and in the future, if that changes, this will (hopefully) crash in a predictable way.<sup id="fnref:oob"><a href="#fn:oob" rel="footnote">2</a></sup></p>

<p>If the user has in fact tapped on one of the letters, we subtract one from the index passed in and return the corresponding section. If that&#8217;s a little confusing, remember that we inserted <code>UITableViewIndexSearch</code> at the beginning of the section index titles array, so our indexes are off by one.</p>

<h3>Sample code</h3>

<p>It always helps me to see code in action, so <a href="http://iamthewalr.us/blog/wp-content/uploads/2009/12/TableSearch-with-index.zip">I&#8217;ve modified the TableSearch code sample to include a section index</a>.</p>

<p>It&#8217;s a real testament to the skill of the guys designing these APIs that this was that easy. Neither of these two APIs are fighting each other but instead are standing far enough apart that a developer can bridge the gap with clever bits of glue.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:dotsyntax">
<p>I normally don&#8217;t use dot syntax, but the TableSearch sample code does.&#160;<a href="#fnref:dotsyntax" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:oob">
<p>I would expect an <code>NSRangeException</code> to be thrown.&#160;<a href="#fnref:oob" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://iamthewalr.us/blog/2009/12/uisearchdisplaycontroller-and-uilocalizedindexedcollation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Introducing guess-renames</title>
		<link>http://iamthewalr.us/blog/2009/09/introducing-guess-renames/</link>
		<comments>http://iamthewalr.us/blog/2009/09/introducing-guess-renames/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 01:32:33 +0000</pubDate>
		<dc:creator>Colin Barrett</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bazaar]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[guess-renames]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://iamthewalr.us/blog/?p=257</guid>
		<description><![CDATA[Today I&#8217;m letting the world know about a little something I&#8217;ve been working on. It&#8217;s called guess-renames.

guess-renames solves a simple problem: Rename several files, either by hand or with a refactoring tool, and your version control system gets horribly confused and you have to spend 20 minutes running the same commands over and over again.1

No [...]]]></description>
			<content:encoded><![CDATA[<p>Today I&#8217;m letting the world know about a little something I&#8217;ve been working on. It&#8217;s called <a href="/projects/guess-renames">guess-renames</a>.</p>

<p>guess-renames solves a simple problem: Rename several files, either by hand or with a refactoring tool, and your version control system gets horribly confused and you have to spend 20 minutes running the same commands over and over again.<sup id="fnref:cvs"><a href="#fn:cvs" rel="footnote">1</a></sup></p>

<p>No more. Now, just run guess-renames and presto, you&#8217;re up to date. No more commands to run, just commit. guess-renames is even smart enough to identify renamed files <em>even if their contents differ slightly</em>.</p>

<p>I&#8217;ve written a brief <a href="/projects/guess-renames#algorithm">description of the algorithm</a> &#8212; originally designed by <a href="http://code.aaronbentley.com/">Aaron Bentley</a> for <a href="http://bazaar-vcs.org">Bazaar</a> &#8212; and I won&#8217;t reprint it here, but I do want to note just how smart this thing is: Aaron ran a test on the entire Launchpad source tree. First, he rewound the contents of each file 300 revisions; and then he renamed <em>every single one</em>. Except for empty files<sup id="fnref:emptyfiles"><a href="#fn:emptyfiles" rel="footnote">2</a></sup>, guess-renames was right 100% of the time. Maybe I&#8217;m just a dork, but to me that&#8217;s <em>so incredibly huge</em>.</p>

<p>This is seriously really cool stuff. I encourage you to <a href="/projects/guess-renames">take guess-renames for a spin</a>.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:cvs">
<p>I mean, you&#8217;re using a version control system that tracks file renames, right? Right?&#160;<a href="#fnref:cvs" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:emptyfiles">
<p>guess-renames works by looking at file contents, so empty files (in this case &#95;_init__.py files) don&#8217;t factor in to its algorithm.&#160;<a href="#fnref:emptyfiles" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://iamthewalr.us/blog/2009/09/introducing-guess-renames/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Tale of &#8220;The Tale of Dog Poop Girl Is Not So Funny After All&#8221; Is Pretty Funny After All</title>
		<link>http://iamthewalr.us/blog/2009/05/the-tale-of-the-tale-of-dog-poop-girl-is-not-so-funny-after-all-is-pretty-funny-after-all/</link>
		<comments>http://iamthewalr.us/blog/2009/05/the-tale-of-the-tale-of-dog-poop-girl-is-not-so-funny-after-all-is-pretty-funny-after-all/#comments</comments>
		<pubDate>Tue, 12 May 2009 09:10:56 +0000</pubDate>
		<dc:creator>Colin Barrett</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://iamthewalr.us/blog/?p=210</guid>
		<description><![CDATA[I at first didn&#8217;t know how to respond to this piece of stale Weird News fluff. I think it deserves more than 140 or 280 or 420 characters though.

(For the lazy man: the article, circa 2005, is discussing the internet, specifically privacy implications, and gives the last word to an extended quote from a pseudonymous [...]]]></description>
			<content:encoded><![CDATA[<p>I <a href="http://twitter.com/cbarrett/status/1771696158">at first</a> didn&#8217;t know how to respond to <a href="http://www.cjr.org/behind_the_news/the_tale_of_dog_poop_girl_is_n.php">this piece of stale Weird News fluff</a>. I think it deserves more than 140 or 280 or 420 characters though.</p>

<p>(For the lazy man: the article, circa 2005, is discussing the internet, specifically privacy implications, and gives the last word to an extended quote from a pseudonymous comment on the WaPo&#8217;s article on the incident which goes straight to drawing parallels to Hitler, do not pass $200.)</p>

<p>On the surface, this is yet another in a sad instance of Traditional Media à la mode du aging boomer uncle &#8212; trying to email you links but just sending you blue underlined text &#8212; but there&#8217;s something more going on.</p>

<p>Looking a little deeper, the site it&#8217;s posted on, Columbia Journalism Review, is a fine fat goose of potential irony. <a href="http://www.cjr.org/about_us/mission_statement.php">From its bio slash mission statement</a>:</p>

<blockquote>
  <p>Both online and in print, Columbia Journalism Review is in conversation with a community of people who share a commitment to high journalistic standards in the U.S. and the world.</p>
</blockquote>

<p>So an Old Media group dedicated to Good Journalism has an intern post on a blog an entry about the privacy implications of anonymous speech on the internet, and the intern manages to not just observe and report but actually become a participant in the very proliferation of anonymous hate speech she&#8217;s panning in the article. <em>Heavy</em>.<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup></p>

<p>I still don&#8217;t know what the take away here is except a headache. Aspirin, anyone?</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>One big, obvious source of hope is that this incident is from 2005. I know nothing about CJR and couldn&#8217;t tell you if they&#8217;ve improved or not.&#160;<a href="#fnref:1" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://iamthewalr.us/blog/2009/05/the-tale-of-the-tale-of-dog-poop-girl-is-not-so-funny-after-all-is-pretty-funny-after-all/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac Developer Roundtable #17</title>
		<link>http://iamthewalr.us/blog/2009/04/mac-developer-roundtable-17/</link>
		<comments>http://iamthewalr.us/blog/2009/04/mac-developer-roundtable-17/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 09:39:02 +0000</pubDate>
		<dc:creator>Colin Barrett</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[mac developer roundtable]]></category>
		<category><![CDATA[mdr]]></category>

		<guid isPermaLink="false">http://iamthewalr.us/blog/?p=208</guid>
		<description><![CDATA[Recently I had the opportunity to participate in an episode of the Mac Developer Roundtable. The topic was a quite general: object-oriented programming. I think it&#8217;s a pretty good episode: plenty of spirited debate, minimal talking over each other, and lots of good information.

I&#8217;m not much of a podcast person myself; I can&#8217;t listen to [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I had the opportunity to participate in <a href="http://www.mac-developer-network.com/shows/podcasts/mdr/mdr017/">an episode of the Mac Developer Roundtable</a>. The topic was a quite general: object-oriented programming. I think it&#8217;s a pretty good episode: plenty of spirited debate, minimal talking over each other, and lots of good information.</p>

<p>I&#8217;m not much of a podcast person myself; I can&#8217;t listen to people talk and work at the same time. Still yet, I highly recommend joining the <a href="http://mac-developer-network.com">Mac Developer Network</a>. Scotty produces some great content for Mac (and iPhone) developers. It&#8217;s just another example of how wonderful the Objective-C community is.</p>
]]></content:encoded>
			<wfw:commentRss>http://iamthewalr.us/blog/2009/04/mac-developer-roundtable-17/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Financial news sucks</title>
		<link>http://iamthewalr.us/blog/2009/03/financial-news-sucks/</link>
		<comments>http://iamthewalr.us/blog/2009/03/financial-news-sucks/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 21:12:16 +0000</pubDate>
		<dc:creator>Colin Barrett</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[CNBC]]></category>
		<category><![CDATA[daily show]]></category>

		<guid isPermaLink="false">http://iamthewalr.us/blog/?p=198</guid>
		<description><![CDATA[If you haven&#8217;t seen Jon Stewart&#8217;s interview with Jim Cramer, you can watch parts one, two and three on Comedy Central&#8217;s website. It&#8217;s an interesting interview.

One of the things that struck me the most about this interview was how Cramer kept talking about how people had &#8220;lied&#8221; to him, and lied to his network, and [...]]]></description>
			<content:encoded><![CDATA[<p>If you haven&#8217;t seen Jon Stewart&#8217;s interview with Jim Cramer, you can watch parts <a href="http://www.thedailyshow.com/video/index.jhtml?videoId=221516&amp;title=Jim-Cramer-Unedited-Interview-Pt.-1">one</a>, <a href="http://www.thedailyshow.com/video/index.jhtml?videoId=221517&amp;title=Jim-Cramer-Unedited-Interview-Pt.-2">two</a> and <a href="http://www.thedailyshow.com/video/index.jhtml?videoId=221518&amp;title=Jim-Cramer-Unedited-Interview-Pt.-3">three</a> on Comedy Central&#8217;s website. It&#8217;s an interesting interview.</p>

<p>One of the things that struck me the most about this interview was how Cramer kept talking about how people had &#8220;lied&#8221; to him, and lied to his network, and that is somehow an excuse for their pathetic excuse for &#8220;journalism&#8221;. Softballing CEOs who have run the biggest corporations in the world into the ground and made billions doing it is not journalism.</p>

<p>Journalism is asking real questions, and when you (astonishingly) don&#8217;t get answers from the people involved, <em>you go digging</em>. Woodward and Bernstein didn&#8217;t blow open Watergate in a 6 minute interview with Nixon on Bloomberg.</p>

<p>I worry that with the popularity of The Daily Show<sup id="fnref:sole"><a href="#fn:sole" rel="footnote">1</a></sup> and the rise of blogs, we&#8217;re losing a generation of investigative reporters. Shouting from the sidelines doesn&#8217;t stop cover ups. Stewart and bloggers (like yours truly) adroitly fill the role of <em>observer and commentator</em><sup id="fnref:msnbc"><a href="#fn:msnbc" rel="footnote">2</a></sup>, but the world is full of all sorts of chicanery. We need <em>investigators</em> in these trying times.</p>

<p><a href="http://www.amazon.com/Bob-Woodward/e/B000APXDGS">Does Woodward really have to be the Woodward of our time?</a> Are we that bad off? Seriously, if you know of (young) people doing solid investigative journalism, leave a comment.</p>

<p><strong>Update:</strong> <a href="http://iamthewalr.us/blog/2009/03/13/financial-news-sucks/#comment-43938">Great comment from Jay O&#8217;Conor</a> on how the newspaper business failing is driving this trend.</p>

<p>As I understand it, the revenue model for newspapers was almost entirely based on classified ads &#8212; reporting itself doesn&#8217;t bring in a lot of direct money, and subscription fees &amp; news stand revenue are largely negligible.</p>

<p>So, to put it in the most oversimplified and pithy way possible, who do we have to thank for the paucity of good journalism? <a href="http://craigslist.org">A guy from San Francisco named Craig</a>.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:sole">
<p>It&#8217;s the primary news source for plenty of people.&#160;<a href="#fnref:sole" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:msnbc">
<p>I&#8217;d put Olbermann and Maddow in this category too.&#160;<a href="#fnref:msnbc" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://iamthewalr.us/blog/2009/03/financial-news-sucks/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.582 seconds -->
<!-- Cached page served by WP-Cache -->
