The perfect IDE in pictures: Part 1, *it* works for *you*

I don't think the perfect IDE exists. But all the right ingredients are out there. Allan MacGregor wrote a post about VIM as the "perfect IDE" that started an interesting discussion on dev.to. But I'm skeptical about the pages-long config file, the dozens of independent plugins, and whether the result is really an "IDE". This reminded … Continue reading The perfect IDE in pictures: Part 1, *it* works for *you*

Testing the multi-subdomain Rails app

Writing tests for a multi-tenant, multi-subdomain app turns out to be very tricky to figure out, e.g.: I saw that, and understood the frustration. Integration tests ("request specs" or "feature specs") are built on a stack of frequently changing libraries and shifting API's. And the recipe for subdomain-aware testing isn't documented in any particular tool's notes. … Continue reading Testing the multi-subdomain Rails app

The Economics of Programming: Externalized vs. Internalized Costs

Many days I feel like my work as an agile consultant is simply internalizing (externalized) costs. First example that comes to mind: software development done too quickly which creates technical debt as it goes. In the short term, a project like that can seem very successful, exceeding expectations for delivery time and customer satisfaction. And then … Continue reading The Economics of Programming: Externalized vs. Internalized Costs

Python vs. Haskell round 2: Making Me a Better Programmer

Another point for Haskell In Round 1 I described the task: find the number of "Titles" in an HTML file. I started with the Python implementation, and wrote this test: Very simple: I had already downloaded the  web page  and so this function had to do just two things: (1) read in the file, and then (2) parse … Continue reading Python vs. Haskell round 2: Making Me a Better Programmer

Python vs. Haskell round 1: Test Output

The point goes to Haskell On the surface, it may sound silly to compare these two languages because they're about opposite as you could get: Python is interpreted, dynamically typed, and slightly weakly typed as well. Haskell on the other hand, is compiled, statically and strongly typed. But they're both open source, and they both … Continue reading Python vs. Haskell round 1: Test Output

Engineering with Empathy: how do we decide when to fix?

It's a sappy title, but bear with me. I'm wondering if the best lessons of diversity and inclusion can be applied to software development? For example, if something is offensive to others, then it's worth looking for an alternative — even if I'm not personally offended. I witnessed an interesting disagreement on a software project: … Continue reading Engineering with Empathy: how do we decide when to fix?

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 … Continue reading Why I don’t use let/let! in my RSpec