<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>GrokBlok - Stranger in a Strange Land</title>
 
 <link href="http://www.grokblok.com/" />
 <updated>2009-09-28T09:53:21-07:00</updated>
 <id>http://www.grokblok.com/</id>
 <author>
   <name>Joshua Schairbaum</name>
   <email>joshua.schairbaum@gmail.com</email>
 </author>

 
 <link rel="self" href="http://feeds.feedburner.com/grokblok" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
   <title>Teddy Roosevelt on Modern Times</title>
   <link href="http://www.grokblok.com/2009/09/16/teddy-on-modern-times.html" />
   <updated>2009-09-16T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2009/09/16/teddy-on-modern-times</id>
   <content type="html">&lt;h1&gt;Teddy Roosevelt on Modern Times&lt;/h1&gt;
&lt;p&gt;The first paragraph is fairly common, but you might not have read the whole thing. While this isn&amp;#8217;t actually a quote about modern times, I think it&amp;#8217;s really poignant when thought about in terms of anonymous internet &lt;strike&gt;cowards&lt;/strike&gt; commenters. I&amp;#8217;m constantly amazed and frustrated at the people who freely criticize anything and anyone, knowing well that they would be too chicken to say it face-to-face. I&amp;#8217;m looking at you, &lt;a href="http://www.firejtressel.com/"&gt;Jim Tressel haters&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It is not the critic who counts; not the man who points out how the strong man stumbles, or where the doer of deeds could have done them better. The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood; who strives valiantly; who errs, who comes short again and again, because there is no effort without error and shortcoming; but who does actually strive to do the deeds; who knows great enthusiasms, the great devotions; who spends himself in a worthy cause; who at the best knows in the end the triumph of high achievement, and who at the worst, if he fails, at least fails while daring greatly, so that his place shall never be with those cold and timid souls who neither know victory nor defeat.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Shame on the man of cultivated taste who permits refinement to develop into fastidiousness that unfits him for doing the rough work of a workaday world. Among the free peoples who govern themselves there is but a small field of usefulness open for the men of cloistered life who shrink from contact with their fellows. Still less room is there for those who deride of slight what is done by those who actually bear the brunt of the day; nor yet for those others who always profess that they would like to take action, if only the conditions of life were not exactly what they actually are. The man who does nothing cuts the same sordid figure in the pages of history, whether he be a cynic, or fop, or voluptuary. There is little use for the being whose tepid soul knows nothing of great and generous emotion, of the high pride, the stern belief, the lofty enthusiasm, of the men who quell the storm and ride the thunder. Well for these men if they succeed; well also, though not so well, if they fail, given only that they have nobly ventured, and have put forth all their heart and strength. It is war-worn Hotspur, spent with hard fighting, he of the many errors and valiant end, over whose memory we love to linger, not over the memory of the young lord who &amp;#8220;but for the vile guns would have been a valiant soldier.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;cite&gt;Theodore Roosevelt&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;via &lt;a href="http://pcianswers.com/2009/09/15/voluptuary-or-hotspur/"&gt;&lt;span class="caps"&gt;PCI&lt;/span&gt; Answers&lt;/a&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>John Stuart Mill</title>
   <link href="http://www.grokblok.com/2009/03/15/john-stuart-mill-is-right.html" />
   <updated>2009-03-15T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2009/03/15/john-stuart-mill-is-right</id>
   <content type="html">&lt;h1&gt;John Stuart Mill&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;War is an ugly thing, but not the ugliest of things. The decayed and degraded state of moral and patriotic feeling which thinks that nothing is worth war is much worse. The person who has nothing for which he is willing to fight, nothing which is more important than his own personal safety, is a miserable creature and has no chance of being free unless made and kept so by the exertions of better men than himself.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;cite&gt;John Stuart Mill&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;courtesy of &lt;a href="http://smallwarsjournal.com/blog/2009/03/15-march-swj-roundup/"&gt;Small Wars Journal&lt;/a&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Tumblr Feed Added</title>
   <link href="http://www.grokblok.com/2009/03/09/tumblr-feed-added.html" />
   <updated>2009-03-09T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2009/03/09/tumblr-feed-added</id>
   <content type="html">&lt;h1&gt;Tumblr Feed Added&lt;/h1&gt;
&lt;p&gt;I&amp;#8217;ve added in the items from an obscure Tumblr account I had.  It&amp;#8217;s just some odd collection of pictures and quotes that I&amp;#8217;ve found interesting.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Meet Mr. Hyde</title>
   <link href="http://www.grokblok.com/2009/03/07/meet-mr-hyde.html" />
   <updated>2009-03-07T00:00:00-08:00</updated>
   <id>http://www.grokblok.com.com/2009/03/07/meet-mr-hyde</id>
   <content type="html">&lt;h1&gt;Meet Mr. Hyde&lt;/h1&gt;
&lt;p&gt;This blog is now powered by &lt;a href="http://github.com/mojombo"&gt;jekyll&lt;/a&gt;.  I&amp;#8217;ve deleted a lot of irrelevant posts.  Sorry for the noise in the feed if it got jacked up.  I&amp;#8217;m going to merge my &lt;a href="http://tumblr.com"&gt;tumblr.com&lt;/a&gt; account in within the next few days, but then I promise I&amp;#8217;ll leave it alone, new content only.  Thanks &lt;a href="http://github.com/mojombo"&gt;mojombo&lt;/a&gt;!&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Tab Sweep Cliche</title>
   <link href="http://www.grokblok.com/2008/11/20/tab-sweep-cliche.html" />
   <updated>2008-11-20T00:00:00-08:00</updated>
   <id>http://www.grokblok.com.com/2008/11/20/tab-sweep-cliche</id>
   <content type="html">&lt;h1&gt;Tab Sweep Cliche&lt;/h1&gt;
&lt;p&gt;It&amp;#8217;s lame, I know it, but I&amp;#8217;m clearing out my browser.  You might find these of interest, you might not, but as always, &lt;span class="caps"&gt;YMMV&lt;/span&gt;.&lt;/p&gt;
&lt;dl&gt;
  &lt;dt&gt;&lt;a href="http://pingdom.com/"&gt;Pingdom&lt;/a&gt;&lt;/dt&gt;
  &lt;dd&gt;Maybe everybody already know about Pingdom, but this is the first I&amp;#8217;ve heard of them specifically.  Looks like very simple service at a reasonable price that gives you an external view of your availability.&lt;/dd&gt;
  &lt;dt&gt;&lt;a href="http://github.com/search?q=form+builder"&gt;Form Builders on Github&lt;/a&gt;&lt;/dt&gt;
  &lt;dd&gt;I still find the form builders something that&amp;#8217;s difficult to get right, so I normally just rely on others.&lt;/dd&gt;
  &lt;dt&gt;&lt;a href="http://kreditor.se/index.php?lang=en"&gt;Kreditor: Swedish Payment Processing&lt;/a&gt;&lt;/dt&gt;
  &lt;dd&gt;Sweden&amp;#8217;s leading provider of invoicing and installment plans over the Internet, they are of interest to me because they are known to have written gateway application in Erlang. Dr. Erik Stenman is their &lt;span class="caps"&gt;CTO&lt;/span&gt; and was a project manager for Scala, helping it get to 1.0. &lt;/dd&gt;
  &lt;dt&gt;&lt;a href="http://snipplr.com/view/6470/setting-rubygems-under-ubuntu-hardy/"&gt;Sorta Proper Rubygems on Ubuntu&lt;/a&gt;&lt;/dt&gt;
  &lt;dd&gt;I&amp;#8217;ve never been content with installing the rubygems package in Ubuntu because of how old it is, but it would be nice to be able to be able to start at the package.  This snippet is giving me a little inspiration into a small bash script that could be devised to install the package and then update the installed package via rubygems.  It bears further investigation.&lt;/dd&gt;
  &lt;dt&gt;&lt;a href="http://reductivelabs.com/trac/puppet/wiki/PuppetBestPractice"&gt;Puppet Best Practice&lt;/a&gt;&lt;/dt&gt;
  &lt;dd&gt;This goes hand-in-hand with the previous link, Puppet is awesome, a little tricky to get setup, but awesome nonetheless.  It has an immense amount of functionality, and a fairly easy syntax.&lt;/dd&gt;
  &lt;dt&gt;&lt;a href="http://ruby-on-the-interrails.blogspot.com/2008/10/introducing-fuzzy-find-in-project.html"&gt;Yet Another Emacs Fuzzy Find In Project&lt;/a&gt;&lt;/dt&gt;
  &lt;dd&gt;I saw yet another because the comments list several other implementations including ido.el and the fuzzy search in rinari as well as the emacs-rails package.&lt;/dd&gt;
  &lt;dt&gt;&lt;a href="http://alandean.blogspot.com/2008/11/what-restful-basket-checkout-might-look.html"&gt;RESTful Online Shopping Cart Design&lt;/a&gt;&lt;/dt&gt;
  &lt;dd&gt;This is a very high level discussion about what a truly RESTful shopping cart checkout page would entail.  The author specifically proposes that only the client should have knowledge of the contents of the cart through the usage of some sort of personalized resource.  I&amp;#8217;m not sure I agree, but it&amp;#8217;s an interesting design discussion.  See &lt;a href="http://alandean.blogspot.com/2008/11/when-basket-checkout-isn-restful.html"&gt;here&lt;/a&gt; and &lt;a href="http://alandean.blogspot.com/2008/11/on-restful-basket-state.html"&gt;here&lt;/a&gt; for more discussion.&lt;/dd&gt;
&lt;/dl&gt;</content>
 </entry>
 
 <entry>
   <title>5 Quick Android Dev Tips</title>
   <link href="http://www.grokblok.com/2008/09/05/5-quick-android-dev-tips.html" />
   <updated>2008-09-05T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2008/09/05/5-quick-android-dev-tips</id>
   <content type="html">&lt;h1&gt;5 Quick Android Dev Tips&lt;/h1&gt;
&lt;p&gt;I&amp;#8217;ve recently been doing some development with &lt;a href="http://code.google.com/android"&gt;Google Android&lt;/a&gt;, and I must say that I&amp;#8217;m really enjoying it.  It really seems like there are a lot of untapped possibilities.  I&amp;#8217;m currently using Eclipse for development, and the official Android plugin for it.  It&amp;#8217;s the path of least resistance. Here&amp;#8217;s a collection of 5 things that I&amp;#8217;ve found helpful to get up and running.&lt;/p&gt;
&lt;h3&gt;Add The Android &lt;span class="caps"&gt;SDK&lt;/span&gt; To Your Path&lt;/h3&gt;
&lt;p&gt;The &lt;span class="caps"&gt;SDK&lt;/span&gt; is a minimal collection of tools and jar files.  I normally keep all my various code in a directory directly under &lt;code&gt;$HOME&lt;/code&gt; called &lt;code&gt;/projects&lt;/code&gt;, I&amp;#8217;ll refer to it as &lt;code&gt;$PROJECTS&lt;/code&gt; from now on.  I&amp;#8217;m a total n00b when it comes to Java development, so I don&amp;#8217;t know what other people do for these types of things, but I&amp;#8217;ve added a folder to keep all things like the Android &lt;span class="caps"&gt;SDK&lt;/span&gt; called &lt;code&gt;$PROJECTS/.java&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code class="shell"&gt;bash-3.2$ wget http://dl.google.com/android/android-sdk-mac_x86-0.9_beta.zip&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Unzip this file and symlink it to @$&lt;span class="caps"&gt;PROJECTS&lt;/span&gt;/.java/android, you&amp;#8217;ll see why in a minute.  Please note that you&amp;#8217;ll need a different file unless you&amp;#8217;re using a Mac.&lt;/p&gt;
&lt;pre&gt;&lt;code class="shell"&gt;bash-3.2$ ln -s $PROJECTS/.java/android-sdk-mac_x86-0.9_beta $PROJECTS/.java/android&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The final step is to add the &lt;span class="caps"&gt;SDK&lt;/span&gt; to your &lt;code&gt;$PATH&lt;/code&gt; so you can access the command line goodies.  If you remember, I symlink&amp;#8217;d the current release of the Android &lt;span class="caps"&gt;SDK&lt;/span&gt; to &lt;code&gt;$PROJECTS/.java/android&lt;/code&gt;.  When the next version of Android is released I can simply download it and change the symlink and I won&amp;#8217;t have to change my paths.  This will make testing my software against various releases extremely simple.  Your platform might be different, but on mine, I can change &lt;code&gt;$PATH&lt;/code&gt; by editing &lt;code&gt;$HOME/.profile&lt;/code&gt;.  The actual files that you will need accessible from your path are at &lt;code&gt;$PROJECTS/.java/android/tools&lt;/code&gt;, so that&amp;#8217;s the value I&amp;#8217;m adding to the end of my path.&lt;/p&gt;
&lt;pre&gt;&lt;code class="shell"&gt;export PATH=/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/mysql/bin::$HOME/.java/android/tools:$PATH&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You should know be able to access any of the pre-bundled command line tools for the Android &lt;span class="caps"&gt;SDK&lt;/span&gt; in a simple and flexible manner.&lt;/p&gt;
&lt;h3&gt;Creating An SDCard For Your Emulator&lt;/h3&gt;
&lt;p&gt;There are times that you want to store some data or media that can act in the same way as an SDCard.  The &lt;span class="caps"&gt;SDK&lt;/span&gt; has a tool that you can use called &lt;code&gt;mksdcard&lt;/code&gt; which can be used to create an SDCard iso, which can then be mounted on the emulator.  Creating one is simple.  I recommend setting up a common folder for assets that you might want to use across your various projects.  In my case, that would be at &lt;code&gt;$PROJECTS/.java/shared&lt;/code&gt;.  Here&amp;#8217;s a listing of the switches for this tool:&lt;br /&gt;
&lt;pre&gt;&lt;code class="shell"&gt;mksdcard [-l label] &amp;lt;size&amp;gt;[K|M] &amp;lt;file&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;In my case, I wanted a simple 1GB card that I could use for various purposes. I&amp;#8217;m not going to give the volume a label, although I certainly could in the future.&lt;/p&gt;
&lt;pre&gt;&lt;code class="shell"&gt;mksdcard 1024M $PROJECTS/.java/shared/sdcard1.iso&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now I just need to make sure that this SDCard gets loaded onto the emulator when my Activity gets run.  In my case,&lt;/p&gt;
&lt;pre&gt;&lt;code class="shell"&gt;-sdcard $PROJECTS/.java/shared/sdcard1.iso&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;One really useful thing is the ability to preload data onto the SDCard file, which can be done by mounting the file using Finder and drag-and-drop.  If you&amp;#8217;re into command-line 1337-ness, push files using the &lt;code&gt;adb&lt;/code&gt; tool included with the &lt;span class="caps"&gt;SDK&lt;/span&gt; or something like &lt;a href="http://directory.fsf.org/project/mtools/"&gt;mtools&lt;/a&gt;.  I tried to do it that way but couldn&amp;#8217;t find get it to work after 5 minutes, so I moved on.  I loaded a simple &lt;code&gt;mp3&lt;/code&gt; file onto my SDCard image and was immediately able to play it.&lt;/p&gt;
&lt;h3&gt;Create Emulator Data Profiles&lt;/h3&gt;
&lt;p&gt;By default, the emulator stores data in 2 places, a user-specific directory that will keep track of your settings and preferences in-between emulator sessions, and an optional SDCard that you pass in. ( See previous tip for SDCard emulation. )  The first of these is normally stored at &lt;code&gt;$HOME/.android&lt;/code&gt;, this file will include various configurations, but also your contact list and various debugging files.  If you don&amp;#8217;t like this location, you can pass an option to the compiler that will use a different directory.  One thing that I&amp;#8217;ve done is tried to create a couple of different user data sets, one a little more complete than the other to get a better feel for how my applications  will look with a blank slate, but also with a little more data.  I&amp;#8217;m going to store these in &lt;code&gt;$PROJECTS/.java/shared/min.img&lt;/code&gt; and &lt;code&gt;$PROJECTS/.java/shared/max_data.img&lt;/code&gt;, respectively.  To pass one or the other to the compiler, do this:&lt;/p&gt;
&lt;pre&gt;&lt;code class="shell"&gt;-data $PROJECTS/.java/shared/max_data.img&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Using this in combination with the tip above should allow you to maintain maximum flexibility, but maintain fairly complex data sets for testing our software.  For a full list of emulator options, check out the &lt;a href="http://code.google.com/android/reference/emulator.html"&gt;Android Emulator Reference&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Update Other Application Onto An Emulator&lt;/h3&gt;
&lt;p&gt;There are already some really great application available for Android, perhaps you want to build on top of some existing applications or you&amp;#8217;re trying to see how resource intensive things are going to be in anticipation of the release of the first Android-enabled phone.  One of the very first things that I&amp;#8217;m going to want for my phone will be an &lt;span class="caps"&gt;SSH&lt;/span&gt;-client. &lt;a href="http://code.google.com/p/connectbot/"&gt;Connectbot&lt;/a&gt; is a secure shell client for Android.  I&amp;#8217;m going to download the &lt;code&gt;.apk&lt;/code&gt; file so I can use it.  I could also check out the source from subversion and build it, but I don&amp;#8217;t necessarily want to do Connectbot development at this point, just test it out.&lt;/p&gt;
&lt;pre&gt;&lt;code class="shell"&gt;bash-3.2$ cd $PROJECTS/.java/shared &amp;amp;&amp;amp; wget http://connectbot.googlecode.com/files/SSH.apk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now I need to start my emulator, I&amp;#8217;m going to be loading the application while it&amp;#8217;s running.  Once running, it&amp;#8217;s as simple as using the &lt;code&gt;adb&lt;/code&gt; tool.&lt;/p&gt;
&lt;pre&gt;&lt;code class="shell"&gt;bash-3.2$ adb install SSH.apk
1650 KB/s (190790 bytes in 0.112s)
	pkg: /data/local/tmp/SSH.apk
