Recent Blog Posts
Premature Optimization: Code First, Optimize Later
Premature optimization may be hurting the quality of your work. Focus on writing legible code first; optimize it later if you need to.
React, Iframes, and a Back-Navigation Bug
If an iframe re-renders in React, it can interfere with back navigation in your browser. You can fix this by unmounting the iframe.
Make Atomic Git Commits
It can be tempting to lump unrelated code changes into a larger commit, but atomic Git commits are more maintainable.
How to Format Code on Save in VS Code with ESlint
CRLF vs. LF: Normalizing Line Endings in Git
Line endings can differ from one OS to another. Learn the history behind CRLF and LF line endings and how to enforce line endings in git.
Popular Blog Posts
Why I Don't Like Tailwind CSS
On paper, Tailwind CSS sounds like a great idea. In reality, it suffers from the same problems that it tries to solve.
SVG Tutorial: How to Code SVG Icons by Hand
Learn the basics of SVGs so you can code your own SVG icons by hand, without always relying on icon libraries.
Be Careful with Async Functions that Return Booleans
Suppose an async function returns a boolean. What happens if you check the return value without awaiting it?
Creating Responsive Aspect Ratios in CSS
Learn how to give any element an aspect ratio in CSS, using the modern aspect-ratio property or a trick with percentage padding.
Hesitation Is Defeat
After a one-year hiatius from Sekiro, I returned to face the final boss—and, through painful persistence, triumphed.
How to Sort Ant Design Tables in React (the Easy Way)
The Ant Design UI library lets you sort tables by one or more columns, using a sorter prop. But the syntax can get quite repetitive. Let's fix that!
Goodbye, GitHub Pages—Hello, Netlify
GitHub Pages is a great option for hosting your site... until it isn't. Here's why I moved to Netlify.
Creating a Responsive Navbar Without Bootstrap
Want to create a navbar that works on mobile and desktop? Ditch the frameworks—in this tutorial, we'll create a responsive navbar using HTML, CSS, and JS.
How to Add a Copy-to-Clipboard Button to Jekyll
Getting Started with Jekyll and GitHub Pages: Your First Website
Jekyll is a static site generator that makes it easy for you to create a website. Learn how to get started with Jekyll and GitHub Pages.
Finite State Machine (FSM) Tutorial: Implementing an FSM in C++
Finite state machines (FSMs) are used in lots of different situations to model complex entity state. In this finite state machine tutorial, I'll help you understand the FSM design pattern by building one from the ground up for a simple use case.
Learn to Code Without Wasting Time & Money
A discussion of the things that beginner programmers tend to get wrong, as well as concrete suggestions for what they should be doing instead.
I have experience with a wide range of stacks and enjoy working on projects that have a strong UI/UX component. Below are just some of my software projects that I'm most proud of.