<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Stephen Balkum</title>
        <link>http://www.stephenbalkum.com/Default.aspx</link>
        <description>Agile Enthusiast, Leader, and Developer</description>
        <language>en-US</language>
        <copyright>Stephen Balkum</copyright>
        <managingEditor>stephen@balkum.com</managingEditor>
        <generator>Subtext Version 2.0.0.43</generator>
        <image>
            <title>Stephen Balkum</title>
            <url>http://www.stephenbalkum.com/images/RSS2Image.gif</url>
            <link>http://www.stephenbalkum.com/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>When all you need is a rake</title>
            <link>http://www.stephenbalkum.com/archive/2009/06/09/when-all-you-need-is-a-rake.aspx</link>
            <description>When all you need is a rake, why would you grab a tractor?&lt;br /&gt;
&lt;br /&gt;
I have been doing some investigations of build tools lately.  My simple desires for a build tool are:&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;smallish size&lt;/li&gt;
    &lt;li&gt;no installation&lt;/li&gt;
    &lt;li&gt;as much ancillary benefit as possible&lt;/li&gt;
&lt;/ul&gt;
I have used &lt;a href="http://nant.sourceforge.net/"&gt;NAnt &lt;/a&gt;extensively and dabbled in &lt;a href="http://code.google.com/p/psake/"&gt;psake &lt;/a&gt;recently.  I may post my thoughts on psake later, but at this moment, I want to document what I have done with rake.&lt;br /&gt;
&lt;br /&gt;
My business partner, &lt;a href="http://www.lostechies.com/blogs/johnteague/default.aspx"&gt;John Teague&lt;/a&gt;, had been pushing me to try &lt;a href="http://www.ruby-lang.org/"&gt;Ruby &lt;/a&gt;and &lt;a href="http://rake.rubyforge.org/"&gt;rake &lt;/a&gt;for some time, but I knew the installation had a footprint over 20MB.  Disk space is cheap, but that is still quite an increase over NAnt.  Compound this with how many times it will be downloaded by developers and a Continuous Integration server as part of a build and the size and time adds up.  There is definitely a lot of Ruby development going on, but the size and required installation (Ruby itself plus lots of little "gems") were real turn-offs.&lt;br /&gt;
&lt;br /&gt;
One evening I started surfing on Ruby and ran across &lt;span title="Author"&gt;Erik Veenstra's &lt;a href="http://www.erikveen.dds.nl/allinoneruby/index.html"&gt;AllInOneRuby &lt;/a&gt;script.&lt;/span&gt;  It is a Ruby script that packages your Ruby installation into a single executable.  This is definitely worth a try.  However, I quickly ran into trouble with a run-time error in the script.  The script has not seen an update in two years, so Ruby has apparently moved beyond it.  A lilttle digging and I found the accepted solution to the error.  Nothing like learning a new language by fixing an error in two year source.&lt;br /&gt;
&lt;br /&gt;
This being my first work in Ruby, I am open to constructive criticism.  I will describe the process in two parts.  Specific version numbers are given for reference.  First, the Ruby installation:&lt;br /&gt;
&lt;ol&gt;
    &lt;li&gt;I downloaded the latest Ruby &lt;a href="ftp://ftp.ruby-lang.org/pub/ruby/binaries/mswin32/ruby-1.8.7-p72-i386-mswin32.zip"&gt;binaries&lt;/a&gt; (1.8.7) rather than use the Windows installer to maintain the "cleanliness" of my workstation for subsequent testing.&lt;/li&gt;
    &lt;li&gt;Extract the binaries to c:\rubywork\ruby&lt;/li&gt;
    &lt;li&gt;Download &lt;a href="http://rubyforge.org/frs/download.php/57644/rubygems-1.3.4.zip"&gt;RubyGems&lt;/a&gt; (1.3.4) &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;Extract RubyGems to c:\rubywork\gems&lt;/li&gt;
    &lt;li&gt;To install RubyGems, at a command prompt in c:\rubywork\gems, run &lt;br /&gt;
    ..\ruby\bin\ruby setup.rb&lt;/li&gt;
    &lt;li&gt;Download &lt;a href="http://rubyforge.org/frs/download.php/56873/rake-0.8.7.zip"&gt;Rake&lt;/a&gt; (0.8.7) &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;Extract Rake to c:\rubywork\rake&lt;/li&gt;
    &lt;li&gt;To install Rake, at a command prompt in c:\rubywork\rake, run&lt;br /&gt;
    ..\ruby\bin\ruby install.rb&lt;/li&gt;
