Skip to main content

Benjamin Oakes

Photo of Ben Oakes

Hi, I'm Ben Oakes and this is my geek blog. Currently, I'm a Ruby/JavaScript Developer at Liaison. Previously, I was a Developer at Continuity and Hedgeye, a Research Assistant in the Early Social Cognition Lab at Yale University and a student at the University of Iowa. I also organize TechCorridor.io, ICRuby, OpenHack Iowa City, and previously organized NewHaven.rb. I have an amazing wife named Danielle Oakes.

Filtering for the Engineering category. Clear

What is the Liskov Substitution Principle?

by Ben

Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.

Source: What is the Liskov Substitution Principle?

How to win at Tetris (and code)

by Ben

Problems in our code are less like “debt” & more like the clutter of unfilled lines that accumulate in Tetris, slowly but surely reducing our maneuvering room.

Source: How to win at Tetris (and code)

Tetris as a metaphor for technical debt.

Spotify engineering culture

by Ben

Here’s part 1 of short animated video describing our engineering culture. This is a journey in progress, not a journey completed, and there’s a lot of variation from squad to squad. So the stuff in the video isn’t all true for all squads all the time, but it appears to be mostly true…

Source: Spotify engineering culture (part 1) | Labs

Here’s part 2 of the animated video describing our engineering culture. Check out part 1 first if you haven’t already seen it! This is a journey in progress, not a journey completed, so the video is somewhere between “How Things Are Today” and “How We Want Things To Be”.

Source: Spotify engineering culture (part 2) | Labs

Definitely something to aspire to. I’ve done a number of the practices they describe and I can attest that they go a long way towards reducing friction.

Useful tech terms: Yak Shaving, Technical Debt, Bikeshedding

by Ben

Yak Shaving: The process of performing a series of nested tasks to accomplish a goal, each of which seems necessary in context but becomes less and less linked to the original goal.

Technical Debt: The accumulated negative technical results of shortcuts and trade-offs taken in the past on a project, which place a drag on the cost of current and future development on the project.

Bikeshedding: Spending disproportionate time and energy spent over an insignificant or unimportant detail of a larger concern.

Source: Useful tech terms: Yak Shaving, Technical Debt, Bikeshedding

Combating the lava-layer anti-pattern with rolling refactoring

by Ben

Jimmy’s rule of 2: There can be at most two versions of a concept in an application

Source: Combating the lava-layer anti-pattern with rolling refactoring | Jimmy Bogard’s Blog