• Home
  • Blog
  • Projects
  • Bookshelf
  • About

Blog Tags:

  • micropost

    • Vacation (and streaks)
    • Polish is Important
    • <Blank> Driven Development
    • All Documentation Should Be Dated
    • Adding Microposts
    • Service Monitors and Observability
    • Type Safe process.env
    • Consistent Local Ports with Wrangler
    • Being Unopinionated
    • Stop Snacking
    • No Process is Invisible Process
    • Jabs and Fluff: On CTO Office Hours
    • Finding React Artifacts
    • Deno
    • Fast Feedback Systems
    • Video Games
    • Delete it
  • Travel

    • Vacation (and streaks)
    • Summer 2019 - Bend Oregon
    • Summer 2018 Trip
  • snippet

    • Multi-step Native HTML Forms
    • Git Co-Authorship
    • useInterval
  • HTML

    • Multi-step Native HTML Forms
  • React

    • Multi-step Native HTML Forms
    • useInterval
    • Server Side Rendering Compatible CSS Theming
    • Resetting Controlled Components in Forms
    • Request for a (minimal) RSC Framework
    • Don't Break the Implicit Prop Contract
    • A Better useSSR Implementation
    • React Error Boundaries: Revisited
    • Using Marquee with React and TypeScript
    • My Two Favorite React Tricks
    • React Testing Library: Checkboxes and events
    • useConsole
    • Stateful Providers
    • Theme First UI Development
    • useReducer, don't useState
    • Hooks Tips Ep. 2 - Migrating Instance Variables
    • Hooks Tips Ep. 1 - The Dependency Array
    • React Error Boundaries
    • Suspense Plus GraphQL
    • Managing Complex UI Component State
    • Understanding React 16.3 Updates
  • Git

    • Git Co-Authorship
    • Git Notes as a Tool for Thought
    • Go To Git Utils
    • Updating Forked Repos
  • Software Development

    • Polish is Important
    • You're Building Software Wrong
  • Obsidian

    • Roundup Notes in Obsidian with Dataview
    • Cursor and Obsidian
    • My Updated Obsidian Task Management
    • Simple Obsidian Task Management
    • Switching back to Obsidian
    • Switching back to Notion
    • Roll your own Obsidian sync
  • Tip

    • Roundup Notes in Obsidian with Dataview
    • Quick Tip - Theme Aware Images
    • Async Class Creation In JavaScript
    • Server Side Rendering Compatible CSS Theming
    • Replacing Dropbox Capture with Raycast
    • Quick Tip - Specific Local Module Declarations
    • Bluesky Tips and Tools
    • The Bookkeeping Pattern
    • Don't Break the Implicit Prop Contract
    • A Better useSSR Implementation
    • Tip: Request and Response Headers
    • Exporting Custom Slack Emoji
    • Custom Favicon Recipes
    • Fixing Zed's language server
    • Updating Forked Repos
  • Note Taking

    • Roundup Notes in Obsidian with Dataview
    • My Updated Obsidian Task Management
    • Simple Obsidian Task Management
    • Switching back to Obsidian
    • On Note Taking
    • Switching back to Notion
  • Development

    • Roundup Notes in Obsidian with Dataview
    • Quick Tip - Theme Aware Images
    • Website Redesign v10
    • Quick Tip - Specific Local Module Declarations
    • You're Building Software Wrong
    • Single File Web Apps
    • The AI Development Conundrum
    • A Quick Look at Import Maps
    • Recommended Tech Talks
    • Request for a (minimal) RSC Framework
    • Bluesky Tips and Tools
    • Building a Custom Ghostty Theme
    • Offload Complexity, Don't Offload Learning
    • More Thoughts on Dogfooding
    • Dogfooding
    • Git Notes as a Tool for Thought
    • My Current Dev Setup
    • There Is No Standard Markdown
    • Tip: Request and Response Headers
    • Using Feature Toggles to De-risk Refactors
    • Hohoro
    • Funport: True Dynamic Imports in webpack
    • My Current AI Stack
    • Configuring Cloudflare Domains with Vercel
    • React Error Boundaries: Revisited
    • Custom Favicon Recipes
    • Corporate Sponsored OSS
    • The Library-Docs Monorepo Template
    • Building Better Beacon
    • Churn Anxiety
    • Stop Snacking
    • Pair Programming
    • AI Driven Development
    • Go To Git Utils
    • Using Marquee with React and TypeScript
    • Finding React Artifacts
    • Learning Go
    • Principles for Automated Testing
    • Deno
    • Fractal Refactoring
    • 10x Engineers
    • Setting up Shiki on Next.js
    • Dollar: Devlog 2
    • Navigating Monorepos with Ease
    • Dollar: Devlog 1
    • Yarn Berry Gitignore Settings
    • On Writing Tests
    • Moving to PNPM
    • Upgrade Guides
    • My Opinionated Next.js Setup
    • My Two Favorite React Tricks
    • Build Your Developer Toolbox
    • Updating Forked Repos
    • React Testing Library: Checkboxes and events
    • Array Chunking
    • Writing Node Scripts
    • useConsole
    • yw
    • Hooks Tips Ep. 2 - Migrating Instance Variables
    • Hooks Tips Ep. 1 - The Dependency Array
    • Building a Live Editor
    • Taking a Break
    • Rebuilding Mustache
    • The Great CSS Debate
    • Attribute Selectors
    • Clientside
  • Web Development

    • Quick Tip - Theme Aware Images
    • Async Class Creation In JavaScript
    • Website Redesign v10
    • Server Side Rendering Compatible CSS Theming
    • Podcasting By Hand
    • Quick Tip - Specific Local Module Declarations
    • On File-System Routing Conventions
    • You're Building Software Wrong
    • Single File Web Apps
    • Resetting Controlled Components in Forms
    • A Quick Look at Import Maps
    • Recommended Tech Talks
    • Request for a (minimal) RSC Framework
    • Bluesky Tips and Tools
    • The Bookkeeping Pattern
    • TSLite
    • Monorepo Tips and Tricks
    • Next.js with Deno v2
    • Don't Break the Implicit Prop Contract
    • A Better useSSR Implementation
    • My Current Dev Setup
    • There Is No Standard Markdown
    • Abstract Your API
    • Tip: Request and Response Headers
    • Using Feature Toggles to De-risk Refactors
    • Hohoro
    • Custom Favicon Recipes
    • Corporate Sponsored OSS
    • The Library-Docs Monorepo Template
    • Building Better Beacon
    • Project Deep Dive: Tails
    • Churn Anxiety
    • Service Monitors and Observability
    • Type Safe process.env
    • Consistent Local Ports with Wrangler
    • On Adopting CSS-in-JS
    • Project Deep Dive: Microfibre
    • Pair Programming
    • AI Driven Development
    • Go To Git Utils
    • Using Marquee with React and TypeScript
    • Finding React Artifacts
    • Learning Go
    • Deno
    • My Thoughts on Tailwind
    • Setting up Next.js with Tailwind
    • Setting up Shiki on Next.js
    • Navigating Monorepos with Ease
    • My Updated Next.js Setup
    • A Note On Anti-Patterns
    • Theme First UI Development
    • Deploying Automatically using GitHub Actions
    • Simpler and Smaller
    • Maintenance Costs
    • Snapshot Testing
    • useReducer, don't useState
    • Start Small, Accept Change
    • React Error Boundaries
    • Testing Software
    • Suspense Plus GraphQL
    • You've Launched, Now What?
    • Taking a Break
    • Managing Complex UI Component State
    • Understanding React 16.3 Updates
    • CSS in JS
    • Redesign v6
    • JavaScript Weirdness
    • Calendar
    • Rebuilding Mustache
  • JavaScript

    • Async Class Creation In JavaScript
    • The Bookkeeping Pattern
    • TSLite
    • Array Chunking
    • useConsole
    • Understanding React 16.3 Updates
    • CSS in JS
    • JavaScript Weirdness
  • TypeScript

    • Async Class Creation In JavaScript
    • Quick Tip - Specific Local Module Declarations
    • The Bookkeeping Pattern
    • TSLite
    • Hohoro
    • Type Safe process.env
    • Using Marquee with React and TypeScript
  • Product Review

    • In Review - The Belroy Transit Workpack Pro v2
  • Backpack

    • In Review - The Belroy Transit Workpack Pro v2
  • Gear

    • In Review - The Belroy Transit Workpack Pro v2
  • Review

    • In Review - The Belroy Transit Workpack Pro v2
    • Switching to iPhone
  • Redesign

    • Website Redesign v10
    • Starting Fresh
    • Redesign v6
    • My New Website
    • Redesign v5
    • Redesign
    • A New Look
  • Theming

    • Server Side Rendering Compatible CSS Theming
  • CSS

    • Server Side Rendering Compatible CSS Theming
    • My Thoughts on Tailwind
    • CSS in JS
    • The Great CSS Debate
    • Attribute Selectors
  • Next.js

    • Server Side Rendering Compatible CSS Theming
    • On File-System Routing Conventions
    • The Bookkeeping Pattern
    • Next.js with Deno v2
    • Using Feature Toggles to De-risk Refactors
    • Funport: True Dynamic Imports in webpack
    • Project Deep Dive: Tails
    • Project Deep Dive: Microfibre
    • Setting up Next.js with Tailwind
    • Setting up Shiki on Next.js
    • My Updated Next.js Setup
    • My Opinionated Next.js Setup
    • Redesign v6
  • Waku

    • Server Side Rendering Compatible CSS Theming
  • Podcasting

    • Podcasting By Hand
  • The Bikeshed Pod

    • Podcasting By Hand
  • Dropbox

    • Replacing Dropbox Capture with Raycast
    • Roll your own Obsidian sync
  • Raycast

    • Replacing Dropbox Capture with Raycast
  • Tools

    • Replacing Dropbox Capture with Raycast
    • My Current Dev Setup
  • Node.js

    • Quick Tip - Specific Local Module Declarations
    • A Quick Look at Import Maps
  • Garbanzo

    • On File-System Routing Conventions
  • Opinion

    • On File-System Routing Conventions
    • The AI Development Conundrum
  • AI

    • Cursor and Obsidian
    • The AI Development Conundrum
    • Offload Complexity, Don't Offload Learning
    • My Current AI Stack
    • AI Driven Development
    • Push vs Pull AI
  • Personal Knowledge Management

    • Cursor and Obsidian
  • React Server Components

    • Resetting Controlled Components in Forms
    • Request for a (minimal) RSC Framework
    • The Bookkeeping Pattern
  • Resolutions

    • Thoughts on New Years Resolutions
    • 30
    • 29
    • 2021: Resolutions
  • Goal

    • Thoughts on New Years Resolutions
  • Goals

    • Thoughts on New Years Resolutions
    • 30
    • 29
  • Culture

    • Team Memes
  • Team

    • Team Memes
  • Random

    • Team Memes
    • 30
    • Idea: Distributable Web Apps
    • 29
    • Fractal Refactoring
    • 10x Engineers
  • Organizations

    • Team Memes
    • Speedbumps
  • Recommendations

    • Recommended Tech Talks
  • Roundup

    • Recommended Tech Talks
    • Links
  • Talks

    • Recommended Tech Talks
  • Server Actions

    • Request for a (minimal) RSC Framework
    • The Bookkeeping Pattern
  • Forms

    • Request for a (minimal) RSC Framework
    • The Bookkeeping Pattern
  • Task Management

    • My Updated Obsidian Task Management
    • Simple Obsidian Task Management
  • Bluesky

    • Bluesky Tips and Tools
  • Ghostty

    • Building a Custom Ghostty Theme
  • Monorepos

    • Monorepo Tips and Tricks
    • Navigating Monorepos with Ease
    • yw
  • Career

    • Offload Complexity, Don't Offload Learning
    • Leaving Wayfair
    • A New Resume
  • Learning

    • Offload Complexity, Don't Offload Learning
    • Learning Go
  • Deno

    • Next.js with Deno v2
    • Deno
  • Product

    • More Thoughts on Dogfooding
    • Dogfooding
  • Tools for Thought

    • Git Notes as a Tool for Thought
    • On Note Taking
    • Linear Tools Enforce Linear Thinking
  • Snippets

    • A Better useSSR Implementation
    • Type Safe process.env
    • useConsole
    • yw
  • Birthday

    • 30
    • 29
  • Notes

    • Simple Obsidian Task Management
  • Notion

    • Switching back to Obsidian
    • Switching back to Notion
  • APIs

    • Abstract Your API
  • Refactors

    • Using Feature Toggles to De-risk Refactors
  • Looking Ahead

    • Leaving Wayfair
    • 2018
    • Looking Ahead: 2016
  • Meta

    • Leaving Wayfair
    • Afraid
    • The Message is in the Medium
  • Thoughts

    • Leaving Wayfair
    • Write it down
    • The Squeeze
    • Learning
    • Starting Fresh
    • Redesign v6
    • My New Website
    • Pull Quotes
    • Redesign v5
    • Redesign
    • 10,000 Characters
    • Blogging vs Working
    • A New Look
  • Work

    • Leaving Wayfair
    • The Squeeze
  • swc

    • Hohoro
  • Projects

    • Hohoro
    • The Library-Docs Monorepo Template
    • Building Better Beacon
    • Project Deep Dive: Tails
    • Project Deep Dive: Microfibre
    • Dollar: Devlog 2
    • Dollar: Devlog 1
    • Building in 2016
    • My First Project of 2016
  • webpack

    • Funport: True Dynamic Imports in webpack
  • Guides

    • Configuring Cloudflare Domains with Vercel
    • React Error Boundaries: Revisited
    • Exporting Custom Slack Emoji
    • Mac Setup Guide
  • Cloudflare

    • Configuring Cloudflare Domains with Vercel
    • Project Deep Dive: Tails
    • Consistent Local Ports with Wrangler
    • Project Deep Dive: Microfibre
  • Vercel

    • Configuring Cloudflare Domains with Vercel
  • Slack

    • Exporting Custom Slack Emoji
    • Enhancing Slack
  • OSS

    • Corporate Sponsored OSS
  • Project Deep Dive

    • Project Deep Dive: Tails
    • Project Deep Dive: Microfibre
  • Observability

    • Service Monitors and Observability
  • CSS-in-JS

    • On Adopting CSS-in-JS
  • Teams

    • No Process is Invisible Process
    • Teams and Caterpillar Tracks
    • Speedbumps
    • A Note on Consistency
  • Zed

    • Fixing Zed's language server
  • Go

    • Project Deep Dive: Microfibre
    • Learning Go
  • ChatGPT

    • AI Driven Development
  • Hot Take

    • Jabs and Fluff: On CTO Office Hours
  • Ideas

    • Idea: Distributable Web Apps
    • Literate (web) Programming
    • Powerpoint
  • Rant

    • Fractal Refactoring
    • 10x Engineers
    • Avoid Distractions
    • Linear Tools Enforce Linear Thinking
  • Advice

    • Avoid Distractions
  • Tailwind

    • My Thoughts on Tailwind
    • Setting up Next.js with Tailwind
  • Communication

    • Write it down
    • On Written Communication
    • The Message is in the Medium
  • Dollar

    • Dollar: Devlog 2
    • Dollar: Devlog 1
  • Yarn

    • Yarn Berry Gitignore Settings
    • yw
  • Testing

    • On Writing Tests
    • Snapshot Testing
    • Testing Software
  • Android

    • Switching to iPhone
  • iOS

    • Switching to iPhone
  • iPhone

    • Switching to iPhone
  • Recap

    • Year in Music
    • 2020: Year in Review
    • 2018
    • August
    • 2015
  • stub

    • Pair Programming (stub)
  • Productivity

    • Start Fresh
  • Collaboration

    • On Written Communication
    • Pair Code Reviews
    • A Note on Consistency
    • Draft Pull Requests
  • Writing

    • On Written Communication
  • React Testing Library

    • React Testing Library: Checkboxes and events
  • Development Practices

    • On Code Review
    • Fast
    • Stateful Providers
  • Code Review

    • On Code Review
    • Pair Code Reviews
    • Draft Pull Requests
  • Node

    • Writing Node Scripts
  • Hacking

    • Hack Sprint
  • Side Projects

    • Simple Props
    • Building a Web Sandbox: Part 1
    • NextJS Analytics with Airtable
    • The Rabbit Hole
    • Building a Live Editor
    • Start Small, Accept Change
    • Weekend Projects
    • A New Resume
  • Design Systems

    • Computed Design Tokens
    • Theme First UI Development
  • Theme

    • Computed Design Tokens
  • Product Development

    • Enhancing Slack
  • Meetings

    • A Note On Meetings
  • Note

    • A Note On Meetings
    • A Note On Anti-Patterns
  • Photos

    • February 20, 2020
    • Summer 2018 Trip
  • Back Bay

    • February 20, 2020
  • Bend

    • Summer 2019 - Bend Oregon
  • Design Tokens

    • Theme First UI Development
  • GraphQL

    • Suspense Plus GraphQL
  • Suspense

    • Suspense Plus GraphQL
  • Article

    • Missing Detail
  • Log

    • Matt's Log - October
  • Launch

    • You've Launched, Now What?
  • Burnout

    • Taking a Break
  • Components

    • Managing Complex UI Component State
  • Calendar

    • Calendar
  • Technology

    • Push vs Pull AI
    • October 4th
    • DJI vs GoPro
  • Collection

    • Links
  • Google

    • October 4th
  • Web

    • Pull Quotes
  • Twitter

    • 10,000 Characters
  • Competition

    • DJI vs GoPro
  • Startups

    • Powerpoint
  • Social Media

    • The Social Max
  • Thanks

    • Thanksgiving
  • Family

    • Family Time