2011 Year in Review

For prospective employers, potential clients, and my own future sanity, I thought it might be a smart idea to start recounting my achievements from the year. It’s been a very long and extremely busy year, professionally. The overwhelming majority of my professional capacity in 2011 has been focused on PlayON! Sports, my current employer, but I do have some other personal/professional achievements to recount as well, so let me just dive right in.

Continue reading

The Story on my New MacBook’s Name

Aside

Since college, I have used deities and other characters in Greek mythology as the names of my computing devices. My previous generation MacBook Pro was named Eos (another story in and of itself), and when it came time to name my [two] new machines, two names stood out for what should be an obvious reason.

In Greek mythology, Eos was the Titan goddess of the dawn and had many children. Through Astraeus, she bore ten; among them, Eosphorus, the morning star, and Hesperus, the evening star.

Eosphorus, then, is the machine I use by day, at the office, and Hesperus is the machine I use by night, at home.

New MacBook Pro

Status

My company-issued MacBook Pro finally came due for an upgrade. I got a shiny new 17″ MacBook Pro at work, but I decided to take the migration as an opportunity to split my work and home computing resources into their respective domains and purchased my very own 15″ MacBook Pro for home.

It’s a super-sweet, 2.4 GHz Intel Core i7 machine with 8 GB DDR3 RAM and 750 GB of 7200 RPM hard drive. I even got the upgraded, high-resolution screen (though I’m a bit miffed that Apple rumor junkies think a new MacBook Pro with Retina display will get released early next year). The impressive new machine should provide a much-needed boost in performance when working with RAW images from my Nikon D7000.

All this means is that I’ve been a little slow to post things here while I migrate [not one but two] machines, but you can expect good things in 2012, especially in the [soon to be added] photography area of this site.

Complex query filters with ActiveAdmin

I had expected this topic to be long, complicated and extremely difficult, but I was pleasantly surprised to learn how dead simple it was to accomplish using tools already built into ActiveAdmin, and more specifically, MetaSearch.

Here’s the scenario: My application contains a model which has attributes for both the start and end of a range. Specifically, a Production has both start_date and end_date columns which together define the span of time over which that production occurs. I wanted a way to search for productions in a time period, but I wanted to see any productions where the range of dates for the production fell within the query window I specified.

Let me give a better example. I have a production that begins on Dec. 1st and runs through Dec. 5th. That range, 12/1 – 12/5 is the production window. I want to query for any productions occurring between Dec. 2nd and Dec. 4th. So the query window is 12/2 – 12/4. The query window is more narrow than the production window, and so simple filtering on start_date or end_date won’t work.

Continue reading

New look for Rails version

Status

Starting today, the forthcoming Rails version of this site has a new look. Like any good UI, it’s a constant work-in-progress, but I think the changes applied here look good enough to run with for now.

I haven’t bothered to verify that the new look works across all browsers, but I’m not doing anything terribly fancy, so it should just work. Anyway, check it out: http://rails.living5to9.com

Football Season has Ended!

Status

I always say that regular season high school football is the offseason for my company. Football is easy because there’s (usually) only one game per week, and so the schedule is predictable and tolerable.

In contrast, basketball season is all over the place, both chronologically and geographically. There are also a number of other winter sports going on simultaneously that make it difficult to get any time to yourself in the winter and spring months, and summer is no better (but that’s another story).

Well, football season has finally ended, capped by a massive surge of championship football occurring in parallel in Mississippi, Tennessee, and South Carolina. We covered over 20 games in a matter of three days in three states. The entire production process from pre-production, on-site production and now the final stages of post-production have been… exhausting.

Besides wearing me out, the surge of productions has also left me very little time to work on other projects, like Production Hub (soon to become Schedazzle!) or my Rails-driven build of this website.

Hopefully, that will change in the coming weeks with business settling down for the holidays. Christmas is always a great time to find a few weeks of productivity to work on my own projects.

Slug::Engine

While developing my blog in Rails, I resolved to include a mechanism for assigning arbitrary, SEO-friendly URLs to my content, similar to what the Path module in Drupal does. Such a feature is common in popular blogging engines like WordPress and Blogger, so it didn’t seem such a far-fetched feature.

Implementing the functionality turned out to be much more difficult that I had first imagined. The problems I encountered, which led me deep into the bowels of Rails to understand and resolve, have left me with a vastly improved understanding of how a Rails application works. Below, I detail some of those problems and how I overcame them. Continue reading

Rails Routes: match and mount

While working on the SlugEngine built into this blog site, I came across a note-worthy errata in the book Rails 3 in Action.

Section 18.3.1 states that the following two lines in config/routes.rb are functionally equivalent:

# method one
mount Foo::Bar, :at => 'foo/bar'

# method two
match 'foo/bar', :to => Foo::Bar

These two routes are similar. In fact, mount in turn calls match to complete the route setup. However, the difference (as of Rails 3.1.1) lies in the options that mount passes along to match. Continue reading

Upgrading to Rails 3.1 on Heroku — Part III: Rails

Upgrading to Rails 3.1 on Heroku — Part III: Rails

Up to this point in this series I have been focused on some of the prerequisites to upgrading Rails to 3.1. In this post, all of those requirements have been satisfied, and I can finally get to the meat of the task: upgrading the Rails gem! Continue reading