All Blog Posts
Programming tutorials, musings about technology, and the occasional off-topic post.
How Writing Can Help You Become a Better Developer
Writing is likely one of the last skills you associate with software development. But it plays a key role in a developer's life and can help you build a more successful career.
Remember to Set a Width and Height on Your Images
Layout shifts can be annoying and may even hurt your page's ranking, but you can minimize them by setting a width and height on images.
Why You No Longer Enjoy Reading
Reading books isn't something that everyone enjoys. But if you used to like reading but can no longer get past the first chapter of a new book, there may be a few reasons why.
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.
Creating a Vertical Rhythm with CSS Grid
Margins are what you typically use to define a layout's vertical rhythm. But CSS Grid offers a better alternative.
Rest in Peace, Flash
If it were up to me, things wouldn't end this way. We had some great times together, but now it's time to say goodbye.
Subtle Web Accessibility Issues (And How to Fix Them)
You've scored 100 on Lighthouse's accessibility audit. But is your site actually accessible, or have you overlooked more subtle accessibility issues?
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?
Dynamic Tag Name Props in React (with TypeScript)
Sometimes, a React component needs to allow users to render a custom tag. Here's how you can pass dynamic tag names as props.
What Are Higher-Order Components in React?
Higher-order components are one of React's most popular design patterns, allowing you to define reusable stateful logic and create powerful, flexible components.
6 Ways to Undo Changes in Git
If you ever find yourself in a sticky situation with git, don't panic. Here are six simple ways you can undo changes in git and clean up your commit history.
Does Web Performance Matter? It Depends.
Some big brands have a slow page load speed, but they still rank well on Google. So does web performance even matter?
Returning Data After an Insert in PostgreSQL
Easily return auto-generated and serial IDs after inserting new rows into a table with PostgreSQL's RETURNING clause.
Responsive Aspect Ratios in CSS with Percent Padding
Learn how to give any element on your page a responsive aspect ratio, using a CSS 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.
Optimizing Images for the Web with WebP and Lazy Loading
Blue People Illustrations, or How to Kill a Brand
There's a recent trend in web design of using illustrations of blue, generic, faceless people. And it's killing brands.
Don't Mind the Leetcode Grind
Leetcode is one of those polarizing topics that you either love or hate. But what exactly is it? And does it even deserve your attention?