archive
all writing
August 22, 2025
Why AI-native design systems unlock brand-ready, production-aligned prototyping with v0
April 8, 2025
How to add subdomain redirects to a domain hosted in Vercel and using Vercel DNS to manage the DNS records.
February 15, 2025
How to integrate a CAPTCHA / Bot Turnstile into a React Hook Form inside a Next.js Typescript application.
August 28, 2024
Simple ZSH utility function to find and kill running ports
July 25, 2024
Using a builder pattern to properly translate data between integration points when utilizing Typescript generic functions
July 15, 2024
Automating GitHub releases and using a basic semantic versioning action
May 20, 2024
A brief reflection on traveling to all 50 US States before turning 25 years old.
April 19, 2024
How to use Zod to parse and transform untyped data for type safety
March 23, 2024
A super easy local setup to get a MySQL database up and running using a Docker container.
October 31, 2023
How to write valuable unit tests for Next.js App Router API handlers using Jest and React Testing Library.
October 10, 2023
How to estimate Pi using a Python Monte Carlo simulation, along fun Turtle visualization of a dart board.
October 8, 2023
How to use a Next.js feature to dynamically generate Open Graph / Twitter images styled with Tailwind.
September 8, 2023
How to add custom props to a styled Material UI component, allowing for error handling and customization.
August 7, 2023
How to manually build and deploy a Next.js App Router application to Netlify using a GitHub Action pipeline.
February 3, 2023
How to effectively conduct SWIFT (Structured What If Technique) exercises in hybrid work environments for better system design and risk assessment.
January 9, 2023
How to manually build and deploy a Next.js App Router application to Vercel using a GitHub Action pipeline.
January 1, 2023
Welcome to my very first blog post. A very brief and unimportant post to kick things off.