Refreshing the Next.js App Router When Your Markdown Content Changes
How to refresh the Next.js App Router when content in a folder changes. Yes, websockets.
The Smooshed Object Union type in TypeScript
A utility type for creating keyable union of object types.
Increment a Name in TypeScript
How to increment a name to avoid duplicates.
All About Arcs
Hard-won helpers for working with arcs.
Copy to Multiplayer Project
How I used Liveblock's Storage APIs to create a new feature.
Reordering Part 2: Tables and Fractional Indexing
Implementing reordering commands (Send to Back, Send Backward, Bring Forward, and Bring to Front) in using fractional indexing.
Reordering Part 1: Arrays
Implementing ordering commands (Send to Back, Send Backward, Bring Forward, and Bring to Front) in an array of items.
Dead Zone Dragging
Improve dragging experience by adding a spooky dead zone, or a minimum distance before a shape will begin to drag.
Perfect Dragging
How to drag shapes the right way. And yes, there is a wrong way! But trust me, this is the right way.
Fixing the Drift in Shape Rotations
A look at an obscure bug common to drawing programs, where rotations can cause shapes to move to new positions.
Creating a Zoom UI
All the code you need to control a camera in a zoom-able, pan-able UI for an infinite canvas.
Filtering an Object in TypeScript
How to filter properties from an object.
Figma's Interactive Components Were Not Designed For This
A survey of the bizarre prototypes designers can now make in Figma.
Making a Rotating Icon Button in React
A tutorial on building my this blog's theme-switching microinteraction.
Steve Ruiz © 2025
hey click here