Text Tools Jun 18, 2026

Why Text Diff Tools Work at Line Level (Not Character Level): Edit Distance, Granularity, and the Unified Diff Format

The simplest possible text diff — "what characters changed?" — is the Edit Distance problem, with an O(n×m) solution too slow for document-scale text. This is why practical diff tools work at line level, with a second character-level pass only within changed lines. Here's how granularity (character, word, line, sentence, structural) changes both what's shown and what's computationally feasible, the unified diff format explained, and why structured diffs for JSON/HTML need tree-level comparison rather than line-level.

Developer Jun 18, 2026

Snapshot Testing Is Just JSON Diffing With Extra Steps — Here's Why That Explains Both Its Strengths and Its Noise

Snapshot testing is, underneath, just "save a JSON diff result and fail the test if it's not empty next time" — and seeing it this way explains both why snapshot tests catch bugs that assertion-based tests miss, and why they're notorious for generating noisy, rubber-stamped diffs. Here's how the snapshot-compare-update cycle works, why "everything changed" diffs from one intentional change lead to rubber-stamping, and why a genuine bug can hide among repetitive, expected diff entries.

Text Tools Jun 17, 2026

Huffman Coding: How "E Is the Most Common Letter" Becomes Smaller ZIP Files and PNG Images

Every ZIP file, PNG image, and gzip-compressed page relies on the same observation as the previous article's frequency analysis: characters aren't equally frequent, so assigning shorter codes to common symbols and longer codes to rare ones saves space. Here's how Huffman coding builds optimal variable-length codes from frequency data, why "prefix-free" codes need no separators, how this fits into larger compression pipelines like DEFLATE, and why already-compressed data resists further compression.

Text Tools Jun 17, 2026

Frequency Analysis: How Counting Letters Breaks Caesar Ciphers, Substitution Ciphers, and Why Modern Encryption Is Immune

A Caesar cipher can be broken in seconds — not by trying all 25 shifts, but by counting which ciphertext letter appears most often and matching it against English's most common letter, "E." Here's how frequency analysis breaks substitution ciphers, why polyalphabetic ciphers like Vigenère were designed to defeat it, and why modern encryption (AES, RSA) is immune to this entire category of attack.

Text Tools Jun 17, 2026

Find & Replace Beyond Basics: Regex Capture Groups, Multi-Cursor Editing, and Safe Project-Wide Replace

Find-and-replace with regex capture groups doesn't just substitute text — it can restructure it, swapping argument order or reformatting dates by reusing captured values in the replacement. Here's how capture-group replacements work, when multi-cursor editing is the better tool instead, case-modification syntax for naming-convention conversions, and safe practices for project-wide replace operations.

Converters Jun 17, 2026

Why "UTC+1" Is the Wrong Way to Represent a Timezone — DST, the IANA Database, and Ambiguous Hours

Daylight Saving Time doesn't just change what clocks show — it changes the UTC offset for every observing timezone, making "UTC+1" ambiguous between London in winter, Paris in winter, and West Africa Time year-round. Here's the IANA timezone database and what it actually contains, why hardcoded UTC offsets break twice a year, the genuinely ambiguous edge cases at spring-forward and fall-back boundaries, and why the standard advice is "store UTC, convert for display."

SEO Jun 17, 2026

Pagination, Canonical Tags, and rel=prev/next: What Changed and What Still Matters

Google stopped using rel=prev/next for pagination in 2019 — but the canonicalization question for paginated content didn't disappear. Here's why self-referencing canonicals are generally correct for paginated listings with unique items per page, when "view all" pages should be the canonical target instead, and how infinite scroll fits into this.

Internet Jun 17, 2026

Why a 95 Website Speed Score Doesn't Mean Real Users Experience It as Fast — Lab Data vs Field Data

A website scoring 95 in a lab speed test can still feel slow to real users — lab tests run on powerful servers with fast connections and empty caches, while real users are on phones, on 4G, seeing your site for the first time. Here's the lab vs field data distinction, what LCP/INP/CLS actually measure, why slow TTFB sets a floor no client-side fix can overcome, and the specific changes that move each Core Web Vital the most.

Text Tools Jun 17, 2026

Reversing Text Has Three Completely Different Meanings — Here's How Each Works and When You'd Use It

Reversing text has three completely different interpretations: reverse every character, reverse word order, or reverse line order — and each produces different output from identical input. Here's where each is actually used (character reversal for palindromes, line reversal for the Unix tac command and log files), the palindrome variants that require different reversal types, and why reversing Arabic/Hebrew code points is different from displaying them right-to-left.

Text Tools Jun 17, 2026

Why ROT13's Encode Button and Decode Button Do the Same Thing — and Why That's the Point

ROT13 shifts each letter by 13, and shifting by 13 again returns you to the start — because 13 is exactly half of 26, and the English alphabet has 26 letters. This self-inverse property means "encode" and "decode" are literally the same operation, which is exactly why ROT13 became the standard for Usenet spoilers and forum answers: one button, symmetric, no separate decode tool needed. Here's the math, the variants (ROT5, ROT18, ROT47), and where self-inverse operations appear elsewhere.

Internet Jun 17, 2026

SSL Certificate Expiry Fails Silently — Here's Every Way Automated Renewal Can Break Without Warning

SSL certificate expiry gives no visible warning until the moment it fails — and then every visitor simultaneously sees a hard browser error. Here's why automated renewal (Let's Encrypt + Certbot) fails silently in specific patterns (the cron job stops, the web server never reloads, domain validation breaks), why external expiry monitoring is essential even with automation, and the certificate-pinning complication for mobile apps.

Internet Jun 17, 2026

MX Record Priority and Failover: How Mail Servers Actually Choose Between Multiple MX Records

Multiple MX records don't load-balance by default — lower priority numbers are tried first, in strict order, with fallback only on connection failure (not on "recipient doesn't exist" responses). Here's how MX priority actually governs mail server selection, when equal priorities create real load distribution, the null MX convention for email-free domains, and practical MX configuration patterns.