Skip to content
// writing

Posts on development

A mix of technical deep-dives, career reflections, and dispatches from the road.

Laravel 13 Vector Search: Semantic Queries Without a Search Service thumbnail
developmentNov 9, 2026· 4 min
Laravel 13 Vector Search: Semantic Queries Without a Search Service
Laravel 13 adds whereVectorSimilarTo, vector columns, and an AsVector cast, so meaning-based search can live in the Postgres or MariaDB database you run.
read more →
React's browser() API: Opt Out of SSR Without the Mounted-State Hack thumbnail
developmentNov 8, 2026· 4 min
React's browser() API: Opt Out of SSR Without the Mounted-State Hack
React 19.3 adds use(browser()), a first-class way to mark a component browser-only during SSR, replacing typeof window checks and useEffect mounted flags.
read more →
Oxlint JS Plugins: Your Custom ESLint Rules No Longer Keep You on ESLint thumbnail
developmentNov 5, 2026· 4 min
Oxlint JS Plugins: Your Custom ESLint Rules No Longer Keep You on ESLint
Oxlint now runs ESLint plugins and your own custom rules, so the last excuse for a slow lint step is gone. Here's how JS plugins work and where the gaps are.
read more →
GraphQL @defer: Stop Letting Your Slowest Field Set Your Load Time thumbnail
developmentNov 2, 2026· 4 min
GraphQL @defer: Stop Letting Your Slowest Field Set Your Load Time
One slow resolver can hold a whole GraphQL response hostage. Here's how @defer and @stream split a query into an initial payload and patches, and what to check.
read more →
bfcache: The Instant Back Button Your Site Is Probably Blocking thumbnail
developmentNov 1, 2026· 4 min
bfcache: The Instant Back Button Your Site Is Probably Blocking
The back/forward cache restores pages from memory instantly, but an unload listener or no-store header can opt you out. Here's how to find and fix the blockers.
read more →
Laravel 13 JSON:API Resources: Spec-Compliant Responses Without a Package thumbnail
developmentOct 29, 2026· 4 min
Laravel 13 JSON:API Resources: Spec-Compliant Responses Without a Package
Laravel 13 ships a first-party JsonApiResource that handles type/id objects, includes, sparse fieldsets, and Content-Type. Here's how it works and its limits.
read more →
Nuxt SSR Streaming: Faster TTFB and the Response You Can't Change Later thumbnail
developmentOct 26, 2026· 3 min
Nuxt SSR Streaming: Faster TTFB and the Response You Can't Change Later
Nuxt 4.5 can flush your HTML shell before the page finishes rendering. Here's what experimental SSR streaming speeds up and the status code rule you need first.
read more →
JSON.parse Source Text Access: Stop Losing Precision on Big IDs thumbnail
developmentOct 25, 2026· 3 min
JSON.parse Source Text Access: Stop Losing Precision on Big IDs
JSON.parse can now hand your reviver the original source text of numbers, and JSON.rawJSON writes it back exactly. Here's how to round-trip big IDs.
read more →
Subpath Imports With #/: The Path Alias Node Actually Understands thumbnail
developmentOct 22, 2026· 4 min
Subpath Imports With #/: The Path Alias Node Actually Understands
Node 24.14 and TypeScript 6.0 allow a bare #/ prefix in package.json imports. Here's how one alias can replace tsconfig paths, Vite aliases, and build rewrites.
read more →
React Fragment Refs: Attach Behavior Without the Wrapper Div thumbnail
developmentOct 19, 2026· 4 min
React Fragment Refs: Attach Behavior Without the Wrapper Div
React 19.3 made Fragment refs stable. Here's how FragmentInstance lets you listen, observe, and move focus across a group of elements without a wrapper div.
read more →
// the newsletter
Don't miss the next one