Jesse B. Hannah

  • jbhannah on GitHub
  • jbhannah on Keybase
  • jbhannah on LinkedIn
  • @jbhannah on Twitter

Recent Articles

  • Vin Scully Is a Legend, But He's Not a Saint

    Keith Olbermann writing for GQ:

    This is not to say Vin Scully is not a terrific and endlessly patient human being, nor that anyone who has treated him with reverence, nor that the succession of ballplayers and managers who have bestowed the ultimate role-reversal praise by making the pilgrimage in full uniform to him in the press box are being insincere or overdoing it. It’s just that the real Scully—the one who once made us think not of Christ but of Manson—is far more human and far more capable of the unexpected. And thus far more praiseworthy.

    I grew up watching Cubs games on WGN and going to Tucson Toros and then Sidewinders minor league ball games. Getting a full, instant statistical analysis with every pitch over the internet has been a thing for almost my entire adult life. But the most formative part of my introduction to baseball as a kid and my love for the game now was sitting by the pool with my dad on Sunday afternoons, listening to AM radio broadcasts of Los Angeles Dodgers games called by Vin Scully (and sponsored by Farmer John). Every time I read about him I come across a story that's entirely new to me, and this tribute by Olbermann has several good ones.

  • Using ActiveSupport Concerns for CarrierWave Base Uploaders

    CarrierWave is my favorite library as of late for file uploading in Rails, because its mountable uploader classes go nicely with my preference of keeping classes small and compartmentalized. Unfortunately, one thing that gets in the way of that is poor support for base uploaders, where (for example) attempting to override the storage directory for a subclassed uploader won't work in every case, or enabling or disabling processing per uploader. My preferred solution to this problem is to fake it using ActiveSupport::Concern modules, which even allows you to stack "base uploaders" as deep as you want.

  • Ezra Klein interviews Cory Booker on The Ezra Klein Show

    An interview with a fascinating man who is definitely not your run-of-the-mill politician.

    I've found divinity in places where people wouldn't normally see it. I've found magic. … If we see no angels, it's because we harbor none. I like to be able to see the divinity and the angelic nature of humanity. If we see that more, it becomes real, it becomes true.

    Cory Booker very much mirrors my own optimistic view of politics and government as a vehicle for good. He'll be in the White House one day.

    Meanwhile, if you're not listening to The Ezra Klein Show, you're missing out; he's become one of the news media's best interviewers in a very short time. I've been following his work since his guest appearances on MSNBC in the "Countdown" era, and wasted no time subscribing to this podcast when it was piloted and then launched. A great interviewer never steals the spotlight from his guests, and Ezra does a fantastic job of letting his guests express themselves without leading them on or overwhelming them.

    His interview with Heritage Action for America CEO Michael Needham is an excellent example of this. Even though Needham is objectively wrong about Obamacare on a number of counts, Ezra is there to guide the conversation and let the listeners draw their own conclusions from it, not to get bogged down in arguments over who's right or wrong. The result is a unique insight into the operations of the modern-day conservative political machine and the worldview that drives it.

  • Give Your Buttons a Type

    I fixed a bug at work today where hitting the "Enter" key from a text input in an accordion form, in addition to submitting the form via a keydown listenerkd, would collapse the current section of the accordion, open the next section, and open a dropdown attached to a button in that section. If a user hit Enter a second time quickly enough, instead of submitting the text they entered in the first section of the form, the empty second section would be submitted, taking the user to an entirely different page.

  • Rails Development with Docker

    Lately I've found myself working on multiple personal Rails projects (namely, pokesite and lifeisleet), sometimes at the same time. As a result, I've come across a number of pitfalls with trying to work on multiple Rails sites simultaneously. After more than a significant amount of wrangling with various tools that try to make things easier—RVM, Vagrant, Cloud9—I've finally settled on Docker as my preferred basis for a solid, low-friction, reproducible Rails development environment.

  • Introducing Namekuji

    New site design, might as well use it to announce a new tool I've written. Namekuji is a slug generator for any Ruby ORM that builds on Rails' ActiveModel, including Neo4j.rb and Mongoid, born from my ongoing Pokémon website project's need for a slug generator that, unlike FriendlyId, isn't dependent on ActiveRecord.