It is not uncommon to come across a piece of code that looks something along the lines of: void FinalizeOrder(Order order) { // Some code here ... Printer printer = new Printer(order); printer.PrintReceipt(); // Some... | Continue reading
Ports and Adapters is an architecture pattern that aims to decouple your application from the details. By details here, I mean things like: Your web framework of choice Your database of choice Your favorite (or least... | Continue reading
There are tons of options out there for deploying websites, but my default approach for years has been: dump it in an S3 bucket with CloudFront in front. There's a big assumption and scope narrowing... | Continue reading
Recently, I encountered a conversation about "clean code." This was in the context of an engineering organization trying to improve the quality of its output. Because I am a grumpy old contrarian, my first question... | Continue reading
As a programmer I spend a lot of time in front of the computer. But despite appearances, I am not there. I am not in front of a computer every day for 8 hours drying... | Continue reading
I still remember the time I spiked my first application in a functional language—it was Autumn 2018, I had come to 8th Light to start my journey as a crafter, and I didn't even know... | Continue reading
We’ve all heard it. We’ve all said it. “Works on my machine”: I dread it. Margaret pulls down the latest code and finds an issue. She pops into the team Slack: “hey i’m getting an... | Continue reading
I'm sure at some point you've had to draw some boxes and arrows to describe the high level view of how a system works. But what are those boxes and arrows called? We often use... | Continue reading
I have never been a fan of "DRYing," out unit tests (i.e., abstracting duplicated test setup). I have always preferred to keep all of my test setup inside each individual test, and I opined about... | Continue reading
"I think if you maintain a force in the world that comes into people's sleep, you are exercising a meaningful power." — Don DeLillo, Underworld Over the last few years, Slack quietly took over my... | Continue reading
One of the earliest, most fundamental things I learned about writing code was the Don't Repeat Yourself (DRY) principle. Initially, this resonated with me. When writing the code, you've already solved a problem, why would... | Continue reading
Since the release of version 8, Java has been taking great strides to facilitate writing expressive and functional code. Unfortunately, these strides are often tripped up by one of Java's oldest and most pervasive features:... | Continue reading
Your code is complex and working with it is difficult. Years of development and bug fixes have you ready to declare bankruptcy on your technical debt and start again from scratch. It feels so freeing... | Continue reading
Microservices are a big deal. They can give us some pretty big wins for our architectures and teams, but microservices have plenty of costs too. As microservices, serverless, and other distributed systems architectures become even... | Continue reading
When you're learning another language, there can be periods of frustration where you're having trouble expressing an idea that would have been easier in a more familiar language. It's natural to wonder why the new... | Continue reading