Has it really been three and a half years since I posted here? It is hard to believe. Only because of all that has happened during that time. Way too much to tell about. In one post anyway.


Lunch with Jamis Buck

Today I had the great pleasure of having lunch with Jamis Buck of 37signals. While visiting family in Nampa, ID I realized that Jamis lived nearby. We met at Mancino’s Pizza where Jamis said his wife used to go in high school.

We talked ruby, rails and family over the best Philly Steak and Cheese sandwich I’ve ever had. Living in Manti makes it hard to visit with other rubyists so it was really nice to sit down and talk about some of the cool things in edge rails. Of course, my wife is always willing to listen but it’s hard to really engage her in a conversation about ruby. ;)


Capistrano 2.almost

On Wednesday Jamis Buck released a preview of the upcoming Capistrano 2.0. For those not familiar with Capistrano yet, it is a framework for automating tasks via SSH on remote servers. Use it for everything from software installation and application deployment to configuration management and ad hoc server monitoring. It is a fantastic piece Ruby workmanship and the single most useful Ruby utility in my toolbox.

There are a few gotchas if you’re upgrading from 1.x which Jamis outlines at the new home of Capistrano, Nothing in the list is a deal breaker. After reading through the new feature set it’s clear that Jamis has been working hard to make Capistrano operate with fewer assumptions about what you’re trying to do with it.

Capistrano (born Switchtower) was created with the specific intention of relieving the pain 37signals felt when deploying their Rails based products. Thus it made several assumptions that, by default, anticipated a Rails setup. No longer. Instead of looking for a deployment recipe (config/deploy.rb),

“Capistrano 2.0 will now look for the capfile first in the current working directory, and if it does not locate it there, it will continue to search up the directory tree until it either reaches the root directory, or finds a Capfile. This means you can now invoke cap from anywhere within your project tree, and have it find your project Capfile.”

I still sit there staring at the terminal with a huge grin on my face each time I run ‘cap deploy’. Take it to the next level and get Capistrano 2.0 Preview 1 with:

gem install -s capistrano

Jamis is soliciting feedback on Capistrano 2.0 in the Capistrano mailing list.


A Day of Remembrance

Today, more than most days, we remember those who have put it all on the line for something more precious than life itself… Freedom.

Two and a half centuries ago real freedom was a dream. We would have to wait for a courageous few willing and wise enough to create a form of government which protected the rights of it’s citizens instead of usurping them. At a great cost our nation was given that freedom and over the years we have paid an even greater cost to maintain it. Unfortunately, over those years our freedoms have been slowly eroded until the freedom we have now is a shadow of what we once had.

Even so on this Memorial Day we honor those who have fought on home or foreign soil. We honor those who returned and especially those who are still missing or those who fell defending our Freedom. Our fathers, brothers, grandfathers, sisters and mothers. Today, more than most days, I take my hat off to you.

Arlington National Cemetery


To the Mother of my children

You are the most wonderful part of my life. Each day you teach our children with love, patience and understanding. You have made my life so much better than it ever was before I met you. Today I honor you and thank you for all that you do… and all that you are. You are my most priceless treasure.

I love you.


New Powerbook accessories to play with

My new Powerbook accessories

When it comes to spending money on myself I am almost always on the reluctant side of the fence. Most of the time it comes down to one thing… what I want at the time costs more than I have. And when I have enough there are usually bigger fish to fry.

This time it was different and I’m so excited about my new toys! No, it’s not the iPod nano I’ve been wanting for too long. Yesterday my Booq Vyper M came priority mail and today my new iLap 15 showed up in a big brown van.

I first heard about the Vyper from Jason Fried on the Signal vs Noise blog over a year ago. It came highly recommended and when I checked it out I could tell it was tough. At the time I had a little Dell 700m which would rattle around in the Vyper M like a BB in a bucket. It looked nice but I figured I would get something else more suited to my Windows laptop dimensions. Six months later I swallowed the red pill and bought a Powerbook.

Shortly after my new Mac was delivered I went window shopping online for accessories. As soon as I found the iLap by Rain Design of San Francisco it went on my wishlist. I could tell it was exactly what i needed since I use my Powerbook as my main computer. Since then I have spent many, many nights in my La-Z-Boy hacking away on homework, work work and play work, wishing I had the iLap to keep my lap from overheating.

Now I have both of the accessories I really wanted for my Mac and I couldn’t be more satisfied with my purchases. The Vyper really is as rugged as it looks and the iLap is pure comfort. Two very well designed products that are as elegantly simple as the are profoundly functional. I highly recommend both to anyone with a Mac laptop.


Opening Finder Folder in iTerm

Recently I have looked, albeit not very hard, for a solution to an itch I’ve had for a while. Like so many other Mac converts, I came from the the world of Windows and during this previous existence I relied heavily on the Open Command Window Here PowerToy from Microsoft. This handy little shell extension adds a option to the right-click menu of Windows Explorer which, you guessed it, open a command window in the specified directory. As the proud user of a Powerbook (and the excellent iTerm) I have missed the simple functionality of this utility… until tonight!

Phil Windley has posted a simple Automator/AppleScript solution that is functional, if a little slow upon execution. I’m generally a patient guy so it doesn’t bother me too much to wait a few seconds for the AppleScript to run. What really matters is that I can now command-click while in a Finder folder and have the option to open iTerm and change to the current directory.

The one caveat I found is that you must already be in the folder to open it in iTerm. You cannot command-click on a folder below the current folder and have iTerm open to that folder. The current folder will be the target instead.

If you use iTerm and want/need a simple “Open in iTerm” function in the Finder context menu, give Phil’s tip a try… you’ll like it!


A Better Blogger…

Better than I, that is. My wonderful wife has begun blogging as one of her New Year resolutions. She is jump starting it by posting at least once each day for 21 days straight.

The idea is that creating a new habit generally take 21 consecutive occurrences of doing something (or not doing something) to create (or break) a habit. With only five days under her belt, she has easily outdone me in terms of quality of content, and frequency of posting. It’s okay though, I’m used to her beating me out in the quality department. Blogging isn’t the only things she does better than I… not by a long shot.


Welcome, little one…

Yesterday my beautiful wife brought our fourth child into the world. We named him Andrew and as with each child before, it was incredibly humbling to be there and to help her work through such an enormous task. And just like each time before, the reward is so sweet! Welcome, little one!


Separate passwords for svn/ssh via Capistrano

Jamis Buck has a very helpful post about getting <strike>SwitchTower</strike> Capistrano to play nicely when the SSH and SVN logins don’t match.

However, in one project I am working on, I had to modify this code just a little. The SVN checkout was complaining that the repository didn’t exist when I ran “rake deploy”. After some testing, I found that it was jailshell that was spitting out the error.

The app is being deployed to a site5 shared hosting and the SVN repo is hosted on TextDrive. On a hunch I added explicit quotes around the username and password in the SVN checkout line. Suddenly the entire deploy worked like a charm!

set :svn_password, { Capistrano::CLI.password_prompt('SVN Password: ') }
set :repository, { "--username \\"#{svn_user}\\" " +
"--password \\"#{svn_password}\\" " +
"{application}/trunk/" }