Author
Simon JANVIER
Visible focus and keyboard navigation: the accessibility baseline teams skip
Keyboard navigation is not just about screen readers: it decides whether a site is usable for anyone without a mouse.…
/ 6 min
Idempotency keys: making APIs and webhooks safe to retry
The same network call can arrive twice: a dropped connection, an automatic retry, a redelivered webhook. An idempotency key lets…
/ 6 min
htmx 4.0 moves to fetch() and makes attribute inheritance explicit
Released on 28 August 2026, htmx 4.0.0 rebuilds its engine around fetch() and ships deliberate breaking changes. Attribute inheritance, event…
/ 4 min
Content-Security-Policy: building a policy that protects without breaking the site
A Content-Security-Policy is an HTTP header that limits the impact of script injection by filtering allowed sources. This guide walks…
/ 5 min
DMARC: going from p=none to p=reject without blocking legitimate email
Publishing a DMARC record at p=none protects nothing: real protection starts when the policy moves to quarantine and then to…
/ 3 min
Claude Sonnet 5 pricing holds: the September 1 increase is cancelled
Anthropic makes Claude Sonnet 5's introductory price permanent, at $2 and $10 per million tokens. The increase to $3 and…
/ 4 min
GitHub Copilot: three billing and governance changes landing this autumn
GitHub is rolling out three Copilot changes: Business and Enterprise signups reopen on 1 September, new seats require upfront payment,…
/ 3 min
Laravel 13.30 brings vector index management to migrations
Laravel 13.30.0 and 13.30.1, released on 1 September 2026, add vector index dropping to the schema builder and an Eloquent…
/ 3 min
Container queries: components that adapt to their container, not the viewport
Container queries let a component respond to the width of its container instead of the browser window. That shift changes…
/ 5 min
Chrome moves to a two-week release cycle
From 8 September 2026, Chrome ships a new stable version every two weeks. Manual version tracking gives way to feature…
/ 3 min