There is a misconception that Remix is only for static sites. This is a how-to guide for building a full-stack app with the new framework + Prisma + Supabase, and deploying it to Vercel.
The difference between good and bad commit messages, and how to enforce the structure with commitlint and Husky git hooks.
We spend far more time reading code than writing it. Set up a linter and code formatter so you don't spend time worrying about how your code should look, and automatically fix a lot of common errors.
Should you use Type Aliases or Interfaces? The answer may surprise you.
I've decided to move away from GA and go with a different analytics product.
Let's talk about the BFF pattern. No, BFF doesn't mean Best Friends Forever, but really it kinda is.
I was recently asked about the best way to calculate a particular Fibonacci number. In this post I explain why you may not always want to reach for recursion, a favorite technique of interviewers. ✨ WITH MEMES AND GRAPHS. ✨
Running a Docker container usually does not allow you to persist any configs or other files. Let's look at a few ways to make this more useful.
This is a dramatic retelling of the time I had to chase a particular bug across several layers of the stack. Read on and see if you can figure out what the issue was.
Automate the process of updating your Slack status using information in your calendar.
It gets tedious if you need to write a script every time you need to parse an API response to do some data analysis on it. This post shows you how to do that from the command line.
Unix/Linux utilities are one of my favorite ways to do basic text analysis. This post was originally a Twitter thread but I kept running into the character limit and wanted to write it down in longer form, so here we are.
Fix your interview process! Complicated whiteboarding sessions only test whether you’re good at interviewing and whether you are good at memorizing textbook solutions to textbook problems. They don't tell you if someone will be good at their job.
yakdb is a highly-performant in-memory key-value store. This in an experiment in writing a key-value store with Golang.
I seem to get a lot of traffic to my post about mass virtual hosting with Apache, so I felt like I should probably write this simply for the sake of completeness, even though it's brutally simple.
I needed to move a 100gb database (all tables are INNODB) from a server in datacenter A to a different server in datacenter B. It was complicated enough to need to be documented.
Sometimes you have no choice but to use Apache. And you might want to support wildcard domains for your entire team so dynamic hostnames work.
Once upon a time, I really enjoyed writing in my blog. While I enjoyed blogging, the website/server maintenance part of it sucked because I had to keep Wordpress updated and run yum update semi-religiously to ensure that my server didn't get taken over by a bunch of script kiddies, all to protect a few dozen blog entries.