Success&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, I can go to the Menu on the emulator and I should be able to use Connectbot.  It worked the first time for me.  Note that you do not have to do this each time, the application will persist until you remove it with &lt;code&gt;adb&lt;/code&gt;. Also with your emulator running, you will need to start the &lt;code&gt;adb shell&lt;/code&gt; and navigate to &lt;code&gt;data/app&lt;/code&gt; and remove the application.&lt;/p&gt;
&lt;pre&gt;&lt;code class="shell"&gt;bash-3.2$ adb shell&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;adb shell&lt;/code&gt; is similar to the concept of SSH&amp;#8217;ing into a server, except it&amp;#8217;s your phone.  You can take a look at the filesystem and browse around.  I highly recommend familiarizing yourself with the layout of an Android device.&lt;/p&gt;
&lt;h3&gt;Good Android Resources&lt;/h3&gt;
&lt;p&gt;I&amp;#8217;ve found that solid Android resources online are fairly hard to come by, so here&amp;#8217;s a list to get you started.  I&amp;#8217;ve also found that Google code is a much better place to find projects than Github, for the moment.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://code.google.com/p/apps-for-android/"&gt;Apps for Android&lt;/a&gt; &amp;#8211; a great collection of sample Android applications&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://code.google.com/android/reference/index.html"&gt;Android Standard Reference&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://code.google.com/android/kb/commontasks.html"&gt;Common Android Howtos&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://pragprog.com/titles/eband/hello-android"&gt;Hello, Android: Introducing Google&amp;#8217;s Mobile Development Platform&lt;/a&gt; by Ed Burnette, a Pragmatic Programmer book currently in beta&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://groups.google.com/group/android-developers"&gt;Android Developers Mailing List&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://en.androidwiki.com/wiki/Main_Page"&gt;The Android Wiki&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.emacswiki.org/cgi-bin/emacs-en/EmDroid"&gt;Emdroid.el&lt;/a&gt; &amp;#8211; a nice starting point to transition from Eclipse to Emacs, aka my next step.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.helloandroid.com/"&gt;HelloAndroid.com&lt;/a&gt; &amp;#8211; a fairly active community site full of tutorials, and lists of applications&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://androidguys.com/"&gt;AndroidGuys.com&lt;/a&gt; &amp;#8211; &lt;em&gt;supposedly&lt;/em&gt; the site for the best Android news, including a podcast that I have yet to listen to&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.talkandroid.com/"&gt;TalkAndroid.com&lt;/a&gt; &amp;#8211; another active community site&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.nabble.com/-scala--Scala-on-Android-td14336400.html"&gt;Run Scala on Android&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hopefully, this provides you enough incentive to get going on your own. Remember, you are only limited by your imagination. The next area that I&amp;#8217;m going to investigate it how to write tests for Android applications, I&amp;#8217;m hoping it&amp;#8217;s not too difficult.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>MacPorts is trying to kill me</title>
   <link href="http://www.grokblok.com/2008/09/04/macports-is-trying-to-kill-me.html" />
   <updated>2008-09-04T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2008/09/04/macports-is-trying-to-kill-me</id>
   <content type="html">&lt;h1&gt;MacPorts is trying to kill me&lt;/h1&gt;
&lt;p&gt;Yesterday I was trying to install Apache2 through MacPorts so I could get Phusion Passenger to run on my Macbook for local things.  I am constantly having trouble with MacPorts failing to install things, it&amp;#8217;s various reasons, although I&amp;#8217;m sure I&amp;#8217;m to blame for some of them; I think it work and act just like apt. :)  I couldn&amp;#8217;t get Apache installed and I&amp;#8217;d tried various things.  I was getting a little frustrated and flipping back and forth between the terminal and the browser.  See if you can see my problem:&lt;/p&gt;
&lt;p&gt;I type in my command to try to get Apache to install, but then stop at the last minute to read something in the browser.&lt;br /&gt;
&lt;pre&gt;&lt;code class="shell"&gt;bash-3.2$ sudo port install&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;After a few minutes, I come back to the terminal and figure out that I need to selfupdate MacPorts and that might help.  I pick up where I left off&amp;#8230;&lt;br /&gt;
&lt;pre&gt;&lt;code class="shell"&gt;bash-3.2$ sudo port install sudo port selfupdate&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;FAIL.  If you can&amp;#8217;t see it, basically, I just gave the command to MacPorts to install it&amp;#8217;s own &lt;code&gt;sudo&lt;/code&gt; program over the OS X one.  The install failed because sometime during the install it switched to the MacPorts one.  It complained about now being able to create the &lt;code&gt;/opt/local/etc/sudoers&lt;/code&gt; file.  I was stuck in limbo, not able to deactivate the port, not able to copy the sudoers file, nothing.  &lt;code&gt;sudo&lt;/code&gt; was broken.&lt;/p&gt;
&lt;p&gt;Panic sets in.  Let&amp;#8217;s just say that I&amp;#8217;ve tried several things, but there&amp;#8217;s one easy way to fix it.  You might have immediately come to this solution&amp;#8230; but I didn&amp;#8217;t, so congrats on your problem solving skills.  Simply comment out the MacPorts paths from &lt;code&gt;$PATH&lt;/code&gt;, open another terminal and you should be able to create the necessary file, add the paths back in and move on from there.  At that point you can either deactivate the port or use it.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m not sure why MacPorts would have a port that couldn&amp;#8217;t complete it&amp;#8217;s own installation, but no long term damage.  Hopefully, if this happens to someone else, they&amp;#8217;ll be able to have this post point them in the right direction. Now I guess I can go back to betting Phusion Passenger installed. :)&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Rut Roh Raggy, It's Ruxtape</title>
   <link href="http://www.grokblok.com/2008/09/02/rut-roh-raggy-its-ruxtape.html" />
   <updated>2008-09-02T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2008/09/02/rut-roh-raggy-its-ruxtape</id>
   <content type="html">&lt;h1&gt;Rut Roh Raggy, It&amp;#8217;s Ruxtape&lt;/h1&gt;
&lt;p&gt;I was a big fan of &lt;a href="http://www.muxtape.com"&gt;Muxtape&lt;/a&gt;, and I was extremely disappointed to once again see the &lt;span class="caps"&gt;RIAA&lt;/span&gt; shut them down, very reactionary.  I loved the concept of being able to create your own playlist that you could distribute to people and have them listen.  I didn&amp;#8217;t care so much about other people&amp;#8217;s mixes, preferring services like &lt;a href="http://www.pandora.com"&gt;Pandora&lt;/a&gt;.  I was very excited to see the concept resurrected by &lt;a href="http://opentape.fm"&gt;Opentape&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Opentape is really cool, but it&amp;#8217;s written in &lt;span class="caps"&gt;PHP&lt;/span&gt; and I prefer Ruby.  It&amp;#8217;s a little early, but I wanted to announce that I&amp;#8217;m working on an Opentape imposter called, &amp;#8216;Ruxtape&amp;#8217;.  Why early?  Because I haven&amp;#8217;t exactly got a working flash player yet. :(  I&amp;#8217;m having a little trouble with the controls and such and so I&amp;#8217;m hoping that before the next time I get a chance to work on it (maybe next week) somebody will have taken an interest and run with it.  You can find the source on Github.  &lt;a href="http://github.com/ch0wda/ruxtape"&gt;Ruxtape Source&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/ruxtape.png" alt="Ruxtape" /&gt;&lt;/p&gt;
&lt;p&gt;My goal is to have the same player control functionality that Opentape currently has and I&amp;#8217;m trying to &lt;em&gt;vendor&lt;/em&gt; all the gems and provide a &lt;a href="http://rack.rubyforge.org"&gt;Rack&lt;/a&gt; adapter so anyone running &lt;a href="http://modruby.com"&gt;Passenger&lt;/a&gt; can just clone it and it&amp;#8217;s up and running without any other dependencies.  I am especially looking for people who understand Flash players and unobtrusive javascript.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Fail Early, Fail Often</title>
   <link href="http://www.grokblok.com/2008/05/13/fail-early-fail-often.html" />
   <updated>2008-05-13T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2008/05/13/fail-early-fail-often</id>
   <content type="html">&lt;h1&gt;Fail Early, Fail Often&lt;/h1&gt;
&lt;p&gt;I was recently having a discussion with someone, and the topic was standing up while you&amp;#8217;re working.  I&amp;#8217;ve recently been hearing a lot about it &lt;a href="http://www.37signals.com/svn/posts/1001-standing-versus-sitting"&gt;here&lt;/a&gt; and  &lt;a href="http://podcast.rubyonrails.org/programs/1/episodes/john-medina"&gt;here&lt;/a&gt;.  This person was mentioning that he had found a standing desk with a &lt;a href="http://www.treaddesk.com/home.html"&gt;treadmill underneath&lt;/a&gt;.  The proposed benefits are improved posture and increased attention span.  I&amp;#8217;m intrigued by the idea, but it&amp;#8217;s something that I&amp;#8217;d have to try out to find out if I like it.  Unfortunately, my height (6&amp;#8217;4&amp;quot;) purchasing something cheap or rigging up an existing table didn&amp;#8217;t seem to be an option.  I needed something ~48&amp;quot; high.&lt;/p&gt;
&lt;p&gt;I remembered that I had a couple of nicely cut Medium Density Fiberboard pieces laying round that would be a great start.  I also had 5 12&amp;#8217; 2&amp;#215;4s, a hand jigsaw, and a screw gun.  Long story short, 2.5 hours and $0 later, I had something I could use.  Is it great?  No.  Is it permanent?  No.  Is it something that I can use to evaluate whether I like to work this way or not without making a large investment?  Absolutely.  Fail early, fail often.  Open Source carpentry.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm3.static.flickr.com/2415/2489255923_db795083fb_d.jpg" alt="" /&gt;&lt;br /&gt;
&lt;img src="http://farm3.static.flickr.com/2334/2489255203_50cf934bbb_d.jpg" alt="" /&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Utili-Tool, A Camping Application</title>
   <link href="http://www.grokblok.com/2008/04/10/utili-tool-a-camping-application.html" />
   <updated>2008-04-10T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2008/04/10/utili-tool-a-camping-application</id>
   <content type="html">&lt;h1&gt;Utili-Tool, A Camping Application&lt;/h1&gt;
&lt;p&gt;Something that I use everyday that I&amp;#8217;ve just released for public use is the &lt;a href="http://tools.getbraintree.com/"&gt;Braintree Tools Site&lt;/a&gt;, which is just a &lt;a href="http://code.whytheluckystiff.net/camping"&gt;Camping&lt;/a&gt; application frontend to the &lt;a href="http://developer.getbraintree.com"&gt;Braintree APIs&lt;/a&gt;.  It&amp;#8217;s also a simple collection of tools that will help you figure out if your &amp;#8216;hashing&amp;#8217; is correct and what response look like.  It&amp;#8217;s kinda like a sandbox, but you don&amp;#8217;t need to go so far as to write your own script.  You can just do it from the web.&lt;/p&gt;
&lt;p&gt;There is certainly truth in the statement that the best tools are created by the people who actually use them.  A major part of my job at &lt;a href="http://www.braintreepaymentsolutions"&gt;Braintree&lt;/a&gt; is to ease the task of integration for our customers.  I come into contact with people who are using everything from Ruby on Rails to customized &lt;span class="caps"&gt;PHP&lt;/span&gt; to Oracle Forms.  The nice thing about our &lt;span class="caps"&gt;API&lt;/span&gt; is that it doesn&amp;#8217;t matter.  You&amp;#8217;re simply making &lt;span class="caps"&gt;HTTP&lt;/span&gt; &lt;span class="caps"&gt;GETS&lt;/span&gt;/&lt;span class="caps"&gt;POSTS&lt;/span&gt; to interact with the Gateway.  For me, customer support at it&amp;#8217;s most basic is just typing a query string into a browser address bar and looking at the response.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>I've Joined Braintree Payment Solutions</title>
   <link href="http://www.grokblok.com/2008/02/13/i-ve-joined-braintree-payment-solutions.html" />
   <updated>2008-02-13T00:00:00-08:00</updated>
   <id>http://www.grokblok.com.com/2008/02/13/i-ve-joined-braintree-payment-solutions</id>
   <content type="html">&lt;h1&gt;I&amp;#8217;ve Joined Braintree Payment Solutions&lt;/h1&gt;
&lt;div class="article_image"&gt;&lt;img src="http://www.grokblok.com/assets/2008/2/13/logo.gif" alt="" /&gt;&lt;/div&gt;&lt;p&gt;It&amp;#8217;s been a while since I&amp;#8217;ve posted, and it&amp;#8217;s also been a while since I changed jobs.  I&amp;#8217;m very pleased to announce that I now work for &lt;a href="http://www.braintreepaymentsolutions.com"&gt;Braintree Payment Solutions&lt;/a&gt;.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Emacs Shell Ansi Colors</title>
   <link href="http://www.grokblok.com/2007/12/13/emacs-shell-ansi-colors.html" />
   <updated>2007-12-13T00:00:00-08:00</updated>
   <id>http://www.grokblok.com.com/2007/12/13/emacs-shell-ansi-colors</id>
   <content type="html">&lt;h1&gt;Emacs Shell Ansi Colors&lt;/h1&gt;
