Skip navigation

Just to save you a half-hour of your life, I thought I’d share that you should never create a named route called “directory” — it will break Rails migrations and other rake tasks in mysterious and hard-to-track-down ways.


For Part 2 of our 60-second Git tutorial, we’ll look at some super simple branching and merging.

git branch tells you which branch you’re on. git branch -a lists all branches, even remote ones.

git checkout mybranch checks out the branch you want.

git checkout -b newbranch creates a new branch from the one you’re on, and checks it out for you.

git checkout master && git merge mybranch merges changes from one branch to your master branch. If you don’t want to commit the changes, you can do git merge --no-commit mybranch instead.

So far, we’ve only talked about local git usage. Isn’t it cool that you can do so much without even having a server set up with our repo? I think so.

Part 3 will include pulling and pushing your changes to remote repos.

First, the mental hurdles:
You don’t need a server to have a git repository. All your commit history is available locally and quickly, with simple commands. Same with branches and tags. Git “checkout” and “commit” are commands you run locally. Svn “checkout” and “commit” are really more like “pull” and “push” with git.

Now, the commands:
rails myapp && cd myapp && git init && git add . && git commit -a creates a repo and makes the first commit (but still nothing is sent to any server; all work is done locally in your own repository)

echo "my app rocks" > README && git add README && git commit -a makes another commit

git rm path/to/remove && git commit -a

git reset --hard HEAD returns your repo to last committed state (cancels working changes) I’m still fighting with this one. It seems the best way might be to do a git checkout -f instead.

That’s it for the first part. Part 2 will be next.

I’ve been reading the book Advanced Rails by Brad Ediger. I first met Brad way back in 2006 when we were first trying to get our local Ruby user group going. He is a very smart fellow, and his newest book is definitely evidence of that. There’s a lot in there that’s over my head, but that’s nothing a few rereads can’t solve. :-)

The book has everything from optimization to deployment, from security to metaprogramming (my brain is still spinning from that one). Brad does an awesome job of including plenty of code and real-world examples.

If you use Ruby on Rails for fun or profit, this book is definitely a must-buy.

And, believe it or not, this something-other-than-perl-and-php book can be found in local bookstores (Brad V. found this one at the Tulsa 71st B&N):


OneBody now has a real, bona fide blog of its own. Thanks to, creating a new blog is waaaay too easy, evidenced by the fact that I now have 37 (just kidding).

Our little project continues to grow and improve. I’m still waiting on that influx of talented, eager volunteers to make it awesome, though :-) For now, it will continue to be Tim’s pet project, though I refuse to stop referring to the development “team” as “we” and “us.”

Just saw this in my referrer logs… You can search on Google for all occurrences except in a certain site.

Many know about adding “” or similar to only search within a certain domain. Well, maybe it was obvious, but now I know you can do “” to search everywhere but that domain. Nice.

Long title, I know. Here’s how I did it…

sudo apt-get install fetchmail postfix
nano -w .fetchmailrc

Add the following to the file (replacing everything in CAPS appropriately):

poll with proto POP3 and options no dns
user 'YOUR_GMAIL_ADDRESS' there with password 'YOUR_PASSWORD' is \
'YOUR_UBUNTU_USERNAME' here options ssl


chmod 710 .fetchmailrc
sudo nano -w /etc/crontab

Add the following to your crontab file:

10 7 * * 1 YOUR_UBUNTU_USERNAME fetchmail -k

This will run fetchmail every Sunday and grab your email. It seems either fetchmail or gmail limits each connect to something around 400-500 messages, so to get started, you can run “fetchmail -k” a few dozen times to download all your mail, then let crontab do the rest on a weekly basis.

Your mail is downloaded to a single mbox file in /var/spool/mail/YOUR_UBUNTU_USERNAME. Being a single file makes it nice for backing up, moving, etc. I hear Thunderbird can easily read the file, and I think Apple can as well.

Just makes you feel good having all your mail backed up, now doesn’t it?


Starting around mid- to late-2006, I started a little project for my church. The idea was to rewrite our existing online membership directory to make it more searchable and to take a stab at creating something somewhat social, where people can easily communicate with each other and also see their interests and such. Plus, I was dying to build something significant with Ruby on Rails, my new favorite web framework.

As the application got closer to completion, I started showing friends and family my creation and getting feedback. The application grew. And grew. At the time, I was heavy into using Facebook to meet up with old friends and new, and started to see the value in connecting people online in ways that just don’t happen offline. And the application grew. And grew.

The application went online the very first day of 2007, and it was a hit. The tech-savvy people in our church got it right away. While others took awhile.

For the past year, the site has been humming along, and we’ve made several big changes as we got feedback, complaints, etc. We worked with people, classes, and small groups in our church to teach them how to use the site and got more feedback.

I’m very proud of the product we have today, and I think it’s time to give it to the community. This week, I have worked to get OneBody out on the web and ready for use by other churches.

I’m praying for a strong, friendly community to grow around OneBody so it becomes the absolute best of its kind. Though I have to say, I still haven’t found anything quite like it, especially not free!

On my own list of presidential candidates, there is a lot of space between my #1 slot and the #2. But if my man Ron Paul weren’t running, I would probably vote for McCain. He doesn’t believe the U.S. should torture detainees, and he isn’t afraid to shake things up.

I used’s nifty domain mapping feature and moved my blog to its own domain. Now, after I write that killer blog post that gains me tons of Google juice, I can use my newfound popularity to redesign my blog with AdSense and make beaucoups of money. /dream