Let’s say you’re creating a feature branch off a master for a new feature you are about to implement. You finish up your work on the feature branch while one of your colleagues is making some changes on the master branch. Before creating a pull request, you might want to make sure you have the most […]
When you’re working on a piece of software for a long time, it can be easy to overlook poor architecture or an awkward UX. You may spend your day avoiding the dark corners of your app and choosing to forget that they even exist. Unfortunately, when this happens, the health of our codebase and application […]
Bluetooth is one of those technologies that seems like a very simple thing from the perspective of a user—you set it up once and forget about it. But in reality, there’s a lot of complexity hidden behind the scenes. As we all know, wherever there’s complexity, there’s more that can potentially go wrong.
In the last two years, I’ve worked on a few projects passed on to me by other teams. Inheriting an existing codebase can be a challenge, given you weren’t there when architectural decisions were made, you are less familiar with the project domain and client needs, and you are just new to the codebase. In […]
It is no secret that git push --force is dangerous. Without question, it will replace the remote with your local changes—and it won’t stop to check if that will override any changes pushed up to remote in the process. When working in a shared repository, this spells danger for even the most careful developer team.
Recently, I discovered a new tool that quickly became an integral part of my daily development workflow. It’s called up – the Ultimate Plumber. It allows for interactive chaining of pipe outputs. This is a good choice for anyone who frequently pipes the output of awk, sed, grep, and other command line utilities together.
Good code is easy to change. I read that somewhere in the depths of the internet about a year ago, and it’s substantially affected the way I code. It’s a pretty simple statement at face value, but it takes on a new meaning when read in terms of equivalence: Good code is code that’s easy […]
I’ve been working on a REST API written in ASP.NET Core 2.1. Recently, our team wanted to write tests that exercised our business logic and also interacted with our database. I wasn’t able to find many examples of this online, so I was motivated to write this post and share our approach.
If you’ve worked with a piece of software that talks to a database, chances are you’ve come across a long SQL query. Slowly, your eyes glaze over as you attempt to reason through the many joins and subqueries, trying to figure out if this query is the source of the bug. You debate between the […]
Having a hard time sorting through the vast array of books, talks, blog posts, contradictory advice, and academic writing about Test-Driven Development? I’ve spent the last quarter wading through resources on TDD, and I’ve summarized the most important things any new TDD developer should know into these six areas.