ResumeLabBlog
Matt Huggins

Matt Huggins

Web & Mobile Developer

matt.huggins@gmail.comhuggiemhugginsmatt-huggins
Projects
Codebound
Collectible card game
SVGConverter.io
Vectorize raster images
Recent Blog Posts
One Schema, Two Codegens: Typing GraphQL Across Client and ServerOne Schema, Two Codegens: Typing GraphQL Across Client and Server
Jun 17, 2026
Structuring the GraphQL Request ContextStructuring the GraphQL Request Context
Jun 9, 2026
Building Real AI Agents with the Vercel AI SDKBuilding Real AI Agents with the Vercel AI SDK
Jun 2, 2026
Blog Topics
aidata fetchingform managementgraphicsgraphqljavascriptnode.jsreactrubyruby on railssecuritytanstack formtanstack querytypescriptuser experience

Blog Posts

One Schema, Two Codegens: Typing GraphQL Across Client and Server

Jun 17, 2026
graphqlnode.jstypescriptjavascript
One Schema, Two Codegens: Typing GraphQL Across Client and Server

How I keep a single GraphQL schema as the source of truth across a client and a server: sharing the SDL, generating types on both ends, and using fragments to declare a shape once and compose it into complex reusable types.

Structuring the GraphQL Request Context

Jun 9, 2026
graphqlnode.jstypescriptjavascript
Structuring the GraphQL Request Context

My approach to shaping an Apollo server's GraphQL context around three fields: a resolved current user, a shared data layer, and a fresh set of DataLoaders.

Building Real AI Agents with the Vercel AI SDK

Jun 2, 2026
typescriptnode.jsaisecurity
Building Real AI Agents with the Vercel AI SDK

The Vercel AI SDK makes it easy to call a model and stream a response, but the quickstart skips the parts that matter for a real application: forwarding the user's identity to your internal services, writing a system prompt that holds up under pressure, and building tools the model can't misuse. Here's how I approach all three.

Fixing TanStack Form `defaultValues` Type Discrepancies

Jun 2, 2026
reacttypescripttanstack formform management
Fixing TanStack Form `defaultValues` Type Discrepancies

When TanStack Form's defaultValues object narrows a union type to a more specific type than a given validation schema, TypeScript complains. However, there's a clean way to resolve it without sacrificing type safety.

Reusing Form Sections with TanStack Form's `withFieldGroup`

May 31, 2026
reacttypescripttanstack formform management
Reusing Form Sections with TanStack Form's `withFieldGroup`

TanStack Form's withFieldGroup HOC is commonly shown being used with nested objects. Though it's not as well documented, it's also possible to extract reusable form sections from flat, non-nested data shapes.

Building a Predictive Text Input in React

May 27, 2026
reacttypescriptform managementuser experience
Building a Predictive Text Input in React

Standard autocomplete dropdowns work well for simple cases, but sometimes you want inline "ghost text" predictions like an IDE. Here's how I built a predictive text input using contentEditable, careful cursor management, and a healthy respect for the DOM.

TypeScript Patterns for Type Consistency

May 21, 2026
typescript
TypeScript Patterns for Type Consistency

Every TypeScript type you write is either earning its keep by catching drift, enforcing exhaustiveness, and surfacing mismatches between systems, or just decoration. Here are the patterns I reach for to keep types pulling their weight across a codebase.

Orchestrating Image-to-SVG Conversion with an Artifact-Based Pipeline

Mar 20, 2026
typescriptjavascriptgraphics
Orchestrating Image-to-SVG Conversion with an Artifact-Based Pipeline

Converting raster images to vector graphics involves multiple processing stages, each feeding into the next. Here's how I designed an artifact-based pipeline architecture that tracks provenance, enforces type safety, and makes debugging complex transformations straightforward.

Multi-Step Form Validation with TanStack Form

Mar 5, 2026
reacttypescripttanstack formform management
Multi-Step Form Validation with TanStack Form

There's a moment in every sufficiently complex form where a Zod schema isn't enough. The email is valid. The password meets requirements. And yet, there's still a bot check to run, an API to hit, an error to map back to the right field. Here's what that looks like in practice.

Avoiding TanStack Form Pitfalls

Jan 7, 2026
reacttypescripttanstack formform management
Avoiding TanStack Form Pitfalls

While integrating TanStack Form with schema validation libraries like Zod, I ran into a subtle type system gap that caused validation errors to silently fail. Here's how I diagnosed the issue and built a type-safe wrapper to prevent it from happening again.

Building a Secure JavaScript Sandbox for Player Bot Scripts

Dec 28, 2025
typescriptjavascriptnode.jssecurity
Building a Secure JavaScript Sandbox for Player Bot Scripts

How I built a secure sandbox for running untrusted player scripts using V8 isolates, a two-layer API architecture, and runtime code generation.

Deduplicating Parallel Queries in TanStack Query (React Query)

Dec 20, 2025
reacttypescripttanstack querydata fetching
Deduplicating Parallel Queries in TanStack Query (React Query)

When building time series charts that display percentages, you often need to fetch both numerator and denominator values for each data series. But what happens when multiple series share the same denominator? Here's how I used TanStack Query's hashKey function to deduplicate overlapping queries and map the results back to the original data structure.

Building a Reusable Form Component Library with TanStack Form

Dec 17, 2025
reacttypescripttanstack formform managementuser experience
Building a Reusable Form Component Library with TanStack Form

After years of working with react-hook-form, I made the switch to TanStack Form and built a reusable component library around it on top of my company's existing form components. Here are the patterns I landed on for binding these components to form state, creating intelligent buttons with automated loading states, and lazy-loading fields for better performance.

pnpm Makes Monorepo Management Effortless

Sep 15, 2025
javascript
pnpm Makes Monorepo Management Effortless

After years of struggling with challenges imposed by npm and yarn workspaces, pnpm demonstrates its ability to maintain monorepos effortlessly.

Parsing Domain Names - Now in Gem Form!

Jan 1, 2015
ruby

A feature for an internal Ruby project here at Quick Left necessitated parsing the domain from a URL. This seems like a problem for which there must already exist a solution, but it surprisingly turns out that there is no available solution for this seemingly simple task.

April Fools! How We Converted Our Site to Doge in Just 40 Lines of Code

Apr 1, 2014
rubyruby on rails

I recently wrote a blog post describing how to create your own RubyGem. The sample gem produced, aptly named dogeify, converts English sentences into "Doge" based upon the recently popular meme. For April Fools' Day, we thought it would be fun to implement this gem to convert our entire site into doge. Here's how we did it.

Step-by-Step Guide to Building Your First Ruby Gem

Mar 7, 2014
ruby

Building your first Ruby gem may seem like a daunting task, but it's actually not so bad. It's quite rewarding to not only release a gem, but to see its download count climb as others put your hard work to good use, and even still as others offer to contribute new features and bug fixes to your very own gem. And thanks to RubyGems.org and Bundler, the process of creating, releasing, and implementing gems couldn't be easier.

Using Faux ActiveRecord Models in Rails 3

Jan 3, 2014
rubyruby on rails

Implementing forms that are associated with models -- specifically ActiveRecord objects -- is pretty common when developing with Ruby on Rails. In fact, the built-in FormHelper assumes that you're working with some kind of persisted object.

But what happens when you want to create a form for something that is not persisted by an ActiveRecord model?