&lt;p&gt;In a &lt;a href="http://www.grokblok.com/2007/9/18/emacs-autotest-integration"&gt;previous post&lt;/a&gt; I mentioned a funky character encoding issue with my Emacs Autotest output.  I finally looked into the cause and came across the solution.  I just needed to enable ansi-colors in my Emacs shell.&lt;/p&gt;
&lt;p&gt;In your .emacs file, add the following:&lt;/p&gt;
&lt;p&gt;Liquid error: No such file or directory &amp;#8211; /usr/bin/pygmentize -l cl -O encoding=utf-8 -f html&lt;/p&gt;
&lt;p&gt;Cheap and easy.  Now, you&amp;#8217;ll get all the cool ansi colors, like the kids.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Rails 2.0 + CRB</title>
   <link href="http://www.grokblok.com/2007/11/19/rails-2-0-crb.html" />
   <updated>2007-11-19T00:00:00-08:00</updated>
   <id>http://www.grokblok.com.com/2007/11/19/rails-2-0-crb</id>
   <content type="html">&lt;h1&gt;Rails 2.0 + &lt;span class="caps"&gt;CRB&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;For those of you in the Columbus area, I&amp;#8217;ll be speaking at the &lt;a href="http://columbusrb.com"&gt;Columbus Ruby Brigade&lt;/a&gt; meeting this evening regarding Rails 2.0.  This will be a high-level talk around some of the new things and some of the deprecated behaviours in everyone&amp;#8217;s favorite web framework.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>validates_acceptance_of howto</title>
   <link href="http://www.grokblok.com/2007/11/16/validates_acceptance_of-howto.html" />
   <updated>2007-11-16T00:00:00-08:00</updated>
   <id>http://www.grokblok.com.com/2007/11/16/validates_acceptance_of-howto</id>
   <content type="html">&lt;h1&gt;validates_acceptance_of howto&lt;/h1&gt;
&lt;p&gt;We&amp;#8217;re really getting things rolling on &lt;a href="http:/www.gonowdo.com"&gt;Gonowdo&lt;/a&gt; and as part of that, we&amp;#8217;re starting to accept users on a somewhat limited basis.  When signing up, I need to make sure that users accept our terms of service.  With Rails, this is extremely simple, but after spending a few minutes on mailing list archives and forums I didn&amp;#8217;t find a good resource or howto.  Hopefully, this post will serve as that for anyone in the future.&lt;/p&gt;
&lt;p&gt;The key to accomplishing this is to use an active record validation called &amp;#8220;validates_acceptance_of&amp;#8221;.  Adding this to the User model with a method will create a virtual attribute for that named method, in my case, I used &amp;#8220;terms_of_service&amp;#8221;.  There is no corresponding column in the database needed.  This will not allow a model to be saved without it.  By default, this method will allow the record to be saved if it is nil.  Setting it to true will mean that you must pass this value to the record everytime you want to save it.  One other thing, in order be able to access this method from the view, you need to make it accessible by creating an accessor.  Here is the example from our application.&lt;/p&gt;
&lt;p&gt;Liquid error: No such file or directory &amp;#8211; /usr/bin/pygmentize -l ruby -O encoding=utf-8 -f html&lt;/p&gt;
&lt;p&gt;In the view, you just need to add a control to the form for selecting this checkbox.  Without checking this box, the form will throw a validation error and the model will not be saved.&lt;/p&gt;
&lt;p&gt;Liquid error: No such file or directory &amp;#8211; /usr/bin/pygmentize -l erb -O encoding=utf-8 -f html&lt;/p&gt;
&lt;p&gt;There are several other configurations that you can pass to validates_acceptance_of, similar to other validations.  Check the documentation for this method for more information.  If you have more stringent auditing requirements, then you may need to think about just using a boolean field in the database and using a regular validation.  Extending this further might even allow you to track acceptance of versions of your terms of service as they get updated.  Since we&amp;#8217;re allowing nil by default, you will need to make sure that create a test/spec to specifically pass a :terms_of_service method.  I would keep this in a special test case and not worry about including it throughout your test suite.&lt;/p&gt;
&lt;p&gt;Hopefully, this will get you going, best of luck!&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>The Truth</title>
   <link href="http://www.grokblok.com/2007/11/03/the-truth.html" />
   <updated>2007-11-03T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/11/03/the-truth</id>
   <content type="html">&lt;h1&gt;The Truth&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Emacs outshines all other editing software in approximately the same way that the noonday sun does the stars. It is not just bigger and brighter; it simply makes everything else vanish.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;cite&gt;Neal Stephenson&lt;/cite&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>RSpec NO NAME error</title>
   <link href="http://www.grokblok.com/2007/10/06/rspec-no-name-error.html" />
   <updated>2007-10-06T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/10/06/rspec-no-name-error</id>
   <content type="html">&lt;h1&gt;RSpec NO &lt;span class="caps"&gt;NAME&lt;/span&gt; error&lt;/h1&gt;
&lt;p&gt;On &lt;a href="http://www.gonowdo.com"&gt;Gonwodo&lt;/a&gt;, &lt;a href="http://www.aaronbedra.com"&gt;Aaron&lt;/a&gt; and I decided to use &lt;a href="http://rspec.rubyforge.org/"&gt;RSpec&lt;/a&gt; for our tests.  We were getting a really strange error when attempting to print out the spec docs through the rake tasks.  We had actually never written any specifications, just it &amp;#8220;foo foo foo&amp;#8221; methods in order to get pending tests.  The error we were getting was:&lt;/p&gt;
&lt;p&gt;Liquid error: No such file or directory &amp;#8211; /usr/bin/pygmentize -l bash -O encoding=utf-8 -f html&lt;/p&gt;
&lt;p&gt;I was able to determine that the rake task does indeed call dry run.  Here&amp;#8217;s the task,&lt;/p&gt;
&lt;p&gt;Liquid error: No such file or directory &amp;#8211; /usr/bin/pygmentize -l ruby -O encoding=utf-8 -f html&lt;/p&gt;
&lt;p&gt;This is actually the expected behavior, as RSpec is attempting to generate the names of the specs using the code internally.  The problem with the dry-run is that it never executes the code so the names cannot be determined.  In order to have the empty tests generate the necessary spec doc you would do &lt;code&gt;./script/spec spec -fs&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m not sure that I understand why this is the expected behavior because I give the test a name, so I&amp;#8217;m not expecting it to be run.  If anyone has an explanation, I would greatly appreciate it.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://rubyurl.com/YEyl"&gt;Mailing List Discussion of this error&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://rspec.rubyforge.org/svn/trunk/rspec_on_rails/tasks/rspec.rake"&gt;RSpec Rake task source&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
 </entry>
 
 <entry>
   <title>Joining GoNowDo</title>
   <link href="http://www.grokblok.com/2007/09/26/joining-gonowdo.html" />
   <updated>2007-09-26T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/09/26/joining-gonowdo</id>
   <content type="html">&lt;h1&gt;Joining GoNowDo&lt;/h1&gt;
&lt;p style="float:right;"&gt;&lt;img src="/assets/2007/9/26/gonowdo.gif" alt="" /&gt; Today marks the last day that I&amp;#8217;ll be working at &lt;a href="http://www.cardinalhealth.com"&gt;Cardinal&lt;/a&gt;.  I&amp;#8217;m extremely excited to be working for a new company, &lt;a href="http://www.gonowdo.com"&gt;GoNowDo&lt;/a&gt;.  We&amp;#8217;re going to be working on solving some interesting problems in the online travel industry.  Stay tuned for more information.&lt;/p&gt;
&lt;p&gt;Thanks to everyone at Cardinal!&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Emacs Autotest Integration</title>
   <link href="http://www.grokblok.com/2007/09/18/emacs-autotest-integration.html" />
   <updated>2007-09-18T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/09/18/emacs-autotest-integration</id>
   <content type="html">&lt;h1&gt;Emacs Autotest Integration&lt;/h1&gt;
&lt;p&gt;I&amp;#8217;ve been read in several places about how to get &lt;a href="http://www.gnu.org/software/emacs/"&gt;emacs&lt;/a&gt; and &lt;a href="http://www.zenspider.com/ZSS/Products/ZenTest/"&gt;autotest&lt;/a&gt; to play nicely together.  This package runs a shell buffer just giving autotest&amp;#8217;s output.  It&amp;#8217;s a nice way to automatically have that visual representation in the same window.  It&amp;#8217;s actually quite simple to do.&lt;/p&gt;
&lt;p&gt;To begin with, you&amp;#8217;ll need to download the &lt;a href="http://www.emacswiki.org/cgi-bin/emacs/download/autotest.el"&gt;autotest.el&lt;/a&gt; file and also a depencency, &lt;a href="http://www.emacswiki.org/cgi-bin/emacs-en/download/toggle.el"&gt;toggle.el&lt;/a&gt;.  From there, I simply added the following to my .emacs file:&lt;/p&gt;
&lt;p&gt;Liquid error: No such file or directory &amp;#8211; /usr/bin/pygmentize -l cl -O encoding=utf-8 -f html&lt;/p&gt;
&lt;p&gt;Restart emacs, and you should be good to go.  Note, I also had to add the &lt;a href="http://www.emacswiki.org/cgi-bin/emacs/download/unit-test.el"&gt;unit-test.el&lt;/a&gt; file, but that wasn&amp;#8217;t mentioned anywhere on the wiki.&lt;/p&gt;
&lt;p&gt;Navigate in emacs to a the root folder that you want to run autotest in and you can start this mode by typing: &lt;code&gt;M-x autotest&lt;/code&gt;.  Currently, my output is looking a little funny, I think it&amp;#8217;s an encoding thing, but I think I can get the kinks worked out pretty soon.  Also, make note that this will read the ~/.autotest file to start.  A great resource on this nice piece of integration can be found on the &lt;a href="http://www.emacswiki.org/cgi-bin/wiki/RyanDavis"&gt;emacs wiki&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s one less terminal that I&amp;#8217;ll have going, meaning that more of my life will be spent in emacs, which is good.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Nginx iz teh 1337 h4x0r</title>
   <link href="http://www.grokblok.com/2007/09/08/nginx-iz-teh-1337-h4x0r.html" />
   <updated>2007-09-08T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/09/08/nginx-iz-teh-1337-h4x0r</id>
   <content type="html">&lt;h1&gt;Nginx iz teh 1337 h4x0r&lt;/h1&gt;
&lt;p&gt;I spent the evening migrating this mephisto installation from apache to nginx.  It was quite easy to install and configure.  I&amp;#8217;ve also cut down my memory by a few MBs.  I&amp;#8217;m having a little problem with some of the virtual hosts, but I think it&amp;#8217;s an issue with my &lt;span class="caps"&gt;DNS&lt;/span&gt;, not necessarily the configs.  My initial impression is that my pages are loading in the 1/2 the time.  I&amp;#8217;m too tired to post more, I&amp;#8217;ll try to get to it tomorrow, including statistics, but if you have a choice, you should be using nginx, &lt;span class="caps"&gt;NOW&lt;/span&gt;.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Prototyping with Camping</title>
   <link href="http://www.grokblok.com/2007/09/06/prototyping-with-camping.html" />
   <updated>2007-09-06T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/09/06/prototyping-with-camping</id>
   <content type="html">&lt;h1&gt;Prototyping with Camping&lt;/h1&gt;
&lt;p&gt;As you might know, I&amp;#8217;ve been spending a lot of time at &lt;a href="http://www.cardinal.com"&gt;work&lt;/a&gt; writing some dashboard-type applications using &lt;a href="http://www.whytheluckystiff.net"&gt;_whytheluckystiff&amp;#8217;s&lt;/a&gt; &lt;a href="http://code.whytheluckystiff.net/camping"&gt;Camping Framework&lt;/a&gt;.  I&amp;#8217;ve been experiencing some incredible productivity gains by prototyping with this very small framework, and I think I&amp;#8217;m only just beginning to realize exactly how much.  I&amp;#8217;ve recently undertaken rewriting one of these dashboards in &lt;a href="http://www.rubyonrails.org/"&gt;Rails&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;The Camping Application&lt;/h2&gt;
&lt;p&gt;Several months ago, I was tasked with providing some statistics on budget and project management performance for senior management.  The maturity of datasources wasn&amp;#8217;t very good, many of them were excel spreadsheet laden with macros, access databases, and csv files from 5 or 6 datasources.  To further compound the problem, these datasources weren&amp;#8217;t always in a consistent data format, so I made the design decision to just create a simple &lt;span class="caps"&gt;CRUD&lt;/span&gt; interface to manually enter the data.  All compilation would be handled outside the application for the time being.  The benefit of this approach would be that eventually, I could turn the data entry over to someone else.&lt;/p&gt;
&lt;p&gt;I developed this solution over the course of about 2 weeks, working on and off until there was a format visually appealing to all parties.  I wrote the most basic tests possible using &lt;a href="http://www.nubyonrails.com"&gt;Topfunky&amp;#8217;s&lt;/a&gt; &lt;a href="http://code.whytheluckystiff.net/camping/wiki/MosquitoForBugFreeCamping"&gt;Mosquito Testing Framework&lt;/a&gt;.  This solution worked until the application needed to be expanded to the entire organization, not just a subset.  It was time to move to Rails.&lt;/p&gt;
&lt;h2&gt;The Rails Application&lt;/h2&gt;
&lt;p&gt;In addition to changing the domain to fit the entire organziation, I really wanted to have an extremely clean interface for someone else to enter the data.  My goal was to have someone else take over entering the data, and I would just be responsible for the support of the application.  Rails also gave me an opportunity to more easily explore automating some of the data entry.&lt;/p&gt;
&lt;p&gt;In 2 days, working on it for 8 hours a day, I&amp;#8217;m 90% complete, including adding the additional models and unit and functional tests.  I realize that it&amp;#8217;s a small Rails application, but now if there are enhancement that need to be made I&amp;#8217;m on a much better platform.&lt;/p&gt;
&lt;pre&gt;
+----------------------+-------+-------+---------+---------+-----+-------+
| Name                 | Lines |   LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Controllers          |   560 |   395 |       8 |      49 |   6 |     6 |
| Helpers              |    20 |    19 |       0 |       1 |   0 |    17 |
| Models               |   152 |   130 |       7 |      18 |   2 |     5 |
| Libraries            |    14 |    11 |       0 |       3 |   0 |     1 |
| Integration tests    |     0 |     0 |       0 |       0 |   0 |     0 |
| Functional tests     |   434 |   342 |      14 |      63 |   4 |     3 |
| Unit tests           |   745 |   565 |       8 |     154 |  19 |     1 |
+----------------------+-------+-------+---------+---------+-----+-------+
| Total                |  1925 |  1462 |      37 |     288 |   7 |     3 |
+----------------------+-------+-------+---------+---------+-----+-------+
  Code LOC: 555     Test LOC: 907     Code to Test Ratio: 1:1.6
