DigBang: Safely unsafe Ruby hash traversal

Here’s Hash#dig!, a handy little piece of code I wrote for a project. It’s similar to Ruby 2.3’s Hash#dig, but raises an exception instead of returning nil when a key isn’t found. #dig is to #[] as #dig! is to #fetch Ruby 2.3 introduces the new Hash#dig method for safe extraction of a nested value. It’s…More

Comparing Kanban apps with GitHub integration

I’m working on this for a client: Comparing Kanban project management apps that have very good GitHub integration. So far I’ve looked at Huboard, Waffle, Zenhub, and Blossom. Blossom.io is the strongest for our needs due to the detailed cycle time reporting, showing where cards are spending their time. It also has some very useful project…More

Web Framework Comparison Matrix

This is how I evaluate frameworks for clients and my own projects. I’m doing my best to be: opinionated about which features matter unopinionated about the actual frameworks So you’ll be most likely to find this helpful if you value the same things I do: good CRUD support, good deployment and testing support, and an open and friendly…More

Goodbye “X for Y”: the cryptic Ruby error is becoming friendlier

Anyone who’s used Ruby has seen this message: r.rb:1:in `name’: wrong number of arguments (3 for 2) (ArgumentError) This particular error has been driving me nuts for years. It’s just so unnecessarily difficult to interpret — especially if Ruby’s not the only language you use. I never remember which number is which. Compare to Python: TypeError:…More

Infographic: OS X El Capitan License in Plain English

Shortly after I posted OS X El Capitan License in Plain English, I received an email from Bogdan Rauta, a Romanian infographic designer. He volunteered to create an infographic as part of a new project, Infographic Monster News. His idea is to report current news stories in the form of infographics. I’d say he’s off to a…More