&lt;/ol&gt;
Next, to update Erik's script:&lt;br /&gt;
&lt;ol&gt;
    &lt;li&gt;Download &lt;a title="Download: download/allinoneruby.tar.gz" href="http://www.erikveen.dds.nl/allinoneruby/download/allinoneruby.tar.gz"&gt;allinoneruby.tar.gz&lt;/a&gt; (0.2.11), the internals of AllInOneRuby&lt;/li&gt;
    &lt;li&gt;Extract allinoneruby.tar.gz to c:\rubywork\oneruby\allinoneruby&lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;Download Erik's &lt;a href="http://www.erikveen.dds.nl/tar2rubyscript/download/tar2rubyscript.rb"&gt;tar2rubyscript.rb&lt;/a&gt; (0.4.8) to c:\rubywork\oneruby&lt;/li&gt;
    &lt;li&gt;Edit c:\rubywork\oneruby\allinoneruby\init.rb and modify line 188 to read:&lt;br /&gt;
    f.puts "    $0 = script"&lt;/li&gt;
    &lt;li&gt;Edit c:\rubywork\oneruby\tar2rubyscript.rb and modify line 623 to read:&lt;br /&gt;
    $0 = File.expand_path("./init.rb")&lt;/li&gt;
    &lt;li&gt;At a command prompt in c:\rubywork\oneruby, run&lt;br /&gt;
    ..\ruby\bin\ruby tar2rubyscript.rb allinoneruby/&lt;br /&gt;
    which will create a partially flawed allinoneruby.rb&lt;/li&gt;
    &lt;li&gt;Edit c:\rubywork\oneruby\allinoneruby.rb and modify line 605 to read:&lt;br /&gt;
    $0 = File.expand_path("./init.rb")&lt;/li&gt;
    &lt;li&gt;At a command prompt in c:\rubywork\oneruby, run&lt;br /&gt;
    ..\ruby\bin\ruby allinoneruby.rb --site&lt;br /&gt;
    which creates the desired allinoneruby.exe.&lt;/li&gt;
&lt;/ol&gt;
The exe is just over 3MB.  Not bad at all.&lt;br /&gt;
&lt;br /&gt;
Now, to execute rake, we need a couple support files.  Create a file named rake.rb:&lt;br /&gt;
require 'rake'&lt;br /&gt;
require 'rake/tasklib'&lt;br /&gt;
Rake.application.run&lt;br /&gt;
&lt;br /&gt;
Then, a file named rakefile:&lt;br /&gt;
task :default do&lt;br /&gt;
    $stderr.puts "Howdy, World"&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
Place these two files together with your allinoneruby.exe and execute:&lt;br /&gt;
allinoneruby.exe ruby.rb&lt;br /&gt;
and receive a Texan salutation.&lt;br /&gt;
&lt;br /&gt;
Enjoy!&lt;img src="http://www.stephenbalkum.com/aggbug/7.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Stephen Balkum</dc:creator>
            <guid>http://www.stephenbalkum.com/archive/2009/06/09/when-all-you-need-is-a-rake.aspx</guid>
            <pubDate>Tue, 09 Jun 2009 06:32:14 GMT</pubDate>
            <comments>http://www.stephenbalkum.com/archive/2009/06/09/when-all-you-need-is-a-rake.aspx#feedback</comments>
            <slash:comments>291</slash:comments>
            <wfw:commentRss>http://www.stephenbalkum.com/comments/commentRss/7.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Take interest in your craft</title>
            <link>http://www.stephenbalkum.com/archive/2008/10/04/take-interest-in-your-craft.aspx</link>
            <description>I attended &lt;a href="javascript:void(0);/*1223148385797*/"&gt;Pablo's Days of TDD&lt;/a&gt; yesterday and today.  I didn't attend really for my personal benefit since I already understand and believe in the concepts of TDD.  Rather, I came to see what the Los Techies guys had put together and who else attended.  &lt;br /&gt;