&lt;/pre&gt;
&lt;p&gt;So in proper enterprise +3/-3 format, here are some observations&amp;#8230;&lt;/p&gt;
&lt;h3&gt;Eagles&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;My models are almost an exact copy from Camping, with more validations and a couple of additional models that I needed to add for the extra functionality.&lt;/li&gt;
	&lt;li&gt;I already knew the domain of what I needed to create so any reworking could be accomplished on the first pass with Rails.&lt;/li&gt;
	&lt;li&gt;I already had lots of good data to use for Rails development as I just pulled fixtures down from the Camping app.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Turkeys&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;I miss clean view syntax of &lt;a href="http:/code.whytheluckystiff.net/markaby"&gt;Markaby&lt;/a&gt; in Rails.  I realize that I could use Markaby, but if support for this application eventually gets turned over to another group, I thought that the barrier to entry would be lower for the &lt;span class="caps"&gt;JSP&lt;/span&gt;-style syntax of &lt;span class="caps"&gt;ERB&lt;/span&gt; templates.&lt;/li&gt;
	&lt;li&gt;I had to manually copy and paste a lot of code from one Emacs screen to another.  There was rumored to be a gem that would transistion a Camping application to Rails, &lt;a href="http://rubyforge.org/projects/decamper"&gt;DeCamper&lt;/a&gt;, but I couldn&amp;#8217;t find any code that had been released.  This bears further research.&lt;/li&gt;
	&lt;li&gt;Rails migrations and Camping migrations aren&amp;#8217;t very similar, and I wanted to have the cleanest Rails application possible.  I reworked the models enough that it just didn&amp;#8217;t transfer very well.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;I&amp;#8217;ve been in too many situations where I work on things for too long only to have the organziation go in a different direction.  Using Camping to prototype before moving on to Rails gets something for my users to react to before I&amp;#8217;m too invested in the outcome of my work.  When, and &lt;em&gt;if&lt;/em&gt; I do need to move to Rails, the transition is seemless and probably cuts down on the total time to get a finished product into production.  I&amp;#8217;ve been very pleased with this approach, but I think I can reduce the turn around time even further.  I think some possible options would be to use &lt;span class="caps"&gt;ERB&lt;/span&gt; with Camping or Markaby with Rails.  Also, I think I should have perhaps gone to Rails a few weeks ago, but time was just too hard to come by.  The next time you come across a situation that warrants creating something of immediate use that may or may not be thrown away after an initial pass, you should think about this approach.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Rails Trademark Madness</title>
   <link href="http://www.grokblok.com/2007/08/18/rails-trademark-madness.html" />
   <updated>2007-08-18T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/08/18/rails-trademark-madness</id>
   <content type="html">&lt;h1&gt;Rails Trademark Madness&lt;/h1&gt;
&lt;p&gt;So, it would appear that the &lt;del&gt;Rails&lt;/del&gt; trademark &lt;a href="http://www.rubyinside.com/david-heinemeier-hansson-says-no-to-use-of-rails-logo-567.html"&gt;discussion&lt;/a&gt; isn&amp;#8217;t quite over.  On the 27th of July, &lt;a href="http://drnicwilliams"&gt;Dr. Nic Williams&lt;/a&gt; registered a trademark for:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Educational publications, namely, training manuals in the field of information technology&lt;/li&gt;
	&lt;li&gt;Dissemination of advertising, scheduling and managing of training courses and programs for others via a global computer&lt;/li&gt;
	&lt;li&gt;Arranging professional workshop and training courses&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is in addition to the one originally &lt;a href="http://tarr.uspto.gov/servlet/tarr?regser=serial&amp;amp;entry=77119206"&gt;filed by David Heinemeier Hansson&lt;/a&gt; about the usage of &lt;del&gt;Ruby on Rails&lt;/del&gt; in &lt;em&gt;Computer software, namely, software framework for developing web applications&lt;/em&gt;.  Apparently, that one isn&amp;#8217;t completely through the door, yet.&lt;/p&gt;
&lt;p&gt;What does all this mean?  1) Patent and trademark law seems completely jacked up in the US.  2) It means that the name of a thing is valuable, not the thing itself.&lt;/p&gt;
&lt;p&gt;For those of you thinking about filing a trademark on your service, let me ask a question.  Are you a great &lt;del&gt;Rails&lt;/del&gt; developer, or are you a great developer who uses &lt;del&gt;Rails&lt;/del&gt;?&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>The Need to Change</title>
   <link href="http://www.grokblok.com/2007/07/18/the-need-to-change.html" />
   <updated>2007-07-18T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/07/18/the-need-to-change</id>
   <content type="html">&lt;h1&gt;The Need to Change&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;To build systems that are easy to change, build them by changing them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;cite&gt;Glen Vandenburg @erubycon&lt;/cite&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>My First Patch</title>
   <link href="http://www.grokblok.com/2007/06/26/my-first-patch.html" />
   <updated>2007-06-26T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/06/26/my-first-patch</id>
   <content type="html">&lt;h1&gt;My First Patch&lt;/h1&gt;
&lt;p&gt;I am no longer an innocent bystander to the world of open source projects.  I&amp;#8217;ve had my very first patch applied to a code base.  While working on a tiny Rails project, I used &lt;a href="http://techno-weenie.net"&gt;Rick Olsen&amp;#8217;s&lt;/a&gt; &lt;a href="http://svn.techno-weenie.net/projects/plugins/restful_authentication"&gt;restful_authentication&lt;/a&gt; plugin/generator.  The tests failed immediately due a &lt;a href="http://dev.rubyonrails.org/changeset/6693"&gt;change in the api for assert_difference&lt;/a&gt;.  I made the changes, and submitted a patch to Rick, and he applied it &lt;a href="http://bs.techno-weenie.net/!revision/2921"&gt;last night&lt;/a&gt;, along with a couple of other small changes.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve been wanting to start getting involved with more patching, but just haven&amp;#8217;t had the opportunity.  I even set-up a specific workspace on my laptop just for things that I&amp;#8217;m going to be patching, that way I can keep it separate from my own projects.&lt;/p&gt;
&lt;p&gt;How exciting!&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Polymorphic Camping</title>
   <link href="http://www.grokblok.com/2007/06/08/polymorphic-camping.html" />
   <updated>2007-06-08T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/06/08/polymorphic-camping</id>
   <content type="html">&lt;h1&gt;Polymorphic Camping&lt;/h1&gt;
&lt;p&gt;For one of the projects I&amp;#8217;m doing at &lt;a href="http://www.cardinal.com"&gt;Cardinal&lt;/a&gt;, I&amp;#8217;m using a polymorphic association.  The nature of &lt;a href="http://code.whytheluckystiff.net/camping"&gt;Camping&lt;/a&gt; is to write terse, yet simple code.  For example, creating a new record in a controller is normally done in a one-liner, like so:&lt;/p&gt;
&lt;pre&gt;
class Add
  def post
    @person = Person.create(:name =&amp;gt; input.person_name, :age =&amp;gt; input.person_age)
    redirect R(List)
  end
end
&lt;/pre&gt;
&lt;p&gt;Here&amp;#8217;s something that I got caught up on for 20 minutes this morning.  When adding polymorphic associations, make sure that the [polymorphic name]_type field includes all the namespace information.  Here&amp;#8217;s an example:&lt;/p&gt;
&lt;pre&gt;
def Person &amp;lt; Base 
    has_many :addresses, :as =&amp;gt; :addressable 
end

def Address &amp;lt; Base 
    belongs_to :addressable, :polymorphic =&amp;gt; true 
end
&lt;/pre&gt;

&lt;pre&gt;
...
label 'Type', :for =&amp;gt; 'addressable_type'; br
addressable_select("addressable_type"); br
label 'person', :for =&amp;gt; 'person_id'; br
person_select("person_id", @people); br
...
&lt;/pre&gt;

&lt;pre&gt;
# controller
class Add
  def post
    @addressable = Person.find(input.person_id) if input.addressable_type == "Person"
    @address = Address.create(:street =&amp;gt; input.address_street, 
                                          :city =&amp;gt; input.address_city,
                                          :state =&amp;gt; input.address_state, 
                                          :zip =&amp;gt; input.address_zip,
                                          :addressable_type =&amp;gt; @addressable.class,  #use the class name to get namespace
                                          :addressable_id =&amp;gt; @addressable.id)
    redirect List
  end
end
&lt;/pre&gt;
&lt;p&gt;There&amp;#8217;s a number of ways to solve this, although I found this to be the simplest for a form where you can select multiple models.  The point is to make sure that you have that namespace information in the database, otherwise you will receive &amp;#8220;Uninitialized Constant&amp;#8221; errors for the addressable class.&lt;/p&gt;
&lt;p&gt;Happy Camping!&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Race for the Cure</title>
   <link href="http://www.grokblok.com/2007/06/07/race-for-the-cure.html" />
   <updated>2007-06-07T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/06/07/race-for-the-cure</id>
   <content type="html">&lt;h1&gt;Race for the Cure&lt;/h1&gt;
&lt;p&gt;It&amp;#8217;s been several weeks ago, but my company, &lt;a href="http://www.cardinal.com"&gt;Cardinal Health&lt;/a&gt; paid for my entry in the &lt;a href="http://www.komencolumbus.org/race/"&gt;2007 Race for the Cure&lt;/a&gt; in Columbus, Ohio.  More than 37,000 people showed up to run in this worthy cause.  While I didn&amp;#8217;t raise as much money as I would have liked to, you can still donate &lt;a href="http://www.komencolumbus.org/donations/"&gt;here&lt;/a&gt;.  It was really heart wrenching to see so many people who were running &amp;#8220;In Memory Of&amp;#8221; Grandma Jones, Aunt Doris, or Mother.  Please consider giving some money to a group that helps to eradicate this terrible disease.  Let me state it like this, we can put a man on the moon and bring him home safely, but we can&amp;#8217;t find a cure for a disease that takes wives, mothers, daughters, aunts, and grandmas?  We need a Jack Kennedy style mandate to have this disease beaten in the next 10 years.  With your donations, that could help.&lt;/p&gt;
&lt;p&gt;This was my first 5k, and the first time that I&amp;#8217;ve ever ran more than 3 miles without stopping.  I was very pleased with my &lt;a href="http://www.hermescleveland.com/results/2007/Columbus/OVERALL.HTM"&gt;results&lt;/a&gt;.  I finished 5333 out of almost 7000 people with a time of 40:10 (although I didn&amp;#8217;t actually cross the start line at the beginning until 2:30 into the race).  That may not seem like much, except for the fact that I was probably one of the heaviest people there.  For those that don&amp;#8217;t know me by sight, there&amp;#8217;s not a lot of difference, visually between myself and the average &lt;span class="caps"&gt;NFL&lt;/span&gt; offensive lineman, 6&amp;#8217;4&amp;quot; and between 310 and 340 lbs.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Oh Say, Can You IRC?</title>
   <link href="http://www.grokblok.com/2007/05/30/oh-say-can-you-irc.html" />
   <updated>2007-05-30T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/05/30/oh-say-can-you-irc</id>
   <content type="html">&lt;h1&gt;Oh Say, Can You &lt;span class="caps"&gt;IRC&lt;/span&gt;?&lt;/h1&gt;
&lt;p&gt;It&amp;#8217;s that recently there has been a lot of interest in communicating with people through &lt;a href="http://en.wikipedia.org/wiki/Internet_Relay_Chat" title="IRC"&gt;Internet Relay Chat&lt;/a&gt;, or at least in the corner of the internet that I frequent.  I think it&amp;#8217;s a really flexible medium that lends itself to instant collaboration.  One of the areas that I think it could bear much fruit is in the way of online help.&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s one of the reason&amp;#8217;s that I &lt;a href="http://groups.google.com/group/columbusrb/browse_thread/thread/5600558a94cb3fac"&gt;suggested&lt;/a&gt; starting the &lt;a href="irc://irc.freenode.net/columbusrb"&gt;#columbusrb&lt;/a&gt; channel.  Think of it this way, if you are not working in an all Ruby shop, how do you get your help?  Mailing lists?  Blogs?  These are all valid, but sometimes, there&amp;#8217;s a more immediate need for help.  I envision &lt;a href="irc://irc.freenode.net/columbusrb"&gt;#columbusrb&lt;/a&gt;  to be a place where people can come to for help, it&amp;#8217;s my effort to help spur the community on to larger growth.  If you work in a large company, and you&amp;#8217;re trying to bring ruby in, look to some of these channels for instant help.&lt;/p&gt;
&lt;p&gt;Do take the time and check out some of these channels, my nick is &lt;strong&gt;ch0wda&lt;/strong&gt;, which is an obscure &lt;a href="http://en.wikipedia.org/wiki/Mayor_Quimby"&gt;Mayor Quimby&lt;/a&gt; reference from a &lt;a href="http://www.snpp.com/episodes/1F19.html"&gt;Simpson&amp;#8217;s episode&lt;/a&gt;, if you must know.  I plan on posting some more about &lt;span class="caps"&gt;IRC&lt;/span&gt; in the coming weeks.&lt;/p&gt;
&lt;p&gt;So places that I&amp;#8217;m known to frequent:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="irc://irc.freenode.net/columbusrb"&gt;#columbusrb&lt;/a&gt; &amp;#8211; Home of the &lt;a href="http://www.columbusrb.com"&gt;Columbus Ruby Brigade&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="irc://irc.freenode.net/camping"&gt;#camping&lt;/a&gt; &amp;#8211; Devoted to the greatest 4KB &lt;span class="caps"&gt;MVC&lt;/span&gt; framework on the interwebs, &lt;a href="http://code.whytheluckystiff.net/camping"&gt;Camping&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="irc://irc.freenode.net/rails-contrib"&gt;#rails-contrib&lt;/a&gt; &amp;#8211; Follow along as patches and tickets get worked on the &lt;a href="http://dev.rubyonrails.org/timeline"&gt;Rails Trunk&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="irc://irc.freenode.net/midwest.rb"&gt;#midwest.rb&lt;/a&gt; &amp;#8211; A great collection of Rubyists from all over the Midwest dedicated to helping each other out.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are some great places, but just don&amp;#8217;t have the time to hang out in:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="irc://irc.freenode.net/merb"&gt;#merb&lt;/a&gt; &amp;#8211; A lot of really cool work is going into this framework of Mongrel + &lt;span class="caps"&gt;ERB&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="irc://irc.freenode.net/jruby"&gt;#jruby&lt;/a&gt; &amp;#8211; Many people keep a watchful eye over how this project is turning out&lt;/li&gt;
	&lt;li&gt;&lt;a href="irc://irc.freenode.net/emacs"&gt;#emacs&lt;/a&gt; &amp;#8211; The &lt;span class="caps"&gt;IDE&lt;/span&gt; that acts as an operating system&lt;/li&gt;
	&lt;li&gt;&lt;a href="irc://irc.freenode.net/ruby-lang"&gt;#ruby-lang&lt;/a&gt; &amp;#8211; Discuss your favorite language&lt;/li&gt;
&lt;/ul&gt;</content>
 </entry>
 
 <entry>
   <title>How I'm Using Ruby in the Enterprise</title>
   <link href="http://www.grokblok.com/2007/05/27/how-i-m-using-ruby-in-the-enterprise.html" />
   <updated>2007-05-27T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/05/27/how-i-m-using-ruby-in-the-enterprise</id>
   <content type="html">&lt;h1&gt;How I&amp;#8217;m Using Ruby in the Enterprise&lt;/h1&gt;
