<?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>Push cx &#187; NearbyGamers</title>
	<atom:link href="http://push.cx/tag/nearbygamers/feed" rel="self" type="application/rss+xml" />
	<link>http://push.cx</link>
	<description>A traveling geek&#039;s blog on development, games, and the web</description>
	<lastBuildDate>Fri, 14 Oct 2011 10:24:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Craftsmanship Tour: David W. Allen</title>
		<link>http://push.cx/2011/craftsmanship-tour-david-w-allen</link>
		<comments>http://push.cx/2011/craftsmanship-tour-david-w-allen#comments</comments>
		<pubDate>Wed, 05 Jan 2011 03:50:18 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[craftsmanship tour]]></category>
		<category><![CDATA[graphs]]></category>
		<category><![CDATA[NearbyGamers]]></category>
		<category><![CDATA[software craftsmanship]]></category>

		<guid isPermaLink="false">http://push.cx/?p=1647</guid>
		<description><![CDATA[I&#8217;m in Grand Junction, Colorado because it seemed as good as any a place to start traveling. I have family in Denver and plans to ski, so why not tour the state a while? Once I knew I was coming to Grand Junction, I remembered GitHub can be searched by location and I got curious, [...]]]></description>
			<content:encoded><![CDATA[<p>
I&#8217;m in Grand Junction, Colorado because it seemed as good as any a place to start traveling. I have family in Denver and plans to ski, so why not tour the state a while? Once I knew I was coming to Grand Junction, I remembered GitHub can be searched by location and I got curious, so I did the search.
</p>

<a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDEvZ2l0aHViX3NlYXJjaC5wbmc="><img src="http://push.cx/wp-content/uploads/2011/01/github_search.png" alt="" title="GitHub search for users in Grand Junction" width="532" height="238" class="aligncenter size-full wp-image-1656 important" /></a>

<a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDEvSU1HXzM5NzNfbW9kaWZpZWQuanBn"><img src="http://push.cx/wp-content/uploads/2011/01/IMG_3973_modified-150x150.jpg" alt="" title="Grand Valley from Colorado National Monument" width="150" height="150" class="alignright size-thumbnail wp-image-1663" /></a>
<p>
One result? If there&#8217;d been a hundred people I&#8217;d have been done right there, but if there&#8217;s exactly one person, well, why not say hi? So I sent an email that I think sounded like this:
</p>

<blockquote>
I realize I&#8217;m a complete stranger and the idea of wandering into people&#8217;s offices to work with them for a day sounds perfectly ridiculous, but would you like to grab coffee, talk code, do some pair programming?
</blockquote>

<p>
Perhaps I didn&#8217;t come off quite so badly because <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Rhdmlkd2FsbGVuLm5ldC8=">David</a> said &#8220;what the hell&#8221; and invited me to meet him for his workday at <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3RyYWRlcnNjb2ZmZWVhbmR0ZWEuY29tLw==">Traders Coffee</a>.
</p>

<a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDEvU1RHXzQwODdfbW9kaWZpZWQuanBn"><img src="http://push.cx/wp-content/uploads/2011/01/STG_4087_modified-150x150.jpg" alt="" title="Colorado National Monument" width="150" height="150" class="alignright size-thumbnail wp-image-1662" /></a>
<p>
A side story: I happened to arrive before him and was looking around for him, and couldn&#8217;t see him. But I saw a woman surfing <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3N0YWNrb3ZlcmZsb3cuY29t">Stack Overflow</a>! I thought maybe this was someone David knew and invited along, so I had an awkward conversation where it quickly became clear she had no idea who I was or why I was introducing myself. If I&#8217;d been thinking quicker I&#8217;d have invited her to join us or at least given a business card, but my generic nerdly social phobia overwhelmed me and I excused myself. If you&#8217;re reading this and someone interrupted your Stack Overflow session to ask if you knew a guy you&#8217;d never heard of, sorry for the confusion, but if you&#8217;d like to grab coffee, talk code, maybe do some pair programming, I&#8217;m in town until Friday afternoon.
</p>

<a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDEvSU1HXzQwNjRfbW9kaWZpZWQuanBn"><img src="http://push.cx/wp-content/uploads/2011/01/IMG_4064_modified-150x150.jpg" alt="" title="Rocks in a frozen stream" width="150" height="150" class="alignright size-thumbnail wp-image-1659" /></a>
<p>
As David and I sipped delicious lattes, I learned that he&#8217;s a mechanical engineer who got into software development around ten years ago as his job changed. He&#8217;s self-taught, he cracked the books and started experimenting. Along the way he attended some <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5jb25zdHJ1eC5jb20vUGFnZS5hc3B4P25pZD0xMg==">Construx Seminars</a>. Construx is the software firm started by <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGV2ZV9NY0Nvbm5lbGw=">Steve McConnell</a>, the giant who strides above programmers bestowing books of wisdom and lore, so that gave David a good grounding.
</p>

<p>
A lot of our conversation was about how David has found it hard to improve his craft without other, ideally better, programmers around to work with. It&#8217;s referenced by the community aspect of the <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL21hbmlmZXN0by5zb2Z0d2FyZWNyYWZ0c21hbnNoaXAub3JnLw==">Software Craftsmanship Manifesto</a>. Programmers improve their craft by improving each other&#8217;s craft.
</p>

<a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDEvSU1HXzQwMTFfbW9kaWZpZWQuanBn"><img src="http://push.cx/wp-content/uploads/2011/01/IMG_4011_modified-150x150.jpg" alt="" title="Chapel with birds nesting on roof" width="150" height="150" class="alignright size-thumbnail wp-image-1658" /></a>
<p>
As an example, David told me about his startup project <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy52ZWxvZ3JhZi5jb20=">veloGraf</a>. He and another developer are using graph algorithms to analyze social networks and I soon realized I only know enough graph theory to hang onto the ankles of the conversation. I hadn&#8217;t thought about it before, but David pointed out that <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL25lYXJieWdhbWVycy5jb20vdGFncw==">game tags</a> on NearbyGamers form a highly cyclical graph. Gamers add edges to the graph by listing what games they&#8217;re interested in playing and tags self-referentially describe themselves (eg. <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL25lYXJieWdhbWVycy5jb20vdGFncy9EdW5nZW9uc18mIzAzODtfRHJhZ29ucw==">Dungeons and Dragons</a> is tagged as a an <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL25lYXJieWdhbWVycy5jb20vdGFncy9EdW5nZW9uc18mIzAzODtfRHJhZ29ucw==">RPG</a>).
</p>

<p>
I demoed the site&#8217;s most computationally-expensive page, which shows <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL25lYXJieWdhbWVycy5jb20vbmVhcmJ5L0hhcmtpbnMvZ2FtZXJz">gamers who share tags, sorted by distance</a>. This page required some hacking to avoid a gigantic couple of joins that would&#8217;ve dragged in most of the rows in the RDBMS, but David chuckled because it&#8217;s the sort of problem a proper graph database doesn&#8217;t even notice. He&#8217;s tracking millions of nodes with many times more edges in order to extract interesting connections. The simple analyses he pointed out flaws in common algorithms that were <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3NpdmVycy5vcmcvb2J2aW91cw==">obvious</a> to him but surprising to me. I managed to give him some fodder for experiments to improve his algorithms, which says more about the value of a little collaboration than it does my graph chops.
</p>

<a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDEvSU1HXzQwMDVfbW9kaWZpZWQuanBn"><img src="http://push.cx/wp-content/uploads/2011/01/IMG_4005_modified-150x150.jpg" alt="" title="Main St. sculpture" width="150" height="150" class="alignright size-thumbnail wp-image-1657" /></a>
<p>
David told me a tale of (mild) woe from a previous job. An experienced cowbody coder was developing the core of a product while supposedly mentoring interns. In reality, they were restricted to working on small, ancillary tasks so as not to destabilize the core or distract the cowboy. How do you fix this?
</p>

<p>
My best guess (share yours in the comments, please &#8211; it&#8217;s not an uncommon scenario) was to task the interns with adding automated testing. The cowboy will think of it as menial work, but the interns will be exposed to the whole system and have reasons to have conversations with him. And probably better to start with acceptance testing than unit testing to preempt the cowboy from whining that using unit tests to verify that his code works (as opposed to hack and hope and oh yeah, I forgot those two things were related) slows down his brilliance.
</p>

<p>
There&#8217;s a complacency I&#8217;ve seen that&#8217;s sort of related to the <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5wYXVsZ3JhaGFtLmNvbS9hdmcuaHRtbA==">Blub Paradox</a>. When a programmer succeeds at building their first product or two, they often get an panglossian sense of competence. They may think, &#8220;I&#8217;m good at my job, there&#8217;s people telling me I should learn these things, but I&#8217;m good at my job without them, ipso facto I don&#8217;t need to learn more.&#8221; Unless they&#8217;re around a noticeably better programmer or especially introspective, they may never realize how much more there is to learn and the possibility of much greater skill.
</p>

<a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDEvSU1HXzQwOTNfbW9kaWZpZWQuanBn"><img src="http://push.cx/wp-content/uploads/2011/01/IMG_4093_modified-150x150.jpg" alt="" title="Pedestrian bridge across I70" width="150" height="150" class="alignright size-thumbnail wp-image-1660" /></a>
<p>
I think this is where <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5zb2Z0d2FyZS10aG91Z2h0cy5jb20vMjAwOS8wOC9uZXQtbmVnYXRpdmUtcHJvZHVjaW5nLXByb2dyYW1lci5odG1s">net negative producing programmers</a> come from. I joined a project with an NNPP once. I watched all commits to the repository (everybody does this, right?) and I realized nearly his every commit added a bug or the strong potential for future problems. There was feedback available in the rising bug count and frustration of trying to improve the codebase, but he didn&#8217;t have the experience to know that this experience was abnormal. (Or at least improvable.) As I and other developers started cleaning up the code, he recognized what had been happening and decided to reinvest in his career by attending training.
</p>

<a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvd3AtY29udGVudC91cGxvYWRzLzIwMTEvMDEvSU1HXzQwOTVfbW9kaWZpZWQuanBn"><img src="http://push.cx/wp-content/uploads/2011/01/IMG_4095_modified-150x150.jpg" alt="" title="Cross-country skiing on Grand Mesa" width="150" height="150" class="alignright size-thumbnail wp-image-1661" /></a>
<p>
I think this is why the nascent software craftsmanship movement has such potential. Programmers need to make steady improvement, however small, a core value of the profession. Currently there&#8217;s a &#8220;well, it works&#8221; when practice and mindful improvement could be a precept. The likeliest way I see that happening is masters of the craft mentoring apprentices. Every craft has its share of &#8220;just get it done&#8221;, but it doesn&#8217;t have to be the dominant culture.
</p>

<p>
<b>Update:</b> David has <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Rhdmlkd2FsbGVuLm5ldC8yMDExLzAxL3NvZnR3YXJlLWNyYWZ0c21hbnNoaXAv">blogged his thoughts</a> on our wide-ranging conversation.
</p> <img src="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1647" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2011/craftsmanship-tour-david-w-allen/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>NearbyGamers To-Do List</title>
		<link>http://push.cx/2009/nearbygamers-to-do-list</link>
		<comments>http://push.cx/2009/nearbygamers-to-do-list#comments</comments>
		<pubDate>Thu, 12 Feb 2009 15:27:19 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Biz]]></category>
		<category><![CDATA[aggregation]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[groups]]></category>
		<category><![CDATA[NearbyGamers]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[performance monitoring]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[stores]]></category>
		<category><![CDATA[to-do]]></category>

		<guid isPermaLink="false">http://push.cx/?p=666</guid>
		<description><![CDATA[NearbyGamers has been growing steadily without a lot of direct action on my part. I&#8217;ve been bugfixing and moderating, but aside from some performance improvements in November, it&#8217;s been quite a while since its had any user-visible improvements. Mostly this has been because I keep distracting myself with side projects: they&#8217;re deceptively simple to start [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL05lYXJieUdhbWVycy5jb20=">NearbyGamers</a> has been growing steadily without a lot of direct action on my part. I&#8217;ve been bugfixing and moderating, but aside from some performance improvements in November, it&#8217;s been quite a while since its had any user-visible improvements. Mostly this has been because I keep distracting myself with side projects: they&#8217;re deceptively simple to start but always have some area(s) of significant non-obvious complexity and a need for time-consuming polishing and refinement. I&#8217;m going to <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=LzIwMDkvc21hbGwtcGxhbnM=">finish them off</a> and then give attention to NearbyGamers.
</p>

<p>
What I plan:
</p>

<dl>

<dt>Performance Improvements</dt>
<dd>Despite what I did in November, some parts are still laggy; <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5iaW5nb2NhcmRjcmVhdG9yLmNvbS9hcnRpY2xlcy9kZXZlbG9waW5nLXNob3BwaW5nLWNhcnQuaHRt">on the Internet if it isn&#8217;t instant, it&#8217;s slow</a>. I&#8217;m aware of <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5maXZlcnVucy5jb20vcHJvZHVjdHMvbWFuYWdl">FireRuns Manage</a> and <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL25ld3JlbGljLmNvbS9SUE0uaHRtbA==">NewRelic&#8217;s RPM</a> for production performance monitoring. I&#8217;ll almost certainly end up with Manage (30-day trial) because RPM&#8217;s trial (30 minutes of data, useless for a small/young/low-traffic site) is so weak, but I&#8217;d really appreciate comments if anyone knows of other good tools.</dd>

<dt>News Aggregation</dt>
<dd>There are a lot of tabletop gaming/board game/RPG blogs and hand-edited news sites, and I think NearbyGamers would do well to aggregate those similar to Reddit/Digg. It&#8217;d bring gamers back to the site more regularly (rather than the common &#8216;signup, leave for a few months until someone new messages you&#8217;) and drive discussion, which is the best way to meet folks.</dd>

<dt>Groups</dt>
<dd>One of the biggest uses of the discussion forum is folks trying to organize gaming groups. Now that I&#8217;ve seen this happen a few times, I can build proper support for groups: a marker on the map, a dedicated forum per group, and advertising open slots for gamers, to start. Then there&#8217;s the next obvious feature for them:</dd>

<dt>Events</dt>
<dd>With or without a group, it should be possible to display upcoming events on the maps. List date and time, attendance information, link to a homepage if one exists, maybe have a dedicated forum.</dd>

<dt>Stores</dt>
<dd>It would also be good to list gaming stores on the map, which are oddly often difficult to find. This especially relates to the previous; I&#8217;d love to see what events my local stores have on their calendars. I also think gaming stores are nicer for browsing than websites, I&#8217;ve found so many interesting random games at stores that I wouldn&#8217;t have glanced at online. I&#8217;d like NearbyGamers to help stores stay in business and grow because they incubate local gaming communities.</dd>

</dl>

<p>
After I finish with the <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=LzIwMDkvc21hbGwtcGxhbnM=">small projects</a>, I think these features will probably take me a solid month to implement. NearbyGamers is developing a regular community, and I have a responsibility to help it thrive. What I&#8217;ll do afterwards is its own couple hundred words for tomorrow.
</p>

<p>
Next: <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=LzIwMDkvd2ViLWdhbWU=">The Startup Project That Lacks Even a Working Title</a>
</p> <img src="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=666" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2009/nearbygamers-to-do-list/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>NearbyGamers Advertising</title>
		<link>http://push.cx/2007/nearbygamers-advertising</link>
		<comments>http://push.cx/2007/nearbygamers-advertising#comments</comments>
		<pubDate>Mon, 17 Dec 2007 16:53:11 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Biz]]></category>
		<category><![CDATA[advertising]]></category>
		<category><![CDATA[NearbyGamers]]></category>

		<guid isPermaLink="false">http://push.cx/2007/nearbygamers-advertising</guid>
		<description><![CDATA[I posted this to NearbyGamers, but lots more people read my blog than read the forums there, so I wanted to crosspost real quick. I&#8217;m stepping up the NearbyGamers advertising and could use help coming up with attention-getting things to say in the ads. Currently I have a static ad that just say &#8220;You should [...]]]></description>
			<content:encoded><![CDATA[<p>
I <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL25lYXJieWdhbWVycy5jb20vZGlzY3Vzc2lvbnMvTTJNMXAtMS1MZXQtcy1tYWtlLXNvbWUtYWRz">posted this to NearbyGamers</a>, but lots more people read my blog than read the forums there, so I wanted to crosspost real quick.
</p>

<p>
I&#8217;m stepping up the NearbyGamers advertising and could use help coming up with attention-getting things to say in the ads. Currently I have a static ad that just say &#8220;You should play more tabletop games.&#8221; and an animated ad saying &#8220;Need another _______?&#8221; and rotates in the words GM, player, opponent, LARPer, nemesis.
</p>

<p>
If you&#8217;ve got a minute, please post a comment with a suggestion or two.
</p> <img src="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=294" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2007/nearbygamers-advertising/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Painless Upgrade to Rails 2.0</title>
		<link>http://push.cx/2007/painless-upgrade-to-rails-20</link>
		<comments>http://push.cx/2007/painless-upgrade-to-rails-20#comments</comments>
		<pubDate>Thu, 13 Dec 2007 12:10:20 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[ActiveResource]]></category>
		<category><![CDATA[NearbyGamers]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Rails 2.0]]></category>
		<category><![CDATA[routing]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[tests]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://push.cx/2007/painless-upgrade-to-rails-20</guid>
		<description><![CDATA[I spent a dead-easy 2.5 hours last night updating NearbyGamers to Rails 2.0. My svn commit message read (with links added here for convenience): Updated to Rails 2.0.1 rm&#8217;d lib/slash_urls.rb: Rails switched from ; to / to separate actions rm&#8217;d lib/resource_requirements.rb: now included in ActiveResources rm&#8217;d app/helpers/tags_helper.rb and gamers_helper.rb that had old controller names and [...]]]></description>
			<content:encoded><![CDATA[<p>
I spent a dead-easy 2.5 hours last night updating <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL05lYXJieUdhbWVycy5jb20=">NearbyGamers</a> to Rails 2.0. My svn commit message read (with links added here for convenience):
</p>

<blockquote>
Updated to Rails 2.0.1

<ul>
<li>rm&#8217;d <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvMjAwNy9yYWlscy1zZW1pY29sb25zLW91dC1zbGFzaGVzLWlu">lib/slash_urls.rb</a>: Rails switched from ; to / to separate actions</li>
<li>rm&#8217;d <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Rldi5ydWJ5b25yYWlscy5vcmcvdGlja2V0Lzc2MzMgd2l0aA0KCmh0dHA6Ly9wdXNoLmN4LzIwMDcvcmFpbHMtc2VtaWNvbG9ucy1vdXQtc2xhc2hlcy1pbgoK">lib/resource_requirements.rb</a>: now included in ActiveResources</li>
<li>rm&#8217;d app/helpers/tags_helper.rb and gamers_helper.rb that had old controller names and were unused anyways</li>
<li>app/controllers/gamers_controller.rb: documented and fixed raw post variable extraction</li><li>updated post_path linkers in many views, controllers, and tests</li>
<li>renamed discussion_anchor_post_path to anchor_discussion_post_path to match the new ordering for nested resource urls</li>
<li>fix tag sorting on <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL05lYXJieUdhbWVycy5jb20vdGFncw==">tag index</a></li>
<li>move tags from /tags/Board+Games to <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL05lYXJieUdhbWVycy5jb20vdGFncy9Cb2FyZF9HYW1lcw==">/tags/Board_Games</a>, as Rails fixed the bug that encoded &#8216; &#8216; as &#8216;+&#8217; in non-get variable parts of the URL</li>
</ul>
</blockquote>

<h2>The Details</h2>

<p>
The first two files I deleted were my patches to URL generation that Rails now includes. The next two helper files I never used, but had had old (singular noun) names.
</p>

<p>
The bit about documentation: the way to get at raw post variables changed, so I tweaked code and left myself a reminder of why I&#8217;m doing it (I had to look at the changelog, which means it wasn&#8217;t self-evident).
</p>

<p>
Nested resources (I have nested <kbd>map.resources :discussions { |d| d.resources :posts }</kbd>) changed from <kbd>discussion_edit_post_url</kbd> to <kbd>edit_discussion_post_url</kbd>, so there was a bunch of places to change that. The next change about anchor is me following this convention with my own convenience method.
</p>

<p>
Tag sorting on the index page was a bug that Snarky pointed out to me. When I made some performance tweaks to that page I forgot to keep sorting tags as they came out of the database. This arguably should&#8217;ve been a revision of its own as it&#8217;s unrelated to the upgrade, but it was an easy one-line bugfix so I let it in.
</p>

<p>
Last, I renamed the tag pages. The tag model&#8217;s <kbd>to_param</kbd> just returns <kbd>self.name</kbd> and Rails would turn &#8220;Board Games&#8221; into &#8220;Board+Games&#8221;. It&#8217;s common but technically incorrect, as + only means space in encoded GET/POST variables. The proper encoding of &#8220;Board%20Games&#8221; was really noisy, so I took a page from Wikipedia&#8217;s pagebook and use underscores instead, like &#8220;Board_Games&#8221;. Was one line in the <kbd>to_param</kbd> and one line in the controller&#8217;s <kbd>load_tag</kbd> before_filter, a dozen lines of tweaking old tests, and seven lines of new tests. Eeeeeasy. 
</p>

<h2>The Verdict</h2>

<p>
Tests, tests, tests. If I didn&#8217;t have a solid test suite, I&#8217;d be noticing bugs two months from now in the least-frequently-exercised bits of code. Not only would I not have remembered to test some of the functionality, I wouldn&#8217;t have remembered the corner cases &#8212; or maybe I&#8217;d just have gotten bored of clicking through pages over and over and ignored the corner cases.
</p>

<p>
None of these were hard fixes and none were frustrating. I&#8217;d probably have finished even sooner if I hadn&#8217;t also been poking <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2ljYW5oYXNjaGVlemJ1cmdlci5jb20vMjAwNy8xMi8xMS9taXRvc2lzLw==">lolcats</a> and chatting with friends. And now I have a big list of shiny new Rails 2.0 features I can put to work in <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL05lYXJieUdhbWVycy5jb20=">NearbyGamers</a>.
</p> <img src="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=292" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2007/painless-upgrade-to-rails-20/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing NearbyGamers</title>
		<link>http://push.cx/2007/announcing-nearbygamers</link>
		<comments>http://push.cx/2007/announcing-nearbygamers#comments</comments>
		<pubDate>Mon, 22 Jan 2007 04:11:06 +0000</pubDate>
		<dc:creator>Peter Harkins</dc:creator>
				<category><![CDATA[Biz]]></category>
		<category><![CDATA[Barking Stapler]]></category>
		<category><![CDATA[NearbyGamers]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://push.cx/2007/announcing-nearbygamers</guid>
		<description><![CDATA[I&#8217;d like to invite you all to check out my newest project, NearbyGamers, a service for tabletop gamers to find other players. (As I mentioned earlier, it&#8217;s a Rails site.) It&#8217;s for people who play RPGs, CCGs, TCGs, wargames, board games &#8212; basically any game where you need to have a live human on the [...]]]></description>
			<content:encoded><![CDATA[<p>
I&#8217;d like to invite you all to check out my newest project, <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL05lYXJieUdhbWVycy5jb20=">NearbyGamers</a>, a service for tabletop gamers to find other players. (As I <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3B1c2guY3gvMjAwNi9tYWtpbmctdmFsaWQteGh0bWwtZWFzaWVy">mentioned earlier</a>, it&#8217;s a Rails site.) It&#8217;s for people who play RPGs, CCGs, TCGs, wargames, board games &#8212; basically any game where you need to have a live human on the other side of a table if you want to play.
</p>

<img class="content" src="http://push.cx/wp-content/uploads/2007/01/NG-map.png" alt="NearbyGamers map screenshot" />

<p>
Basically it&#8217;s the mashup of a wiki and Google Maps, and I plan to add forums (there are very few things gamers like more than arguing online). I&#8217;ve been hacking at it on and off for a couple months now, and it&#8217;s finally worth talking about. NG is my first large Rails project, and it&#8217;s been a lot of fun. Almost all the time the code is quite dense and beautiful, but several times I&#8217;ve worked up some fairly ugly hackish code I&#8217;m not particularly happy with. And then a few days later an nice, friendly little solution will pop into my head, and it&#8217;s easy to hack in because I have comprehensive tests. (Having tests has really saved my life. I&#8217;ll be posting more about it, but for now I&#8217;ll just say that I couldn&#8217;t have built NG without automated tests.)
</p>

<p>
Some of the early beta testers are computer game fans, so there&#8217;s a fair number of computer games listed on NearbyGamers right now &#8212; heck, <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL25lYXJieWdhbWVycy5jb20vdGFnL1dvcmxkK29mK1dhcmNyYWZ0">World of Warcraft</a> is the most popular tag. I don&#8217;t see what folks will get out of it, but I&#8217;d rather build a pretty open system and let folks find new uses.
</p>

<p>
So check it out, let me know what you think. I&#8217;ve got a <a href="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL25lYXJieWdhbWVycy5jb20vdG9kby55bWw=">todo list</a> online for the curious, and I&#8217;m always taking suggestions.
</p> <img src="http://push.cx/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=197" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://push.cx/2007/announcing-nearbygamers/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