&lt;br /&gt;
Pablo's guys were exceptional.  They put together a set of sponsors to provide a venue with plenty of space and large projectors and provide food.  They assembled a lab workbook with step-by-step instructions and lots of screen shots to encourage working along with the presenter.  Another sponsor provided the color printing of the workbook.  Lots of attendees brought their laptops and were actively following.&lt;br /&gt;
&lt;br /&gt;
Obviously, the primary topic was common unit testing concepts using NUnit.  In addition, Resharper hints and tricks are used extensively.  Finally, an introduction to mocking with Rhino.Mocks was covered in the last lab.  I counted eight Los Techies members on hand to answer virtually any question or provide one-on-one help.&lt;br /&gt;
&lt;br /&gt;
Although the turnout was very good, I know there were more people out there that could have benefited.  I encouraged several folks to show up and not a one was there.  &lt;br /&gt;
&lt;br /&gt;
Come on folks.  There are tons of opportunities out there for free skills development.  You might have to give up a Saturday or an evening to attend, but it will be worth it to your craft.  In the long run, this translates to increased productivity and career advancement.&lt;br /&gt;
&lt;br /&gt;
Managers, look for these opportunities and encourage your developers to attend.  As your developers improve and advance their careers, this is a positive reflection on you as well.&lt;img src="http://www.stephenbalkum.com/aggbug/5.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Stephen Balkum</dc:creator>
            <guid>http://www.stephenbalkum.com/archive/2008/10/04/take-interest-in-your-craft.aspx</guid>
            <pubDate>Sat, 04 Oct 2008 20:53:07 GMT</pubDate>
            <comments>http://www.stephenbalkum.com/archive/2008/10/04/take-interest-in-your-craft.aspx#feedback</comments>
            <slash:comments>22</slash:comments>
            <wfw:commentRss>http://www.stephenbalkum.com/comments/commentRss/5.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Go see John Teague of Next Level Technology in your area</title>
            <link>http://www.stephenbalkum.com/archive/2008/09/08/go-see-john-teague-of-next-level-technology-in-your.aspx</link>
            <description>My business partner, &lt;a href="javascript:void(0);/*1220919461897*/"&gt;John Teague&lt;/a&gt;, is speaking at the &lt;a href="javascript:void(0);/*1220919493390*/"&gt;Alamo Coders&lt;/a&gt; in San Antonio on Tuesday, September 9, on jQuery.&lt;br /&gt;
&lt;br /&gt;
Then, he is speaking on Object Oriented Design Principles at &lt;a href="javascript:void(0);/*1220919522558*/"&gt;Houston Techfest&lt;/a&gt; on Saturday, September 13.  I will be in attendance as well.&lt;br /&gt;
&lt;br /&gt;
Be sure to check out these sessions in your area!&lt;img src="http://www.stephenbalkum.com/aggbug/3.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Stephen Balkum</dc:creator>
            <guid>http://www.stephenbalkum.com/archive/2008/09/08/go-see-john-teague-of-next-level-technology-in-your.aspx</guid>
            <pubDate>Tue, 09 Sep 2008 01:18:59 GMT</pubDate>
            <comments>http://www.stephenbalkum.com/archive/2008/09/08/go-see-john-teague-of-next-level-technology-in-your.aspx#feedback</comments>
            <slash:comments>16</slash:comments>
            <wfw:commentRss>http://www.stephenbalkum.com/comments/commentRss/3.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Considering a software rewrite?</title>
            <link>http://www.stephenbalkum.com/archive/2008/08/22/considering-a-software-rewrite.aspx</link>
            <description>&lt;p&gt;A potential client is considering a major rewrite of one of their most important applications.  Now, at first I’m seeing a few dollar signs for a new project, but then I come back to earth and start thinking again later that evening.  Strangely, my business partner, John, starts an IM conversation with me about software rewrites even though I hadn’t yet told him about the conversation I had with the client.&lt;/p&gt;
&lt;p&gt;I hit the net searching for discussion on this topic and found plenty of blogs saying "don’t rewrite, refactor instead."  However, no one really speaks in favor of a rewrite.  Here, we list reasons in favor of a rewrite:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Performance: The existing architecture and code was written in a day when the transaction volume was several orders of magnitude less.&lt;/li&gt;
    &lt;li&gt;Turnover: With a twist to the meaning of the term, everyone has heard the stories about this code and has managed to push back on every feature request for years.  In that time all of the developers that actually did know that code have left.&lt;/li&gt;
    &lt;li&gt;Business has evolved: Similar to the performance reason, the business has evolved to the point that the architecture is challenged to meet the needs.&lt;/li&gt;
    &lt;li&gt;Development speed: The code is so rigid that developers cannot deliver features fast enough and the business is unable to take advantage of changing market conditions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I contend that all of these reasons boil down to just one:&lt;/p&gt;
