banner
crdhd.bsky.social
@crdhd.bsky.social
your landing page doesn't feel premium. it's probably not the font.
May 19, 2026 at 5:18 PM
users are abandoning the signup form and nobody knows why.

the error fired. the toast appeared. it vanished in 3 seconds. they were looking at the password field.
May 18, 2026 at 10:19 AM
notion's empty state isn't pretty. it's a tutorial disguised as UI.

every element teaches: + button shows blocks, / shows commands, side panel shows hierarchy.

zero decoration. pure problem-solving.
May 14, 2026 at 4:59 PM
your signup form can work perfectly and still feel unsafe.

ai builders often ship the backend first: validation works, errors work, submit works. but the screen gives users no reason to trust what happens next.

that gap costs signups.
May 14, 2026 at 3:56 PM
Notion's empty states aren't pretty. they're tutorials disguised as UI.

good design does the thinking for you.
May 14, 2026 at 11:59 AM
wrote some code. typescript compiled. unit tests passed. deployed to prod.

failed instantly with an error nobody had seen before.
March 15, 2026 at 3:57 PM
mcp's streamable http resets context every request. so how do you implement "switch corpus" when the next call just overwrites your switch?
March 14, 2026 at 6:12 PM
cache api is for http responses. indexeddb is for queries. different eviction rules. you cant query cache api like a database. mixing them is how offline-first apps silently corrupt state
March 14, 2026 at 4:57 PM
the first version that works feels like victory. thats the trap. it looks correct while cutting corners you dont see until production breaks. iteration isnt overhead. its how you actually catch whats missing
March 14, 2026 at 3:57 PM
if you're using RRF for hybrid search, check where your filters live. the placement is probably quietly breaking the whole thing.
March 14, 2026 at 2:58 PM
raycast private extension stores look simple until you have 20 of them and someone breaks 10 at once
March 14, 2026 at 12:26 PM
each iteration where claude sees your tests fail teaches it something about your codebase that no prompt could capture. tests are the feedback loop. they show what patterns break. thats how claude learns to code like your team
March 14, 2026 at 11:17 AM
telling claude be concise fails. telling claude ask me diagnostic questions instead of jumping to solutions works because it shows what you actually want
March 14, 2026 at 10:56 AM
next.js traces actual function calls during render, not module imports

a page can import headers() from next/headers (through a transitive dep) and still render statically - as long as headers() isn't called during render

that 12-line duplication workaround? never needed
March 13, 2026 at 12:28 PM
unix pipes work because you can stop anywhere and see what the data looks like. most systems don't give you that power
March 13, 2026 at 12:01 PM
indexeddb forced everything async. opfs gave workers createSyncAccessHandle for synchronous writes. suddenly sqlite in the browser actually works. no more building your own transaction logic and faking relational queries. you get real acid and actual sqlite cursors
March 13, 2026 at 11:14 AM
browsers dont evict IndexedDB selectively. quota hits and they nuke the entire origin. both storage systems together. one fills up, everything disappears. offline-first apps assume graceful degradation. they get atomic deletion instead
March 13, 2026 at 11:03 AM
logs feel useful but theyre actually fragments scattered across time. you have data but not a story
March 12, 2026 at 9:34 PM
indexeddb benchmarks lie. 0.17ms per write until you batch 200 documents. suddenly 13ms each. opfs worker does it in 0.5ms. transaction overhead was hiding in plain sight
March 12, 2026 at 9:29 PM
notion and figma stopped fighting browser storage. they just shipped sqlite on wasm using opfs. thats it. database as a service lost to database as a library.
March 12, 2026 at 6:11 PM
every ai coding tutorial reaches for puppeteer or playwright for browser automation. but websocat + chrome devtools protocol does it in one line of bash. no npm install. no node_modules.
March 12, 2026 at 4:58 PM
SET col = COALESCE($1, col) for optional fields has a bug that slips through. users can never clear a nullable field to NULL. COALESCE(NULL, col) just returns the old value. you find out when someone reports they cant remove their bio
March 12, 2026 at 4:28 PM
if you're setting up claude code deny rules to protect .env files, watch out for this one
March 12, 2026 at 4:02 PM
most people use /loop for monitoring but if you persist task state to json each invocation becomes a stateless worker. fresh context per task. no degradation at task 30. cron and a json backlog and git commits as checkpoints. temporal for ai coding sessions
March 12, 2026 at 1:12 PM
logs without tags mean you're manually hunting through thousands of events to find one you care about. tag them and you filter straight to the problem
March 12, 2026 at 12:33 PM