AI buzzwords are everywhere. Terms are thrown around in dialogue that feel like they've existed for decades but have only emerged in the past year or two. I've experienced a broad disparity between two groups of people: those I would consider "AI power users," regularly on the bleeding edge of every new innovation, and those who have only dabbled in the subject and wouldn't be able to grasp…
Software engineers understand technical debt. It is the accumulated cost of trading off quality for speed or the short term for the long term that must eventually be repaid. Leaders have their own version of this ledger. I call it human debt : the relational cost incurred when you must sacrifice goodwill or trust to serve a higher priority. Software engineers often have to make decisions around…
Every leadership decision about team composition is a strategic bet. You can prioritize short-term execution or long-term capability building, but rarely both equally. An important skill of leadership is building teams, or the ability to decide how to bring together a set of people to effectively solve a problem or achieve an objective. This skill can be applied at the smallest scale with just a…
I get asked how I stay informed as a technology professional when the industry seems to be moving faster than it ever has and the demands of staying informed to keep up have never been higher. In this post, I'll summarize what works for me so that it might inform you if you're curious and supplement your practice if you're looking to get better at it. Reading is how I like to stay informed about…
I recently read a blog post lauding the experience of using Claude Code for Web . Specifically there was quote in the post that goes as follows: I’ve been using it as a “to-do list that does itself” — when I think of something small that I want to tweak, across a variety of projects (work, work-related side project, side project, open source project) I just throw it into a thread. Then I come…
I spend lots of time speaking with friends and other technology professionals about a wide variety of topics from career advice, technology hype cycles, how to lead people, and finding success in our personal endeavors. Over hundreds of these discussions, I find myself returning to some of the same tidbits of wisdom that I reference with a short phrase or label. These ideas have been passed down…
I've spent the better part of the past decade as a technology professional, moving up and across multiple roles of software engineering and leadership. Through the years, I've built up and refined a personal set of organizational tools and processes that I feel has grown with me through my career and continues to drive consistent, positive outcomes for me. Core Strategies My professional…
I constantly encourage my teams to leverage Generative AI (GenAI) in their daily work. It's a powerful way to offload manual toil, allowing them to focus their mental energy on higher-level creative tasks and shrink the gap between an idea and its realization. There are countless GenAI techniques geared toward individual contributors who spend most of their time building, configuring, deploying,…
I have been self-hosting a fleet of Minecraft servers on and off since around 2022. Through the process, I've been able to build and maintain a broad array of Cloud DevOps skill-sets. I have been leading a portfolio of Cloud Platform Engineering teams for the better part of 3 years. The position of leader didn't afford me much, if any, time to be hands-on with the core technologies that my team of…
This year, with the buzz of GenAI's burgeoning capabilities as a pair programmer looming large over my industry, I took the opportunity to find out whether the hype was real. I rebuilt my personal website from start to finish with GenAI and augmented coding assistance at the forefront of my approach. You can see the results for yourself (you might be reading this very post on the new site!), but…
This document should serve as a concise artifact that describes my style of work and leadership. It should serve as a quick way to get up to speed with what to expect as a new colleague or member of my team. I am a strong believer in the merits of documenting, not just discussing, complex ideas for the purposes of clear and unambiguous communication. This document aims to provide an evergreen…
Editor's note · June 2026 The GitHub developer API link in this post has been updated to its current canonical URL. The standalone developer.github.com site was folded into the main GitHub docs, so the REST and GraphQL API references now live under docs.github.com . I was recently having a design conversation with some engineers on my product team. We were discussing the implementation of a…
Think back to the last time you checked the tracking information for a package you were expecting to receive. You might have followed a link in your email that gave you a breakdown of where and when your package was received and shipped out of various locations. You could make a mental map of what shipping facilities passed through around the world it and how long it spent there and on the road.…
Editor's note · June 2026 All of the GitHub help links in this post have been updated to their current canonical URLs. GitHub retired the help.github.com domain in favor of docs.github.com , and the Dependabot security update, dependency graph, notifications, and branch protection articles have all moved to new paths under that domain. I'm a big proponent of keeping software up to date.…
One of the most common tropes of working as a software engineer I've noticed is the constant lambasting of old code . Anything older than a few years was never described by my peers as anything close to elegant, easy to read, maintainable, or generally pleasurable to work with. There are many existing posts out there (at least one I've read ) that outline how to emotionally deal with the…
Editor's note · May 2026 When this post was written the site ran on Gatsby. The site has since been rebuilt on 11ty (Eleventy) with Tailwind CSS, so the Gatsby endorsement below reflects the state of the stack in 2019 rather than a current recommendation. Editor's note · June 2026 Two external links in this post have been updated to their current canonical URLs: GitHub's…
Editor's note · June 2026 All of the GitHub help links in this post have been updated to their current canonical URLs. GitHub retired the help.github.com domain in favor of docs.github.com , and the articles on licensing, contributing guidelines, and healthy contributions have all moved to new paths under that domain. In my last post , I outlined what open source is and presented some steps…
Editor's note · June 2026 The GitHub help link in this post has been updated to its current canonical URL. GitHub retired the help.github.com domain in favor of docs.github.com , and the pull request templates article now lives under the Communities section there. Did you know that a large part of the software you use everyday was probably built with tools and technologies that are freely…
As software engineers, there are lots of tools available for us to use. We might start simple with a programming language or two. From there, we might explore software libraries that help us be more productive when solving problems, or tools to help with collaboration. If our use-case requires it, we could reach for advanced monitoring tools to alert us when our software is doing something it…
Editor's note · June 2026 Two Google AI references in this post have been updated to their current canonical URLs. DeepMind's site moved from deepmind.com to deepmind.google after the broader Google AI consolidation, and the Google AI Blog ( ai.googleblog.com ) was folded into research.google/blog with the Duplex post now reachable there. I was recently listening to an episode of the…
In a previous post about continuous integration and deployment, I alluded to the practice of constantly putting code through various tests and making the results visible, whether within a software team or to the public for an opensource project. In this post, I want to dive a little deeper into what "testing" actually is in the context of writing quality software. Specifically, I'd like to shed…
Editor's note · June 2026 Two external references in this post have been refreshed: the Stack Overflow 2018 Developer Survey citation in the image caption below was updated from insights.stackoverflow.com (the old subdomain Stack Overflow used for survey results) to the current survey.stackoverflow.co . The RethinkDB link further down is preserved, but note that RethinkDB the company shut…
This article will teach you how to write your very own Slack chatbot that answers simple questions using some basic machine learning tools. Most of the more complex stuff around natural language processing and math behind creating machine learning models is mostly abstracted out, leaving room for us to easily build a finished product in a pretty short amount of time. If you're looking for a simple…
This post was originally published when I was in college in 2014. I was enrolled in a digital design class that dealt with designing and implementing digital circuits through software. It was one of the first posts I shared publicly where I tried to write about something I learned about and work on. This past semester, I had the opportunity work on a couple of pretty interesting class projects.…
Editor's note · June 2026 The Travis CI links in this post ( travis-ci.com and travis-ci.com/getting_started ) are preserved as the canonical service URL but are largely obsolete in 2026 - Travis CI retired its free open-source tier in 2020 and the service has since been overshadowed by GitHub Actions , CircleCI , and other modern CI providers. Modern software moves fast and demands more…
Callbacks vs Promises vs Async/Await JavaScript and many other programming languages support an abstraction known as asynchronous execution. What this means is when you want to execute some task that might return some data in an unknown amount of time, JavaScript lets you predefine what to do once that data does show up while continuing to run the rest of your program. An example of this might be…
Editor's note · June 2026 The Vagrant and Vault product links below have been updated to their current canonical URLs. HashiCorp has since consolidated its product documentation under developer.hashicorp.com , so the standalone vagrantup.com and vaultproject.io marketing sites redirect there today. Every few weeks or so, I try to spend some quality time getting to know a concept or…
Disclaimer: This article is aimed at beginners to software development or those looking to enhance their personal project experience. I do a lot of recruiting for my job, mainly for entry level or interns for software engineering. A common question I always get asked about this from prospective new hires is: "How do I stand out?" The answer for me is simple. Have experience building software and…