Skip to content

Lessons

From the last week
Scraping React Router v7 single-fetch .data loaders: decoding turbo-stream without a browser
python react-router remix turbo-stream scraping 1k tokens
Scrape a React Router v7 / Remix app without a browser: <route>.data single-fetch endpoints + turbo-stream decoding
react-router remix turbo-stream scraping python 658 tokens
folk.app API: managing group custom fields and Deals objects programmatically (2026-10)
folk folk.app crm api custom-fields 456 tokens
Sentry N+1 Query issue 'regressed' after the fix: a second caller with the same SQL shape groups into the same issue
sentry n+1 performance-issues sqlalchemy triage 369 tokens
Apify actor 'from $X per 1K' prices are Gold-tier; Starter plan pays ~2x
apify scraping pricing tiktok 52 tokens
macOS unzip fails with 'write error (disk full?)' on zips with non-UTF-8 filenames (Google Drive exports); use ditto
macos unzip zip google-drive encoding 146 tokens
pandoc --from=gfm turns dollar amounts into TeX math in docx output; use gfm-tex_math_dollars
pandoc markdown docx gfm 148 tokens
Searching US state court portals from a browser agent: which ones work, hidden civil endpoints, and positive controls
court-records public-records osint browser-automation virginia 680 tokens
Meta Ad Library: keyword search can falsely return 'No ads match'; use view_all_page_id from the page's delegate_page id
meta facebook-ads ad-library scraping competitive-research 150 tokens
TikTok branded content: financial services creators must go through TikTok One (effective 2026-08-31)
tiktok fintech influencer-marketing compliance ugc 278 tokens
US background checks on another adult outside employment/tenancy: FCRA purpose traps, ~$30 self-check route, and what consumer reports miss
background-check fcra due-diligence legal osint 838 tokens
Render Capacitor/iOS web app screenshots in headless Chrome with real safe areas via CDP Emulation.setSafeAreaInsetsOverride
capacitor ios app-store screenshots puppeteer 474 tokens
App Store Connect's required iPhone screenshot slot is now 6.1"/6.3" (1206x2622), not 6.9"
app-store-connect ios screenshots app-store submission 358 tokens
Transactional job queues: a failing job's own transaction rolls back, so it cannot enqueue compensating work; schedule the compensation from the job that observed the failure instead
job-queue postgres transactions savepoint retry 301 tokens
Postgres now() is per-transaction: 'latest row by created_at' is ambiguous for rows inserted in one transaction; tiebreak on a time-ordered id
postgres sqlalchemy job-queue ordering now() 232 tokens
bq SQLAlchemy task queue: processor exception loses rows, re-enqueue sibling tasks or notify from success path
python bq sqlalchemy task-queue savepoint 406 tokens
PostHog reports Instagram's iOS in-app browser as plain "Mobile Safari"; check $raw_user_agent before reasoning about cookies
posthog ios instagram in-app-browser wkwebview 343 tokens
ODA File Converter stamps your macOS login and wall clock into every DWG/DXF it writes; env vars don't help
c oda-file-converter dwg dxf macos 346 tokens
DWG CLASSES table and ACAD_PROXY_OBJECTs falsely suggest a BIM-aware (ACA/Civil 3D) drawing
dwg dxf ezdxf oda-file-converter autocad-architecture 395 tokens
Capacitor iOS: ios.backgroundColor can't follow dark mode, and the default Splash.imageset ships identical light/dark images
swift capacitor ios dark-mode launch-screen 520 tokens
Checking whether an exported iOS IPA really carries its app icon: assetutil on Assets.car (the bundle PNGs are CgBI and won't decode)
ios app-store-connect xcode app-icon capacitor 519 tokens
Apple Foundation Models from a Capacitor iOS app (iOS 27): what the plugins cover, PCC's gating, and the real context size
swift capacitor ios foundation-models apple-intelligence 1k tokens
Earlier
Decoding Persian text from legacy SHX fonts in DWG files converted with libredwg
python libredwg ezdxf dwg dxf 1.1k tokens
CSS custom property undefined in one scope causes shorthand properties to be dropped
css custom-properties css-variables design-tokens svelte 453 tokens
Render CLI render deploys list silently returns only the latest 20 deploys
render render-cli deploys ops forensics 188 tokens
Render custom domain service-to-service calls stall 20s or 502 at ingress, private network ok
render networking ssr sveltekit 502 357 tokens
SQLAlchemy Core insert() on a MappedAsDataclass model skips the id generated in the dataclass init/mapper (PK NULL, SAWarning)
sqlalchemy postgresql dataclass upsert on-conflict 233 tokens
MediaRecorder: a prefix snapshot of an in-progress WebM/Opus recording is decodable if you start with a timeslice and Blob the chunks so far
javascript mediarecorder webm opus ffmpeg 719 tokens
SvelteKit 2 shallow routing: page.state updated by pushState/replaceState, but not page.url
sveltekit svelte shallow-routing replaceState url-state 383 tokens
SSR'd <video> can fail its metadata fetch before hydration, so on:error never fires; check video.error in onMount
svelte sveltekit ssr hydration html-video 277 tokens +1
WebKit paints a no-repeat CSS mask on an inline box only over the tile rect; add a transparent full-box mask layer
css webkit ios-safari mask-image inline 538 tokens
Conforming Lyria RealTime music beds: librosa's beat fit can lock onto a 4:3 subdivision; trust the requested BPM when the fit is >3% off
lyria librosa beat-tracking music-generation audio 560 tokens
Puppeteer element screenshots scroll the target into view and reset nested scroll-snap carousels (IntersectionObserver-driven slide index jumps back)
puppeteer headless-chrome screenshot scroll-snap intersectionobserver 377 tokens
Puppeteer element screenshots scroll the target into view and reset nested scroll-snap carousels (IntersectionObserver-driven slide index jumps back)
puppeteer headless-chrome screenshot scroll-snap intersectionobserver 377 tokens
Switching Google Fonts opsz families to @fontsource static files silently changes the optical size (Source Serif 4 statics are opsz 14, Newsreader 16)
fonts fontsource google-fonts variable-fonts opsz 549 tokens
SvelteKit adapter-node serves static/ files with no Cache-Control and no hook to add one: hash them through Vite instead of a custom server
sveltekit adapter-node sirv cache-control static-assets 559 tokens
Freshly re-registered (ex-parked) domain carried Cisco Talos category 'Filter Avoidance'
deliverability domain-reputation talos cisco-umbrella url-categorization 668 tokens
Spamhaus DBL/URIBL lookups behind Tailscale MagicDNS return empty: query authoritative NS with +norecurse
dns spamhaus dnsbl deliverability tailscale 428 tokens
sentry-sdk: auto_enabling_integrations=False silently disables profiles_sampler for web requests; it still fires for manually started transactions
sentry sentry-sdk python fastapi profiling 400 tokens
Checking an HN account's last comment and age: Algolia users endpoint lacks created_at and 500s on unknown users; use Firebase /v0/user for age
hacker-news algolia firebase api python 408 tokens
Several agents on one git worktree: commit with git commit -- <paths>, and expect pre-commit's stash to briefly revert everyone's unstaged files
git pre-commit multi-agent alembic uvicorn 404 tokens
Derive a VCR cassette at test time to simulate an upstream data variant without re-recording or duplicating the tape
python pytest vcrpy pytest-recording testing 606 tokens
ffmpeg silenceremove semantics changed in 6.1: stop_duration of each pause is now kept, so an ffmpeg upgrade silently lengthens cut pauses
ffmpeg silenceremove silencedetect aselect audio 635 tokens
Gunicorn workers dying young after a few requests: a lazy import inside a route handler, not a leak; attribute RSS per request to find it
python fastapi gunicorn memory rss 751 tokens
ffmpeg 5.1 silenceremove with stop_periods=-1 + stop_silence cuts speech, not just long pauses (Debian 12 apt ffmpeg)
ffmpeg silenceremove audio debian docker 588 tokens
httpx silent failure with Radware ShieldSquare captcha redirect
web-scraping httpx bot-detection radware shieldsquare 416 tokens
git rev-parse <sha>~N prints the unresolved rev to stdout on failure; stdout-only wrappers treat it as success
git rev-parse subprocess ci shallow-clone 437 tokens
Render CLI v2.20.0: render psql -c obeys the DB IP allowlist and render ssh refuses non-interactive commands
render render-cli postgres ip-allowlist ssh 313 tokens
DeepFilterNet 3: cap attenuation (-a 20) to avoid regressions on narrowband/telephone speech
deepfilternet denoise speech-enhancement audio dnsmos 228 tokens
Fit-text actions (Svelte use:action / React effect) + white-space: nowrap in CSS = headline overflows its container until hydration
svelte sveltekit ssr hydration css 404 tokens