<?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>Shimon Rura's Blog</title>
	<atom:link href="http://rura.org/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://rura.org/blog</link>
	<description>just another software developer in Boston striving to be a renaissance man</description>
	<lastBuildDate>Thu, 10 Sep 2009 17:15:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The Perfect Amazon.com (Toilet) Experience</title>
		<link>http://rura.org/blog/2009/01/15/the-perfect-amazoncom-toilet-experience/</link>
		<comments>http://rura.org/blog/2009/01/15/the-perfect-amazoncom-toilet-experience/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 01:59:26 +0000</pubDate>
		<dc:creator>shimon</dc:creator>
				<category><![CDATA[shimon]]></category>

		<guid isPermaLink="false">http://rura.org/blog/?p=970</guid>
		<description><![CDATA[For the past few days, I&#8217;ve noticed that my toilet&#8217;s been making a quiet whistle-y leak sound.  After running it with the lid off the tank for a few days, it&#8217;s clear that there&#8217;s a slow leak.  Even if you don&#8217;t hear it, you can see the water build up to the emergency [...]]]></description>
			<content:encoded><![CDATA[<p>For the past few days, I&#8217;ve noticed that my toilet&#8217;s been making a quiet whistle-y leak sound.  After running it with the lid off the tank for a few days, it&#8217;s clear that there&#8217;s a slow leak.  Even if you don&#8217;t hear it, you can see the water build up to the emergency drain.</p>
<p>I&#8217;ve never fixed a toilet before, but I have made a few adjustments here and there.  How complicated can it be?  I probably just need a new thingamajig, which after some Googling appears to be called a <a href="http://en.wikipedia.org/wiki/Ballcock">ballcock</a>.</p>
<p>Since I would normally visit a Home Depot store for a new thing of this sort, I try their website.  They have <a href="http://www.homedepot.com/webapp/wcs/stores/servlet/Navigation?Ntk=AllProps&#038;N=10000003+90401+502862&#038;storeId=10051&#038;catalogId=10053&#038;langId=-1">one big Toilet Repair and Maintenance</a> section that appears to have 50 levers, two flush valves, and zero ballcocks.</p>
<p>I think about trying Lowes.com, which may or may not exist, but then decide to check Amazon.com.</p>
<p>In the first page of <a href="http://www.amazon.com/s/ref=nb_ss_gw?url=search-alias%3Daps&#038;field-keywords=toilet+repair&#038;x=0&#038;y=0">search results for &#8220;toilet repair&#8221;</a> I see a picture of the exact thingamajig that&#8217;s in my toilet.  <a href="http://www.amazon.com/400A-Toilet-Ballcock-Fluidmaster/dp/B00002ND6R/ref=pd_bbs_sr_6?ie=UTF8&#038;s=hi&#038;qid=1232070474&#038;sr=8-6">Seven bucks, not bad</a>.  And then I read <a href="http://www.amazon.com/review/R1Q3RVO3PAUJ84/ref=cm_cd_NOREF?_encoding=UTF8&#038;newContentID=TxJ3PREB5QS595">the first &#8220;review&#8221;</a>, which explains how to remove it, disassemble it, and clean out the gunk that is likely to cause your problem.</p>
<p>I remove it, clean out some gunk, put it back, same problem.</p>
<p>Then I re-read the directions, actually follow them completely, and discover I completely missed the point the first time around.  I put it back and switch the water back on.</p>
<p>Quiet.  Problem solved, costs nothing, makes me feel like a hero.  Amazon, you are now my default store for <a href="http://www.amazon.com/Gits-Bhaji-Medium-10-5-Ounce-Packages/dp/B000EGUU9G/ref=sr_1_5?ie=UTF8&#038;s=grocery&#038;qid=1232070927&#038;sr=8-5"><em>everything.</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://rura.org/blog/2009/01/15/the-perfect-amazoncom-toilet-experience/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Discovering the Link Between Effort and Reward</title>
		<link>http://rura.org/blog/2009/01/05/discovering-the-link-between-effort-and-reward/</link>
		<comments>http://rura.org/blog/2009/01/05/discovering-the-link-between-effort-and-reward/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 00:32:41 +0000</pubDate>
		<dc:creator>shimon</dc:creator>
				<category><![CDATA[shimon]]></category>

		<guid isPermaLink="false">http://rura.org/blog/2009/01/05/discovering-the-link-between-effort-and-reward/</guid>
		<description><![CDATA[I&#8217;ve now been freelancing long enough that I can talk about some of the things I&#8217;ve learned from it.  And without a doubt, the biggest thing I&#8217;ve learned is the link between effort and reward.

In a normal job, this link is pretty nebulous.  You can work for two hours, catch up on some [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve now been freelancing long enough that I can talk about some of the things I&#8217;ve learned from it.  And without a doubt, the biggest thing I&#8217;ve learned is the link between effort and reward.</p>
<p>
In a normal job, this link is pretty nebulous.  You can work for two hours, catch up on some blogs or TV, and run some errands, but if you manage to say one or two clever things in front of your boss that day you will probably remain employed.</p>
<p>
If you&#8217;re in the top 10% smartest workers, an average of two or three hours of work a day is probably enough to exceed the productivity of almost all your coworkers, and not only keep you employed but keep your bosses somewhat impressed.  You can earn a comfortable living this way, and have a more relaxed lifestyle than just about anyone who&#8217;s not retired.  But you will not be challenged.</p>
<p>
<strong>Billable Hours</strong></p>
<p>
Freelancers usually bill by the hour.  An hour of hacking on the project is billable.  An hour of reading blogs about technologies you might consider using in the project a few months from now is not billable.  An hour spent at the grocery store at mid-day is not billable.  Even twenty minutes spent &#8220;resting&#8221; in the &#8220;restroom&#8221; is not billable.</p>
<p>
You might not believe me unless you measure, but I think an average workday for most computer programmers involves about 3 <em>billable</em> hours of work.  Furthermore, there is great variance in the amount of billable time you&#8217;ll get each day over a week or two.  Some days you&#8217;ll rack up 6 or 7 billable hours, maybe even 9 if there&#8217;s a release coming up and you&#8217;re loading up on coffee.  But you&#8217;ll easily revert back to a low average with a day of <em>zero </em>billable hours.</p>
<p>
I found this out when I started noticing that on a low-energy, mediocre day of freelancing, when I felt I had basically been <em>at work</em> all day, I&#8217;d often end up with as little as half an hour of billable time.</p>
<p>
<em>Half an hour.</em>  I don&#8217;t think I&#8217;ve ever been exceptionally stupid or exceptionally lazy, but I do tend to procrastinate, and by golly, I&#8217;m good at procrastinating.  I am so effective at delaying work that I didn&#8217;t even realize how effective I was, until I thought about how much money I made on one of these days and realized that it wouldn&#8217;t even cover my <em>rent</em> for the day.  Let alone ramen noodles.</p>
<p>
The billable hour is, to me, a matter of professional ethics.  I don&#8217;t assume that a workday consists of eight billable hours, and just parcel up whatever I did that day into those buckets.  I consider time billable when I&#8217;m <em>actively creating value directly for the client. </em> I&#8217;m sorry that sounds nauseatingly corporate, but it&#8217;s the best I could come up with.</p>
<p>
So getting more billable hours, i.e. making more money, is not a matter of being clever or knowing some trick.  <strong>It&#8217;s a matter of stamina.</strong></p>
<p>
<strong>Programmer Endurance Training</strong></p>
<p>
Once you start to see your monthly paycheck as an endurance challenge, a few things change.  You start to value consistency more, and brilliant ideas less.</p>
<p>
That was kind of hard to write.  Putting it that way seems to hide the intellectual challenge of making software, as if it&#8217;s just a matter of putting in the time and following a plan, like painting a house.  What if I just become a thoughtless code factory, like some sort of pathetic outsourced ASP.NET programmer who just wishes he could charge by the line of code?</p>
<p>
That hasn&#8217;t happened yet.  Instead, I&#8217;m awakening to the patterns of lies I used to tell myself about the quality of my output.  I know I can&#8217;t reach perfect consistency: sometimes I&#8217;ll have awesome days when I get a zillion things done in six hours, and other days I&#8217;ll only be able to crawl along for four hours of work before some welcome distraction proves irresistible.</p>
<p>
On the other hand, I&#8217;m now acutely aware of when something I&#8217;m doing doesn&#8217;t qualify as work.  I have a good idea of how many billable hours I can work daily without burning myself out.  And this way of thinking and planning is useful not only for doing the work that pays my bills, but for any work I care about.</p>
<p>
And so, after a few months of freelancing, I know that I have learned to work much, much harder than I ever did back when I had a salaried job.  And I can work that hard for a client, or for myself, or a bit of each.</p>
<p>
Really, I can hardly believe how lazy I was.</p>
]]></content:encoded>
			<wfw:commentRss>http://rura.org/blog/2009/01/05/discovering-the-link-between-effort-and-reward/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pimp My Treadmill</title>
		<link>http://rura.org/blog/2009/01/01/pimp-my-treadmill/</link>
		<comments>http://rura.org/blog/2009/01/01/pimp-my-treadmill/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 01:37:53 +0000</pubDate>
		<dc:creator>shimon</dc:creator>
				<category><![CDATA[shimon]]></category>
		<category><![CDATA[treadmill desk]]></category>

		<guid isPermaLink="false">http://rura.org/blog/?p=968</guid>
		<description><![CDATA[Update 9/10/09: The treadmill was fixed under warranty. One important point was that my walking belt had worn down &#8211; it was replaced as well, which significantly reduced friction and allows the motor to operate with far less strain. Now I lubricate the walking belt more frequently in order to keep the belt in good [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Update 9/10/09:</strong> The treadmill was fixed under warranty. One important point was that my walking belt had worn down &#8211; it was replaced as well, which significantly reduced friction and allows the motor to operate with far less strain. Now I lubricate the walking belt more frequently in order to keep the belt in good shape, and so far things seem to be working fine.</em></p>
<p>About a week ago the treadmill I use in <a href="http://rura.org/blog/2007/11/14/the-treadmill-desk-exercise-for-the-sake-of-hacking/">my treadmill desk</a> &#8212; a Nordic Track A2350 &#8212; wouldn&#8217;t start.  The display turned on and read &#8220;1.0 mph&#8221; but there was no movement.  Then I turned it up to a higher speed.  Still nothing.  Then some sparks came out of the motor, the treadmill went dead, and the circuit breaker on my surge protector shut it off.</p>
<p>My treadmill is toast.  Good thing I have an excellent warranty.</p>
<p>But if I may generalize from my experience so far &#8212; this one that just died is my fourth replacement motor, IIRC &#8212; the average home treadmill isn&#8217;t set up for desk use.  The motors aren&#8217;t geared to be efficient at 1 to 2 mph, or for many consecutive hours of use.  Really, the treadmills are built for the most common use case: moderate activity for a couple of weeks followed by years in the garage.</p>
<p>I&#8217;ve already attempted to improve airflow and cool the motor using fans.  Is there a practical way to effectively modify the gearing so 2mph isn&#8217;t such a heavy load?  Are there other ways to keep an electric motor happy and cool?</p>
]]></content:encoded>
			<wfw:commentRss>http://rura.org/blog/2009/01/01/pimp-my-treadmill/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Things I am Almost Irrationally in Awe Of</title>
		<link>http://rura.org/blog/2008/10/01/things-i-am-almost-irrationally-in-awe-of/</link>
		<comments>http://rura.org/blog/2008/10/01/things-i-am-almost-irrationally-in-awe-of/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 15:16:58 +0000</pubDate>
		<dc:creator>shimon</dc:creator>
				<category><![CDATA[shimon]]></category>

		<guid isPermaLink="false">http://rura.org/blog/2008/10/01/things-i-am-almost-irrationally-in-awe-of/</guid>
		<description><![CDATA[1. Writing Workshops

I took a couple of poetry writing workshop classes in college.  They&#8217;re an astoundingly effective way to improve the quality of your work.  The basic premise is that you get a bunch of people around a table and discuss their work.  The moderator selects which works will be reviewed, and [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1. Writing Workshops</strong></p>
<p>
I took a couple of poetry writing workshop classes in college.  They&#8217;re an astoundingly effective way to improve the quality of your work.  The basic premise is that you get a bunch of people around a table and discuss their work.  The moderator selects which works will be reviewed, and everyone reads them (usually before the actual meeting, especially if they are not very short).  When your work is reviewed, you&#8217;re not involved in the discussion &#8212; you&#8217;re explicitly forbidden from saying anything until the very end.  The end result is that you can&#8217;t play the defense; you just have to listen until the end, where maybe you make some clarifying points.  Sometimes the criticism is bogus, but, especially if your moderator is good, it can be life-changing.  It shows how smart a group can be when egos are held back.  Like most great learning experiences, some people freak out and start crying, but if you endure and listen then both your skill and passion can grow.</p>
<p><iframe src="http://rcm.amazon.com/e/cm?t=geeinbos-20&#038;o=1&#038;p=8&#038;l=as1&#038;asins=020172183X&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr" style="float:right; width:120px;height:240px;margin-left: 1em" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
<p>
Richard Gabriel&#8217;s book, <em><a href="http://www.amazon.com/gp/product/020172183X?ie=UTF8&#038;tag=geeinbos-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=020172183X">Writers&#8217; Workshops &#038; the Work of Making Things</a><img src="http://www.assoc-amazon.com/e/ir?t=geeinbos-20&#038;l=as2&#038;o=1&#038;a=020172183X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></em> is an interesting explanation and analysis of workshops in a variety of creative settings.  Gabriel is a hacker-turned-poet who thinks workshops are an underutilized source of magic for software makers; I totally agree.</p>
<p>
<strong>2. BarCamp and Open Space Technology &#8220;Unconferences&#8221;</strong></p>
<p>
If you&#8217;ve been to a <a href="http://barcamp.org">BarCamp</a>, like the <a href="http://barcampboston.org/">three we&#8217;ve put together in Boston</a>, this one shouldn&#8217;t surprise you.  BarCamp is just an application of the simple group behavior tricks described by Harrison Owen in <a href="http://www.amazon.com/gp/product/1576754766?ie=UTF8&#038;tag=geeinbos-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1576754766">Open Space Technology: A User&#8217;s Guide</a><img src="http://www.assoc-amazon.com/e/ir?t=geeinbos-20&#038;l=as2&#038;o=1&#038;a=1576754766" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />.  It comes down to something very simple: if you give people a way to communicate that emphasizes the ideas and not the personal status of presenters, they work together in ways that develop the ideas.</p>
<p>
<strong>3. Google AppEngine</strong></p>
<p>
You probably could have guessed this one from my <a href="http://rura.org/blog/2008/05/16/google-appengine-what-i-learned-building-oraclebot/">prior glowing blog posts</a> about it, but as I&#8217;ve continued to use AppEngine I&#8217;ve begun to understand and admire the way it&#8217;s built more and more.  AE has <em>scalability by default:</em> you can make your app scale poorly, but you&#8217;d have to work at it.  Once you bend your brain away from relational databases a bit, AE has a surprising degree of elegance.  Gloriously, there is no &#8220;Object Relational Mapper&#8221;.  Queries are explicit but they&#8217;re also readable, in nice little Python code.  Schema evolution isn&#8217;t an awkward ordeal: you can add a property, give it a default value, and whoomp there it is.  And perhaps most importantly, the deployment process is (1) standard and (2) totally automatic.  Automating deployment is now considered an industry best practice, and unlike many things described this way, is actually worth doing even when it takes a lot of work.  Developing and publicizing a standard, easy, automatic deployment process for webapps might not seem like AppEngine&#8217;s main goal, but it may well show the light to <strong>a lot</strong> of hackers and companies.</p>
<p>
<strong>4. Our Ability to Rationalize the Random</strong></p>
<p>
I&#8217;m convinced that one of human nature&#8217;s most entrenched bugs is the compulsion to seek specific causes for complex situations.  It is something we need in order to learn from our mistakes, but it&#8217;s often such an overriding compulsion that we vastly underestimate the significance of Factors Too Unpredictable Or Uncontrollable To Compute, i.e. <em>luck.</em></p>
<p>
In a mostly efficient market, like the stock market, the primary determinants of a commodity&#8217;s value are understandable things like supply and demand.  As recent events show, cultural and psychological factors are also powerful, but when a recession hits it still makes sense to look for causality because it&#8217;s quite likely we can learn something about governance or how to evaluate risk.  So the cause-seeking impulse is quite valuable.</p>
<p>
But in an inefficient market, like dating, that impulse becomes a vulnerability.  The &#8220;chemistry&#8221; that we feel or lack with another person has its basis in a lot of things we can&#8217;t reasonably control, like the genetic- and current mood-compatibility of the pair.  Considering the huge range of possibilities on either side and the tiny space of compatible matches in the middle, the most likely outcome of any date is failure.  But despite this objective fact, it&#8217;s damn near impossible not to feel personally rejected if a date doesn&#8217;t go well.  We go over our appearance and scrutinize every word we said, even though it might well be more productive to just try a lot more dates without thinking so hard about it.  To reinforce this behavior, we go watch movies where people, if they&#8217;re good and willing to take some chances, eventually get what they want/deserve after, maybe, one or two attempts.  Trying again is, of course, necessary if you&#8217;ve failed once and want to succeed, but you probably have to try again <em>a statistically significant number of times.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://rura.org/blog/2008/10/01/things-i-am-almost-irrationally-in-awe-of/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Death by Map-Reduce?</title>
		<link>http://rura.org/blog/2008/09/24/death-by-map-reduce/</link>
		<comments>http://rura.org/blog/2008/09/24/death-by-map-reduce/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 15:34:38 +0000</pubDate>
		<dc:creator>shimon</dc:creator>
				<category><![CDATA[shimon]]></category>

		<guid isPermaLink="false">http://rura.org/blog/?p=963</guid>
		<description><![CDATA[
This handy map was brought to you by Google Cemetery.
]]></description>
			<content:encoded><![CDATA[<p><a href='http://rura.org/blog/wp-content/uploads/2008/09/googcemetary.png'><img src="http://rura.org/blog/wp-content/uploads/2008/09/googcemetary.png" alt="Powered by Google Cemetery" title="Powered by Google Cemetery" width="115" height="107" class="alignnone size-medium wp-image-962" /></a></p>
<p>This handy map was brought to you by Google Cemetery.</p>
]]></content:encoded>
			<wfw:commentRss>http://rura.org/blog/2008/09/24/death-by-map-reduce/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intermittent downtime due to Gandi DNS Blip</title>
		<link>http://rura.org/blog/2008/09/24/intermittent-downtime-due-to-gandi-dns-blip/</link>
		<comments>http://rura.org/blog/2008/09/24/intermittent-downtime-due-to-gandi-dns-blip/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 15:24:30 +0000</pubDate>
		<dc:creator>shimon</dc:creator>
				<category><![CDATA[shimon]]></category>

		<guid isPermaLink="false">http://rura.org/blog/2008/09/24/intermittent-downtime-due-to-gandi-dns-blip/</guid>
		<description><![CDATA[If rura.org, voo2do.com, or some of my other sites weren&#8217;t working for you this morning, it may have been a blip in the domain name service I use.  It&#8217;s run by my registrar, Gandi.net.  Despite this blip, they&#8217;re a very good registrar.  Though not the cheapest.
]]></description>
			<content:encoded><![CDATA[<p>If rura.org, voo2do.com, or some of my other sites weren&#8217;t working for you this morning, it may have been a blip in the domain name service I use.  It&#8217;s run by my registrar, <a href="http://gandi.net">Gandi.net</a>.  Despite this blip, they&#8217;re a very good registrar.  Though not the cheapest.</p>
]]></content:encoded>
			<wfw:commentRss>http://rura.org/blog/2008/09/24/intermittent-downtime-due-to-gandi-dns-blip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Moment in w00t</title>
		<link>http://rura.org/blog/2008/09/15/a-moment-in-w00t/</link>
		<comments>http://rura.org/blog/2008/09/15/a-moment-in-w00t/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 17:48:47 +0000</pubDate>
		<dc:creator>shimon</dc:creator>
				<category><![CDATA[shimon]]></category>

		<guid isPermaLink="false">http://rura.org/blog/2008/09/15/a-moment-in-w00t/</guid>
		<description><![CDATA[Today I had to mail my first estimated tax payment ever.  Since I waited until the last minute, I wanted to go to the post office and make sure it would be postmarked today.  So I get in the car and drive to Davis Square, where I am lucky enough to find an [...]]]></description>
			<content:encoded><![CDATA[<p>Today I had to mail my first estimated tax payment <strong>ever</strong>.  Since I waited until the last minute, I wanted to go to the post office and make sure it would be postmarked today.  So I get in the car and drive to Davis Square, where I am lucky enough to find an open parking spot in my favorite place &#8211; right on the cross street behind Redbones.  To my delight, a metered spot is open.</p>
<p>
Hmm.  No quarters in my pocket.</p>
<p>
Hmm, no quarters in my car&#8217;s little coin drawer.</p>
<p>
Well, maybe I can get away with it for 10 minutes.  I&#8217;ve only gotta stop and the post office and maybe grab a burrito&#8230;</p>
<p>
Well, maybe there&#8217;s some weird exception for Somerville residents.  I should check the meter&#8230;</p>
<p>
THERE ARE 42 MINUTES REMAINING ON THE METER!</p>
<p>
w00t.</p>
<p>
!</p>
]]></content:encoded>
			<wfw:commentRss>http://rura.org/blog/2008/09/15/a-moment-in-w00t/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Things that are Obvious 1: Software Development Scheduling is Impossible</title>
		<link>http://rura.org/blog/2008/09/11/things-that-are-obvious-1-software-development-scheduling-is-impossible/</link>
		<comments>http://rura.org/blog/2008/09/11/things-that-are-obvious-1-software-development-scheduling-is-impossible/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 00:36:45 +0000</pubDate>
		<dc:creator>shimon</dc:creator>
				<category><![CDATA[shimon]]></category>

		<guid isPermaLink="false">http://rura.org/blog/2008/09/11/things-that-are-obvious-1-software-development-scheduling-is-impossible/</guid>
		<description><![CDATA[I&#8217;ve noticed a strange property of good blog posts: their ideas are obvious to the author, but not to most other people.  Not obvious ideas in the sense that anyone would notice &#8212; that breaks the other half of the rule &#8212; but obvious in the sense that you don&#8217;t really think about the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve noticed a strange property of good blog posts: their ideas are obvious to the author, but not to most other people.  Not obvious ideas in the sense that anyone would notice &#8212; that breaks the other half of the rule &#8212; but obvious in the sense that you don&#8217;t really think about the idea any more and just consider a fact of life.</p>
<p>
So here&#8217;s my first obvious idea: software schedules are impossible.  If you have a plan that says you&#8217;ll build a product with such-and-such features in 4 months, it is wrong.  Almost certainly, you do not have enough data to determine the full scope of the work, and even if you did, you would not have enough data to determine the velocity of your development team.</p>
<p>
&#8220;But wait,&#8221; you say, &#8220;everyone knows waterfall planning doesn&#8217;t work.  That&#8217;s why we have this fancy <strong>agile methodology</strong> with daily scrums and lots of <strong>iterations </strong>where we constantly <strong>manage our plans</strong> so we&#8217;re not committed to some bogus plan hatched a year ago by some suits.&#8221;</p>
<p>
Ah, good point.  There are some good methodologies for tracking your progress and making sure your team performs at top speed.  If you&#8217;re team isn&#8217;t using some form of one of these you&#8217;re probably screwed.</p>
<p>
BUT you don&#8217;t have a schedule.  A schedule is something that says &#8220;X, Y, and Z will be done within 20 days&#8221;.  If you&#8217;re changing the the work or the deadline it&#8217;s not a schedule.  And in software, it&#8217;s <em>possible </em>you won&#8217;t have to change the work or the deadline, but <em>more likely</em> you&#8217;ll need to change both.  Imagine if your mechanic were that unreliable.</p>
<p>
Of course, you could <strong>spec the whole thing in great detail first.</strong>  If you were able to write down a spec that was sufficiently precise, to the point of breaking down to steps that, when assigned to a team member, make them think &#8220;oh, I just did something like this yesterday and it won&#8217;t take more than 2 hours to do it but with the blob on the <em>left&#8221;</em> &#8212; if you can do <strong>that</strong> you might be able to have a schedule.</p>
<p>
I think the agile methodologies, and the army of highly-paid consultants who promulgate them, have done something pretty smart here.  They&#8217;ve realized that <strong>people don&#8217;t write specs that detailed </strong>because <strong>at that point you might as well write the software.</strong>  They&#8217;ve simply <strong>adopted the spec-writing into the coding.</strong>  Which is exactly as it should be.  As our programming languages become more powerful, our code gets more readable and &#8212; guess what &#8212; it starts to look like a spec.  Oh yeah &#8212; they call it the executable spec.</p>
<p>
But the basic promise of agile methodologies is <strong>schedule management, not a schedule.</strong>  You don&#8217;t generate a schedule, you <strong>converge on it.</strong>  By writing the code.  When you&#8217;re done writing the code you know the schedule.  This is the state of the art: you know when you&#8217;ll be done when you&#8217;re done.</p>
<p>
So let&#8217;s just admit it: we&#8217;re too uninformed, incompetent, and/or ambitious to write an accurate schedule for software development.  Just assume that the software development isn&#8217;t going to follow a schedule and tailor the rest of the business to react to that.</p>
<p>
Unacceptable?  Well, I could give you a schedule, but I&#8217;d have to lie to you.</p>
]]></content:encoded>
			<wfw:commentRss>http://rura.org/blog/2008/09/11/things-that-are-obvious-1-software-development-scheduling-is-impossible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Treadmill Desk Article in the Christian Science Monitor</title>
		<link>http://rura.org/blog/2008/08/20/treadmill-desk-article-in-the-christian-science-monitor/</link>
		<comments>http://rura.org/blog/2008/08/20/treadmill-desk-article-in-the-christian-science-monitor/#comments</comments>
		<pubDate>Thu, 21 Aug 2008 01:08:58 +0000</pubDate>
		<dc:creator>shimon</dc:creator>
				<category><![CDATA[shimon]]></category>
		<category><![CDATA[shimon/my brilliant ideas]]></category>

		<guid isPermaLink="false">http://rura.org/blog/?p=958</guid>
		<description><![CDATA[ The Christian Science Monitor has a nice treadmill desk story.  The story is by Amy Farnsworth and the accompanying photo is by Mary Knox Merril.  Makes for a good intro to the treadmill desk idea&#8230; not that I&#8217;m biased.  
link
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.csmonitor.com/2008/0816/p15s01-wmgn.html"><img style="border: none; float:right;" src="http://rura.org/extras/csmonitor-shimon-treadmill.jpg" alt="photo of shimon" /></a> <a href="http://www.csmonitor.com/2008/0816/p15s01-wmgn.html">The Christian Science Monitor has a nice treadmill desk story</a>.  The story is by Amy Farnsworth and the accompanying photo is by Mary Knox Merril.  Makes for a good intro to the treadmill desk idea&#8230; not that I&#8217;m biased. <img src='http://rura.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.csmonitor.com/2008/0816/p15s01-wmgn.html">link</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rura.org/blog/2008/08/20/treadmill-desk-article-in-the-christian-science-monitor/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Thing #4: Peepdex</title>
		<link>http://rura.org/blog/2008/06/25/thing-4-peepdex/</link>
		<comments>http://rura.org/blog/2008/06/25/thing-4-peepdex/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 22:24:25 +0000</pubDate>
		<dc:creator>shimon</dc:creator>
				<category><![CDATA[shimon]]></category>

		<guid isPermaLink="false">http://rura.org/blog/?p=956</guid>
		<description><![CDATA[Today I&#8217;m releasing Peepdex, a goal-focused personal addressbook and networking tool.  Peepdex is for people who want to actively develop their relationships, by frequently meeting new people and maintaining contact with people you already know.
Basically, peepdex is a customizable addressbook&#8212; you can track the usual phone and address stuff or, if you want, track [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.peepdex.com/"><img align="right" src='http://rura.org/extras/peepdex_screenshot.png' alt='Peepdex' class='alignright' /></a>Today I&#8217;m releasing <a href="http://www.peepdex.com/">Peepdex</a>, a goal-focused personal addressbook and networking tool.  Peepdex is for people who want to actively develop their relationships, by frequently meeting new people and maintaining contact with people you already know.</p>
<p>Basically, peepdex is a customizable addressbook&mdash; you can track the usual phone and address stuff or, if you want, track everyone&#8217;s favorite food.  You can also <b>define and track specific goals</b> for adding contacts or interacting with existing contacts.  For example, you can set a<br />
goal about keeping in touch with your parents:</p>
<p style="text-align:center">
<img src='http://rura.org/extras/peepdex_goal.png' alt='An example goal in Peepdex' class='alignnone' /></p>
<p>This goal will be visible on your dashboard, with the green part of the pie chart showing your progress in the past month.  When you call a parent, you can track that progress by adding a note logging that call your parent&#8217;s peepdex page.</p>
<p>Sound like a lot of paperwork?  I guess it is.  But I&#8217;ve been at a loss for a system to manage my personal and professional network.  It&#8217;s the same kind of motivation that led me to building <a href="http://voo2do.com/">Voo2do</a>: a personal responsibility that I need help achieving.  In this case, I&#8217;m seeking a way to track all the people I meet at conferences, local geek events, and through friends.  I want a way to query my network for people who might want to work with me, and I want to make sure that I&#8217;m regularly interacting with prospective partners to keep tabs on their projects.  More broadly, I want a way to develop and sustain a huge number of friendships, because friends make me happy.  But I&#8217;m forgetful, and without a plan I&#8217;m liable to lose touch with people I don&#8217;t see on a regular basis.  Facebook and LinkedIn help a bit, but not in the kind of personal detail that I want.  That&#8217;s where peepdex fits in.</p>
<p>If peepdex sounds like it could be useful, <a href="http://peepdex.com/intro/">try out the introduction</a>.  As always, <a href="mailto:shimon@rura.org">feedback is welcome</a>.</p>
<p>P.S. I&#8217;m wrapping up my thing-a-week campaign with this project.  It&#8217;s been a fun and educational adventure, but I&#8217;m now starting to do freelance/consulting work.  If you might be interested in working with me, <a href="mailto:shimon@rura.org">drop me a line</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rura.org/blog/2008/06/25/thing-4-peepdex/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
