Document Your Quirks: Why CLAUDE.md Changes Everything
I spent 45 minutes teaching Claude a fix I already knew. Putting that project quirk in CLAUDE.md stopped the same rediscovery next time.

Complete journal / Year
53 notes published in 2025.
I spent 45 minutes teaching Claude a fix I already knew. Putting that project quirk in CLAUDE.md stopped the same rediscovery next time.

Tailwind v4 rendered my shared components without their utility classes. One @source directive fixed three hours of monorepo debugging.

I tried Origin as an alternative to Copilot Money. More financial products did not make up for the transaction review it handed back to me.

Six months with React Router loaders changed my default. I add React Query only when repeated fetching, shared data, or polling gives me a reason.

October's report counted 31,039 cuts attributed to AI. It recorded what employers said—not whether deployed systems actually replaced the work.

React Compiler 1.0 moved routine rendering memoization into the build. React.memo, useCallback, and useMemo now need a specific reason.

My machine has one Claude Code executable and one updater. Here is how I check the path, remove conflicts, and keep it that way.

Meta cut 600 AI roles while still hiring for its superintelligence lab. The move shows which AI work leadership wanted to fund—and which it did not.

After using Comet for coupons, search, and summaries, I am not convinced putting an agent in the browser solves the hard part: judgment.

Claude Code on the web changes coding from an editor interaction into delegated work. That matters more than adding another interface.

Using Sora in a TikTok-style feed made social media's incentive problem hard to ignore: fabricated video is now cheaper than recording reality.

Samsung's 7-million-parameter TRM beat much larger models on specific reasoning benchmarks by revising its answer up to 16 times.

I use Claude Haiku for small refactors, review, and debugging. Its lower cost and faster responses matter more there than deeper reasoning.

I tested SwiftUI toolbar placement, grouping, search, and overflow on iPhone and iPad. The useful mental model is intent—not fixed screen coordinates.

I rebuilt SwiftUI's TabView examples to separate the iOS 18 navigation APIs from the iOS 26 Liquid Glass redesign—and to see where the system takes control.

VoiceOver read my compound views as a pile of unrelated elements. Grouping, labels, and combined accessibility testing fixed the experience.

The full Liquid Glass effect became distracting while I built with it. Here is how I handled Reduce Motion and Dynamic Type in SwiftUI.

A small Cloudflare Worker can rewrite /tag/* to /tags/* without changing the main application or dropping query strings.

I moved a static site from Cloudflare Pages to Workers in five minutes. The config was easy; deciding whether a static blog benefits is harder.

My working setup for a Home Assistant Connect ZWA-2 on a Ugreen NAS, using Docker and Z-Wave JS UI.

How I deployed the React Router application with Fly.io, Cloudflare, Neon, Docker, and migration history I could roll back.

The React Router, TypeScript, PostgreSQL, and authentication stack I chose after using LLMs to prototype the alternatives.

Cloudflare 525 errors on Fly.io usually mean the origin certificate is wrong. Fix the custom domain cert before blaming DNS.

The migration took two focused sessions: dependencies first, then 40 files of imports and route types. Typegen was the part worth keeping.

My Remix-to-React Router v7 migration touched 40 files and removed 591 net lines. Imports were easy; TypeScript took the time.

Leaving Next.js for Remix taught me why the annoying-looking use client boundary exists—and what Remix gives up without it.

My Remix app ran locally and failed on Vercel with EMFILE. The workarounds reduced file churn but could not expose or change the platform limit.

AI search is turning websites from destinations into raw material. The web may survive that transition, but human voices will be harder to find.

The court treated AI training as transformative while leaving Anthropic exposed for keeping a library of pirated books.

A new data-model entity touched several old pages. Rebuilding those UI components was faster than carrying their Flow types and old assumptions forward.

Companies can shrink teams without announcing layoffs. They call it AI efficiency, lower hiring needs, and let attrition do the rest.

The package manager was the easy part. File APIs, CI, compatibility checks, and Claude Code produced most of the migration's useful work.

Moving this blog from Node.js to Bun cut its build from 37 seconds to 20. Native file and glob APIs also removed code I no longer needed.

Windsurf removed flow action credits and cut team pricing while OpenAI acquisition talks were being reported. I cared more about the simpler bill.

Figma's dispute with Lovable over Dev Mode shows why common developer terms make weak trademarks and costly legal weapons.

OpenAI talked a ~$3B Windsurf deal. I use Claude Code and Cursor; the story that matters is who owns the IDE relationship, not the model API.

GPT-4.1's benchmark jump showed up in my Windsurf and Cursor use as cleaner diffs and fewer back-and-forth retries.

A leaked OpenAI lineup showed five models, but the mini and nano pricing mattered more to me than another flagship.

The benchmark gap was obvious, but deleting 90 lines of build configuration was the better reason to choose Vite for a modern app.

Similarweb March 2025: ChatGPT at 4.55B visits, X at 4.58B. ChatGPT grew faster that month. Infrastructure, not a toy.

Copilot shipped agent mode and more models. Microsoft also tightened extension licenses so some tools refuse to run in Cursor.

AI access is becoming another way to buy time, better service, and economic leverage. My son will grow up inside that divide.

Claude Code for hobby refactors, Cursor at work — two tools, two jobs, and where each one still breaks.

Claude Code helped build the parser, generator, templates, and Cloudflare deployment. Syntax highlighting and timezones took more work.

I paid about $10 to see whether Claude Code could scaffold the TypeScript static-site generator behind this blog. Most of its choices held up.

Replacing Assistant with Gemini fits Google's long pattern of abandoning products instead of earning trust through steady maintenance.

Public libraries give coding agents examples, documentation, and discussions they can retrieve. Private APIs must supply that context themselves.

When Chrome began disabling uBlock Origin under Manifest V3, I stopped looking for another extension and moved my browsing to Brave.

Bitcoin ATMs charge steep fees and are frequently used in scams. Their placement in vulnerable neighborhoods makes the business model hard to defend.

A personal blog should be fast on a phone and boring to host — Markdown to static HTML on Cloudflare, no app server.

A 2025 report put specialized OpenAI agents at $2k–$20k a month. Even as a reported figure, that belongs in a labor budget—not a footnote.

I use Perplexity for most search and for a daily news skim. Google for the stubborn queries. Apple News lost the paywall fight.

I started writing here again — web development, AI tools I actually run, and what SF startups taught me the expensive way.