&lt;p&gt;Some of you might know that I recently started working at &lt;a href="//http://www.cardinal.com"&gt;Cardinal Health&lt;/a&gt;, which may or may not seem relevant until you realize that Cardinal is #19 on the &lt;a href="http://money.cnn.com/magazines/fortune/fortune500/2007/full_list/index.html"&gt;Fortune 500&lt;/a&gt;.  Taking that in conjunction with the fact that I worked at &lt;a href="http://www.jpmorganchase.com"&gt;JPMorgan Chase &amp;amp; Co.&lt;/a&gt; for 5 years and they are listed at #11 on the &lt;a href="http://money.cnn.com/magazines/fortune/fortune500/2007/full_list/index.html"&gt;Fortune 500&lt;/a&gt; and I feel comfortable in saying that I know there is a spot in all enterprises for Ruby and Rails.  I&amp;#8217;m finding that decision makers are more open to open source, more open to going outside the  enterprise comfort zone, and more open to selecting the solution is is done the quickest, with the most business value, and meets their needs the most.&lt;/p&gt;
&lt;p&gt;So, what am I doing?  In short, I&amp;#8217;m helping technology leaderships make the best investment decisions, while becoming an industry leader, not an industry follower.  I&amp;#8217;m proving to them that you don&amp;#8217;t needs teams of consultants or a pricey support contract to business value out of the data that your organization holds.  I&amp;#8217;m proving that Ruby belongs.&lt;/p&gt;
&lt;h4&gt;Rails at JPMorganChase&lt;/h4&gt;
&lt;p&gt;At &lt;span class="caps"&gt;JPMC&lt;/span&gt;, I led the team that created the 1st fully-supported and fully-funded Rails application inside the bank.  Of course, things got complicated because we had to work with other technologies and people who weren&amp;#8217;t receptive to Ruby, but that&amp;#8217;s the real trick anyways, isn&amp;#8217;t it?  In 3 short months, we went from discussion and a single &lt;span class="caps"&gt;SVN&lt;/span&gt; commit to an application with a user community in excess of 10,000 people.  We were hooked into the global authentication system, and living like good citizens of the enterprise application community.  The benefit is that now people can more easily get access to the revenue generating systems and spend less time just sitting at their desk when they start new (which was the basic premise of the application that we created).&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m a little unfamiliar with the current status of the application, but the current project lead, &lt;a href="http://xandrews.blogspot.com"&gt;John Andrews&lt;/a&gt; has taken the ball and run with it.  The user community continues to grow and the application continues to morph and integrate and become fully assimilated within the &lt;span class="caps"&gt;JPMC&lt;/span&gt; universe.  One of &lt;span class="caps"&gt;JPMC&lt;/span&gt; Retail banks lead architects, who is a Smalltalk developer at heart is very interested in Rails and has been suggesting it to other teams in order to help him make a strategic decision.  It could perhaps become as ubiquitous to them as Java or .&lt;span class="caps"&gt;NET&lt;/span&gt;.  The part that I&amp;#8217;m most proud of is that 1 year ago, there were no full-time Ruby/Rails jobs at &lt;span class="caps"&gt;JPMC&lt;/span&gt;, today there are 3, and that&amp;#8217;s a great thing for the community.&lt;/p&gt;
&lt;h4&gt;Ruby at CardinalHealth&lt;/h4&gt;
&lt;p&gt;At Cardinal, I&amp;#8217;m doing something that I think is even more edge-leading and innovative.  I&amp;#8217;m in the process of deploying several small &lt;a href="http://code.whytheluckystiff.net/camping"&gt;Camping apps&lt;/a&gt;, which work together to create a dashboard of information for IT leadership to make investment decisions.  It&amp;#8217;s the simplest possible thing that could be done.  I take several ruby scripts that use active record and I pull data, manipulate it into something a little more friendly and then load it into an SQLite database that my applications use.  I&amp;#8217;m not tied to the system of records, but since these data mover scripts are called from cron, they&amp;#8217;ll give a very accurate depiction of the environment.  I plan on blogging about this idea further.&lt;/p&gt;
&lt;p&gt;What is the effect?  In short, it&amp;#8217;s been marvelous.  I&amp;#8217;ve done in several weeks something that probably would have taken much longer to do in other frameworks.  It&amp;#8217;s exactly what the decision makers needed at the time, no more, no less.  The first taste has been enjoyed, and now they want more.  Ruby has been established as a tool that gets things done.  This will place dynamic languages into conversations in team AD team meetings where previously they would not have been.  I&amp;#8217;m really looking forward to extending on the work that I&amp;#8217;ve started there.&lt;/p&gt;
&lt;h4&gt;Exhortations and Encouragement&lt;/h4&gt;
&lt;p&gt;If you are looking to try to get Ruby or Rails in the door at your job, take heart, there is a bright future on the horizon.  Eyes are opening, discussions are being had, and Ruby is finding itself in some of the most unlikely places.  What can you do?  You can look for opportunities to present themselves.  Start small, write ruby scripts instead of bash scripts for some automated tasks.  Use ruby to parse files that get data moved from one system to another.  Prove to your boss, and their boss that not only is Ruby an incredibly beautiful and capable language, but it&amp;#8217;s also one that will provide them the quickest business value in their toolbox.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Stop Bitin'</title>
   <link href="http://www.grokblok.com/2007/05/25/stop-bitin.html" />
   <updated>2007-05-25T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/05/25/stop-bitin</id>
   <content type="html">&lt;h1&gt;Stop Bitin&amp;#8217;&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Let it be known, if you are following best practices and industry standards, you are not an industry leader, you are an industry follower.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;cite&gt;Me, discussing the &amp;#8220;apeing&amp;#8221; of other people&amp;#8217;s work as the way to go for every business decision&lt;/cite&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Woody's Commencement Speech</title>
   <link href="http://www.grokblok.com/2007/05/09/woody-s-commencement-speech.html" />
   <updated>2007-05-09T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/05/09/woody-s-commencement-speech</id>
   <content type="html">&lt;h1&gt;Woody&amp;#8217;s Commencement Speech&lt;/h1&gt;
&lt;p&gt;Graduates, Mr. President, faculty members, friends, and families of the graduates who have done so much to make this possible.&lt;/p&gt;
&lt;p&gt;Today is the greatest day of my life. &lt;/p&gt;
&lt;p&gt;And, Mr. President, you have certainly helped to make it that way.  I appreciate so much being able to come here and talk to a graduating class at The Ohio State University, a great, great, University.&lt;/p&gt;
&lt;p&gt;I would like to start with something I have used in almost every speech, and this is, &amp;#8220;paying forward.&amp;#8221;  And that is the thing that you folks can do with your great education for the rest of your life.&lt;/p&gt;
&lt;p&gt;Try to take that attitude toward life, that you&amp;#8217;re going to pay forward.  So seldom can we pay back because those who helped most&amp;#8212;your parents and other people&amp;#8212;will be gone, but you&amp;#8217;ll find that you do want to pay.  Emerson had something to say about that: &amp;#8220;You can pay back only seldom.&amp;#8221;  But he said, &amp;#8220;You can always pay forward, and you must pay line for line, deed for deed, and cent for cent.&amp;#8221;  He said, &amp;#8220;Beware of too much good accumulating in your palm or it will fast corrupt.&amp;#8221;  That was Emerson&amp;#8217;s attitude, and no one put it better than he did.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;d like to give you a little advice today.  I&amp;#8217;ll try not to give you too much, just a little bit.  One thing you cannot afford to do&amp;#8212;that&amp;#8217;s to feel sorry for yourself.  That&amp;#8217;s what leads to drugs, to alcohol, too those things that tear you apart.  In football we always said that the other team couldn&amp;#8217;t beat us.  We had to be sure that we didn&amp;#8217;t beat ourselves.  And that&amp;#8217;s what people have to do, too&amp;#8212;make sure they don&amp;#8217;t beat themselves.&lt;/p&gt;
&lt;p&gt;So many times you have found here at the University people who were smarter than you. I found them all the way through college and in football: bigger, faster, harder.  They were smarter people than I.  But you know what they couldn&amp;#8217;t do?  They couldn&amp;#8217;t outwork me.  I ran into opposing coaches who had much better backgrounds than I did and knew a lot more about football than I did.  But they couldn&amp;#8217;t work as long as I did.  They couldn&amp;#8217;t stick in there as long as I could.  You can outwork anybody.  Try it and you&amp;#8217;ll find out you can do it.&lt;/p&gt;
&lt;p&gt;And I had a great, great association with my coaches.  No one ever had better people than I did.  Or better football players, and we outworked our opponents.  The only way we got beaten was if we got a little fatheaded, if we didn&amp;#8217;t train well, if we had dissension on the squad, if we didn&amp;#8217;t recognize our purpose in life.  Those are the people you win with.&lt;/p&gt;
&lt;p&gt;Mr. Barthalow was my history and English teacher in junior high school.  He was the best teacher I ever had, and I am so honored to have him here today.  And to have my sister and my wife and friends, just as you&amp;#8217;re happy to have your parents here today, who have meant so much to you.  A family life is unbelievable.&lt;/p&gt;
&lt;p&gt;With good people, and this goes all the way back to my grandmother and all the way down the line, she didn&amp;#8217;t tell my dad, &amp;#8220;Now you go to the study table.&amp;#8221;  No, no.  She said, &amp;#8220;I&amp;#8217;ll meet you at the study table.&amp;#8221;  And that&amp;#8217;s where your good parents and you&amp;#8217;re good teachers are.&lt;/p&gt;
&lt;p&gt;But when you deal with youngsters, when you get into jobs of any kind, don&amp;#8217;t send people to the job.  Meet them there and help them do it.  And you&amp;#8217;ll be amazed how it works.&lt;/p&gt;
&lt;p&gt;In football we learn some wonderful, wonderful things.  And one of them is this:  When you get knocked down, which is plenty often, get right up in a hurry, just as quick as you can.  Do you know what to do then?  You probably need more strength.  Do you know where you get it?  You get it in the huddle.  You get it by going back and getting a new play and running that same play together with your teammates.  That &amp;#8220;together&amp;#8221; is the thing that gives you the buildup to get ready to go again.&lt;/p&gt;
&lt;p&gt;In your lifetimes, you&amp;#8217;ll find that how well you can work with people will depend on how quickly you can get back to them and get together.&lt;/p&gt;
&lt;p&gt;In football, you&amp;#8217;ll find out that nothing that comes easy is worth a dime.  As a matter of fact, I never saw a football player make a tackle with a smile on his face.  Never.&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s one more thing I want to get into, and then I will let you get graduated.  I know you want to do it.  That&amp;#8217;s what you came to college for.  That&amp;#8217;s what your parents sent you to college for.  We&amp;#8217;ve had a great, great heritage.  And so many times we&amp;#8217;ve been so luck that you can&amp;#8217;t believe it.  The odds against us were unbelievable.  In the battle of Salamis, 500 years before the birth of Christ, the Persians were attempting to conquer Greece and burned Athens down.  The old men and women and children were over on the beachhead at Salamis when the Persians came in to whip them.&lt;/p&gt;
&lt;p&gt;But the Greeks had been getting ready for ten years.  They had discovered silver on Mt. Laurium.  And they had taken that silver to help them make good, small ships that could move.  And they coaxed, they mousetrapped those Persians into the Bay of Salamis.  And then they attacked them with the metal prows on their ships.  They busted into them.  The Persians couldn&amp;#8217;t get out of the way: their big troop-carrying ships were too awkward.  So in one day, the Greeks sank the Persian fleet and drove them out of the Greek waters and all the way back to Persia.&lt;/p&gt;
&lt;p&gt;Then the Greeks got busy.  And you know what they did?  They went over and rebuilt their city and decided they needed a new type of government.  They even had a name for it: &amp;#8220;de-mo-cra-tos.&amp;#8221;  Have you ever head of de-mo-cra-tos?  People rule.  That was the beginning of democracy.  Right there on the Bay of Salamis is where we got this great system we have today.&lt;/p&gt;
&lt;p&gt;To give you an appreciation of de-mo-cra-tos, a few years ago the mayor of Stuttgart, Germany, was here, and I interviewed him on television.  He was the son of the great World War II general, Rommel. I asked him, &amp;#8220;Did your father agree with Hitler&amp;#8217;s order to stop on May 24, 1940, when they were within 40 miles of the English Channel?&amp;#8221;  And he said, &amp;#8220;Wait a minute, Coach.  There&amp;#8217;s something you&amp;#8217;re not thinking about  My father did not have choices at all.  He lived in a dictatorship.&amp;#8221;  He went on to say, &amp;#8220;I live in a democracy now, and you live in the greatest in the world, a great democracy.  You and everyone else in your country have choices and decisions to make almost every day.  My father didn&amp;#8217;t.&amp;#8221;&lt;/p&gt;
&lt;p&gt;That night when I got home, I started wondering why he had become so upset.  And then I recalled the last decision his father had made on this earth: the decision to take poison so that this boy and his mother could live.  You can appreciate democracy when you look at it that way.&lt;/p&gt;
&lt;p&gt;My next story is much more recent.  Another underdog victory.  The fellows who did it were your age.  They were four-to-one underdogs against Hitler&amp;#8217;s hordes at the Battle of Britain.  At that time even the American ambassador to England was reporting that he didn&amp;#8217;t think the British could win.  A matter of fact, every night the radio announcer would say with a mournful dirge in his voice, &amp;#8220;This is London.&amp;#8221;&lt;/p&gt;
&lt;p&gt;The British didn&amp;#8217;t look at it that way.  They all fought&amp;#8212;men, women, and the boys who flew those planes.  And they did something greater than that.  Their mathematicians and their scientists did something that the German arrogance didn&amp;#8217;t think could happen.  They had broken the German code&amp;#8212;the Enigma code.  So that those British, with their coding machines, the best in the world, broke that German code.&lt;/p&gt;
&lt;p&gt;So the British knew where the German forces were coming from.  They knew what time they&amp;#8217;d arrive.  They knew the point of attack, the formation, everything about them.  Then British fighter planes&amp;#8212;manned mainly by British but some Americans, some Polish, some Canadians&amp;#8212;would strike them just as they were ready to lower their bombs.&lt;/p&gt;
&lt;p&gt;Air Marshal Dowding didn&amp;#8217;t send the planes out over the Channel.  He didn&amp;#8217;t have that many.  He was outnumbered more than two-to-one.  He didn&amp;#8217;t want to waste time or fuel or strength.  These young fellows&amp;#8212;just your age, mind you&amp;#8212;wanted to get up there and fight and then get back for a couple hours to sleep under a shade tree and then go up and fight again.  That&amp;#8217;s the way they fought and won.&lt;/p&gt;
&lt;p&gt;And then after the British had won, General Dowding was criticized and fired.  Well, there have been a lot of great men fired&amp;#8212;MacArthur, Richard Nixon, a lot of them.  But rather than knighting him for what he had done&amp;#8212;and he had fought an unbelievably great war&amp;#8212;they sent him out recruiting.  He could very easily have straightened them out by telling them of the coding secret, but he wouldn&amp;#8217;t do that.  He knew it was going to be needed for the rest of the war.  And it wasn&amp;#8217;t told for 35 years after that.  This man went to his death keeping it sealed.  And that was Air Marshal Dowding, all honor to his great name.  All honor.&lt;/p&gt;
&lt;p&gt;They won.  They won for us because if Hitler had whipped England and got the English Navy(this was a year-and-a-half before we ever got into the war), we&amp;#8217;d have never joined the battle.  And Hitler would have been over here after us, you can believe that.&lt;/p&gt;
&lt;p&gt;So that&amp;#8217;s how fortunate we were to have those great British people.  And you know what the greatest man in the war said about those fliers?  He said, &amp;#8220;Never has so much been owed by so many to so few.&amp;#8221;  He was referring to those British fliers who won the Battle of Britain.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;d like to tell one more story.  And it&amp;#8217;s referred to still as a miracle, the miracle of Midway.  Underdogs!  You can&amp;#8217;t believe it.  The Japanese had eight battleships in the area.  We had eight too, but they were in the mud back at Pearl Harbor.  The Japanese had 14 cruisers; we had 5 heavy cruisers.  They had 45 destroyers; we had 15.  They had a whole flotilla of submarines and eight admirals in the area.  We had two, and one of them was a substitute.  But that substitute made some of the greatest decisions ever made in combat.&lt;/p&gt;
&lt;p&gt;Intelligence&amp;#8212;yes, it was there.  We had broken the Japanese code, and we knew they were coming in.  At lead, Admiral Nimitz at Pearl knew.  In Washington they didn&amp;#8217;t know.  They&amp;#8217;d have gotten mousetrapped like they did at Pearl Harbor six months before, but Admiral Nimitz knew.  He had a great man, a Commander Rocquefort, as his intelligence officer.  He had spent three years in Japan before the war studying their language, and now he broke their code.  He broke it so we knew they were coming to Midway.&lt;/p&gt;
&lt;p&gt;So Admiral Prugh and the substitute sent the planes off early because they knew the Japs were going for another strike on Midway.  They hit their carriers when they had gasoline hoses and land bombs and everything else all up on the decks.&lt;/p&gt;
&lt;p&gt;At 10:30 the Japanese were winning the war; at 10:36 they had lost it.  Three carriers&amp;#8212;the Kaga, the Akagi, and the Soryu&amp;#8212;were sunk in six minutes.  They didn&amp;#8217;t go down until the next day, but they were mortally wounded.  Ensign George Gaye was in the water for 30 hours and was the only one of his torpedo squadron who survived.  He told me he had to hold his eye open to see the battle.  His left eye was burned shut.  But he said, &amp;#8220;I held it open with my two hands, and I watched the battle.  We&amp;#8217;d hit it.&amp;#8221;  Do you know why we&amp;#8217;d hit it?  Teamwork.  Because George Gaye and Torpedo Squadrons Seven, Eight, and Nine went in there and were practically totally decimated.&lt;/p&gt;
&lt;p&gt;But you know what the Japanese did?  They brought in the air umbrella, the Japanese Zeros, to hit them.  When they came down, our high-level bombers overflew them, and in six minutes it was over.&lt;/p&gt;
&lt;p&gt;It took us three more years in the Pacific.  To win the war, Harry Truman had to use the atom bomb to save a million of our servicemen and a million Japanese lives.  You may have heard other opinions about that decision, but the truth is that he sat down with great men and he concluded that he had to use it to save our lives.  I never voted for Harry Truman, but I fought for that.&lt;/p&gt;
&lt;p&gt;Wars always bring bigger problems then they settle.  We can&amp;#8217;t have that.  It&amp;#8217;s up to us to have such a good democracy that other people want it too.  That&amp;#8217;s a job that will be in your future.&lt;/p&gt;
&lt;p&gt;Hard work, tough decisions, teamwork, family values, and paying ahead will help to change this world and make it a better place,  And I have no idea but that you have the attitude and the capacity and the ability here to go on and help make this a greater world.&lt;/p&gt;
&lt;p&gt;Godspeed in the meantime to all of you.  Thank you very much.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;Excerpts from Woody Hayes&amp;#8217; Commencement Speech at The Ohio State University, courtesy of Paul Hornung&amp;#8217;s Book&lt;/cite&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Vernon Freakin' Gholston</title>
   <link href="http://www.grokblok.com/2007/05/02/vernon-freakin-gholston.html" />
   <updated>2007-05-02T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/05/02/vernon-freakin-gholston</id>
   <content type="html">&lt;h1&gt;Vernon Freakin&amp;#8217; Gholston&lt;/h1&gt;
