Sarah Savage logo

A fusion of development and business

The danger of boolean flags in object methods

Developers like to use booleans as flags. They’re a convenient way to indicate something as on/off, true/false, yes/no. But the problem is that booleans are not clear from calling code exactly what they do. For example: Does anyone in the calling scope have any idea what the defining scope is doing? Absolutely not. The flag could be set for saving the name in the database, or for making it all capital letters, or for echoing… continue reading.

Endings in open source

Most projects announce to some kind of fanfare – some greater than others. We love to see a new open source project released, and we cheer when a new package is available that solves a problem, particularly if it’s a problem we’re having. On the other end of the spectrum is the fact that open source packages can sometimes run their course, and need retirement. Such is the nature of a package that I maintain,… continue reading.

Air Traffic Control: Routing microservices with a single Nginx server

In my last post I talked about linking microservices together inside a single Docker network for easy communication between the services. For web developers, this poses an interesting problem: if we want to access the services from our local machines, we need to deal with the fact that we can’t have multiple machines bound to the same port. If you have two microservices running at the same time, both trying to bind to ports 80/443… continue reading.

How to move faster WITHOUT breaking things

In 1978, United Airlines Flight 173 crashed just short of Portland International Airport. Due to a landing gear malfunction, the aircraft was circling the area trying to resolve the issue; the copilot and flight engineer hinted to the pilot as to the state of the fuel system, but these hints were ignored until the engines flamed out. Ten people died. On April 4th, 2022, Atlassian inadvertently deleted a number of cloud accounts. The incident stemmed… continue reading.

Using common networks for communicating via microservices

If you have ever worked in a microservices architecture, you know that you have many related but separate services, often in isolated development environments. For example, you may have the identity service separate from the user creation service, which is separate from other services. Using mocks (like WireMock) is a good idea for testing against APIs that you need to implement but don’t want to test directly against. It’s easy to include a mock server… continue reading.

My journey of transition and self-discovery

For me, it started like so many inquiries do: with a Google search. I typed my query into Google, “what does it mean if you feel like the opposite gender”, and held my breath while Google worked its magic. That day I learned a new word: “transgender”. It was a word I knew before but had never really considered. As I read the stories of others who felt like I did, I realized something very… continue reading.

In defense of the “monolithic microservice”

There are a plethora of articles online about how microservices are bad. And I tend to agree with many of them – microservices are often a solution in search of a problem, and when you have multiple services running and communicating with each other, you have an increase in the number of overall problems you face as a developer. So why in the world would I recommend a microservices architecture to my client?! The truth… continue reading.

A Commitment to Community

Last week I attended php|tek in Chicago. During the conference, a number of speakers espoused the value and importance of contributing to the open source community. Ben Ramsey talked about how his contributions to open source didn’t seem to be valued in his most recent job search. He also talked about the value and importance of saving PHP. Michelle Sanver talked about the importance of community and the value in being part of it, but… continue reading.