Technical guides, coding best practices, and software engineering insights for building robust, maintainable applications
This category dives into technical topics across the software development lifecycle:
These articles range from practical tutorials to conceptual explorations, suitable for developers at all experience levels. The focus is on pragmatic approaches that lead to high-quality software while acknowledging the trade-offs and constraints of real-world development.
Ever wonder what Git does behind the scenes when you run git commit or git push? That mysterious .git folder holds all the magic—it's Git's brain, memory, and filing system rolled into one. Today we're cracking it open to see how Git really works under the hood.
You're knee-deep in a feature branch when urgent production fire hits. Instead of stashing, switching, and losing your mental context, what if you could just... open another folder and work on the hotfix immediately? Git worktrees make this possible, and once you experience the workflow, you'll wonder how you ever lived without them.
Ever stared at a Git command with HEAD^ or HEAD~ and wondered if you're about to accidentally nuke your commit history? You're not alone. These two syntaxes look suspiciously similar but behave differently when your repository gets complex. Here's the playbook I'd run to understand when to use which one.
Today I'm thrilled to announce the next release of Pride Flags, a pure CSS library that empowers developers to easily incorporate LGBTQ+ pride flags into their web projects. This lightweight, accessible solution lets you display flags as either full-sized images or compact icons with minimal effort and maximum impact.
Your git commit history could be telling an epic tale of how your codebase evolved, or it could be a cryptic collection of "fixed stuff" and "updated things." The difference isn't just aesthetic—it's the line between a repository that teaches and one that confuses. Well-crafted commits don't just track changes; they document your code's journey in a way that helps your team and future you.
Have you ever stared at a Git diff that looks like it was generated by a cat walking across your keyboard? You're not alone. While Git's default diff algorithm works well enough most days, there are times when it produces cryptic, unusable output that leaves you scratching your head.
I stumbled across Git Notes during a late-night debugging session last week, and honestly, I'm slightly annoyed that I hadn't been using this feature for years. If you've ever wanted to attach persistent metadata to commits without changing commit hashes (and who hasn't?), this hidden gem deserves your attention. And while we're exploring Git's underappreciated features, let's also look at Git trailers - another powerful tool for managing metadata in your repositories.
Version control with Git offers developers multiple ways to integrate changes across branches, with merge and rebase standing as the two primary approaches. While both accomplish the same fundamental goal—incorporating changes from one branch into another—they do so through fundamentally different mechanisms, resulting in distinct commit histories and team workflows. Understanding when to use each strategy can significantly impact your project's history clarity, team collaboration, and conflict resolution process. In this deep dive, we'll explore how each option works under the hood, examine real-world usage patterns, and provide clear guidelines for choosing the right approach for your specific situation.
Ever find yourself juggling endless passwords, worried about whether they’re secure enough? You’re not alone. In today’s digital landscape, protecting sensitive accounts and data goes beyond just a clever passphrase. Enter multi-factor authentication (MFA)—an effective layer of defense that ensures a random intruder can’t waltz in with stolen credentials.
Open-source software is everywhere. Most of the software you use daily is open-source or built on top of open-source components. Contributing to open-source software is a great way to learn new skills and gain experience. It can also be an opportunity to help others, as many people worldwide often use open-source projects. It might seem intimidating initially, but it doesn't need to be.
Historically, updating software on Windows has been a pain. You had to go to each website, download the installer, and run it. This was especially true for software that was not installed from the Microsoft Store. While this is still true for some software, there is a new tool that makes updating software much easier.
SSH keys are a great way to authenticate with a remote server. They are secure, and they are easy to use. However, they can be a pain to manage. If you have ever had to deal with a bad SSH key, you know what I mean. Especially if you are using cloud services where IP addresses may be reused.
When publishing an article it is often a nice touch to let users know roughly how long it will take to read, and what level of investment they can expect to make. While every reader is different, the average reader can ingest about 150 - 200 words per minute, depending on the type of text.
As a developer, you may want to load the Visual Studio environment in your default PowerShell profile. This is useful for debugging and developing.
The software industry has a diversity problem. Specifically that there isn't much diversity at all. We are also living in a time where we are hearing about project maintainers engaging in targeted harassment against minorities. This is a problem that we need to address. Why do we as a community have to deal with this, and how can we as maintainers help? Trying to fix a broken system is not a solution, but trying to make it better is the first step.
Developing code is not easy. It is a challenge, but it is also a fun thing to do. Maintaining a project, however, is not easy either. It requires a very different skillset and time investment. When I became a maintainer of Selectize, I was able to learn a lot about the project and how to improve it, and I was able to learn so much about how to interact with the community.
Hosting your site on Github Pages is fantastic, easy and inexpensive. Using Jekyll to generate your pages is easy and very configurable. It's the perfect solution for a static site (as well as what I use for this blog). Sometimes, however, you may run into situations where you need to redirect a page to another page, and without access to your backend to use server-side redirects you need to do it manually.
When configuring a development environment, you can use the PowerShell command to display all environment variables. This can be useful for gathering information about the environment, or for debugging.
Oops! That was a mistake
While it is sometimes easy to determine what app is using a port, it is not always the case. For example, if you are running a web app, and you want to know what app is using port 80, you can't just look at the process list. You have to run a script to find the culprit. In the past this was a netstat command, but it can be simpler to use PowerShell.
It's the tiny details that show you care
Organizations that leverage social media to amplify their voices may find that they missed a crucial step. Often, people will not speak up, if we don't let them. Let's discuss how we can be sure to include diverse points of view.
How to keep your WSL instance up to date
Eight tips for becoming more productive as a developer
Discovering Changes in Your Git Repository