&lt;p&gt;&lt;img src="/images/vernon-freakin-gholston.jpg" alt="Vernon Freakin' Gholston" /&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Remote Connection to MySQL on Ubuntu</title>
   <link href="http://www.grokblok.com/2007/04/26/remote-connection-to-mysql-on-ubuntu.html" />
   <updated>2007-04-26T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/04/26/remote-connection-to-mysql-on-ubuntu</id>
   <content type="html">&lt;h1&gt;Remote Connection to MySQL on Ubuntu&lt;/h1&gt;
&lt;p&gt;Just a heads up to anyone who&amp;#8217;s trying to remotely connect to their Ubuntu-based MySQL server, you need to enable your server for remote networking.  Edit &lt;em&gt;/etc/mysql/my.cnf&lt;/em&gt; and look for this line, &lt;code&gt;bind-address 127.0.0.1&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Comment it out and reap the whirlwind!  Also as a note, I had trouble connecting remotely using &amp;#8216;root&amp;#8217; even though I made the necessary grants.  I&amp;#8217;m too lazy to track down and see if this is a feature or not.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Switching Up My IDE</title>
   <link href="http://www.grokblok.com/2007/04/18/switching-up-my-ide.html" />
   <updated>2007-04-18T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/04/18/switching-up-my-ide</id>
   <content type="html">&lt;h1&gt;Switching Up My &lt;span class="caps"&gt;IDE&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;That&amp;#8217;s it, I can&amp;#8217;t stand the &lt;em&gt;bloat&lt;/em&gt; that comes from all things &lt;a href="http:/java.sun.com"&gt;java&lt;/a&gt; anymore.  I&amp;#8217;ve been a pretty religious &lt;a href="http://radrails.org"&gt;Radrails&lt;/a&gt; user almost since it&amp;#8217;s inception.  I haven&amp;#8217;t been too frustrated with the recent lack of development because it&amp;#8217;s done what I need it to do.  About 4 months ago, I switched from using Radrails proper to loading it into an existing version of &lt;a href="http://www.eclipse.org"&gt;Eclipse&lt;/a&gt; as a plugin because I wanted to load some other types of plugins, like one for &lt;a href="http://www.erlang.com"&gt;Erlang&lt;/a&gt; support. (Thanks &lt;a href="http://www.pragmaticprogrammer.com/titles/jaerlang/"&gt;pragprog&lt;/a&gt;!)  This was serviceable, but since I&amp;#8217;m running Ubuntu in a &lt;a href="http://vmware.com"&gt;VMWare&lt;/a&gt; machine on my laptop I need to conserve all the &lt;span class="caps"&gt;RAM&lt;/span&gt; I can.  The &lt;span class="caps"&gt;JVM&lt;/span&gt; for Eclipse currently runs at &lt;strong&gt;86MB&lt;/strong&gt; when sitting still.  &lt;em&gt;Totally unacceptable&lt;/em&gt; for my needs.&lt;/p&gt;
&lt;p&gt;So, if I&amp;#8217;m off the Radrails/Eclipse stack, what should I use?  Another popular &lt;span class="caps"&gt;IDE&lt;/span&gt; is &lt;a href="http;//jedit.org"&gt;JEdit&lt;/a&gt;, but since the &amp;#8220;J&amp;#8221; stands for java, I&amp;#8217;m skipping it.  I&amp;#8217;ve decided to take the time and learn how to use &lt;a href="http://www.gnu.org/software/emacs/"&gt;emacs&lt;/a&gt;.  I love the emphasis on hotkeys and simplicity.  Since emacs has been around in some form since 1974, it&amp;#8217;s super stable too.  It just seems that there is so much more I can do, and quicker too, if I&amp;#8217;m just willing to take the time to learn.  I am.  Plus, there just seems to be some &lt;a href="http://en.wikipedia.org/wiki/Emacs"&gt;serious street-cred&lt;/a&gt; for telling people that you&amp;#8217;re an emacs user.&lt;/p&gt;
&lt;h3&gt;Installation Instructions for Ubuntu Edgy&lt;/h3&gt;
&lt;p&gt;Since most of the development that I&amp;#8217;ll be doing in emacs will be Ruby/Rails related, I&amp;#8217;ll want to install Dima&amp;#8217;s &lt;a href="http://dima-exe.ru/rails-on-emacs"&gt;Rails Emacs minor mode&lt;/a&gt;.  &lt;strong&gt;&lt;span class="caps"&gt;WARNING&lt;/span&gt;:&lt;/strong&gt; This requires emacs 22, which you&amp;#8217;ll either need to compile, or find a package for.  There is an Ubuntu package of emacs 22 currently available in the repositories.  It&amp;#8217;s called &lt;strong&gt;emacs-snapshot&lt;/strong&gt; and the package was built from &lt;span class="caps"&gt;CVS&lt;/span&gt; sources on 20060915, so it&amp;#8217;s not the latest sources, but it&amp;#8217;s pretty close.  &lt;a href="https://wiki.ubuntu.com/FeistyFawn"&gt;Feisty Fawn&lt;/a&gt;, which is supposed to release tomorrow (4/19) also has this package, but it&amp;#8217;s actually built on 20070407, so very recently.  I&amp;#8217;ll be upgrading to Feisty soon.  Just do the following to install:&lt;br /&gt;
&lt;pre&gt;sudo apt-get install emacs-snapshot&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;As a final note, I like to keep all my programming utilities on the Gnome menu together, under the &amp;#8220;Programming&amp;#8221; heading.  The emacs-snapshot package puts menu shortcut in Applications &amp;#8594; Accessories, so it required a little tweaking of the .desktop file.  Fire up your favorite editor and edit &lt;em&gt;/usr/share/applications/emacs-snapshot.desktop&lt;/em&gt;.  Change line that begins with the word &lt;strong&gt;Categories&lt;/strong&gt; to the following to move the shortcut to your Applications &amp;#8594; Programming section:&lt;br /&gt;
&lt;pre&gt;Categories=Application;Development;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ll take you through installing the Rails specific portions next time.  Just to give a comparison, Eclipse uses 86MB of &lt;span class="caps"&gt;RAM&lt;/span&gt; just sitting there, while emacs uses only &lt;strong&gt;11MB&lt;/strong&gt;.  I&amp;#8217;m looking forward to getting my &lt;a href="http://en.wikipedia.org/wiki/Emacs#Emacs_Pinky"&gt;emacs pinky&lt;/a&gt;  Why didn&amp;#8217;t I switch sooner?&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Emacs Railsy-ness</title>
   <link href="http://www.grokblok.com/2007/04/18/emacs-railsy-ness.html" />
   <updated>2007-04-18T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/04/18/emacs-railsy-ness</id>
   <content type="html">&lt;h1&gt;Emacs Railsy-ness&lt;/h1&gt;
&lt;p&gt;For the most part, I followed the instructions at &lt;a href="http://dima-exe.ru/rails-on-emacs"&gt;Dima&amp;#8217;s Rails On Emacs page&lt;/a&gt;.  This worked for the most part, however there were several gotchas that crept up as I was working my way through.  Here&amp;#8217;s what I did, that might be different than the other tutorials:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;I placed the &lt;code&gt;snippets.el&lt;/code&gt; and &lt;code&gt;find-recursive.el&lt;/code&gt; into the folder that I checked out the Rails on Emacs code.  (Perhaps this is what he meant by install, but I originally had them in .emacs.d, and that was wrong.) ruby-inf.el did, however remain in .emacs.d&lt;/li&gt;
	&lt;li&gt;I reinstalled &lt;em&gt;ruby&lt;/em&gt; and installed &lt;em&gt;ruby-elisp&lt;/em&gt; from synaptic.  I did this because I read that when you install ruby on debian/ubuntu it will automatically install the necessary emacs modes.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Tip&lt;/strong&gt; After opening emacs, change your buffer to &amp;#8220;Messages&amp;#8221; it will have all the init information, and I found it very handy for debugging.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I&amp;#8217;m also going to install the &lt;a href="http://ecb.sourceforge.net/" title="ECB"&gt;Emacs Code Browser&lt;/a&gt;, which is supposed to provide some parsing of files to show methods, and other view-related functions.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s my .emacs file:&lt;/p&gt;
&lt;p&gt;Liquid error: No such file or directory &amp;#8211; /usr/bin/pygmentize -l cl -O encoding=utf-8 -f html&lt;/p&gt;
&lt;h3&gt;Resourceful Links&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://dima-exe.ru/rails-on-emacs"&gt;Rails on Emacs instructions&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://rubyforge.org/projects/emacs-rails/"&gt;Rails on Emacs Rubyforge&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://wiki.rubyonrails.org/rails/pages/HowToUseEmacsWithRails"&gt;HowToUseEmacsWithRails on Rails wiki&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
 </entry>
 
 <entry>
   <title>Make No Little Plans</title>
   <link href="http://www.grokblok.com/2007/04/16/make-no-little-plans.html" />
   <updated>2007-04-16T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/04/16/make-no-little-plans</id>
   <content type="html">&lt;h1&gt;Make No Little Plans&lt;/h1&gt;
&lt;p&gt;Make no little plans. They have no magic to stir men’s blood and probably themselves will not be realized. Make big plans; aim high in hope and work, remembering that a noble, logical diagram once recorded will never die, but long after we are gone will be a living thing, asserting itself with ever-growing insistency. Remember that our sons and grandsons are going to do things that would stagger us. Let your watchword be order and your beacon beauty. Think big.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;Daniel Burnham, Chicago architect. (1864-1912) via (Signal vs. Noise)&lt;/cite&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Wu-Tang Web2.0</title>
   <link href="http://www.grokblok.com/2007/04/11/wu-tang-web-20.html" />
   <updated>2007-04-11T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/04/11/wu-tang-web-20</id>
   <content type="html">&lt;h1&gt;Wu-Tang Web2.0&lt;/h1&gt;
&lt;p&gt;&lt;img src="/images/wu-tang-web20.jpg" src="Wu-Tang Web 2.0" /&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Why Microsoft is Dead</title>
   <link href="http://www.grokblok.com/2007/04/10/why-microsoft-is-dead.html" />
   <updated>2007-04-10T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/04/10/why-microsoft-is-dead</id>
   <content type="html">&lt;h1&gt;Why Microsoft is Dead&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Technology companies are projectiles.  And because of that you can call them dead long before any problems show up on the balance sheet.  Relevance may lead revenues by five or even ten years.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;cite&gt;Paul Graham on Why Microsoft is Dead&lt;/cite&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Primal Iron</title>
   <link href="http://www.grokblok.com/2007/04/04/primal-iron.html" />
   <updated>2007-04-04T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/04/04/primal-iron</id>
   <content type="html">&lt;h1&gt;Primal Iron&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Iron is primal.  Heft a fine blade, a Smith &amp;amp; Wesson, an AK-47, a kettlebell.  Your blood will speed up and your senses will sharpen as your warrior ancestors&amp;#8217; have before you.  A man cannot help it.  Rudyard Kipling was right: &amp;#8220;Iron-Cole Iron-is master of men all!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;cite&gt;&lt;a href="http://www.dragondoor.com/pavel_bio.html"&gt;Pavel Tsatsouline&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Please, One more year, Greg.</title>
   <link href="http://www.grokblok.com/2007/04/03/please-one-more-year-greg.html" />
   <updated>2007-04-03T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/04/03/please-one-more-year-greg</id>
   <content type="html">&lt;h1&gt;Please, One more year, Greg.&lt;/h1&gt;
&lt;p&gt;&lt;img src="/images/please-greg.jpg" alt="Please, Greg" /&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Sudoku vs Crosswords for Career Advancement</title>
   <link href="http://www.grokblok.com/2007/03/28/sudoku-vs-crosswords.html" />
   <updated>2007-03-28T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/03/28/sudoku-vs-crosswords</id>
   <content type="html">&lt;h1&gt;Sudoku vs Crosswords for Career Advancement&lt;/h1&gt;
&lt;p&gt;One important part of my professional life is constantly questing for ways to enhance my abilities and skills.  I think an unused brain is a dull brain and business requires sharpness at all times.  One area that I focus on for this is problem/puzzle solving.  I do sudoku, but  I&amp;#8217;ve never had the desire to do crosswords.  &lt;a href="http://dablog.rubypal.com/"&gt;David Black&lt;/a&gt; got me thinking about the nature of both types of puzzles in a post he made on &lt;a href="http://dablog.rubypal.com/2007/2/25/sudoku-solutions-who-cares"&gt;sudoku solutions&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.websudoku.com"&gt;Sudoku&lt;/a&gt; is more of an introspective puzzle, it&amp;#8217;s cleaner, it&amp;#8217;s lighter, and my feeling is that it fits in perfectly with Japanese culture.  I solve sudoku internally.  There is no context needed, I look at the puzzle, and everything that I need is right there.  &lt;a href="http://www.webcrosswords.com"&gt;Crossword puzzles&lt;/a&gt; are focused on the external, they are word oriented.  Each clue has a context around it that I need to have awareness of.  This could be word meaning, cultural history, or even the ability to ask someone else for a quick clue.  It seems that sudoku would be good for you to sharpen your problem-solving skills, however crosswords would seem to enhance your context-solving skills.  This leads me further into my discovery of what goes into &amp;#8220;good&amp;#8221; dialogue within the context of effectively communicating with my clients/customers as to their wishes.  I hope to be posting more on these theories in the weeks to come.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Props to Dan for his Ruby-Fu</title>
   <link href="http://www.grokblok.com/2007/03/26/props-to-dan-for-his-ruby-fu.html" />
   <updated>2007-03-26T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/03/26/props-to-dan-for-his-ruby-fu</id>
   <content type="html">&lt;h1&gt;Props to Dan for his Ruby-Fu&lt;/h1&gt;
