Blog
Deep dives into technical challenges I've tackled, from teaching an AI dog new tricks to wrestling with WebSockets. These posts explore the reality of software development - accidental rabbit holes and JSON-induced existential crisis.
Making Wooster Talk: A Deep Dive into Structured Logging
From chaotic console.logs to structured logging: How Wooster learned to communicate clearly using Pino, environment-aware configuration, and proper log levels.
From Fetch Mocks to MSW: A Testing Journey
How a simple Axios refactor led me down the path of modernizing my test mocks with Mock Service Worker, and the valuable lessons learned along the way.
Refactoring Wooster's API Layer: A Simple Approach with Axios
Moving from fetch to Axios: simplifying API calls, adding interceptors for authentication, and improving error handling - all while following the official documentation patterns.
Deploying Wooster: A Tale of Memory Limits and Nginx Configs
Adventures in deploying an AI travel planner: memory limits, OAuth drama, and rate limits.
State Management: Teaching Wooster to Remember Things
Building a clean, efficient state management system for Wooster using React, Supabase, and TypeScript: a look into reducer patterns, data fetching, caching strategies, and lessons learned from minimizing useEffect usage.
Structuring the Front End: Building Wooster's User Interface
Creating a well-structured front end for Wooster with a feature-driven component architecture, engaging UI, and a balance of simplicity and interactivity.
Building a Scalable Express Backend for Wooster
From MVC architecture to endpoint design: Building a scalable Express backend that even a golden retriever could understand.
Teaching an AI Dog New Tricks (The Gemini Integration)
Integrating Google's Gemini API to give Wooster its personality: prompt engineering, response parsing, and teaching an AI to think like a golden retriever.
Building Wooster's Backend Brain
Teaching an AI dog new tricks: database design, Express endpoints, and why I'm probably overthinking this.
Full Stack in a Week: Building an AI Trip Planner
Building a full-stack AI trip planner in one week - featuring a golden retriever named Wooster
State Management Archaeology: Untangling a React Codebase
From 30 state variables to 9: A deep dive into refactoring React state management, eliminating unnecessary effects, and building a maintainable architecture through testing.
Hugo with the flow
How I used Hugo to automate my blog static site generation, and how to set up Hugo with an existing website
Dancing in the Dark (Designing A Portfolio Site)
My first ever article! My design philosophy for this portfolio.