<?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"
	>

<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>
	<pubDate>Wed, 25 Jun 2008 22:24:25 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<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>
		</item>
		<item>
		<title>Thing #3: OracleBot for Facebook</title>
		<link>http://rura.org/blog/2008/06/05/thing-3-oraclebot-for-facebook/</link>
		<comments>http://rura.org/blog/2008/06/05/thing-3-oraclebot-for-facebook/#comments</comments>
		<pubDate>Thu, 05 Jun 2008 20:22:50 +0000</pubDate>
		<dc:creator>shimon</dc:creator>
		
		<category><![CDATA[shimon]]></category>

		<guid isPermaLink="false">http://rura.org/blog/?p=955</guid>
		<description><![CDATA[Yesterday I released the third project in my thing-a-week campaign.  It&#8217;s my first facebook app, Oracle on facebook.
This is an adaptation of Thing #1, OracleBot, which is a game where players take turns writing an answer to the previous player&#8217;s question, or a question that corresponds to a previous player&#8217;s answer.  At each [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I released the third project in my <a href="http://rura.org/blog/2008/04/23/a-new-career-direction/">thing-a-week campaign</a>.  It&#8217;s my first facebook app, <a href="http://apps.facebook.com/oraclebot/">Oracle on facebook</a>.</p>
<p>This is an adaptation of <a href="http://rura.org/blog/2008/05/13/announcing-thing-1-oraclebot/">Thing #1, OracleBot</a>, which is a game where players take turns writing an answer to the previous player&#8217;s question, or a question that corresponds to a previous player&#8217;s answer.  At each step you can only see the one previous line, and the payoff is that at the end of the game you have an initial question, a final answer, and a funny, strange, unpredictable step-by-step connection between them.</p>
<p>Among the first few users of <a href="http://www.oraclebot.com">OracleBot.com</a>, one of the most requested features was a way to play with friends &#8212; either by creating an invite-only room in the standalone Oraclebot.com app, or by playing in an existing social network like facebook.  Playing with friends can enrich the game &#8212; it lets you make inside jokes and learn about each other through the game.  It seemed worthwhile for me to spend some time learning how to build facebook apps, and facebook provides some very powerful ways to distribute the game to new users, so I decided to work on that.  I sent out my first batch of invites to some friends yesterday afternoon.</p>
<p>You may have noticed that this release is late by about a week.  This has been a major source of concern for me; the whole point of <a href="http://rura.org/blog/2008/04/23/a-new-career-direction/">thing-a-week</a> is to avoid sinking too much time into any individual project, and to practice the skill of identifying a small set of features that can be built and released in a very short time frame.  There are a few reasons for the delay, but I&#8217;ll be honest: they aren&#8217;t all good reasons.  Some of them are good: I&#8217;ve been exploring some new ideas and potential partnerships that will likely develop into larger projects.  And the facebook platform is much broader than I initially thought, with a lot of different integration points that I&#8217;ve begun to understand.  But I can&#8217;t say I was optimally focused or disciplined over the past two weeks, either.  If I had worked better, I probably could have shipped this project sooner.  </p>
<p>In particular, I think I spent a lot of time worrying about having enough features to make the facebook app interesting.  The facebook release was looming at some point in the future, and with the wide variety of ways an app can integrate with facebook&#8211; many unfamiliar to me&#8211; it was hard to tell when I had the right set of features to trust that the app took meaningful advantage of the facebook platform.  In retrospect, I should have started by releasing a trivial facebook port &#8212; the same app, but playable on facebook &#8220;canvas&#8221; pages and using facebook&#8217;s account data instead of requiring you to type in your name.  I could probably have done that in a couple of days, and added in the other features&#8211; rooms, invitations, access controls, and others I haven&#8217;t built yet like publishing completed games to your news feed&#8211; gradually, each one getting its own release and user feedback.</p>
<p>On the other hand, working in a new environment like facebook is rarely as easy as it first appears.  And I spent a lot of time over the past week exploring some interesting opportunities to partner with friends of mine on their projects.  More on that later.</p>
]]></content:encoded>
			<wfw:commentRss>http://rura.org/blog/2008/06/05/thing-3-oraclebot-for-facebook/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Thing #2: Tweet and Shout</title>
		<link>http://rura.org/blog/2008/05/21/thing-2-tweet-and-shout/</link>
		<comments>http://rura.org/blog/2008/05/21/thing-2-tweet-and-shout/#comments</comments>
		<pubDate>Wed, 21 May 2008 20:25:57 +0000</pubDate>
		<dc:creator>shimon</dc:creator>
		
		<category><![CDATA[business/music]]></category>

		<category><![CDATA[computers/search]]></category>

		<category><![CDATA[shimon]]></category>

		<category><![CDATA[society/music]]></category>

		<guid isPermaLink="false">http://rura.org/blog/?p=953</guid>
		<description><![CDATA[ The second release in my thing-a-week discipline is Tweet and Shout.  Tweet and Shout monitors twitter for buzz about bands, ranks them, and lets you see what people are saying about an artist.  For example, you can see that Coldplay is one of twitter&#8217;s most talked-about bands, or note that most of [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://tweetandshout.com/'><img src="http://rura.org/blog/wp-content/uploads/2008/05/tweetandshout-screenshot.png" alt="" title="Tweet and Shout screenshot" width="252" height="158" class="alignright size-full wp-image-954" align="right" style="margin: 0 0 1ex 1ex"/></a> The second release in my <a href="http://rura.org/blog/2008/04/23/a-new-career-direction/">thing-a-week discipline</a> is <a href="http://tweetandshout.com/">Tweet and Shout</a>.  Tweet and Shout monitors twitter for buzz about bands, ranks them, and lets you see what people are saying about an artist.  For example, you can see that <a href="http://tweetandshout.com/artist/951/">Coldplay</a> is one of twitter&#8217;s most talked-about bands, or note that most of <a href="http://tweetandshout.com/artist/1153/">what people are saying about Britney Spears</a> is gossip.  You can see which twitter users have recently commented about an artist, and which artists a user has mentioned.  Each artist&#8217;s page also shows how they&#8217;ve done over the past few days (on twitter as well as <a href="http://amazonmp3.com">amazon mp3</a>).</p>
<p>I&#8217;ll be the first to admit that this app isn&#8217;t groundbreaking or thought-provoking.  The fact that it&#8217;s interesting at all is due entirely to a few simple things:</p>
<ol>
<li><b>Recency.</b> Twitter posts are only interesting for a few minutes; then they get old and obsolete.  Grouping posts by subject helps you get a sense of recent sentiment on that subject.</li>
<li><b>Relevance.</b>  Most <a href="http://twitter.com/public_timeline">random twitter messages</a> are irrelevant.  Normally, you filter out irrelevant twitter content by only reading tweets from your friends.  But with a list of band names and <a href="http://summize.com">summize</a>, you can find content relevant to music in general.</li>
<li><b>Pictures of people.</b>  I love stating the obvious: it&#8217;s fun to see a lot of faces and suvery, or imagine, the range of attitudes they express.  In tweetandshout, this goes for both twitter users and musicians.  Without pictures, I&#8217;d be hard pressed to generate some amazing statistical reports to make the site informative.  With pictures, the tone changes completely; it&#8217;s enough to just browse and people-watch.</li>
<li><b>Bands we know.</b> The world of music is dominated by a few hundred extremely well-known artists.  It might be more interesting to see what people are saying about local, not-yet-famous artists, but it&#8217;s a lot easier to just look at and talk about a single popularity contest.</li>
</ol>
<p>The app is built on <a href="http://summize.com/">Summize</a>, an excellent search engine for twitter.  Tweetandshout stays relatively current by pulling a few hundred Atom feeds from Summize every hour or two.  The list of artists comes from AmazonMP3&#8217;s top 400 rankings, which are updated daily.</p>
<p>It might be interesting to see an app like this targeted at a topic area other than music.  A generalized summize+ranking+trends app could help you capture the buzz about, say, your local restaurants, the town where you live, a set of geeky events, or just a few friends of yours.  Maybe Summize will incorporate that as a feature of their product.  (Note to summize: I might be available for some consulting work. <img src='http://rura.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
<h2>Reflecting on the Week</h2>
<p>Tweet and shout wasn&#8217;t my original project for the week.  I had started out trying to build a little MP3 streaming program for my BlackBerry.  See, my <a href="http://en.wikipedia.org/wiki/Blackberry_Curve">BlackBerry Curve</a> has wifi and, according to the API documentation, the ability to stream music over the network.  Maybe if I hacked things right, I&#8217;d be able to use my BlackBerry as a sort of wireless headphone system at home, streaming music stored on my PC.</p>
<p>I <a href="http://rura.org/blog/2008/05/13/announcing-thing-1-oraclebot/">released oraclebot last Tuesday</a> (the 13th) and then started studying the Blackberry environment.  By Thursday, it was clear I couldn&#8217;t complete any significant mobile app in under a week.  I&#8217;d worked through some tutorials, read a book and a half in PDFs downloaded from RIM&#8217;s developer center, installed the SDK, and gotten a customized &#8220;Hello World&#8221; program onto my BlackBerry.  But I didn&#8217;t know the basic UI APIs, and many of the BlackBerry&#8217;s APIs (e.g. the ones that talk over the network or launch the browser) require the developer to sign their code with a cryptographic key that costs $100.  Plus <a href="http://www.barcampboston.org">BarCamp Boston</a> was coming up, and as an organizer, I&#8217;d be 120% occupied during the event on Saturday and Sunday.</p>
<p>So I switched gears to a simple app I thought I could release.  I worked on it for most of Thursday and Friday and spent the weekend at BarCamp.  Exhausted after the event, I took Monday off &#8212; had a long lunch with some friends and watched a movie.  I mostly wrapped up the coding on Tuesday, and meant to ship and announce this morning.  But between hitting a bug in _elementtidy.fixup on my server, adding a last-minute tweak to attempt reasonable searches for bands with names like &#8220;The Who&#8221; or &#8220;Yes&#8221;, and writing this post, it looks like I&#8217;ve soaked up most of today as well.  Oh well, at least it&#8217;s done.  Better late than&#8230; even later. <img src='http://rura.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://rura.org/blog/2008/05/21/thing-2-tweet-and-shout/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google AppEngine: What I learned building OracleBot</title>
		<link>http://rura.org/blog/2008/05/16/google-appengine-what-i-learned-building-oraclebot/</link>
		<comments>http://rura.org/blog/2008/05/16/google-appengine-what-i-learned-building-oraclebot/#comments</comments>
		<pubDate>Fri, 16 May 2008 20:35:24 +0000</pubDate>
		<dc:creator>shimon</dc:creator>
		
		<category><![CDATA[business/companies/Google]]></category>

		<category><![CDATA[computers/development tools]]></category>

		<category><![CDATA[computers/web app frameworks]]></category>

		<guid isPermaLink="false">http://rura.org/blog/?p=952</guid>
		<description><![CDATA[I made an unusual implementation choice for my project last week, OracleBot. I built it on Google App Engine, Google&#8217;s new Python-and-BigTable-based web application hosting system.  I learned a lot about AppEngine, and came to think it will be an important deployment platform.  In case you don&#8217;t know about AppEngine yet, here are [...]]]></description>
			<content:encoded><![CDATA[<p>I made an unusual implementation choice for my project last week, <a href="http://www.oraclebot.com/">OracleBot</a>. I built it on <a href="http://code.google.com/appengine/">Google App Engine</a>, Google&#8217;s new Python-and-BigTable-based web application hosting system.  I learned a lot about AppEngine, and came to think it will be an important deployment platform.  In case you don&#8217;t know about AppEngine yet, here are the main points:</p>
<ul>
<li>AppEngine provides a way to host python-based web applications on Google infrastructure.</li>
<li>Django, my preferred web app framework, is supported (aside from the Object-Relational Model system, because there is no relational database available).</li>
<li>Apps run in a privilege-limited python environment, potentially distributed among many individual servers.</li>
<li>Developers have no knowledge or control over any servers; you just upload code and it runs, moving or being replicated as usage demands.</li>
<li>There are quotas on CPU, storage, and bandwidth usage.  These are ample for a new site and said to handle about 5 million pageviews monthly.</li>
<li>All persistent data storage must be done via the AppEngine Data Store.</li>
<li>The Data Store is based on Google&#8217;s BigTable, and although it provides a SQL-like query interface, it is emphatically NOT a relational database.</li>
</ul>
<p>Working in AppEngine was great in some ways, and limiting in others.  On the upside, uploading an app has never been easier; you type a command on your development machine, a new version is deployed, and an admin console allows you to roll back to previous versions if you broke something.  On the downside there are a few points:</p>
<ul>
<li>It&#8217;s still a &#8220;preview release&#8221;.  There are still has some bugs.  I <a href="http://code.google.com/p/googleappengine/issues/detail?id=209">ran into one</a> which cost me a couple hours of confusion.  And it&#8217;s a limited release, so you have to request and wait for an invitation.</li>
<li>You&#8217;re working in the Google machine.  While in principle there&#8217;s nothing stopping other companies from providing a compatible app-hosting environment, that&#8217;s not an option yet.  Even with my use of Django, OracleBot would take a day or two to port for hosting on my own server.  Combined with the vague quota system&#8211; you can ask for more but there is no guarantee or price structure yet&#8211; it would be foolish to deploy anything mission-critical on AppEngine for now.</li>
<li>No computation outside of the HTTP request/response cycle.  Your app can&#8217;t receive email, run batch data updates, or even maintain a persistent connection to a client.
<li>Designing apps for scale is weird.  Working in AppEngine, you can&#8217;t help thinking about how such-and-such feature will soak up a few extra seconds per request, or whether your quota can handle polling for updates every 5 seconds vs. every 30 seconds.  If you&#8217;re not Google (and not extremely incompetent), you&#8217;ll be lucky to develop an app popular enough to overwhelm a cheap server.  So while you&#8217;re still working out the feature set, it may make more sense to develop in a more flexible environment &#8212; like with an RDBMS &#8212; and consider AppEngine an option for scaling later.
</li>
</ul>
<p>It&#8217;s impressive how acutely aware of scaling concerns you must be when working in AppEngine.  They&#8217;ve done an elegant job of this; whereas you&#8217;d normally have to work very hard to transform an existing app into something scalable&#8211; with all sorts of distributed network caches and complicated database replication/sharding schemes&#8211; AppEngine makes it hard to refuse scalability.  This is achieved in numerous little ways, mostly evident in the data store.  Operations that are trivial in RDBMSs, like multi-way joins or uniqueness constraints, are nearly impossible in AppEngine.  And transactions are not something you can layer on at the end.  Each persisted entity can optionally be stored as a &#8220;child&#8221; of some other entity, rather than as a parentless &#8220;root&#8221;.  Since roots can, along with their children, be moved or replicated at will, you can&#8217;t run a transaction across multiple roots because that might require some nasty multi-phase commit across several machines.  So you again have to step back and plan for the transactions you&#8217;ll need as you&#8217;re modeling and writing data.  This takes time, which is why oraclebot has some embarrassing bugs related to locking.  (You may have seen the &#8220;-1 lines left&#8221; problem.) </p>
<p>Most of these downsides will erode over time.  The environment will get friendlier as documentation, books, and toolkits evolve.  AppEngine will likely add new kinds of service, such as batch data loading/retrieval, the ability to receive email, and support for longer-lived connections (Comet).  Google will probably offer quota increases at predictable prices soon, and eventually competitors could offer a compatible hosting environment, turning AppEngine into a de-facto deployment standard.</p>
<h2>Benefits for Non-coders</h2>
<p>A standard deployment process may be the most significant consequence of AppEngine.  It used to be that you&#8217;d have to get a server, set it up, copy your code, and configure a web server to run it.  Now you just create an app in AppEngine&#8217;s console, run a command to upload your code and&#8230; there is no step 3.</p>
<p>This is significant because, by reducing the overhead of deploying an app, it becomes feasible to deploy custom apps for small customers.  A software vendor can write a piece of software &#8212; a bug tracker, or a CRM, or perhaps a Human Resources Mangement System &#8212; and offer it for free or cheap because its users can buy hosting as a utility from Google (or someday, its competitors).  Google is already hinting at this by offering users of <a href="http://www.google.com/a/help/intl/en/var_1c.html">Google Apps for Domains</a> the ability to deploy an AppEngine app on a subdomain.  If they can open up the Apps for Domains distribution channels a little, independent software vendors (ISVs) would line up to sell apps to customers there.  That&#8217;s better for everyone: ISVs can build software without setting up customer hosting infrastructure, small customers can run hosted apps without an IT staff, and Google can operate the infrastructure in their efficient data centers.</p>
<h2>More at BarCamp</h2>
<p>If you enjoyed this post, look for me at <a href="http://barcampboston.org">BarCamp Boston 3</a> this weekend (May 17-18, 2008).  I&#8217;m planning to do a session on AppEngine and would love to team up with other hackers, whether you&#8217;re experienced or just curious.</p>
]]></content:encoded>
			<wfw:commentRss>http://rura.org/blog/2008/05/16/google-appengine-what-i-learned-building-oraclebot/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Announcing Thing #1: Oraclebot</title>
		<link>http://rura.org/blog/2008/05/13/announcing-thing-1-oraclebot/</link>
		<comments>http://rura.org/blog/2008/05/13/announcing-thing-1-oraclebot/#comments</comments>
		<pubDate>Tue, 13 May 2008 15:13:49 +0000</pubDate>
		<dc:creator>shimon</dc:creator>
		
		<category><![CDATA[shimon]]></category>

		<guid isPermaLink="false">http://rura.org/blog/?p=949</guid>
		<description><![CDATA[I&#8217;m delighted to share the first project in my thing a week campaign.  It&#8217;s a simple online game called oraclebot.  
 Oraclebot is based on a parlor game called oracle.  (Try it at your next party&#8211; it&#8217;s great fun.)  The game is a series of questions and answers, each written by [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m delighted to share the first project in my <a href="http://rura.org/blog/2008/04/23/a-new-career-direction/">thing a week</a> campaign.  It&#8217;s a simple online game called <a href="http://www.oraclebot.com">oraclebot</a>.  </p>
<p><a href='http://www.oraclebot.com/'><img src="http://rura.org/blog/wp-content/uploads/2008/05/oraclebot-300x200-screenshot.png" alt="" title="OracleBot Screenshot" width="300" height="200" align="right" style="margin: 0 0 1ex 1ex"/></a> <a href="http://www.oraclebot.com">Oraclebot</a> is based on a parlor game called oracle.  (<a href="http://www.oraclebot.com/help/how_to_play/">Try it at your next party</a>&#8211; it&#8217;s great fun.)  The game is a series of questions and answers, each written by someone who&#8217;s only seen the previous line.  So if you start out with &#8220;How&#8217;s the weather?&#8221; you might get &#8220;Cloudy&#8221; as your answer; but the next line might get &#8220;How&#8217;s your vision, grandma?&#8221;  The humor in the game comes from the way it draws connections between apparently unrelated topics.  When the game ends&#8211; after a certain number of responses online, or in person when the paper&#8217;s full&#8211; you read the first question and the last answer:</p>
<div style="text-align:center">
  We asked the oracle,<br/> <span style="font-size:150%">&ldquo;What is your favorite color?&rdquo;</span></p>
<p>  &#8230;and the oracle responded:<br/> <span style="font-size:150%">&ldquo;What does he look like!? I mean come on. Isn&#8217;t it obvious!?&rdquo;</span><br/></p>
<p>(That&#8217;s Ian and Andy in <a href="http://www.oraclebot.com/game/aglvcmFjbGVib3RyCwsSBEdhbWUYowEM/">game #163</a>.)
</div>
<p>So, what are you waiting for? <a href="http://www.oraclebot.com/">Go Play!</a></p>
<hr/>
<p>Hmm.  Still here?  Well, I guess I&#8217;ll reflect a bit on the course of this project.</p>
<h2>How it Went</h2>
<p>First, it took a little longer than I expected.  I started on it last Sunday, May 4, and I didn&#8217;t release a version people could play until this afternoon.  I had originally intended to get a &#8216;beta&#8217; in front of a few people by Friday and to have a public release Monday morning, but instead I had an app with lots of obvious problems on Friday and a very busy weekend.  I think I went over schedule for three main reasons:</p>
<ol>
<li>I procrastinated a bit.</li>
<li>I injected more technical risk than was really necessary.</li>
<li>I had to do a few things related to <a href="http://barcampboston.org/">BarCamp Boston (coming up this weekend, May 17-18!)</a> and a few errands related to leaving my previous job.</li>
</ol>
<p>Aside from the last one, which is what a corporate report would call a &#8220;one-time cost&#8221;, these delays were my fault.  So I&#8217;m going to analyze them here on my blog.  Procrastination is the trickiest one; while it seems like I was just too distractable and/or lazy, there&#8217;s usually a hidden reason.  In this case, I think I was afraid of failure.  Of course, procrastination increases the risk of failure, for obvious reasons.  But there&#8217;s a subtle trade-off: if I failed due to procrastination, I&#8217;d have failed for the simple reason of not working enough.  But if I worked hard and diligently and <em>still</em> failed to produce something good, I&#8217;d be failing at my best.  I&#8217;m more sensitive to public failure than I&#8217;d like to be&#8211; it&#8217;s hard to contemplate the idea that my best might not be good enough.  Apparently that applies even though I&#8217;ve set up a working structure where, amid many attempts, some failures are expected.</p>
<p>I think I first admitted this reason to myself on Friday evening.  I didn&#8217;t procrastinate much afterwards.  I got a lot of coding done between the middle of Friday and the middle of today, including most of the dynamic updating features in the game, which allow you to see new games or responses without having to hit reload over and over.  These features gave the game a very nice feeling of liveness, but were a lot of trouble to build&#8230; mostly because of delay reason #2, excessive technical risk.</p>
<p>I&#8217;ll cover the techie stuff in a follow-up article.  For now, I have another project to get started on!</p>
]]></content:encoded>
			<wfw:commentRss>http://rura.org/blog/2008/05/13/announcing-thing-1-oraclebot/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A New Career Direction</title>
		<link>http://rura.org/blog/2008/04/23/a-new-career-direction/</link>
		<comments>http://rura.org/blog/2008/04/23/a-new-career-direction/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 22:08:55 +0000</pubDate>
		<dc:creator>shimon</dc:creator>
		
		<category><![CDATA[shimon]]></category>

		<guid isPermaLink="false">http://rura.org/blog/2008/04/23/a-new-career-direction/</guid>
		<description><![CDATA[After a lot of thinking, I&#8217;ve decided to quit my job and try something radically different.
I&#8217;m going to work on small projects.   Lots of them.  My aim will be to launch one project a week (props to Jonathan Coulton).  My goals are to:

test my interest in a number of new fields/endeavors, [...]]]></description>
			<content:encoded><![CDATA[<p>After a lot of thinking, I&#8217;ve decided to quit my job and try something radically different.</p>
<p>I&#8217;m going to work on small projects.   Lots of them.  My aim will be to launch one project a week (props to <a href="http://www.jonathancoulton.com/category/thing-a-week/">Jonathan Coulton</a>).  My goals are to:</p>
<ul>
<li>test my interest in a number of new fields/endeavors, in order to find a few new subject areas where I can contribute to the state of the art;</li>
<li>challenge my productivity and creativity, by forcing me to meaningfully invent and implement new ideas in a very aggressive time frame; and </li>
<li>if I&#8217;m lucky, generate one or more ideas actually worth pursuing based on user interest, business potential, or world-changing potential.</li>
</ul>
<p>I&#8217;ve got a big list of potentially interesting ideas, but I&#8217;m looking for more.  If you&#8217;ve got a useful, fascinating, or just wacky idea, <a href="mailto:shimon@rura.org">tell me about it</a> and I might try to build it for you.  (I&#8217;m open to all kinds of projects, but my best skills are around web application development, and I probably won&#8217;t be able to do anything I can&#8217;t train on within a day.)</p>
<p>My last day is Friday, May 2.  After that the <em>really hard work</em> begins.  I&#8217;m thrilled.</p>
]]></content:encoded>
			<wfw:commentRss>http://rura.org/blog/2008/04/23/a-new-career-direction/feed/</wfw:commentRss>
		</item>
		<item>
		<title>&#8220;Practical Ruby Projects&#8221;: a fascinating guide for the curious hacker</title>
		<link>http://rura.org/blog/2008/02/25/practical-ruby-projects-a-fascinating-guide-for-the-curious-hacker/</link>
		<comments>http://rura.org/blog/2008/02/25/practical-ruby-projects-a-fascinating-guide-for-the-curious-hacker/#comments</comments>
		<pubDate>Mon, 25 Feb 2008 20:21:03 +0000</pubDate>
		<dc:creator>shimon</dc:creator>
		
		<category><![CDATA[computers/programming languages/Ruby]]></category>

		<guid isPermaLink="false">http://rura.org/blog/2008/02/25/practical-ruby-projects-a-fascinating-guide-for-the-curious-hacker/</guid>
		<description><![CDATA[
Writing a program is fun.  Like writing an essay, the endeavor has two kinds of results: stuff that gets written down, and stuff that changes the way you think.  Sometimes you&#8217;re aiming for the written product, to fulfill some external obligation.  But other times, you&#8217;re aiming for enlightenment.  The end product [...]]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://rcm.amazon.com/e/cm?t=geeinbos-20&#038;o=1&#038;p=8&#038;l=as1&#038;asins=159059911X&#038;fc1=000000&#038;IS2=1&#038;lt1=_top&#038;lc1=0000FF&#038;bc1=FFFFFF&#038;bg1=FFFFFF&#038;f=ifr" style="width:120px;height:240px; float:right;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
<p>Writing a program is fun.  Like writing an essay, the endeavor has two kinds of results: stuff that gets written down, and stuff that changes the way you think.  Sometimes you&#8217;re aiming for the written product, to fulfill some external obligation.  But other times, you&#8217;re aiming for enlightenment.  The end product is irrelevant next to the understanding you developed in making it.</p>
<p>Most computer book authors wouldn&#8217;t claim to be writing about enlightenment. They&#8217;ll tell you that if you learn their language, framework, or methodology, you&#8217;ll win clients and impress coworkers.  In this category there are a lot of useful introduction and reference books, along with a lot of buzzword-laden crap.  But there&#8217;s another genre altogether, that doesn&#8217;t make these claims; it reflects the geek tradition of explaining interesting <i>because they&#8217;re interesting.</i>  Looking back on experiences that really shaped my thinking as a hacker&mdash; a great algorithms course in college, a talk on &#8220;Tricks of the Perl Wizards&#8221; by Mark-Jason Dominus, Philip Greenspun&#8217;s book on web publishing&mdash; it&#8217;s clear that the most profound things I&#8217;ve learned spring from that tradition.  <a href="http://www.amazon.com/dp/159059911X?tag=geeinbos-20&#038;camp=14573&#038;creative=327641&#038;linkCode=as1&#038;creativeASIN=159059911X&#038;adid=184Z1HMD8F67107RY6YY&#038;"><i>Practical Ruby Projects</i></a> is an exceptional book because it does, too.</p>
<p>Topher Cyll, author of the book, is a friend of mine.  In college, Topher and I worked together on a community website for students as well as spending a lot of time in the same computer lab.  In both roles, he was always full of clever and thoughtful ideas.  <i>Practical Ruby Projects</i> is full of such ideas, expanded to project form and in an approachable buffet layout.  The projects are indeed eclectic, from computer-generated music to gaming to genetic algorithms, but their common strand is the curiosity they all reward.  If you&#8217;re one of the unusual folks who maintained this curiosity beyond school, or perhaps if you&#8217;re a professor who wants to assemble an intermediate projects course that will appeal to the most curious and passionate of students, this book is for you.  With books like this and an open, curious mind, enlightenment might still be unreachable but at least you&#8217;re getting closer.<!--5251bd93d45ee3d5d7a2519e88403915--><!--da7d6baf7f5789ba9dab3bda18f2e3fe--><!--19fdfab46bb3e9140e19e92e6b240788--></p>
]]></content:encoded>
			<wfw:commentRss>http://rura.org/blog/2008/02/25/practical-ruby-projects-a-fascinating-guide-for-the-curious-hacker/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dapper: My Kind of Scraper</title>
		<link>http://rura.org/blog/2008/02/15/dapper-my-kind-of-scraper/</link>
		<comments>http://rura.org/blog/2008/02/15/dapper-my-kind-of-scraper/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 16:25:13 +0000</pubDate>
		<dc:creator>shimon</dc:creator>
		
		<category><![CDATA[computers/blogging/podcasting]]></category>

		<category><![CDATA[kind of writing/predictions]]></category>

		<guid isPermaLink="false">http://rura.org/blog/2008/02/15/dapper-my-kind-of-scraper/</guid>
		<description><![CDATA[About two and a half years ago, I wrote a post called How to Design an Interactive RSS Scraper.  A scraper is a tool that extracts data from a web page; its most common use is to generate an RSS feed for a blog that doesn&#8217;t already have one.  While there have been [...]]]></description>
			<content:encoded><![CDATA[<p>About two and a half years ago, I wrote a post called <a href="http://rura.org/blog/2004/07/21/how-to-design-an-interactive-rss-scraper/">How to Design an Interactive RSS Scraper</a>.  A scraper is a tool that extracts data from a web page; its most common use is to generate an RSS feed for a blog that doesn&#8217;t already have one.  While there have been lots of scrapers, most of them focused on automatically figuring stuff out given just a URL.  It seemed you wouldn&#8217;t get reliable good performance on lots of different page styles being fully automatic, but given a little bit of interactive selection &#8212; here&#8217;s a date, here&#8217;s a title, here&#8217;s the story &#8212; you could guide the scraper&#8217;s initial guesses and make a good feed without much complicated effort.</p>
<p>I recently found out about <a href="http://dapper.net">Dapper</a>, a scraping service that takes this approach.  It works quite well.  The UI is pretty nice, and although there are some parts I still can&#8217;t figure out, I am able to generate RSS feeds.  So if you&#8217;re looking for a scraper, try it!  <a href="http://www.dapper.net/dapp-howto-use.php?dappName=NHPRWordofMouth">Here&#8217;s one feed I made with Dapper</a>.<!--db7460b834bf5726a757ef30430343a4--><!--5d25e2c1ae8f8ff54bad4c2bac597c4c--><!--f92394dbcd3eb8dd3813665eb4ce0574--></p>
]]></content:encoded>
			<wfw:commentRss>http://rura.org/blog/2008/02/15/dapper-my-kind-of-scraper/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Proudest Non-software Hack</title>
		<link>http://rura.org/blog/2008/01/27/proudest-non-software-hack/</link>
		<comments>http://rura.org/blog/2008/01/27/proudest-non-software-hack/#comments</comments>
		<pubDate>Sun, 27 Jan 2008 16:40:45 +0000</pubDate>
		<dc:creator>shimon</dc:creator>
		
		<category><![CDATA[shimon]]></category>

		<category><![CDATA[society/education]]></category>

		<guid isPermaLink="false">http://rura.org/blog/2008/01/27/proudest-non-software-hack/</guid>
		<description><![CDATA[A recent post on YC Hacker News asks:

The new question from the yc application &#8220;Please tell us about the time you (&#8230;) most successfully hacked some (non-computer) system to your advantage&#8221; filters me out right there, so far I can&#8217;t think of anything. How about you? I love that kind of stories, and I suppose [...]]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://news.ycombinator.com/item?id=104802">recent post on YC Hacker News</a> asks:</p>
<blockquote><p>
The new question from the yc application &#8220;Please tell us about the time you (&#8230;) most successfully hacked some (non-computer) system to your advantage&#8221; filters me out right there, so far I can&#8217;t think of anything. How about you? I love that kind of stories, and I suppose giving them away now won&#8217;t hurt the applicants chances?
</p></blockquote>
<p>Almost all my hacks involve computers to some extent, but my proudest hack also involves the public school system.  In 1998, going into my senior year of high school, I really wanted to take Computer Science AP.  That year, the AP board was switching the course curriculum from Pascal to C++.  Unfortunately for us, the school&#8217;s computer lab was ancient&#8211; a set of 8088 PCs with no hard drives, with each student given a floppy containing a bootable Pascal environment and all his/her code.  The school didn&#8217;t have any money for a new lab full of computers, and was planning to cancel the course.  So I came up with the idea of building one reasonably powerful linux server, and networking the existing PCs to it using a bootable &#8220;dumb terminal&#8221; disk.  Cost: about $2000 for the server and 20 network cards.</p>
<p>Several friends and I worked over the summer to set up our linux lab.  It turned out the network card device driver, built for x86 boxes, wouldn&#8217;t work on these 8088 CPUs.  So we bought a big pile of old 386 motherboards with CPUs and RAM from a friendly alum for $200.  It turned out the 8088 cases were not standard, with metal bumps that would instantly short one of our new motherboards.  So we installed them on top of their anti-static bags, with only expansion cards to hold stuff in place.  Everything except the server was overtly cheap and flimsy, like the 10-base-2 coax network we used instead of 10-base-T because it didn&#8217;t require an expensive hub.  But everything was also easily replaceable, and we built extras just in case the usual firm smack didn&#8217;t fix a broken machine.</p>
<p>Then, on our last work visit at the end of summer, we got some discouraging news: the teacher who was supposed to lead CS AP in our new lab had suddenly departed for a better-paying job at another school district.  We finished the lab, wondering how we&#8217;d get by without a teacher.  The course remained tentatively scheduled and for the first few days we tried to teach everyone how to use the OS and compiler while supervised by a friendly but clueless substitute teacher.</p>
<p>Luckily, we ended up with a much better teacher.  Brad Kuhn, a CS graduate student at the nearby University of Cincinnati, came to meet us and knew he was our only chance.  Though I&#8217;m sure he didn&#8217;t enjoy some of the disciplinary responsibilities that came with being a high school teacher, he shared with us a deep knowledge of CS and an honest passion for free software.  (Brad went on to become director of the Free Software Foundation, and is now CTO at the Software Freedom Law Center.)  We hung out after school playing netris and debating when (or if) Microsoft would start publishing free software.  There was no shortage of disagreement.</p>
<p>That was ten years ago in Cincinnati, but my former classmates remain among my closest friends.  We&#8217;re now the age Brad was when he took that job.  What am I going to do this year that will have as positive an impact on the world as Brad&#8217;s decision to take that job 10 years ago?  What are you going to do?</p>
<hr/>
<p><em>The school is <a href="http://www.walnuthillseagles.com/">Walnut Hills High School</a> of Cincinnati, Ohio.  The friends are Ben Cooper, <a href="http://www.cokane.org/">Coleman Kane</a>, <a href="http://benbarker.com/">Ben Barker</a>, Peter Barker, and <a href="http://www.mctague.org/carl">Carl McTague</a>.</em><!--6e78576215382061c0be813a3ca71972--><!--cfb899b797755fb272e0383878e0c7f9--><!--fa8afd06bdba2797986ef405ebafbabe--><!--e183bb8f6fbc7b6450cd7dbef04e3047--><!--ef82398586d6599590c53da551142016--></p>
]]></content:encoded>
			<wfw:commentRss>http://rura.org/blog/2008/01/27/proudest-non-software-hack/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Treadmill Desk: Exercise for the Sake of Hacking</title>
		<link>http://rura.org/blog/2007/11/14/the-treadmill-desk-exercise-for-the-sake-of-hacking/</link>
		<comments>http://rura.org/blog/2007/11/14/the-treadmill-desk-exercise-for-the-sake-of-hacking/#comments</comments>
		<pubDate>Wed, 14 Nov 2007 19:59:35 +0000</pubDate>
		<dc:creator>shimon</dc:creator>
		
		<category><![CDATA[computers/human-computer interaction]]></category>

		<category><![CDATA[shimon]]></category>

		<category><![CDATA[society/tech/gadgets]]></category>

		<guid isPermaLink="false">http://rura.org/blog/2007/11/14/the-treadmill-desk-exercise-for-the-sake-of-hacking/</guid>
		<description><![CDATA[I work at my computer all day long.  Between eight and fourteen hours on the average workday, I&#8217;m staring at a screen and typing on a keyboard.  Until recently, this meant I didn&#8217;t get much exercise; I&#8217;d aspire to a bike ride on the weekends, but went most weeks with nothing more than [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://rura.org/extras/treadmill-desk/treadmill-desk-in-use.jpg"><img align="right" hspace="10" vspace="10" border="1" src="http://rura.org/extras/treadmill-desk/treadmill-desk-in-use-thumb.jpg"></a>I work at my computer all day long.  Between eight and fourteen hours on the average workday, I&#8217;m staring at a screen and typing on a keyboard.  Until recently, this meant I didn&#8217;t get much exercise; I&#8217;d aspire to a bike ride on the weekends, but went most weeks with nothing more than a walk or two.  This is compounded because I work from home &#8212; no trips to the water cooler and copy machine for me.  If I wanted to, I could get by with about 100 steps of walking per day, between my bedroom, office, kitchen, and bathroom.</p>
<p>Then I started using a treadmill desk.  The idea, <a href="http://www.nytimes.com/2005/05/24/health/nutrition/24wigg.html">originated by Mayo Clinic Researcher James Levine</a>, is straightforward: instead of sitting at your desk, you work at a treadmill that&#8217;s equipped with a monitor, keyboard, and phone.  Rather than sitting, you walk at a slow pace.  Because the human body has evolved to walk long distances, a healthy person can comfortably walk several miles a day.  After just a few days, I was consistently walking about 6 or 7 hours a day.  It&#8217;s been about a month now, and I&#8217;ve used the treadmill desk every day I&#8217;ve worked from home.</p>
<p>I love it.  And what&#8217;s really amazing it that I&#8217;m not just doing something healthy without taking time away from work.  I&#8217;m working better because of the steady supply of exercise.  My concentration is sharper and my energy level remains steady throughout the day.  <em>The exercise has made me a better hacker.</em></p>
<p>The magnitude of this result surprised me.  I&#8217;m in decent shape; I wouldn&#8217;t mind losing a few pounds, but I eat well and my cholesterol and blood pressure are fine.  On the other hand, I&#8217;m always looking for ways to be smarter or more energetic.  Like many people whose work is intellectual, I suffer from lulls and funks, from afternoons of carb-induced catatonia to full days of hacker&#8217;s block.  The exercise smooths over these funks.  I still have some slow days, of course, but by defaulting to constant exercise, there&#8217;s a tremendous countervailing influence to the biochemical tides of mood.</p>
<p><b>How-to</b></p>
<p>If you think a treadmill desk might be good for you, it&#8217;s not hard to try it out.  I started with a standing-desk <a href="http://rura.org/extras/treadmill-desk/prototype-standing-desk.jpg"><img title="The standing prototype." align="right" hspace="10" vspace="10" border="1" src="http://rura.org/extras/treadmill-desk/prototype-standing-desk-thumb.jpg"></a> prototype (pictured at right): tray tables piled with books to bring my laptop screen and an external mouse/keyboard to eye- and hand-level, respectively.  A standing desk has most of the exercise benefit of a treadmill, with the caveat that standing still is far more stressful to your joints and muscles than slow walking.  You can try this with stuff you already have; if you like the exercise but are limited to only a couple of hours of continuous standing before your knees start to ache, it&#8217;s time to take the dive and buy a treadmill.</p>
<p>1. Get a Treadmill</p>
<p>My current treadmill is a HealthRider SoftStrider I got for $100 via Craigslist.  When I wear this thing out, I&#8217;ll consider buying a new treadmill in the $1000 range, but a cheap used treadmill is a great starting point and craigslist is a good way to find some locally.  You can transport a foldable treadmill in the back of a van/wagon, or, as I did, in a car trunk with some bungee cords and careful driving.  (They&#8217;re really heavy; you&#8217;ll need a friend to help you navigate any stairs.)  Key features of a desk treadmill are:
<ul>
<li>Electronic.  The force required to propel an un-powered treadmill will get in the way of your work.  You need a conveyor belt under your feet.  Give up on the dream of powering your computer with your footsteps.</li>
<li>Slow speeds.  You&#8217;ll want to control your walking speed in, at most, 0.1mph increments between 0.7 and 1.5mph.  You don&#8217;t need a treadmill designed for running, but a padded belt will make the walk more comfortable and gentler.  If you&#8217;re over 180lbs, double-check the treadmill&#8217;s capacity.  Although you&#8217;ll only be walking, the continuous usage could potentially wear down a weaker platform.
<ul>
<li>Update 1/27/2008: I would like to revoke my endorsement of padded belts.  Foam doesn&#8217;t stay flexible forever and my belt has been gradually turning into dust.  Most newer treadmills have a flat belt and cushioning under the deck, which is a better design.</li>
</ul>
</li>
<li>Level arms.  All treadmills have arms that the occupant is supposed to hold while walking.  Your hands, however, will be on the keyboard, which will be on a shelf.  The easiest way to build this shelf is to attach it to the treadmill&#8217;s arms.  And if the arms are angled, you&#8217;ll need to compensate for that in the shelf.  If they&#8217;re level, you can just slap a board across.
<ul>
<li>Update 1/27/2008: Actually, a level tray is not as good as one that&#8217;s inclined away from you. Ideally, you want to avoid bending your wrists, and you want to have your elbows open at 100 to 120 degrees.  I&#8217;m still working on a design that achieves this; my temporary solution is a shim under the near end of my keyboard.</li>
</ul>
<li>Quiet.  Old, underpowered, or poorly cared-for treadmills may hum constantly; try to find one that doesn&#8217;t make much motor noise.  The noise of your footsteps and the belt&#8217;s motion on the deck will always be present, and on a nice newer treadmill these should overshadow noise from the motor itself.  (Added 1/27/2008.)</li>
<li>Console.  Mounted on the treadmill will be an electronic console where you can set the speed.  Sometimes these consoles include a reading tray and cup holder.  You probably won&#8217;t want to use these for holding your monitor; vibrations in the treadmill will cause your monitor to shake and make it hard to read.  So pick a console that is reasonably out of the way; you&#8217;ll need to at least build a shelf over it.</li>
</ul>
<p>2. Build Some Stuff</p>
<p>Once you&#8217;ve got the treadmill, you&#8217;ll need to build two shelves: one for the keyboard/mouse, and another for your monitor and other equipment.  The easiest way to do the keyboard tray is by attaching it to the treadmill&#8217;s handles, if they&#8217;re level.  For mine, I have a wooden board that is laid across the handles, with segments of 2&#215;4 on the sides in order to raise the shelf&#8217;s height.  You&#8217;ll want to have the keyboard positioned so you can rest your hands on it with your elbows at an angle around 100 degrees.  Since your body will be moving, you might also want a trackball instead of a normal mouse; being able to rest part of your hand on the shelf will stabilize your finger movements, and without that stabilization precise mouse movements will be difficult.  I attached the keyboard shelf to the treadmill&#8217;s handles using industrial-strength velcro.  This provides a solid attachment but allows me to lift the tray off of the treadmill so that I can fold the treadmill up, clearing space in my office for the fold-out guest bed.</p>
<p><a href="http://rura.org/extras/treadmill-desk/treadmill-desk-unoccupied.jpg"><img align="right" hspace="10" vspace="10" border="1" src="http://rura.org/extras/treadmill-desk/treadmill-desk-unoccupied-thumb.jpg"></a> The monitor shelf is different.  You definitely want to avoid resting the monitor on your treadmill in any way, or vibrations from walking will shake your screen.  Measure the height you&#8217;ll want in order to hold the screen&#8217;s center a level 2 feet in front of your eyes while standing on the treadmill.  My shelf is at about 60&#8243; from the ground (I&#8217;m 6&#8242;2&#8243;).  My shelf has two legs (cut from 2&#215;4s) and is held together with shelf braces; the materials and wood cutting cost around $25 total from Home Depot.  A simpler design would be to build the shelf like a three-legged stool, with equal-length legs at the front left, front right, and rear center of the shelf.  You might also be able to use a pre-made modular shelf, although it could be hard to find one that can straddle a treadmill.</p>
<p>3. Set Up Your Computer</p>
<p>You probably don&#8217;t want to force yourself to use the treadmill whenever you need the computer.  A desk is useful if you get tired, or if you need to do actual paperwork &#8212; writing steadily is almost impossible on the treadmill.  So I maintain my old desk, with its own monitor, keyboard, and mouse.  These are connected to the same computer &#8212; the treadmill&#8217;s peripherals are connected via USB.  While on the treadmill, I rotate the desk monitor and use it as a secondary screen &#8212; I leave work chat running there so I can see if anyone mentions my name, but drag the window over to the treadmill monitor for any intensive reading.</p>
<p>4. Brag About It</p>
<p>The treadmill desk is a great story for coworkers and friends.  If you&#8217;ve read this far, then you&#8217;re exactly the kind of person I&#8217;d love to tell it to.  In any social setting, the treadmill gives you an excuse to stand up, extend your arms, and walk around like a zombie while talking about what a geek you are.  Lots of people find the idea appealing and will ask interesting questions.</p>
<p>The <a href="http://en.wikipedia.org/wiki/Treadmill_Desk">wikipedia Treadmill Desk</a> page has more information.  And, in case you&#8217;re wondering &#8212; this article was written entirely while walking.<!--6b663c37e82ff9f2ab1f8467b539f321--><!--8be07d0bd4c87945b111f5c1f9a975a5--><!--0e6fc5ff458e5f952fe22c861c1f3358--><!--47f94a749c0d128e6621efb06d480364--><!--e946fbd67533ab33d95fa0c38184b2a8--><!--a86b99dbe2843baf4ff084b4c3662b8b--></p>
]]></content:encoded>
			<wfw:commentRss>http://rura.org/blog/2007/11/14/the-treadmill-desk-exercise-for-the-sake-of-hacking/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