&lt;p&gt;I just wanted to give a shoutout to &lt;a href="http://www.dcmanges.com/"&gt;Dan&lt;/a&gt; for his &lt;a href="http://weblog.workingwithrails.com/2007/3/26/hackfest-winner-interview-dan-manges"&gt;interview&lt;/a&gt; on &lt;a href="http://www.workingwithrails.com"&gt;Working with Rails&lt;/a&gt;.  He finished 2nd in their Hackfest, and as a result, is going to RailsConf for free.  Of course, my favorite part of the interview had to be the answer to the question about how Dan got involved with Rails:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When I started working for JPMorganChase I did web development in &lt;span class="caps"&gt;PHP&lt;/span&gt;. In the fall of 2005 Joshua Schairbaum, my colleague, started using Rails and really liked it. He encouraged me to check it out, and soon we were using Rails for all our small projects. After successful delivery of several small web apps, Josh was able to sell Rails to upper management, and we now use Rails for a very large access administration application.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The &amp;#8220;sell&amp;#8221; to upper management went pretty smoothly due to the fact that we were delivering, in no small part to Dan&amp;#8217;s efforts.  Neither he, nor I work at the monolithic bank anymore, but I think he&amp;#8217;s going to be making some waves at &lt;a href="http://www.thoughtworks.com"&gt;Thoughtworks&lt;/a&gt;, just as I plan to do at my &lt;a href="http://www.cardinal.com"&gt;new employer&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I just want to say thanks, Dan!  Also, in the interview, he mentions a &lt;a href="http://code.google.com/p/scope-out-rails/"&gt;plugin&lt;/a&gt; by our good friend, &lt;a href="http://xandrews.blogspot.com"&gt;John X Andrews&lt;/a&gt;.  I highly recommend that plugin for all your scoping needs.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Plying Your Trade</title>
   <link href="http://www.grokblok.com/2007/03/26/plying-your-trade.html" />
   <updated>2007-03-26T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/03/26/plying-your-trade</id>
   <content type="html">&lt;h1&gt;Plying Your Trade&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;In truth, I’ve found that any day’s routine interruptions and distractions don’t much hurt a work in progress and may actually help it in some ways. It is, after all, the dab of grit that seeps into an oyster’s shell that makes the pearl, not pearl-making seminars with other oysters.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;cite&gt;Stephen King, on the right environment for plying your trade&lt;/cite&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Flash deprecation warning</title>
   <link href="http://www.grokblok.com/2007/03/26/flash-deprecation-warning.html" />
   <updated>2007-03-26T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2007/03/26/flash-deprecation-warning</id>
   <content type="html">&lt;h1&gt;Flash deprecation warning&lt;/h1&gt;
&lt;p&gt;While cleaning out my gmail inbox, I ran across an email from my friend, &lt;a href="http://blog.dcmanges.com/"&gt;Dan Manges&lt;/a&gt;.  We had been talking about the new deprecation warnings in Rails and I had mentioned that I kept getting a warning in my logs and tests that said:&lt;br /&gt;
&lt;pre&gt;&lt;span class="caps"&gt;DEPRECATION&lt;/span&gt; &lt;span class="caps"&gt;WARNING&lt;/span&gt;: @flash is deprecated!&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;This was strange since the only usage that I had in either my controllers or views was like this: &lt;code&gt;flash[:success]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Well, the point of this little story is that Dan found a &lt;a href="http://http://dev.rubyonrails.org/ticket/7553"&gt;ticket&lt;/a&gt; describing this phenomena in detail.  Here&amp;#8217;s what happens, when you have a partial named _flash.rhtml that calls your flash object, an instance variable is created for the name of the partial, like normal.  The problem was that the deprecation warning just looked for the creation of an instance variable named &amp;#8220;flash&amp;#8221;, not necessarily if it represented a flash object.&lt;/p&gt;
&lt;p&gt;A &lt;a href="http://dev.rubyonrails.org/changeset/6399"&gt;patch&lt;/a&gt; was applied to edge 2 weeks ago that should fix this behavior.  Thanks for the heads up, Dan!  I&amp;#8217;m not sure what the best practice around this should be.  I&amp;#8217;d imagine that the most common name for a partial that &lt;em&gt;only&lt;/em&gt; contains your flash views would be _flash.rhtml, but perhaps there would be a more descriptive name for it, in order to get rid of some &amp;#8220;coupling&amp;#8221;.  Perhaps something like _notifier.rhtml would be better.&lt;/p&gt;
&lt;p&gt;Any thoughts?&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Eagle Nebula</title>
   <link href="http://www.grokblok.com/2007/03/08/eagle-nebula.html" />
   <updated>2007-03-08T00:00:00-08:00</updated>
   <id>http://www.grokblok.com.com/2007/03/08/eagle-nebula</id>
   <content type="html">&lt;h1&gt;Eagle Nebula&lt;/h1&gt;
&lt;p&gt;&lt;img src="/images/eagle-nebula.jpg" alt="Eagle Nebula" /&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Rails World Domination Tour '07</title>
   <link href="http://www.grokblok.com/2007/03/02/rails-world-domination-tour-07.html" />
   <updated>2007-03-02T00:00:00-08:00</updated>
   <id>http://www.grokblok.com.com/2007/03/02/rails-world-domination-tour-07</id>
   <content type="html">&lt;h1&gt;Rails World Domination Tour &amp;#8217;07&lt;/h1&gt;
&lt;p&gt;As heralded &lt;a href="http://blog.rubyonrails.org/2007/3/1/computerworld-names-rails-1-tech-to-know-in-07"&gt;elsewhere&lt;/a&gt;, &lt;a href="http://computerworld.com/index.jsp"&gt;ComputerWorld&lt;/a&gt; has named &lt;a href="http://rubyonrails.org"&gt;Rails&lt;/a&gt; the &lt;a href="http://computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;articleId=9011969&amp;amp;intsrc=hm_ts_head"&gt;#1 technology&lt;/a&gt; to know in 2007.  To quote:&lt;br /&gt;
bq. &amp;#8230;it[Rails] can have a dramatic impact on the speed at which a Web production team is able to build and maintain &lt;strong&gt;enterprise&lt;/strong&gt; Web sites and applications.&lt;/p&gt;
&lt;p&gt;The emphasis in the quote is mine, and I think it&amp;#8217;s very telling that Rails is being billed as an &lt;del&gt;enterprise&lt;/del&gt; solution for companies because of it&amp;#8217;s speed and maintainability.  That pretty much sums up my experience with Rails thus far, and I think the first fruits of early adopters are starting to be harvested.  Being a member of the &lt;a href="http://dev.rubyonrails.org/browser/tags/rel_0-13-0"&gt;second wave&lt;/a&gt;, I feel that I&amp;#8217;m in a great position to be able to speak with authority on ways to ease Rails in the door at &lt;a href="http://www.chase.com"&gt;large corporations&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Forward thinking companies have already gotten onboard and perhaps have several developers evaluating Rails in order to make a strategic decision.  I think this quote from the article details what they will find:&lt;br /&gt;
bq. Equal parts design philosophy and development environment, Rails offers developers a few key code-level advantages when constructing database-backed Web applications.&lt;/p&gt;
&lt;p&gt;If you are running or working in a large monolithic corporation and you&amp;#8217;re not &lt;em&gt;at least&lt;/em&gt; evaluating Rails&amp;#8217; position in your company, &lt;strong&gt;why not&lt;/strong&gt;?&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Cassini Project</title>
   <link href="http://www.grokblok.com/2007/03/02/cassini-project.html" />
   <updated>2007-03-02T00:00:00-08:00</updated>
   <id>http://www.grokblok.com.com/2007/03/02/cassini-project</id>
   <content type="html">&lt;h1&gt;Cassini Project&lt;/h1&gt;
&lt;p&gt;&lt;img src="/images/cassini-project.jpg" alt="Cassini Project" /&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>What Not To Do</title>
   <link href="http://www.grokblok.com/2007/03/01/what-not-to-do.html" />
   <updated>2007-03-01T00:00:00-08:00</updated>
   <id>http://www.grokblok.com.com/2007/03/01/what-not-to-do</id>
   <content type="html">&lt;h1&gt;What Not To Do&lt;/h1&gt;
&lt;p&gt;Should an employee that you want to keep ever decide to leave your corporation, don&amp;#8217;t let your big pitch to keep them start with the following:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Are you sure you won&amp;#8217;t change your mind?&lt;/strong&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Meeting Minutes</title>
   <link href="http://www.grokblok.com/2007/03/01/meeting-minutes.html" />
   <updated>2007-03-01T00:00:00-08:00</updated>
   <id>http://www.grokblok.com.com/2007/03/01/meeting-minutes</id>
   <content type="html">&lt;h1&gt;Meeting Minutes&lt;/h1&gt;
&lt;p&gt;&lt;img src="/images/meeting-minutes.jpg" alt="Meeting Minutes" /&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Software Craftsmenship</title>
   <link href="http://www.grokblok.com/2007/02/27/software-craftsmenship.html" />
   <updated>2007-02-27T00:00:00-08:00</updated>
   <id>http://www.grokblok.com.com/2007/02/27/software-craftsmenship</id>
   <content type="html">&lt;h1&gt;Software Craftsmenship&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;If you want to build a ship, don&amp;#8217;t drum up people to collect wood and don&amp;#8217;t assign them tasks and work, but rather teach them to long for the endless immensity of the sea.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;cite&gt;&lt;a href="http://en.wikipedia.org/wiki/Antoine_de_Saint-Exupery"&gt;Antoine de Saint-Exupery&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Are you LinkedIn?</title>
   <link href="http://www.grokblok.com/2007/02/23/are-you-linkedin.html" />
   <updated>2007-02-23T00:00:00-08:00</updated>
   <id>http://www.grokblok.com.com/2007/02/23/are-you-linkedin</id>
   <content type="html">&lt;h1&gt;Are you LinkedIn?&lt;/h1&gt;
&lt;p&gt;I&amp;#8217;m really not into any of the social aspects of the web at a macro-level.  I&amp;#8217;ve never been to MySpace, I don&amp;#8217;t IM, it&amp;#8217;s just not my thing.  Recently, I&amp;#8217;ve discovered &lt;a href="http://www.linkedin.com"&gt;LinkedIn&lt;/a&gt;, and I have to say that I really enjoy it.  I&amp;#8217;m not sure that I would ever use the site itself for a job search, but I would however use it to meet new people who I might be able to help in the future, and vice versa.  One of the coolest features thus far is the ability to search my gmail contacts list and send invitations to my contacts asking them to connect with me.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.guykawasaki.com"&gt;Guy Kawasaki&lt;/a&gt; has written a great article about some of the benefits of using LinkedIn.  One of the more compelling reasons that I think are increasing your visibility, but that also brings me to another problem.  I know have profiles on LinkedIn, Technorati, WorkingWithRails, and &amp;#8230;. am I missing any?  I&amp;#8217;m wishing there were a single This-Is-Me online identity manager for the web.  Perhaps I just need to pick a horse and go with it.&lt;/p&gt;
&lt;p&gt;You can find the article here: &lt;a href="http://www.typepad.com/t/trackback/7378582"&gt;http://blog.guykawasaki.com/2007/01/ten_ways_to_use.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can find my public profile &lt;a href="http://www.linkedin.com/in/jschairb"&gt;here&lt;/a&gt;.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>String Includes Enumerable</title>
   <link href="http://www.grokblok.com/2007/02/16/string-extends-enumerable.html" />
   <updated>2007-02-16T00:00:00-08:00</updated>
   <id>http://www.grokblok.com.com/2007/02/16/string-extends-enumerable</id>
   <content type="html">&lt;h1&gt;String Includes Enumerable&lt;/h1&gt;
