Life at the End of the Tunnel

A couple months back I had a job change that took me out of state and brought my family back to where many of our extended family members live. We’ve been staying with my gracious in-laws for that time, looking for a place of our own. It looks like everything’s likely to go through at this point, and I’m optimistic that we may yet have all our stuff moved up and be able to establish familiar routines again.

That’s all to say that I’m hoping to have more time for blogging in the coming weeks. I’ve got some good stuff to share on a number of topics. Cya.

How Do I Love Thee?

Today a confluence of dissimilar events brought me to this post. A decade ago, today, I asked my sweet wife to marry me. I must have tricked her well, because she consented. We’ll be celebrating tonight, and I think of all the hard work it’s taken on both our parts to come to this place. As we’ve worked through it all, we’ve marveled together at the movies or TV shows that depict married couples not long into marriage, and the first time something tough comes up someone asks, “Do you think he wants out?” The answer often follows, “Probably. It’d be best, right?” Marley & Me was a notable exception. The question was asked but answered with something akin to, “No. Marriage takes work.”

And today I discovered that my Church started a YouTube channel: Mormon Messages. Moments ago they posted something appropriate for Valentine’s day week, and for the decision and ensuing hard work, sacrifice, and love that my wife and I commemorate today. Jeffrey R. Holland, an apostle today like Paul of old, takes a moment to talk about love.

Read more…

Making ‘Reply’ Do the Right Thing

This morning I got an email from Backpack, telling me that my business partner added a new page with some meeting minutes from our late night conversation the other day. I clicked the link, reviewed the page, and quickly rushed off a reply to his email saying that it looked good.

Then I noticed it. It wasn’t his email — it was sent by the Backpack system itself, not my friend. I rushed to my Sent Items, and found an email addressed to him. I was really surprised. I had lost context, focused on the author of the page instead of the email, wanted to respond about the content of the page, and the crew at 37signals just made the right thing happen automatically.

Read more…

Craft Personas with a Template

Personas help focus your work on the needs of real-ish users. In most places I’ve been, I’ve seen that over time the customer kind of morphs into a gelatinous mass of jumbled memory as contact with the actual end user is replaced by a marketing proxy. It’s a common experience, and there’s ways to reinvigorate your bowl full of jelly into something resembling actual users again.

Last summer I attended David Hussman’s Agile Product Planning: Building Strong Backlogs session at the Agile It! Experience 2008 in Reston. One thing that stuck with me was his goofy graphics of personas, and their alliterative names. Among many things, he talked about smells that creep into your planning process and how these usually indicated a loss of focus on the user. Smells like refactoring or engineering stories becoming common place instead of rare, and people talking about a “thing to do that takes time” instead of telling stories about how this work will help someone.

Read more…

September Wrap-Up: Open Source Work!

The month of September has flown by, and I’ve had my hands covered with Ruby work of late. In the process, I’ve needed to tweak some great projects like Starling, Webistrano and xmpp4r-simple. These projects are definitely maturing, and it’s been great to get under the hood to see how they tick, and see where I can help nudge them in the direction I hope to see them move.

Drop me a line and let me know what you’re up to. Better yet, shoot me your github.com profile link, so I can follow you. You can keep track of me on my GitHub profile as well.

Happy Coding!

北京, thank you for the 和

As a gymnast in a former life, the Olympics have always held a wonderful set of feelings for me. I enjoy reflecting on the vastness of the world as I watch each opening ceremony. I speak French, having lived overseas for a couple years, and I really love hearing the French as the first language used for announcements.

As a martial artist, I have fascination and respect for the Chinese and their history. The opening ceremony’s artistic portion was phenomenal. I loved the moving printing blocks, and the varied forms of 和 (harmony) displayed.

Read more…

Extracting CAS configuration into YAML, like database.yml

If you’ve done any enterprise work with Rails, and your shop is using CAS for authentication, chances are you’ve seen rubycas-client. Chances are you’ve also loved how easy it was to get working. There’s usually only one hitch — you’ve got to change the config based on which environment you’re deploying into.

Here’s the standard advice you get from the RDoc:

# in your config/environment.rb
CASClient::Frameworks::Rails::Filter.configure(
  :cas_base_url => "https://cas.example.foo/",
  :proxy_retrieval_url => "https://cas-proxy-callback.example.foo/cas_proxy_callback/retrieve_pgt",
  :proxy_callback_url => "https://cas-proxy-callback.example.foo/cas_proxy_callback/receive_pgt",
  :logger => cas_logger
)

Read more…

HOWTO port install md5sum on your Mac

I’ve been using Linux for a long time. While it lost the battle for my desktop, it still reigns supreme in my server world. I have this very occasional habit of wanting to check if two files are really, honestly, undoubtedly the same.

I had that need again today.

I’ve always used md5sum on Linux. sudo port search md5sum was a bust. I Googled around. I figured I’d just have to find the package that contains md5sum and sudo port install [package]. No dice. Nothing promising for miles around, or at least through page 5 of the Google results.

Read more…

Git’s Coolness

I started to realize how cool git is when I saw this:
Visualization of an octopus-style merge with git using gitk.

Read more…

How to Configure Entourage Rules to Send All Appointments to a Folder

I’ve wanted to do this for months. I’ve searched Google a number of times, and never found a suitable solution for sending ALL my appointment requests in Entourage to a specific folder. I finally hit on it today. The key? Use Specific Header 'Content-class' Contains 'calendarmessage'.

Read more…

Circuit City, you’re fired.

Circuit City, may I please direct you to my comments about Zed. At least FedEx was at least professional when they took my call, they stay in the I’m-annoyed-but-I’ll-still-work-with-you category.

Both could use a healthy dose of Joel’s advice.

Thanks for Mongrel, Zed — don’t let the door hit you…

I’m not sad to see the writer of Mongrel leave. Not one bit. I’m not sure what Dave Thomas was reading earlier today, but I don’t have anything positive to say about it.

I like Mongrel. I’ve read Zed Shaw’s article rant on programmers and statistics, and I liked it quite a bit — though I prefer his Ruby/Odeum vs. Lucene Analysis Part 2 since it lays out a more clear example of his opinion about how to properly use statistics to analyze software (amazing — Zed can make a set of useful points without using the F-word!!).

But as an outsider to whatever caused his Rails rant, he just doesn’t come off as credible when he makes silly pointless wildly exaggerated claims about his skills and situation and then begs dares challenges asks anyone disagreeing with him (except Humility) to start an all out fist fight.

Read more…