Alternatives to Boolean Parameters

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


@8thlight.com | 2 years ago

A Color Coded Guide to Ports and Adapters

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


@8thlight.com | 2 years ago

Static Site Deploy Previews on AWS

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


@8thlight.com | 2 years ago

Values Are the Rules You Break

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


@8thlight.com | 3 years ago

Caring about Coding

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


@8thlight.com | 4 years ago

Functional Lessons Learnt

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


@8thlight.com | 4 years ago

“Works on my machine” doesn't work

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


@8thlight.com | 4 years ago

What Is Software Architecture?

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


@8thlight.com | 4 years ago

Essential and Relevant: A Unit Test Balancing Act

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


@8thlight.com | 4 years ago

Effective Slack Alerts

"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


@8thlight.com | 4 years ago

I'm Only Going to Say This Once – Don't Repeat Yourself (DRY) Principle

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


@8thlight.com | 5 years ago

Functional Exceptions in Java

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


@8thlight.com | 5 years ago

The True Cost of Rewrites

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


@8thlight.com | 5 years ago

Microservices Aren’t Magic: Handling Timeouts

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


@8thlight.com | 5 years ago

Exploring Error Handling Patterns in Go

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


@8thlight.com | 5 years ago