Deep dives into tools,
techniques & the web.
Practical guides covering developer tools, health metrics, SEO, converters and more — written to be actually useful.
✦ AI-powered — understands natural language
The 300-Year Unbreakable Cipher That Got Broken — Vigenère, Enigma, and What Every "Unbreakable" Cipher Has in Common
The CPI Basket Is a Political and Statistical Choice — Here's What That Means for the Inflation Number You See
CPI measures a basket of goods — but the basket's composition, weighting, and the mathematical formula used to average prices all involve significant methodological choices that produce materially different inflation readings. Here's how the basket is updated (and why the lag matters), the Laspeyres vs Paasche substitution bias problem, why chained CPI consistently reads 0.25% lower than unchained, and the UK alphabet soup of CPI vs CPIH vs RPI.
When Accessibility and SEO Alt Text Goals Conflict — and How to Write Alt Text That Serves Both
Alt text for accessibility and alt text for SEO look identical in HTML — but the goals that inform them pull in different directions. Here's where they diverge: context-dependency (the same image needs different alt text in different contexts), keyword stuffing (which fails the "read it aloud" test), the functional images where SEO keyword inclusion is actively wrong, and the complex images where neither alt text alone nor SEO keywords capture enough information.
Why Every Note on a Piano Is Slightly Out of Tune — Equal Temperament, the Pythagorean Comma, and Frequency Ratios
Equal temperament — the tuning system used by every modern piano and electronic tuner — is a mathematical compromise that makes all 12 keys equally slightly out of tune. Here's why pure integer-ratio intervals (like the 3:2 perfect fifth) can't fit in 12 notes without a gap called the Pythagorean comma, how equal temperament distributes that error evenly (making each fifth 0.745 Hz flat from pure), and why string players naturally drift toward pure intervals while pianists can't.
Why JSON.parse() Fails for Large Files — Streaming Parsers, JSON Lines, and When to Use Each
Standard JSON.parse() requires the complete document before returning anything — which fails for large files that exceed memory and real-time streaming APIs that never "finish." Here's how streaming JSON parsers work (event-driven, token-by-token), JSON Lines as a simpler alternative that works with standard parsers, the specific use cases where streaming is necessary vs over-engineering, and when high-volume data transfer argues for protobuf instead of JSON entirely.
JWT "Stateless" Is a Half-Truth — The Microservices Patterns That Account for the Other Half
JWTs are "stateless" — but deciding whether to trust the claims may require state, and confusing the two leads to architectural mistakes. Here's the microservices JWT validation dilemma (every service validates vs gateway-validates-services-trust), why encoding authorization roles in JWTs creates a stale-claims window problem, why the aud claim validation is commonly skipped (and why that's a vulnerability), and the mTLS + JWT separation of concerns that modern service meshes use.
Long-Tail Keywords Build Topical Authority — Here's the Synergy Most SEO Advice Misses
Long-tail strategies and topical authority strategies seem like opposites — but they're synergistic: long-tail content accumulates into topical authority, which eventually improves head term competitiveness. Here's the power-law search volume distribution, why head term competition makes density optimization largely irrelevant (authority signals dominate), why keyword density analysis is more directly actionable for long-tail content, and how comprehensive long-tail coverage produces the semantic signals that build topical authority.
Regex Works on Characters, Not Structure — Why It Fails on CSV, HTML, and JSON (and What to Use Instead)
Regex operates on characters, not structure — and applying it to CSV, JSON, or HTML routinely produces wrong results because the same pattern can appear in both structural positions (delimiters, field names) and content positions (inside field values). Here's why commas inside quoted CSV fields confuse naive regex, the HTML-parsing-with-regex problem, when regex on structured text is actually acceptable (log files, single-field formats), and the correct parsers for each format.
Why Your Car Never Achieves the Official MPG Figure — Lab Test Cycles vs Real-World Driving
Official fuel economy figures are generated in a lab using scripted driving cycles — no cold starts, no air conditioning, no hills, no traffic. The EPA applies a 20% correction to its raw figures; even so, 15-30% below official is entirely typical in real-world driving. Here's how the WLTP test cycle works, what it omits, why PHEV figures are particularly misleading for specific driving patterns, and how to calculate your actual fuel economy with the fill-to-fill method.
Why So Many Sites Have the Wrong H1 — CMS Template Issues, Multiple H1s, and What Good Looks Like
Many sites have multiple H1s, no H1, or H1s that say "Home" because a CMS template set it up that way. Here's what H1 should represent (page's primary topic heading), why HTML5's multiple-H1 sectioning model was abandoned in practice, the common implementation failures audits consistently find (generic "Home" or "Blog" headings, H1 below H2 in visual hierarchy), and how heading extractors reveal template-level H1 issues across a whole site.
Why Correct Hreflang Doesn't Guarantee Correct Language Targeting — The Content Quality Signals Google Also Checks
Correct hreflang implementation doesn't guarantee correct language targeting — Google treats hreflang as a strong hint, not a command, and will override it if the targeted language version has thin content, poor quality signals, or unreliable crawl accessibility. Here's what Google checks alongside hreflang (content quality, backlinks from the target language's web, user behavior), why machine translation creates a quality threshold problem, and how partial hreflang coverage is handled.
Why the Same Extra £5,000 Mortgage Payment Saves 3× More in Year 1 Than in Year 15 — Amortisation Mechanics Explained
An EMI is fixed every month, but the split between principal and interest changes dramatically across the loan's life — month 1 of a 20-year mortgage is mostly interest; month 200 is mostly principal. This is why a £5,000 extra payment in month 6 saves approximately £3,900 in future interest, while the same £5,000 extra payment in month 180 saves only £1,250. Here's the amortisation math, why early extra payments have disproportionate impact, and how to decide between overpaying vs investing extra cash.
The Four-Layer DNS Cache — Why the Same Domain Resolves Differently From Different Locations During Propagation
A DNS query might return an answer cached by your browser, your OS, your ISP's resolver, or a CDN's resolver — and each cache has a different expiry time. Here's the four-layer DNS caching chain, why the TTL on your old record controls propagation speed (not the TTL on the new one), how to read the remaining cache TTL from dig output, negative caching (why "doesn't exist" responses are also cached), and why Anycast DNS means propagation isn't geographically simultaneous.