Writing about software engineering and developer experience

All of my blog posts, even the ones that I might not fully agree with anymore. Software engineering is a process of continuous learning, don’t ever think there isn’t more to learn.

My Journey to Become a Staff Software Engineer

A common question I hear from junior-level software engineers is what it takes to advance in their career as software engineers. In this article, I discuss my journey to becoming a staff software engineer and what I learned along the way.

Using Yarn Constraints

Yarn 2 introduced a new feature referred to as "constraints" to help you manage packages in your monorepo. In this article, I explain how constraints work and show you how you can use them to enforce consistency in your monorepo.

Automating npm Package Releases

Releasing npm packages can be a challenge. There are often many steps in the process and forgetting a step can result in a package being released incorrectly. In this article, I will show how to implement semantic-release in your project to fully automate your npm package releases.

Auto Formatting Code Using Prettier and GitHub Actions

Enforcing consistent code formatting in your repositories with Prettier is great, but it can easily result in a less than ideal developer experience. In this article, I discuss how to leverage GitHub Actions to automate code formatting without requiring any additional steps from developers.

Conquering Derived State

Derived state in React is generally considered to be an anti-pattern that should be avoided. In this article, I show how to recognize derived state in your components and alternative ways to write your components to avoid using derived state.

The Dangers of Shallow Rendering

Shallow rendering is an approach to unit testing made popular by the Enzyme library. In this article, I discuss many of the problems that arise when using shallow rendering and why you should avoid it when writing unit tests for your React components.

Why I Don't Use Environment Variables

Environment variables are a great way to manage configuration in your applications, but they introduce a number of challenges. In this article, I explain an alternative approach to managing configuration in your applications using environment files rather than environment variables.

Customizing npmjs.com Styles

Viewing npm packages on npmjs.com is a common tasks when developing front-end applications. In this article, I show a few small CSS customizations to improve the npmjs.com styles.

Automated npm Publishing Using GitHub Actions

Releasing npm packages can be a challenge. There are often many steps in the process and forgetting a step can result in a package being released incorrectly. In this article, I will show how to use GitHub Actions to automate some of the manual steps required to simplify your npm publishing workflow.

A Tale of Two Ideas

Every day, we encounter ideas and viewpoints that affect our lives in one way or another. In this article, I discuss how to look at differing ideas more objectively to help you make better decisions at work and in your personal life.

My Experience Changing my GitHub Username

Are you considering changing your GitHub username? In this article, I discuss everything I learned when changing my GitHub username to help you understand the steps required in this process.