Why I don’t use let/let! in my RSpec

At work, we’re deciding on our test-writing style: let/let! blocks like let(:arg) { 5 } vs. instance variables defined in a setup method like @arg = 5. I’ve found no advantage to let; but I have experienced disadvantages. I’ve found no disadvantages to instance variables. And so, đź‘Ť for instance variables. I’ve written many specs…More

The Benefits (not features!) of Programming with Haskell

I’m just a couple of months in, and have written my first production Haskell app, a PDF parser for Oregon laws. Programming it feels different, in a good way. Looking over the list below, two themes — easy and fast — stand out. Compared to OO languages: It’s easy to jump back in to previous work; easy to test my…More

Wifi LAN Performance Test comparing 3 routers and 6 computers

In the past year, I noticed that my wifi had gotten too slow to smoothly ssh from one computer to another. Screen sharing was also very rocky. I began to suspect that either my Macs or my Apple router were seriously under-performing. Ping times are a great performance indicator for the apps that I use as…More

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