&lt;p&gt;While working on a little side project, I&amp;#8217;m using Rails app to do a lot of system calls and grabbing the response of &lt;span class="caps"&gt;STDOUT&lt;/span&gt; or &lt;span class="caps"&gt;STDERR&lt;/span&gt;.  One of the things that has made this really easy is that in Ruby, String includes the Enumerable module, which treats the string as an array.  This may not be a surprise, except that each item is separated out in the array by a new line character &amp;#8220;\n&amp;#8221;.  This allows the usage of the &amp;#8220;each&amp;#8221; method and all 28 other methods that come with &lt;a href="http://www.ruby-doc.org/core/classes/Enumerable.html"&gt;Enumerable&lt;/a&gt; objects.&lt;/p&gt;
&lt;p&gt;Liquid error: No such file or directory &amp;#8211; /usr/bin/pygmentize -l ruby -O encoding=utf-8 -f html&lt;/p&gt;
&lt;p&gt;If you want to iterate over the string character by character then you would have to iterate by byte and show the character value (the each_byte method returns the &lt;span class="caps"&gt;ASCII&lt;/span&gt; character number for the given character.  You might do something like this to change all &amp;#8220;a&amp;#8221; characters to &amp;#8220;e&amp;#8221; characters:&lt;br /&gt;
Liquid error: No such file or directory &amp;#8211; /usr/bin/pygmentize -l ruby -O encoding=utf-8 -f html&lt;/p&gt;
&lt;p&gt;In Rails, there&amp;#8217;s a method called &lt;a href="http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Unicode.html#M000417"&gt;chars&lt;/a&gt;&amp;quot;&lt;br /&gt;
which does some cool things by proxying your string to &lt;span class="caps"&gt;UTF&lt;/span&gt;-8-safe characters.&lt;/p&gt;
&lt;p&gt;&lt;span class="caps"&gt;UPDATED&lt;/span&gt;:  &lt;a href="http://www.dcmanges.com"&gt;Dan Manges&lt;/a&gt; pointed out that I had a nonsensical example for each_byte.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Gem Survey</title>
   <link href="http://www.grokblok.com/2007/02/12/gem-survey.html" />
   <updated>2007-02-12T00:00:00-08:00</updated>
   <id>http://www.grokblok.com.com/2007/02/12/gem-survey</id>
   <content type="html">&lt;h1&gt;Gem Survey&lt;/h1&gt;
&lt;p&gt;As seen with &lt;a href="http://weblog.techno-weenie.net/2007/2/10/gem-survey"&gt;techno weenie,&lt;/a&gt; &lt;a href="http://www.chadfowler.com/2007/2/11/show-us-your-gems"&gt;Chad Fowler,&lt;/a&gt; and originally, &lt;a href="http://clarkware.com/cgi/blosxom/2007/02/10#GemSurvey"&gt;Mike Clark.&lt;/a&gt; I love lists.  Realistically, I&amp;#8217;d say that I only use about 20 of these either directly (mongrel, hpricot, rails &amp;amp; et al, rake, piston) or through dependencies (tzinfo, daemons, net:ssh).&lt;/p&gt;
&lt;pre&gt;
actionmailer (1.3.1, 1.2.5)
actionpack (1.13.1, 1.12.5)
actionwebservice (1.2.1, 1.1.6)
activerecord (1.15.1, 1.14.4)
activesupport (1.4.0, 1.3.1)
aws-s3 (0.3.0)
BlueCloth (1.0.0)
builder (2.0.0)
camping (1.5)
capistrano (1.4.0, 1.3.1, 1.2.0)
cheat (1.2.1, 1.0.2)
color-tools (1.3.0)
daemons (1.0.4, 1.0.3, 0.4.4, 0.4.2)
deprec (1.2.2, 1.2.1)
facets (1.8.8, 1.4.5)
gem_plugin (0.2.1)
gen (0.41.0)
glue (0.41.0)
haml (1.0.3)
hoe (1.1.6)
hpricot (0.5, 0.4)
markaby (0.5)
metaid (1.0)
mime-types (1.15)
model_security_generator (0.0.9)
mongrel (0.3.13.4)
mongrel_cluster (0.2.1)
needle (1.3.0)
net-sftp (1.1.0)
net-ssh (1.0.10)
newgem (0.7.1)
nitro (0.41.0)
og (0.41.0)
oz (0.1.1, 0.1)
pdf-writer (1.1.3)
piston (1.2.1, 1.1.1)
radiant (0.5.2)
radius (0.5.1)
rails (1.2.1, 1.1.6)
railsmachine (0.1.2)
rake (0.7.1)
rapt (0.2.1)
rcov (0.7.0.1)
RedCloth (3.0.4)
redgreen (1.2)
rspec (0.7.5, 0.7.4)
ruby-breakpoint (0.5.0)
rubyforge (0.3.2)
rubygems-update (0.9.1)
rubyzip (0.9.1)
sources (0.0.1)
sqlite3-ruby (1.2.0)
svn_conf_generator (0.0.3)
tattle (1.0.1)
termios (0.9.4)
transaction-simple (1.3.0)
tzinfo (0.3.3)
wirble (0.1.2)
xml-simple (1.0.10)
ZenTest (3.4.3)
&lt;/pre&gt;</content>
 </entry>
 
 <entry>
   <title>On the Rails podcast</title>
   <link href="http://www.grokblok.com/2006/12/29/on-the-rails-podcast.html" />
   <updated>2006-12-29T00:00:00-08:00</updated>
   <id>http://www.grokblok.com.com/2006/12/29/on-the-rails-podcast</id>
   <content type="html">&lt;h1&gt;On the Rails podcast&lt;/h1&gt;
&lt;p&gt;It&amp;#8217;s really old news, but my coworker, &lt;a href="http://dcmanges.com"&gt;Dan Manges&lt;/a&gt; and I were featured on the &lt;a href="http://podcast.rubyonrails.org"&gt;Official Ruby on Rails podcast&lt;/a&gt;. This was a great opportunity to showcase for the Rails community some of the cool things that we&amp;#8217;re able to do inside the bank.  You can download the interview directly from &lt;a href="http://podcast.rubyonrails.org/programs/1/episodes/josh_shairbaum_and_dan_manges"&gt;here&lt;/a&gt;.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Connecting people through BuildV1</title>
   <link href="http://www.grokblok.com/2006/07/31/connecting-people-through-buildv1.html" />
   <updated>2006-07-31T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2006/07/31/connecting-people-through-buildv1</id>
   <content type="html">&lt;h1&gt;Connecting people through BuildV1&lt;/h1&gt;
&lt;p&gt;I want to announce a side project that I&amp;#8217;ve been working on in my spare time.  It&amp;#8217;s called &lt;a href="http://www.buildv1.com/"&gt;BuildV1&lt;/a&gt; and it&amp;#8217;s all about connecting people who want to work with startups or entrepreneurs.  It&amp;#8217;s about making that initial connection with someone on the road to &amp;#8230; well, wherever you want to go.  You can read the rationale behind this on the &lt;a href="http://blog.buildv1.com/"&gt;BuildV1 blog&lt;/a&gt;  Eric Stephens, my partner in BuildV1 describes what we&amp;#8217;re trying to do like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I see BuildV1 posts as advertisements that start conversations. My hope is that reaching out to entrepreneurs across the internet will yield more high quality conversations that one can find solely reaching out to their private network of friends and colleagues.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Eric and I are a perfect example of this, as he lives in New York City, while I live in &lt;a href="http://ohiostatebuckeyes.com"&gt;Columbus, Ohio&lt;/a&gt;. I contacted him about another project, and through our conversations we noticed that we were both looking for the same community of people that had the entrepreneurial spirit.  We came up with the BuildV1 idea, Eric did all the templates, and I did all the Railin&amp;#8217;.  Anyways, if you&amp;#8217;re interested in something like this, please do &lt;a href="http://www.buildv1.com/posts/join"&gt;post&lt;/a&gt;, and best of luck to you in your entrepreneurial journey.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Rails in the Enterprise</title>
   <link href="http://www.grokblok.com/2006/07/21/rails-in-the-enterprise.html" />
   <updated>2006-07-21T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2006/07/21/rails-in-the-enterprise</id>
   <content type="html">&lt;h1&gt;Rails in the Enterprise&lt;/h1&gt;
&lt;p&gt;Last Monday, Dan Manges and I gave a talk at the Columbus Ruby Brigade about some techniques for bringing Rails into the enterprise.  I believe that there are 2 ways of doing this.  The first is attempting to make Rails a little more &amp;#8220;enterprisey&amp;#8221;, and I don&amp;#8217;t mean sacrificing a lot of the things that make Rails great, but modifying some of it&amp;#8217;s behaviors, such as  support for composite keys and that type of thing.  Basically, all the things that Dave Thomas talked about at RailsConf this year.  The second approach is a bit more subversive, and that is to make the enterprise environment a little more Rails-like.  It&amp;#8217;s culture changing, and that&amp;#8217;s what we focus on.  This is the approach that would appear to be favored by &lt;span class="caps"&gt;DHH&lt;/span&gt;. I think both ways are valid because they have the same ends, just different means.  Each situation is different and this approach works for us at JPMorganChase.  So without further ado, here are the slides from the presentation, and I hope to have a podcast of our presentation edited by this weekend.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span class="caps"&gt;UPDATE&lt;/span&gt;&lt;/b&gt; The podcast is now available.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;PowerPoint: &lt;a href="http://blog.singularitytech.com/crb-enterprise-rails.zip"&gt;crb-enterprise-rails.zip&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Podcast: &lt;a href="http://blog.singularitytech.com/crb-enterprise-rails-podcast.mp3"&gt;crb-enterprise-rails-podcast.mp3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br/&gt;This work is licensed under a &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.5/"&gt;Creative Commons Attribution-NonCommercial-ShareAlike 2.5  License&lt;/a&gt;.&lt;rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&gt;&lt;br /&gt;
	&lt;Work rdf:about=""&gt;&lt;br /&gt;
		&lt;license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.5/" /&gt;&lt;br /&gt;
	&lt;dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" /&gt;&lt;/p&gt;
&lt;/Work&gt;
	&lt;License rdf:about="http://creativecommons.org/licenses/by-nc-sa/2.5/"&gt;&lt;permits rdf:resource="http://web.resource.org/cc/Reproduction"/&gt;&lt;permits rdf:resource="http://web.resource.org/cc/Distribution"/&gt;&lt;requires rdf:resource="http://web.resource.org/cc/Notice"/&gt;&lt;requires rdf:resource="http://web.resource.org/cc/Attribution"/&gt;&lt;prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/&gt;&lt;permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/&gt;&lt;requires rdf:resource="http://web.resource.org/cc/ShareAlike"/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt;</content>
 </entry>
 
 <entry>
   <title>Kudos from the Bosses Bosses Boss</title>
   <link href="http://www.grokblok.com/2006/05/19/kudos-from-the-bosses-bosses-boss.html" />
   <updated>2006-05-19T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2006/05/19/kudos-from-the-bosses-bosses-boss</id>
   <content type="html">&lt;h1&gt;Kudos from the Bosses Bosses Boss&lt;/h1&gt;
&lt;p&gt;This message was posted by my company&amp;#8217;s &lt;span class="caps"&gt;CTO&lt;/span&gt; this morning on the corporate internet, accessible to over 100,000 employees.  The names and stats have been changed to protect the innocent.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We continue to see the four pillars &amp;#8211; - client focus, speed, efficiency and delivery &amp;#8211; - paying dividends in our organization.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Josh Schairbaum &amp;amp; Dan Manges engaged these precepts in their recent efforts on the &lt;del&gt;IT&lt;/del&gt; web tools project for Production/ Operations and Risk Management.  They have done an excellent job in delivering quality with speed.As a follow-up to their experience in developing the daily snapshot to our production and operations performance via the Production Site, they were asked to use their production skills to bring life to our Risk Management Agenda with core metrics.  For the Risk challenge, Josh and Dan took the approach of &amp;#8220;convention over configuration&amp;#8221; to achieve speed in developing the web-based Risk Metrics Site with &amp;#8220;Ruby on Rails&amp;#8221; on a Linux Sever. Josh and Dan&amp;#8217;s efforts tracked the amazing progress that the Risk management accomplished over the last 45 days.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Josh &amp;amp; Dan will continue their efforts through our web strategy in 2006; however, the biggest priority on their plate will be the &lt;del&gt;Supersecret next application&lt;/del&gt; that is targeted for September 30, 2006. Great job to both teams!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Needless to say, I&amp;#8217;m pretty pleased about the progress being made. Some of you might ask why the big deal about Linux?  Well, it&amp;#8217;s the only one in the environment. :) I also had another article posted on the intranet about how I keep my inbox clean.  I promise to make another post sometime soon concerning our adventures with Rails.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Singularity of Purpose... The Elements of Peak Performance</title>
   <link href="http://www.grokblok.com/2006/05/16/singularity-of-purpose-the-elements-of-peak-performance.html" />
   <updated>2006-05-16T00:00:00-07:00</updated>
   <id>http://www.grokblok.com.com/2006/05/16/singularity-of-purpose-the-elements-of-peak-performance</id>
   <content type="html">&lt;h1&gt;Singularity of Purpose&amp;#8230; The Elements of Peak Performance&lt;/h1&gt;
&lt;p class="meta"&gt;May 16, 2006&lt;/p&gt;
&lt;p&gt;Once of the benefits of never throwing anything is away is going back and finding pieces of information that you&amp;#8217;ve acquired over the years.  For instance, I was cleaning out my garage this weekend when I stumbled upon a packet from a seminar titled, &amp;#8220;Peak Performance for Wrestling: Sport Psychology Training for Mental Toughness&amp;#8221; given by Dr. Chris Stankovich, of &lt;a href="http://www.championathletic.com"&gt;Champion Athletic Consulting&lt;/a&gt;.   This was a great seminar and some of these principles I&amp;#8217;ve tried to translate for myself off the mat and into the cubicle.&lt;/p&gt;
&lt;p&gt;The basic gist of the seminar was establishing peak performance in wrestling by setting goals of varying length while focusing on 3 elements: physical, technical, and mental.  As I was reading this, it brought to my mind the benefits that those of us in the technology field could take as lessons learned. The analogy may be a stretch for some, but stick with me.  No group of individuals have a more focused &amp;#8220;singularity of purpose&amp;#8221; than wrestlers.  I think it could be said that those in technology or even business rely on many of the same principles.  While most of us are part of a team, when all the fat is boiled it, it&amp;#8217;s all about individual performance.Most of the things Dr. Stankovich discusses are things you can can find in about every managerial book out there, but his focus on athletic performance places a different lens on it.  Just in case everyone else is like me and needs &lt;a href="http://www.43folders.com/2006/04/06/dr-johnson/"&gt;gently reminded&lt;/a&gt; of things I already know rather than told things I don&amp;#8217;t, I&amp;#8217;ll go over a couple aspects of Dr. Stankovich&amp;#8217;s goal-setting philosphy.  Of course, he mentions that goals should be specific, measurable, and realistic, but he also says to set goal ladders and set goals based on process versus outcome.&lt;/p&gt;
&lt;h2&gt;Physical&lt;/h2&gt;
&lt;p&gt;This is the most tangible area of peak performance prepartion, but is probaly the most overlooked.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;I will get at least 7 hours of sleep a night.&lt;/li&gt;
	&lt;li&gt;I will work 3 hours everyday without &lt;span class="caps"&gt;AIM&lt;/span&gt;, phones, or email.&lt;/li&gt;
	&lt;li&gt;I will remove printed articles from my desk within 2 days of reading them.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Technical&lt;/h2&gt;
&lt;p&gt;This aspect of peak performance revolves on being up-to-date with your technical skills.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;I will subscribe to the &lt;a href="http://dev.rubyonrails.org/timeline?milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;max=50&amp;amp;daysback=90&amp;amp;format=rss"&gt;Rails changelog &lt;span class="caps"&gt;RSS&lt;/span&gt; feed&lt;/a&gt; and see what&amp;#8217;s going in and coming out.&lt;/li&gt;
	&lt;li&gt;I will read the &lt;a href="http://httpd.apache.org/docs/2.0/configuring.html"&gt;Apache docs on configuration files&lt;/a&gt; in order to better understand how I can leverage some of the built-in features to my advantage.&lt;/li&gt;
	&lt;li&gt;3 days a week, I will only listen to technology-oriented podcasts on the drive into work.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Mental&lt;/h2&gt;
&lt;p&gt;Easily the most important aspect of peak performance is the mental.  Many people know they are in their &amp;#8220;zone&amp;#8221; when they&amp;#8217;re writing their best code, giving their best presentation, or interacting in a great way with their clients.  It&amp;#8217;s being able to knowingly attain this state that makes all the difference.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;I will complete 10 &lt;a href="http://www.websudoku.com/"&gt;mind exercises&lt;/a&gt; a week.&lt;/li&gt;
	&lt;li&gt;I will focus on the quality of my work , rather than the quantity.&lt;/li&gt;
	&lt;li&gt;I will develop some cue words that I can fall back on when I&amp;#8217;m looking for direction: less, test, commit.&lt;/li&gt;
	&lt;li&gt;I will reduce my anxiety during presentations by mentally imaging how a successfull presentation will go.&lt;/li&gt;
	&lt;li&gt;&amp;#8220;In order to rise above mediocrity I will learn to use failure as a learning experience and develop new strategies for next time.&amp;#8221; &amp;#8211; Dr. Stankovich&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Examples&lt;/h2&gt;
&lt;p&gt;Here are some fine examples from the wrestling community of those who have had excelled in setting and attaining lofty goals.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.caelsanderson.com/"&gt;Cael Sanderson&lt;/a&gt; from Iowas State went undefeated in college, including being a national champion 4 times.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.nbc.com/The_Biggest_Loser/contestants/matt/"&gt;Matt Hoover&lt;/a&gt; from NBC&amp;#8217;s the Biggest Loser is a former University of Iowa wrestler, and it was no surprise to me that he won Season 2.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Aleksandr_Kareline"&gt;Alexander Kareline&lt;/a&gt;&lt;br /&gt;
 who, unfortunately is known in the US only for his 1 defeat as opposed to the hundreds of victories during his 13 year undefeated stretch in international competition.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.dangable.com/dangablep2.html"&gt;Dan Gable&lt;/a&gt;   is the John Wooden of wrestling winning 9 National Team titles in a row.  These men paid the price for excellence and achieved it. Dan Gable&amp;#8217;s thoughts on &lt;a href="http://www.dangable.com/dangablequotes.html"&gt;priorities&lt;/a&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;When you finally decide how successful you really want to be, you&amp;#8217;ve got to set priorities. Then, each and every day, you&amp;#8217;ve got to take care of the top ones. The lower ones may fall behind, but you can&amp;#8217;t let the top ones slip. You don&amp;#8217;t forget about the lower ones though because they can add up to hurt you. Just take care of the top ones first. In 25 years as a head coach and assistant, I think I might have missed one practice. Why? Because practice is my top priority. A day doesn&amp;#8217;t go by when I don&amp;#8217;t accomplish something in my family life or my profession because those two things are my top priorities.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I know this was a long post, but it&amp;#8217;s something that I&amp;#8217;ve been kicking around in my head concerning ways to look outside my profession to find examples of ways to succeed within my profession.  I highly recommend you contact Dr. Stankovich&amp;#8217;s work or a similar program to enable yourself to operate at peak performance at times it matters most.  I&amp;#8217;ll let him make his own point:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;cite&gt;Use all your skills you learn in sports toward everything you do in life.  setting goals, handling adversity, staying focued, and working well with teammates are athletic transferable skills and will help you gain self-confidence in everything you do in life!&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;</content>
 </entry>
 
 
</feed>