&lt;p align="center" style="text-align: center;"&gt;When changing the existing code is more expensive to the business, it is time for a rewrite.&lt;/p&gt;
&lt;p&gt;This should absolutely be measurable.  Compare the estimated development time of the requested features and the ROI of those features based on time with the estimated development time to rewrite.&lt;/p&gt;
&lt;p&gt;I am proposing my client invest in a little time to evaluate the code closer for refactoring options.&lt;/p&gt;&lt;img src="http://www.stephenbalkum.com/aggbug/2.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Stephen Balkum</dc:creator>
            <guid>http://www.stephenbalkum.com/archive/2008/08/22/considering-a-software-rewrite.aspx</guid>
            <pubDate>Sat, 23 Aug 2008 02:14:42 GMT</pubDate>
            <comments>http://www.stephenbalkum.com/archive/2008/08/22/considering-a-software-rewrite.aspx#feedback</comments>
            <slash:comments>19</slash:comments>
            <wfw:commentRss>http://www.stephenbalkum.com/comments/commentRss/2.aspx</wfw:commentRss>
        </item>
        <item>
            <title>First entry into the blogosphere</title>
            <link>http://www.stephenbalkum.com/archive/2008/08/17/first-entry-into-the-blogosphere.aspx</link>
            <description>I'm finally making the leap.  However, it took a lot of prodding from multiple individuals to get to this point.  This is my first blog post.&lt;br /&gt;
&lt;br /&gt;
As with many others before me, my first post will be more or less an introduction.  I am co-founder and principal consultant for Next Level Technology with &lt;a target="_blank" href="http://www.lostechies.com/blogs/johnteague/"&gt;John Teague&lt;/a&gt;. We are a custom software development and Agile coaching firm in Austin, Texas.  Although our business is new, we will succeed by taking advantage of short iterations, and the frequent communication that accompanies them, to make sure our clients get software that works just as they need.&lt;br /&gt;
&lt;br /&gt;
I've been leading teams for over a decade.  I've written device drivers and 3D games, shrink wrap software and enterprise software, desktop software and web applications.  I've been a developer, technical lead, director, and vice president.  I won't pretend to be a master of any slice of software development, but I've definitely been around the block.  This diversity has afforded me the opportunity to work with many different teams.  Some teams were quite strong; others, well, not so strong.&lt;br /&gt;
&lt;br /&gt;
Most recently, I was the VP of Technology at Callaway Golf Interactive for over 6 years where I lead the teams that developed the ecommerce site for Callaway Golf, specifically www.callawaygolfpreowned.com and shop.callawaygolf.com.  During this time, my day-to-day focus shifted from mostly coding to mostly management.  &lt;br /&gt;
&lt;br /&gt;
I believe it was back in 2005, while at CGI, that &lt;a target="_blank" href="http://www.lostechies.com/blogs/hex/"&gt;Eric Hexter&lt;/a&gt; introduced me to Agile, something he was just discovering, and a new way of thinking.  Although I instantly saw the benefits from a project management and quality standpoint, it has been a continuous journey ever since.  It is absolutely a new way of approaching a project and working it to success.  Since then, I have become a certified ScrumMaster, lead multiple project cycles, and I even put myself into a team as a coder just for the experience.&lt;br /&gt;
&lt;br /&gt;
My goal for this blog is pass along those useful tidbits of information, or start a topic of conversation.  I have a couple of pet projects going on that will afford me plenty of personal coding experience to share.  In addition, there will be technical leadership thoughts to pass along as I work with other teams as part of NLT.&lt;img src="http://www.stephenbalkum.com/aggbug/1.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Stephen Balkum</dc:creator>
            <guid>http://www.stephenbalkum.com/archive/2008/08/17/first-entry-into-the-blogosphere.aspx</guid>
            <pubDate>Sun, 17 Aug 2008 06:00:00 GMT</pubDate>
            <comments>http://www.stephenbalkum.com/archive/2008/08/17/first-entry-into-the-blogosphere.aspx#feedback</comments>
            <slash:comments>12</slash:comments>
            <wfw:commentRss>http://www.stephenbalkum.com/comments/commentRss/1.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>