Comic panel. Two pilots in a plane are talking. A: Weather's stable. B: Nothing lasts. A: Can't we do a day without this?

From Cockpits to Code: How Culture Influences Professional Communication

How does culture affect our communication? How can we be more attuned to how others communicate? ...

July 22, 2025 · 3 min
Comic: A person is paying attention to the meeting until they get interrupted by a phone notification.

Don't Put Your Phone on the Work Desk

My phone is the most distracting piece of equipment I have. In the pursuit of focus time at work, I started hiding and silencing it. This experiment has dramatically improved my productivity: I’m less distracted, I’m in the zone longer, and I have more motivation. I lost track of how many times I grabbed my phone to check something, only to find myself lost somewhere on Reddit. Receiving a funny meme during a meeting? Sometimes, it’s worth it, but often, it can wait (and is better savored after the meeting). Getting back to focus mode costs time, energy, and motivation - I don’t want to do it over and over again. ...

September 26, 2024 · 3 min
Terminal window asking if user wants to commit vendor folder.

Maybe You Should Commit Everything You Need to Run Your Code

I’ve been committing generated code and vendor folders for over a year. I am delighted with the overall simplification of continuous integration, building, and deploying flows. They all complete faster and more reliably. Teams are happier and more productive with these changes. Let me convince you to give it a try! If you had asked me a couple of years ago what I think about committing generated code or third-party dependencies, I would probably have hit you with a stick. Why would you add code that you can download with one command?! I’ve turned exactly 180° on that. ...

September 1, 2024 · 5 min
List of decision records.

Fostering Collaborative Architecture: Decision Records

Collaboration is the most essential part of the architecture. More people in the room will produce more alternatives, challenge each other, and end up with better results in the long run. It also doesn’t matter if we get it right when there is not enough buy-in. A collaborative nature should intertwine all stages: thinking, feedback, implementation, documentation, and reflection (which could lead to revision). Decision records helped me improve teamwork and transparency in these areas over the years. Documentation and historical context happen as a “side effect”. This method is so effective and lightweight that non-engineering departments in a company started using it independently, without any guidance. ...

March 14, 2024 · 9 min
Diagram: Employee module exposes salary to payroll and salary benchmarking modules.

Navigating Domain Corruption, Dependencies and Simplicity

Assuming we and our teams bought into domain-driven design, the next question is, how do we interact between modules? Giving access to domain entities sounds like a great idea, but it carries consequences. There is a good argument to be had for exposing entities. After all, we spend a lot of effort ensuring our code expresses our domain well. On top of that, we ensure data can’t get into an invalid state, and trying to do so returns a descriptive error. Why would we forfeit it? ...

February 25, 2024 · 6 min