Saturday, August 28, 2010

My Windows (with git) RVM

I was disappointed to learn that RVM (Ruby Version Manager) doesn't work on Windows, however I wasn't surprised. Windows and Ruby don't always play well with each other.

I'm also a fan of Homebrew on my Mac. Homebrew is a command line package manager that downloads applications and creates symlinks so they are always on your path.

I hate working with Windows environment variable since they don't always reload without logging off and back in again.

For all of these reasons I started thinking about how I could configure my laptop to use multiple versions of Ruby without hacking my PATH environment variable.

My solution was to create a C:\Ruby directory and initialized a git repository within that directory.

I downloaded the 1.9.1 7-Zip package from rubyinstaller.org and extracted it into C:\Ruby. Then I added/committed all the files to a branch named 'v191'.

Finally I updated my PATH to include the C:\Ruby\bin directory.

To install a different version of Ruby I created a new branch named "v192", delete all the files and committed the deletion of the files. Here are the commands:


git checkout -b v192


rm -rf *


git add . -u && git commit -m "Cleared directory for next version"

After I have a clean C:\Ruby directory, I extract the new version to C:\Ruby and add/commit them to the git repository.

After installing I can do a git checkout {branchname} to switch my version of Ruby.

Monday, August 16, 2010

Migrating the blog

I don't know if any reads this anymore, but I am moving my blog from http://blogs.giffordconsulting.com/ to http://blog.giffordconsulting.com. Hopefully your reader didn't pick up all these posts as "new". They are not "new". They are, in fact, very, very, very old.

I had lofty aspirations when I started blogging back in 2005: 
  1. I would blog frequent
  2. I would develop a community of bloggers under the giffordconsulting.com domain.
  3. I would contribute to the SubText blogging software project
I didn't do any of those things...I did join Twitter!

The new blog is hosted in the cloud:
  1. I don't have to pay anything
  2. Upgrade or fix software bugs
  3. Worry about bandwidth when I get on Hacker News (Is that another lofty goal?)


Testing Carriage Returns in FitNesse

FitNesse doesn't allow carriage returns in test fixture table. Normally, I replace carriage returns with a comma (or some other sentinel value) and pass it back to FitNesse. I noticed a posting on the FitNesse email group that recommended defining a variable and then using the variable in the table.

An Example:

!define multiLineAddress {Gifford Consulting
Attn: Tim Gifford
123 Main Street
Des Moines, IA 50266}

!|Check Address|
|Address|
|${multiLineAddress}|

Saturday, August 7, 2010

Microsoft OPEN.NET

Late last week we learned that Microsoft is de-funding the Iron projects (IronRuby, IronPython). Many have suggested that the community should take over the projects, but without access to the DLR, CLR and the compilers success would be limited.

However if Microsoft opened up the DLR, CLR and compilers for what I'm going to call "Open .NET", we in the community could make some interesting things happen on .NET.

I know it sounds crazy to open source the .NET platform, but I don't understand what competitive advantage Microsoft maintain by keeping it closed.

I want to mention a couple advantages they would gain by opening it up.

Allowing the community to create libraries and offer bug patches to the CLR, DLR and compiler we (the community) would feel involvement in the platform. This involvement would translate to more community created libraries and solutions.

Microsoft wouldn't have to create tools and libraries that already exist (ala MsTest) and focus their efforts on expanding the platform.

I'm not proposing that all products and innovation that is created by Microsoft shall be Open. They can build new technology within and around the open platform and release those changes to the community core projects after the product announcements.

Create native extensions for Windows that increased performance and scalability. Create products that only run on IIS or SharePoint. Microsoft's current "enterprise" customers would continue to use the proprietary and supported versions of the compilers and runtime.

Without an "Open.NET" Platform, projects like IronRuby and IronPython are not feasible outside of Microsoft. This innovation while secondary to Microsoft's corporate strategy is important to many of us in the community.