Home / Blog

Blog

Short technical notes on SaaS, iOS, API and WordPress.

Optimising INP: where JavaScript actually hurts you

INP replaced FID in Core Web Vitals in 2024 and it's a tougher metric. I worked through how JavaScript actually drives INP…

Blog 5 min

Custom post types and Gutenberg blocks: native registration instead of ACF

I'd grown used to defining custom post types and blocks with ACF. Moving to native register_post_type and register_block_type changed how clean the…

Blog 5 min

Moving SOAP to REST: three migrations, 18 months of lessons

Common lessons from three SOAP to REST migrations on bank, ERP, and government integrations. Gateway pattern, envelope conversion, and the strategy for…

Blog 5 min

ASO notes from shipping 12 App Store apps

Some of my apps pull 60% of installs from ASO, others barely grow. Keyword strategy, screenshot order, preview video, localisation: the decisions…

Blog 4 min

Multi-region deployment is overkill for 90% of products

I rolled back multi-region deployment on two projects where I'd introduced it too early. When it's truly required, when it just piles…

Blog 4 min

Sprint planning that actually earns its place: negotiation, not ritual

Sprint planning is a ritual on most teams. Two hours long, output fuzzy. Turning it into a practice that actually earns its…

Blog 6 min

CLS culprits: from font loading to ad slots, and how to fix each one

Cumulative Layout Shift (CLS) is Google's visual stability metric. Where layout shifts come from, and how to fix them.

Blog 6 min

Custom WP REST API endpoints: authentication and capability checks that hold up

You're writing a custom WordPress REST API endpoint. The security discipline: authentication, authorization, rate limiting.

Blog 6 min

API key rotation: four scenarios and how to handle each one

What happens when an API key leaks? Without rotation, years of exposure. Four real scenarios and the practical rotation for each.

Blog 6 min

Dark Mode done right: the discipline from design to code

Dark Mode has been around since iOS 13. Badly implemented apps are still everywhere. The right approach, from design to code.

Blog 6 min

Disaster recovery: the mistakes I made before a real incident exposed them

Most companies have a DR plan on paper that nobody tests. Here are the failures a real drill will expose.

Blog 6 min

Story points are not hours: the estimation mistake most teams make

A story point is not hours. But most teams estimate with that assumption. What does good estimation actually look like?

Blog 5 min