<?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>Idol Hands: Days in the Life of an Alpha Geek</title>
	<atom:link href="http://www.idolhands.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.idolhands.com</link>
	<description>Corey Ehmke's home on the web since 1996, IdolHands.com features an alpha-geek blog covering topics in Mac OS X, software and web development (mainly Cocoa and Ruby on Rails), electronics, robotics, and other stuff important in the life of a technologist and tinkerer.</description>
	<pubDate>Fri, 14 Nov 2008 17:26:28 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>Remote Viewing: Pair Programming with iChat Screen Sharing</title>
		<link>http://www.idolhands.com/development/remote-viewing-pair-programming-with-ichat-screen-sharing/</link>
		<comments>http://www.idolhands.com/development/remote-viewing-pair-programming-with-ichat-screen-sharing/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 06:41:32 +0000</pubDate>
		<dc:creator>Corey Ehmke</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.idolhands.com/?p=130</guid>
		<description><![CDATA[I&#8217;ve spent most of this week doing hardcore pair programming on a new web app that we&#8217;re working on at SEO Logic. But my daughter was sick today, so I ended up working from home while my wife taught her classes at the Homeschool Coop. We didn&#8217;t let this stop us from continuing to pair [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve spent most of this week doing hardcore pair programming on a new web app that we&#8217;re working on at <a href="http://www.seologic.com">SEO Logic</a>. But my daughter was sick today, so I ended up working from home while my wife taught her classes at the <a href="http://www.homeschoolcommunitycoop.org/">Homeschool Coop</a>. We didn&#8217;t let this stop us from continuing to pair program, however.</p>
<p>If you use iChat, you may have noticed a small double-rectangle icon at the bottom of your buddy list:</p>
<div style="width: 100%; text-align: center;"><img src="/grafx/ichat_screen_sharing/ichat_pair_programming.jpg" alt="Pair programming with iChat screen sharing" width="620" height="318" style="border: none;" />
</div>
<p>So all I had to do was plug in a USB headset for audio in and out (echoes and feedback otherwise), select my programming partner from the iChat window, and click that icon to start screen sharing.</p>
<p>After a few seconds, he could see my desktop in real time and full size on his machine, while his own desktop floated in a minimized window. Either one of us could control my laptop, with full support for keyboard shortcuts&#8230;  everything you would expect to be able to do if sitting side by side with a second keyboard and mouse.</p>
<div style="width: 100%; text-align: center;"><img src="/grafx/ichat_screen_sharing/screen_sharing_small.png" alt="Screen sharing in action." width="640" height="400" /></div>
<p>Surprisingly, the one keyboard shortcut that he could not execute remotely, instead affecting his own computer, ended up being a handy one&#8211; command-shift-3, used to take the screen shot above.</p>
<p>I should point out that we were both on laptops with connectivity through 801.11g wireless routers, and there was absolutely no discernable lag in voice communications, keystrokes, or screen drawing.</p>
<p>A couple of years ago we were blown away by SubEthaEdit, which let multiple people edit the same document in real time. I remember wishing at the time that BBEdit would let you do that. Now with iChat screen sharing, that&#8217;s a reality.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.idolhands.com/development/remote-viewing-pair-programming-with-ichat-screen-sharing/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Moving Back to BBEdit from TextMate</title>
		<link>http://www.idolhands.com/ruby-on-rails/moving-back-to-bbedit-from-textmate/</link>
		<comments>http://www.idolhands.com/ruby-on-rails/moving-back-to-bbedit-from-textmate/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 00:18:22 +0000</pubDate>
		<dc:creator>Corey Ehmke</dc:creator>
		
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.idolhands.com/?p=108</guid>
		<description><![CDATA[Though it pained me at the time, last year I felt compelled to leave my favorite text editor&#8211; BBEdit&#8211; for TextMate. I had been using BBEdit for years and years as my IDE, but when I made the move to Ruby on Rails I followed the lead of other Mac-based Rails developers and adopted TextMate. [...]]]></description>
			<content:encoded><![CDATA[<p>Though it pained me at the time, last year I felt compelled to leave my favorite text editor&#8211; BBEdit&#8211; for TextMate. I had been using BBEdit for years and years as my IDE, but when I made the move to Ruby on Rails I followed the lead of other Mac-based Rails developers and adopted TextMate. Although the move was relatively painless, something just didn&#8217;t feel right.</p>
<p>I won&#8217;t do a feature-by-feature comparison, but  I will say that while the Rails-specific features were nice, there were a lot of BBEdit niceties that I missed, or whose TextMate analogues I found lacking.</p>
<p>So when Bare Bones released <a href="http://www.barebones.com/products/BBEdit/">BBEdit 9</a> a couple of months ago, I decided to test the waters and see if I could return to my old favorite without losing the productivity gains I got with TextMate. I&#8217;m happy to say that I haven&#8217;t opened TextMate at all since then. I initially stumbled across (and reported) a few bugs related to the handling of Ruby in the editor, but was amazed at the incredibly fast response and turnaround time for fixes.</p>
<h3>Project Management</h3>
<p>Besides the extended Ruby on Rails language support, probably the most important BBEdit feature from a Rails development perspective is the new Project functionality. Long-time BBEdit users will probably recognize this as an evolution of the Disk Browser feature.</p>
<p>Projects are basically a group of related files and folders from the file system. So in a typical Rails app, the BBEdit Project file would contain all of the files and folders in your application&#8217;s root directory.</p>
<p>Projects provide single-window editing capability, which is vital while working across model, view, helper, and controller files. You can slide open the Documents Drawer to see all of the docs you&#8217;ve got open, and move between them using a keyboard shortcut; I think that command-] and command-[ are the defaults.</p>
<p></p>
<div style="width: 100%; text-align: center;">
  <img src="/grafx/blog/moving_back_to_bbedit/bbedit.png" alt="" width="640" height="276" style="border: none;" /><br />
  <i>BBEdit&#8217;s Project window&#8230;</i>
</div>
<div style="width: 100%; text-align: center;">
  <img src="/grafx/blog/moving_back_to_bbedit/textmate.png" alt="" width="640" height="282" style="border: none;" /><br />
  <i>&#8230;compared to TextMate&#8217;s interface.</i>
</div>
<p>This pretty much parallels TextMate functionality, with the exception that Project files and folders are not limited to a single root folder. You can also create Collections within projects, so if you have conf files related to your project (e.g. host files, vhosts, or what have you) you can maintain quick access to them from the Project window.</p>
<p>To create a Project in BBEdit, simply go to New -&gt; Project, and then drag-and-drop your files and folders. You can save the Project file wherever you like&#8211; I keep all of the BBEdit Project files in my ~/Documents/projects/ folder, at the same level in the file hierarchy as my Git repositories. This keeps them easy to access but out of source control.</p>
<h3>Scoping Multi-File Search</h3>
<p>BBEdit has always provided fast and robust search capabilities, especially compared to the dog-slow multi-file searching in TextMate.You also now have ability to edit right from within the search results list. Nice. But take a few minutes to optimize the way you search, and you&#8217;ll be even more productive.</p>
<p>In the multi-file search dialog, set up a File Filter defining Rails source code as any file with one of the following line endings:</p>
<ul>
<li>.rb</li>
<li>.erb</li>
<li>.rjs</li>
<li>.html</li>
<li>.rthml</li>
<li>.yaml</li>
<li>.css</li>
<li>.js</li>
<li>.haml</li>
</ul>
<p>Then click &#8216;Other&#8217; in the find dialog box and select just the folders you&#8217;re going to want to search in (most likely app/models, app/views, app/controllers, and app/helpers). Otherwise, you may find yourself with a lot of false positives as BBEdit searches through log/, lib/, and vendor/. Be sure to save your search set and name it for your project.</p>
<h3>Clippings</h3>
<p>Clippings make short work of Rails coding in BBEdit. Clippings are just snippets of code that can be inserted with a few key presses, and BBEdit 9 comes with two sets just for Rails development: Ruby, and Ruby in HTML. Create a keyboard shortcut for the Clippings &gt; Insert Clipping menu item by bringing up Preferences &gt; Menus &gt; Clippings and selecting Insert Clipping. (I use option-command-c.)</p>
<p>To insert a clipping, simply invoke the clipping pallete using your shortcut, and start typing the clipping tag that you want; for example, to insert a template for a class definition, start typing &#8220;cla&#8221;, and when auto-complete shows the correct clipping, just hit enter.</p>
<div style="width: 100%; text-align: center;">
  <img src="/grafx/blog/moving_back_to_bbedit/clipping_1.png" alt="" width="454" height="326" />
</div>
<p>Now you can tab through the placeholders (in this case, the ClassName and the interior of the class) and enter the appropriate code.</p>
<div style="width: 100%; text-align: center;">
  <img src="/grafx/blog/moving_back_to_bbedit/clipping_2.png" alt="" width="640" height="396" style="border: none;" />
</div>
<p>You can also create your own snippets; check the BBEdit help for instructions.</p>
<p>I&#8217;ve created a quick reference sheet that organizes all of the Rails-related clippings on one page, suitable for hanging on the wall near your desk:</p>
<div style="width: 100%; text-align: center;">
  <a href="/share/bbedit/bbedit_rails_clippings_quick_ref.pdf"><img src="/grafx/blog/moving_back_to_bbedit/bbedit_rails_clippings_quick_ref.png" alt="" width="462" height="364" style="border: none;" /></a></p>
<p><b><a href="/share/bbedit/bbedit_rails_clippings_quick_ref.pdf">BBEdit Ruby on Rails Text Clippings Quick Reference</a></b> (PDF, 440k)</a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.idolhands.com/ruby-on-rails/moving-back-to-bbedit-from-textmate/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rails ActiveRecord Relationships Flowchart</title>
		<link>http://www.idolhands.com/ruby-on-rails/rails-activerecord-relationships-flowchart/</link>
		<comments>http://www.idolhands.com/ruby-on-rails/rails-activerecord-relationships-flowchart/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 16:36:48 +0000</pubDate>
		<dc:creator>Corey Ehmke</dc:creator>
		
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.idolhands.com/?p=91</guid>
		<description><![CDATA[One of the remarkable things about Rails is how easy it is to create and manage relationships between objects. ActiveRecord provides this powerful and flexible object-relational mapping (ORM) capability.
Even though there are only a handful of methods involved, it can sometimes be a little confusing to newcomers; and even when you&#8217;ve got the big picture [...]]]></description>
			<content:encoded><![CDATA[<p>One of the remarkable things about Rails is how easy it is to create and manage relationships between objects. ActiveRecord provides this powerful and flexible object-relational mapping (ORM) capability.</p>
<p>Even though there are only a handful of methods involved, it can sometimes be a little confusing to newcomers; and even when you&#8217;ve got the big picture down, you might need help remembering the small details, like where to put the foreign key.</p>
<p>To that end, I created a simple flowchart that guides you through the process of setting up your ActiveRecord associations. It&#8217;s pinned to the wall next to my desk; hopefully you&#8217;ll find it a handy reference as well.</p>
<div style="width: 100%; text-align: center; border: none;">
  <img src="/grafx/rails/rails_activerecord_relationships_flowchart.png" alt="" width="636" height="546" alt="Rails ActiveRecord Relationships Flowchart" />
</div>
<p>Other formats:</p>
<ul>
<li><a href="http://www.idolhands.com/share/rails/rails_activerecord_relationships_flowchart.pdf">rails_activerecord_relationships_flowchart.pdf</a> (PDF, 61k)</li>
<li><a href="http://www.idolhands.com/share/rails/rails_activerecord_relationships_flowchart.svg">rails_activerecord_relationships_flowchart.svg</a> (Scalable Vector Graphic, 32k)</li>
</ul>
<hr size="1" style="margin-top: 20px;" />
<div style="float: left; width: 100px; margin-right: 10px; padding: 10px;">
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/us/"><img alt="Creative Commons License" style="border-width:0" src="http://creativecommons.org/images/public/somerights20.png" /></a>
</div>
<div style="float: left; width: 500px;">
<p><span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/StillImage" property="dc:title" rel="dc:type">Rails ActiveRecord Relationship Flowchart</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="http://www.idolhands.com/" property="cc:attributionName" rel="cc:attributionURL">Corey Ehmke</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/us/">Creative Commons Attribution-Share Alike 3.0 United States License</a>.<br />Based on a work at <a xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://www.idolhands.com/ruby-on-rails/active_record_relationships/" rel="dc:source">www.idolhands.com</a>.</p>
</div>
<p><br style="clear: both;" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.idolhands.com/ruby-on-rails/rails-activerecord-relationships-flowchart/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Wired SuckFest</title>
		<link>http://www.idolhands.com/technology/wired-suckfest/</link>
		<comments>http://www.idolhands.com/technology/wired-suckfest/#comments</comments>
		<pubDate>Sat, 25 Oct 2008 00:43:18 +0000</pubDate>
		<dc:creator>Corey Ehmke</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.idolhands.com/?p=78</guid>
		<description><![CDATA[We went to Wired NextFest in Millenium Park in Chicago a couple of weekends ago. It was a great reminder of the value of freeing oneself from expectation.
Some allowance should be made, I suppose, for the fact that it was the last day of the event. Still, the majority of the exhibits were of the [...]]]></description>
			<content:encoded><![CDATA[<p>We went to <a href="http://www.wirednextfest.com/">Wired NextFest</a> in Millenium Park in Chicago a couple of weekends ago. It was a great reminder of the value of freeing oneself from expectation.</p>
<p>Some allowance should be made, I suppose, for the fact that it was the last day of the event. Still, the majority of the exhibits were of the no-touch, no-interaction variety. What&#8217;s the point of exhibiting a maglev chair if you don&#8217;t let people sit in it? Or a panoramic camera that you don&#8217;t let people try out? Too many of the exhibits were sealed off behind corporate flyers and plexiglass.</p>
<p>Almost all of the exhibits that were supposed to be actual demonstrations were largely unmanned. So the much-touted robots and animatronics were still and lifeless, much like the event itself.</p>
<p>Overall, NextFest came across as a corporate version of a high school science fair: the displays were either intriguing ideas that didn&#8217;t seem to work, or poor ideas that worked well but were pointless.</p>
<p>Case in point: the <a href="http://www.toyota.co.jp/en/tech/p_mobility/i-real/index.html">Toyota i-REAL</a>, a &#8220;personal mobility&#8221; vehicle that looks like a cross between a wheelchair and a Segway. The promotional video talked about how a commuter in Chicago could climb in from his driveway, sit down and wheel himself from the suburbs to his work downtown, even going so far as taking the thing into a building, up the elevator, and to his desk. A wave of giggles and jibes drifted across the crowd:</p>
<blockquote>
<p>&#8220;Yeah, for the three months that it&#8217;s actually warm here.&#8221;</p>
<p>&#8220;That thing on the street with Chicago drivers? Ha!&#8221;</p>
<p>&#8220;Um, What about when it rains?&#8221;</p>
</blockquote>
<p>The video goes on to show the guy riding his i-REAL to meet his date at an outdoor cafe. After dinner and drinks, they ride off hand-in-hand along the waterfront.</p>
<p>I was reminded of the humans on board the Axiom in Wall-E. Generations of never rising from their BnL HoverChairs left them with a serious obesity problem and practically vestigial legs.</p>
<div style="width: 100%; text-align: center; border: none;">
  <img src="/grafx/blog/ireal.png" alt="" width="590" height="576" alt="Is this the future that Toyota wants for us?" style="border: none;"></p>
<p><i>Is this the future that Toyota wants for us?</i></p>
</div>
<p>Some of the other concept Toyota vehicles looked vaguely interesting, but again, you couldn&#8217;t even touch them, let alone sit in them.</p>
<p>The only bright spot was <a href="http://www.mindball.se/product.html">Mind Ball</a>, a game in which two players strap on headbands that read their brain waves. A computer uses the readings to control a ball&#8217;s movement across the game table. The object is to relax your mind so that the ball moves toward your opponent; when the ball crosses the line near your opponent, you win.</p>
<p>Just before sitting down at the table, I took a few deep breaths and put myself into the same state of mind that I do while meditating. Sure enough, I was able to keep my thoughts calm during the match and handily won.</p>
<p>The Mind Ball attendant looked at me with respect and said, &#8220;Man, you&#8217;re like some kind of Zen warrior or something.&#8221; That felt good.</p>
<p>While Mind Ball is interesting in its application of biofeedback, it&#8217;s more interesting as a game concept: the stronger you concentrate on competing, the worse off you are. So relaxing and freeing yourself from expectation is the key to the game.</p>
<p>And to NextFest itself.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.idolhands.com/technology/wired-suckfest/feed/</wfw:commentRss>
		</item>
		<item>
		<title>American Science &#038; Surplus Warehouse Sale</title>
		<link>http://www.idolhands.com/personal/american-science-surplus-warehouse-sale/</link>
		<comments>http://www.idolhands.com/personal/american-science-surplus-warehouse-sale/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 02:55:50 +0000</pubDate>
		<dc:creator>Corey Ehmke</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.idolhands.com/?p=60</guid>
		<description><![CDATA[American Science &#038; Surplus is probably one of the coolest stores on earth. They specialize in selling the kinds of stuff that you would never go looking for, but that you have to have when you see it.
Living in the Chicago area, I&#8217;m lucky to be only a 15 minute drive from their store. But [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amsci.com/">American Science &#038; Surplus</a> is probably one of the coolest stores on earth. They specialize in selling the kinds of stuff that you would never go looking for, but that you have to have when you see it.</p>
<p>Living in the Chicago area, I&#8217;m lucky to be only a 15 minute drive from their store. But I was double-lucky on my last trip there, when I learned of their annual warehouse sale. Clearly, a field trip to their suburban storehouse was in order.</p>
<div style="width: 100%; text-align: center;"><img src="/grafx/blog/amsci/amsci_collage.png" alt="" width="619" height="527" style="border: none;" /></div>
<p>Right away, I could see that we would be in good company&#8230; A fellow mad scientist&#8217;s car in the parking lot!</p>
<p>Upon entering AmSci headquarters, we walked past a series of cubicles decorated with the kind of stuff that I recognized from their catalogs and store: inflatable moose heads, misappropriated lab equipment, and plastic jeejaws of all descriptions.</p>
<div style="width: 100%; text-align: center;"><img src="/grafx/blog/amsci/cubicles.png" alt="" width="240" height="320"  class="bordered" /></div>
<p>From there, we passed into the warehouse proper, and I was immediately reminded of the closing scene from Indiana Jones. But instead of crates of ancient artifacts, the shelves were lined with everything from electronic components to discontinued toys to scientific and medical apparati of curious appearance and dubious application.</p>
<div style="width: 100%; text-align: center;"><img src="/grafx/blog/amsci/warehouse.png" alt="" width="320" height="240" class="bordered"></div>
<p>We grabbed a cart and started threading our way through the narrow aisles. I could feel the press of people lined up behind us, and since the aisles were not wide enough to let one cart pass another, I felt a bit rushed.</p>
<p>So after the first few times that Lydia asked if she could get one thing or another, I finally told her (and myself), &#8220;We&#8217;re not going to be saying &#8216;no&#8217; to much of anything today. If you think you might want it, throw it in the cart!&#8221;</p>
<p>We ended up spending just over $100 dollars, and ended up with an enviable trove of goodies, including:</p>
<p><img src="/grafx/blog/amsci/payment.png" alt="" width="239" height="320" class="bordered" style="float: right; margin-left: 10px;" /></p>
<ul>
<li>4 Gooseneck LED reading lights, in pieces</li>
<li>A Halloween votive candle holder</li>
<li>4 sheets of magnetic sparkly paper</li>
<li>12 sheets of sparkly paper</li>
<li>A new hot glue gun</li>
<li>A combination laser pointer / gooseneck LED light</li>
<li>A bunch of anti-static bags</li>
<li>23&#8243; inflatable ghost with LED eyes</li>
<li>30&#8243; inflatable spider with LED eyes</li>
<li>32&#8243; inflatable bat with LED eyes</li>
<li>Plastic vampire teeth</li>
<li>6&#215;8 tarp</li>
<li>Pair of boot liners</li>
<li>2x 115 volt stepper motors</li>
<li>24V and 12V cooling fans</li>
<li>4 packs of dripping blood window clings</li>
<li>4 small DC motors</li>
<li>5 velcro tie straps</li>
<li>Pink, blue, and green gel-filled, prism-shaped ruler</li>
<li><b>SOMETHING SECRET</b> from the US Navy that I&#8217;m going to give my Dad at Christmas-time</li>
<li>Prang air-hardening modeling clay</li>
<li>A Transparent plastic anatomical frog model</li>
<li>Harry Potter physics experiment kit</li>
<li>2 pieces of polished petrified wood</li>
<li>2 massive, plastic-coated, donut-shaped magnets</li>
<li>A miniature disco ball</li>
<li>A nice set of Dremel bits</li>
<li>An eyeball straw</li>
<li>A glow-in-the-dark 3d fossil puzzle</li>
<li>2 sheets of magnetic frogs</li>
<li>A box of 64 quarter-sized ring magnets</li>
<li>8 bottles of white glue</li>
<li>A pack of &#8220;Easy Squeezy&#8221; clay</li>
<li>A pack of &#8220;base ten&#8221; cards</li>
</ul>
<p>Funfunfun. Now, I can retire to my secret underground laboratory and continue my nefarious experiments&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.idolhands.com/personal/american-science-surplus-warehouse-sale/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ruby on Rails Resources</title>
		<link>http://www.idolhands.com/ruby-on-rails/ruby-on-rails-resources/</link>
		<comments>http://www.idolhands.com/ruby-on-rails/ruby-on-rails-resources/#comments</comments>
		<pubDate>Sun, 05 Oct 2008 20:25:30 +0000</pubDate>
		<dc:creator>Corey Ehmke</dc:creator>
		
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.idolhands.com/?p=59</guid>
		<description><![CDATA[If you check out the left-hand sidebar, you&#8217;ll see that I&#8217;ve added something new to the site. The Ruby on Rails Resources page presents a categorized list of Rails sites, screencasts, podcasts, and discussion groups that I have personally found useful in getting to know and love Rails.
So please check it out, and use the [...]]]></description>
			<content:encoded><![CDATA[<p>If you check out the left-hand sidebar, you&#8217;ll see that I&#8217;ve added something new to the site. The Ruby on Rails Resources page presents a categorized list of Rails sites, screencasts, podcasts, and discussion groups that I have personally found useful in getting to know and love Rails.</p>
<p>So please check it out, and use the comment form on the page to suggest any other resources that I may have missed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.idolhands.com/ruby-on-rails/ruby-on-rails-resources/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Obama is RESTful</title>
		<link>http://www.idolhands.com/personal/obama-is-restful/</link>
		<comments>http://www.idolhands.com/personal/obama-is-restful/#comments</comments>
		<pubDate>Sun, 07 Sep 2008 18:21:56 +0000</pubDate>
		<dc:creator>Corey Ehmke</dc:creator>
		
		<category><![CDATA[Personal]]></category>

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

		<guid isPermaLink="false">http://www.idolhands.com/?p=56</guid>
		<description><![CDATA[I spent some time this morning examining the technology policies of Barack Obama and John McCain. Policies aside, I was immediately struck by the differences between their web sites. So what do the two sites say about the candidates?
Two Different Platforms
The candidates&#8217; platforms could not be more different: JohnMcCain(.com) relies on corporate backing for his [...]]]></description>
			<content:encoded><![CDATA[<p>I spent some time this morning examining the technology policies of Barack Obama and John McCain. Policies aside, I was immediately struck by the differences between their web sites. So what do the two sites say about the candidates?</p>
<h3>Two Different Platforms</h3>
<p>The candidates&#8217; platforms could not be more different: JohnMcCain(.com) relies on corporate backing for his web site, which runs on Microsoft Internet Information Server and uses ASP. Barack Obama, in contrast, relies on widespread contributions from the community, in the form of open-source web technologies (PHP and Apache).</p>
<h3>Preparedness</h3>
<p>Ask McCain&#8217;s site for something that it&#8217;s not expecting, and it gets very confused. It readily admits that it has no idea what just happened: maybe the page moved, or maybe you mistyped the URL. This could even be the fault of a third-party web site operator. There&#8217;s helpful information provided if you happen to be the sysadmin for johnmccain.com, but if you&#8217;re John Q. Webuser, you&#8217;re pretty much out of luck.</p>
<div style="text-align: center;"><img src="/grafx/candidate_tech/mccain_404.png" alt="404 page from johnmccain.com" width="600" height="455" /></div>
<p>Obama&#8217;s site is more willing to admit that mistakes happen, and it&#8217;s not laying blame on anyone. Hell, it even injects a bit of humor into the thing. The fact that even his 404 page is polished and provides navigation options shows that despite the claims of right-wing rhetoric, Obama is more prepared in case of the unexpected.</p>
<div style="text-align: center;"><img src="/grafx/candidate_tech/obama_404.png" alt="404 page from barackobama.com" width="600" height="455" /></div>
<h3>Document Types</h3>
<p>Despite his carefully cultivated &#8220;maverick&#8221; image, McCain is playing it traditional and conservative by using <a href="http://www.w3.org/TR/html401/" title="HTML 4.01 spec">HTML 4.01</a>, the W3C spec from 1999.</p>
<div style="text-align: center;"><img src="/grafx/candidate_tech/mccain_doctype.png" alt="John McCain's doctype" width="600" height="193" /></div>
<p>However, it&#8217;s clear that he&#8217;s not following through on his commitment to even this aging standard:</p>
<div style="text-align: center;"><img src="/grafx/candidate_tech/mccain_validation.png" alt="W3C validation errors for John McCain" width="600" height="312" /></div>
<p>Obama shows himself to be much more progressive, adopting the 21st century <a href="http://www.w3.org/TR/xhtml1/" title="XHTML 1.0 standard" target="_new">XHTML 1.0 transitional standard</a>:</p>
<div style="text-align: center;"><img src="/grafx/candidate_tech/obama_doctype.png" alt="Obama's doctype" width="600" height="193" /></div>
<p>But alas, even Obama has trouble conforming to the standards.</p>
<div style="text-align: center;"><img src="/grafx/candidate_tech/obama_validation.png" alt="W3C validation errors for Barack Obama" width="600" height="312" /></div>
<p>Maybe this is true of all politicians? And not to be an apologist here, but Obama is clearly more valid than McCain, and both are more valid than I am. But shouldn&#8217;t we hold public officials to a higher standard?</p>
<h3>Transparency</h3>
<p>Both candidates claim to support transparency in government, but only one clearly supports transparency (of the PNG variety) on his web site:</p>
<div style="text-align: center;"><img src="/grafx/candidate_tech/obama_transparency.png" alt="Obama's support for transparency" width="600" height="193" /></div>
<p>Obama is inclusive in his support for PNGs, accommodating even disadvantaged (Internet Explorer) users.</p>
<h3>Navigating the Issues</h3>
<p>Obama makes it easy to find out what his technology policies are:</p>
<div style="text-align: center;"><img src="/grafx/candidate_tech/obama_navigation.png" alt="Getting to Obama's technology policy page" width="497" height="485" /></div>
<p>John McCain does not provide a clear link to his technology policy:</p>
<div style="text-align: center;"><img src="/grafx/candidate_tech/mccain_navigation.png" alt="Getting to McCain's technology policy page" width="419" height="488" /></div>
<p>Instead, you have to ignore the drop-down menu, click on Issues, scroll down near the bottom of the page, and follow a link that&#8217;s tucked in between talk about judicial policies and fighting crime. What&#8217;s more, take a look at how each candidate identifies his technology page:</p>
<div style="text-align: center;"><img src="/grafx/candidate_tech/mccain_url.png" alt="McCain uses jargon" width="609" height="65" /></div>
<p>Not only is John McCain promoting case-sensitive URLs, he also prefers to hide his page names behind meaningless jargon like `cbcd3a48-4b0e-4864-8be1-d04561c132ea.htm&#8217;. </p>
<p>Obama is obviously the more RESTful candidate. His URLs are readable by both machines and humans, easy to remember and type, and clearly communicate both the content and context of a specific resource.</p>
<div style="text-align: center;"><img src="/grafx/candidate_tech/obama_url.png" alt="Obama is RESTful" width="460" height="92" /></div>
<h3>Which site will you support in November?</h3>
<p>The choice is clear: a Microsoft-supported, business-as-usual site that clings to last decade&#8217;s HTML standards? Or an Open Source-powered site, that not only does a better job adhering to standards but embraces change, transparency, and clear communication?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.idolhands.com/personal/obama-is-restful/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Bizarre BBEdit 9 bug</title>
		<link>http://www.idolhands.com/development/bizarre-bbedit-9-bug/</link>
		<comments>http://www.idolhands.com/development/bizarre-bbedit-9-bug/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 12:00:12 +0000</pubDate>
		<dc:creator>Corey Ehmke</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Ruby on Rails]]></category>

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

		<guid isPermaLink="false">http://www.idolhands.com/?p=55</guid>
		<description><![CDATA[After upgrading to BBEdit 9, I&#8217;ve happily left TextMate behind and returned to my favorite bare-bones IDE for Rails development. (I&#8217;m planning to share some tips on this topic this weekend.)
I just came across a very strange bug that crashes BBEdit, and thought I&#8217;d share a workaround in case someone else has this problem. The [...]]]></description>
			<content:encoded><![CDATA[<p>After upgrading to BBEdit 9, I&#8217;ve happily left TextMate behind and returned to my favorite bare-bones IDE for Rails development. (I&#8217;m planning to share some tips on this topic this weekend.)</p>
<p>I just came across a very strange bug that crashes BBEdit, and thought I&#8217;d share a workaround in case someone else has this problem. The bug report has already been filed.</p>
<p>Operating environment:<br />
BBEdit version 9.0 (1320) of Wed, 27 Aug 2008<br />
Mac OS X 10.5.4 Build 9E17</p>
<p>To reproduce:</p>
<ul>
<li>Create a new file</li>
<li>Set its type to Ruby using the menu at the bottom of the window</li>
<li>Type (not paste) the following, exactly as you see it here:<br />
<blockquote><p><code>"tag-#</code></p></blockquote>
</li>
</ul>
<p>BBEdit will now invoke the spinning beach ball of death, start consuming massive CPU cycles, and never recover. Note that I have text completion triggers turned OFF, so that&#8217;s probably not the problem.</p>
<p>The workaround for this is (and any similar string that brings this on) is open the Scratchpad window (Window -&gt; Show Scratchpad), type your string in there, and paste it back into your Ruby file.</p>
<p>I should point out that a couple of minor issues aside, I&#8217;m incredibly happy with this upgrade. And given my history with Bare Bones, I expect fixes to be forthcoming quickly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.idolhands.com/development/bizarre-bbedit-9-bug/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rewriting Kafka</title>
		<link>http://www.idolhands.com/personal/rewriting-kafka/</link>
		<comments>http://www.idolhands.com/personal/rewriting-kafka/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 18:51:19 +0000</pubDate>
		<dc:creator>Corey Ehmke</dc:creator>
		
		<category><![CDATA[Personal]]></category>

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

		<guid isPermaLink="false">http://www.idolhands.com/blog/2008/07/07/rewriting-kafka/</guid>
		<description><![CDATA[While cleaning up one of my old machines, I came across this little artifact.
My challenge was to re-write the opening paragraph of Franz Kafka&#8217;s The Metamorphosis as it may have been penned by other writers. So without further ado&#8230;


The Metamorphosis by H.P. Lovecraft
My name is Gregor Samsa, and if the world discovers this manuscript, then [...]]]></description>
			<content:encoded><![CDATA[<p>While cleaning up one of my old machines, I came across this little artifact.</p>
<p>My challenge was to re-write the opening paragraph of Franz Kafka&#8217;s <a href="http://en.wikipedia.org/wiki/The_Metamorphosis">The Metamorphosis</a> as it may have been penned by other writers. So without further ado&#8230;</p>
<hr size="1">
<blockquote>
<p><b>The Metamorphosis</b> by H.P. Lovecraft</p>
<p>My name is Gregor Samsa, and if the world discovers this manuscript, then perhaps it can save others from the fate that even now confounds my reason and leaves me gibbering at the edge of sanity. One morning not long ago I awoke from troubled dreams filled with the otherworldly ululations of strange voices and the insistent piping of flutes from the swirling chaos at the very center of the universe, and found myself in my bed, horribly changed&#8211; dare I say it?&#8211; into an unspeakable, sanity-blasting form. I lay on what seemed to be an armour-like back, and as I lifted my head a little I could just see the brown, non-Euclidean curve of my brown belly, slightly domed and divided by arches into stiff sections.  The bedding was hardly able to cover it and seemed ready to slide off any moment.  My multitudinous legs, pitifully gaunt compared with the unnaturally bloated shape of the rest of my new and terrible form, waved about helplessly as I looked on in abject horror.</p>
</blockquote>
<hr size="1">
<blockquote>
<p><b>The Metamorphosis</b> by Ernest Hemingway</p>
<p>It was morning. Gregor Samsa awoke. He had been transformed in his bed into a cockroach. He lay on his back. He could see his brown belly, domed and divided into stiff arches. The bedding barely covered it. His legs waved.</p>
</blockquote>
<hr size="1">
<blockquote>
<p><b>The Metamorphosis</b> by Walt Whitman</p>
<p>I sing the body carapacious;<br />
	The sprawl and fullness of its shell,<br />
	Stiff domed arches engirth my belly, and I engirth them;<br />
	They will not let me off my back until I embrace them, accept them,<br />
	And discorrupt them, and charge them full with the charge of the Soul.</p>
<p>The expression of the face defies description;<br />
	But the expression of a man made a bug appears not only in his antennae;<br />
	It is in his many legs also, it is in the joints of his carapace,<br />
	It is in his crawl, the carriage of his thorax, the flex of his abdomen&#8211;<br />
	The bedsheets do not cover it;<br />
	The strong, thin legs he has strike through the bedding;<br />
	To see him conveys as much as seeing a cockroach, maybe more;<br />
	You linger to see him on his back, waving his legs at you.</p>
<p>O my Body! I dare not desert the likes of you in other men and women, nor the likes of parts of you;<br />
	Head, neck, hair, ears, eyes, mouth, tongue, lips, teeth, nose, cheeks, forehead, chin;<br />
	And not head, thorax, abdomen, carapace, mandibles, antennae, compound eyes!</p>
</blockquote>
<hr size="1">
<blockquote>
<p><b>The Metamorphosis</b> by E. Allen Poe</p>
<p>Mr. S___ was in one of his fits &#8212; how else shall I term them? &#8212; of enthusiasm. His brother Gregor had in his sleep transformed into an unknown bivalve, and, more than this, he had been hunted down and secured; he was now clearly visible as a scarabaeus which was believed to be totally new, but in respect to which S___ wished to have my opinion on the morrow.</p>
<p>&#8220;And why not to-night?&#8221; I asked, rubbing my hands over the blaze, and wishing the whole tribe of scarabaei at the devil.</p>
<p>&#8220;Ah, if I had only known you were here!&#8221; said S___, &#8220;but it&#8217;s so long since I saw you; and how could I foresee that you would pay me a visit this very night of all others? As I was coming home I met Lieutenant Gentarme from the fort, and, very  foolishly, I lent him the bug&#8211; that is to say, my brother; so it will be impossible for you to see him until the morning. Stay here to-night, and I will send down for him at sunrise. He is become the loveliest thing in creation!&#8221;</p>
</blockquote>
<hr size="1">
<blockquote>
<p><b>The Metamorphosis</b> by Kahlil Gibran</p>
<p>And a man said, &#8220;Speak to us of metamorphosis.&#8221;</p>
<p>And he answered saying:</p>
<p>You would know what it is like to awaken, transformed, from a troubled dream.</p>
<p>You would gaze with compound eyes on the naked curve of your brown belly.</p>
<p>You would touch with your antennae the slight bedding that barely hides your form.</p>
<p>You would kick with your many legs and free yourself from the prone position you find yourself in.</p>
<p>But let there be no helpless waving and fearful scurrying from the light.</p>
<p>For like the soul, the insect is a creature boundless and beautiful.</p>
<p>Say not, &#8220;I have metamorphosized into a bug,&#8221; but rather, &#8220;The bug has metamorphosized into me.&#8221;</p>
<p>For the soul walks upon all paths, whether on two legs or six.</p>
</blockquote>
<hr size="1">
<p>I don&#8217;t remember what initially inspired this, but I&#8217;m pretty sure that a combination of alcohol and IRC were involved.</p>
<p><b>Update:</b> I submitted this to <a href="http://www.mcsweeneys.net/">McSweeney&#8217;s</a> and got a very nice rejection letter:</p>
<blockquote>
<p>This is fun, but I&#8217;m afraid we&#8217;re not going to use it. We ran a piece about Kafka and another about Lovecraft not too long ago and we&#8217;re not quite ready to return to them. Thanks for giving us a shot, nonetheless.</p>
</blockquote>
<p>I haven&#8217;t attempted to submit anything non-technical for publication since I was a teen, because I don&#8217;t handle rejection well, but hopefully I&#8217;m old enough now to deal with it. I&#8217;m going to try again sometime. For real.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.idolhands.com/personal/rewriting-kafka/feed/</wfw:commentRss>
		</item>
		<item>
		<title>BBEdit 9 and Subversion 1.5</title>
		<link>http://www.idolhands.com/technology/bbedit-9-and-subversion-15/</link>
		<comments>http://www.idolhands.com/technology/bbedit-9-and-subversion-15/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 15:06:16 +0000</pubDate>
		<dc:creator>Corey Ehmke</dc:creator>
		
		<category><![CDATA[Development]]></category>

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

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

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

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

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

		<guid isPermaLink="false">http://www.idolhands.com/?p=54</guid>
		<description><![CDATA[About a month ago, I replaced my old SVN GUI client (svnX) with the excellent Versions SVN client from Pico. I won&#8217;t rave about it now; check it out for yourself and bask in the goodness.
One of the unfortunate side-effects of using Versions, however, was that after the mandatory upgrade of SVN from 1.4 (OS [...]]]></description>
			<content:encoded><![CDATA[<p>About a month ago, I replaced my old SVN GUI client (svnX) with the excellent <a href="http://www.versionsapp.com/" target="_new">Versions SVN client from Pico</a>. I won&#8217;t rave about it now; check it out for yourself and bask in the goodness.</p>
<p>One of the unfortunate side-effects of using Versions, however, was that after the mandatory upgrade of SVN from 1.4 (OS X default) to 1.5, BBEdit&#8217;s SVN support was broken. I kept getting the message &#8220;<code>svn: This client is too old to work with working copy</code>&#8220;. Grr.</p>
<p>I looked around in BBEdit&#8217;s preferences and even .plist files, to no avail. This morning I even filed a bug report with Bare Bones. Turns out that that was premature&#8230; BBEdit was doing the right thing all the time, using the system&#8217;s SVN. The problem was that I had multiple versions of SVN installed.</p>
<p>From the command line:</p>
<blockquote><p><code>
<pre>
Cerberus:bin bantik$ which svn
/usr/local/bin/svn
Cerberus:bin bantik$ svn --version
svn, version 1.5.1 (r32289)
   compiled Jul 25 2008, 12:47:20
...
</pre>
<p></code></p></blockquote>
<p>As expected. However, this was less than expected:</p>
<blockquote><p><code>
<pre>
Cerberus:bin bantik$ find / -name "svn" -print | grep svn
/opt/subversion/bin/svn
/usr/bin/svn
/usr/local/bin/svn
</pre>
<p></code></p></blockquote>
<p>OK, but maybe some of those are links?</p>
<blockquote><p><code>
<pre>
Cerberus:bin bantik$ ls -al /opt/subversion/bin/svn
-rwxrwxr-x  1 admin  admin  788520 Jul 25 14:05 /opt/subversion/bin/svn
Cerberus:bin bantik$ ls -al /usr/bin/svn
lrwxr-xr-x  1 root  wheel  23 Jul 13 09:41 /usr/bin/svn
Cerberus:bin bantik$ ls -al /usr/local/bin/svn
lrwxr-xr-x  1 root  wheel  23 Aug  3 19:39 /usr/local/bin/svn
       -> /opt/subversion/bin/svn
</pre>
<p></code></p></blockquote>
<p>Aha! I&#8217;ve got an old version of SVN at /usr/bin. So let&#8217;s replace that with a symbolic link to the new version:</p>
<blockquote><p><code>
<pre>
Cerberus:bin bantik$ sudo rm /usr/bin/svn
Cerberus:bin bantik$ sudo ln -s /opt/subversion/bin/svn /usr/bin/svn
</pre>
<p></code></p></blockquote>
<p>That should do it. I restarted BBEdit just to make sure, and now, like magic, Subversion integration works again.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.idolhands.com/technology/bbedit-9-and-subversion-15/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
