Words, precision
and power.
The details behind text processing, encoding, and document formats.
✦ AI-powered — understands natural language
Why Your Reading Time Estimate Is Wrong — Reading Speed Research, Word Count Inconsistency, and Character Limits That Actually Matter
Translation Text Expansion: Why German Runs Longer, Chinese Runs Shorter, and Your Layout Needs to Survive Both
A 1,000-word English document becomes roughly 1,300 words in German and roughly 700 words in Chinese — predictable averages that matter enormously for UI layout and print/subtitle budgeting, but can deviate wildly for short strings. Here's the commonly-cited expansion ratios by language, why pseudo-localization testing catches layout issues before translation even begins, and how expansion affects print page counts and video subtitling/dubbing differently than per-word translation costs.
Why "AMBULANCE" Is Written Backwards: Mirror Text, Ambigram Logos, and the Dyslexia Misconception
"AMBULANCE" written backwards on the front of an ambulance isn't a typo — it's designed to read correctly in a driver's rearview mirror. Here's how this functional mirror-text convention works, what ambigram logos actually require from letterform design, and why the popular "dyslexia means seeing letters backwards" characterization is a significant oversimplification of current research.
Morse Code Timing: Why "Faster" Means Rescaling Five Different Things at Once
A Morse code message can be sent anywhere from 5 to 40+ words per minute — but unlike typing speed, "faster" doesn't mean "the same dots and dashes, sooner." Every timing element (dot, dash, and three different gap types) is defined as a ratio relative to a single unit, and that unit scales together across all five elements at once. Here's how WPM is calibrated using the word "PARIS," why high-speed Morse becomes a perceptual rather than counted skill, and why Farnsworth timing deliberately breaks the proportional system for learners.
Email List Deduplication and GDPR: Why "We Have This Person Eleven Times" Is a Compliance Question, Not Just a Mess
Three different "subscriber" CSV exports often contain the same person eleven times — with case variations, plus-addressing tags, and provider-specific formatting quirks. Under GDPR, duplicate contact records aren't just messy — they're a compliance question for "right to erasure" and access requests. Here's why email lists accumulate duplicates, the normalization steps before exact-match deduplication, and the consent-tracking implications of un-reconciled duplicates.
Natural Sort vs Lexicographic: Why "file10 Before file2" Happens Differently in Every Language, Database, and File Manager
"file10" sorting before "file2" isn't a bug specific to one tool — it's the default lexicographic behavior across most programming languages, while file managers typically default to natural sort, creating a common mismatch. Here's how Python, JavaScript, SQL ORDER BY, and spreadsheets each handle this differently, and why version-number sorting (SemVer) is a related but distinct problem with its own rules.
Catastrophic Backtracking: Why a Regex That Works Instantly in Testing Can Hang Forever on Real Data
A find-and-replace that works instantly on a 100-character test string can take minutes (or never finish) on a 10,000-character real document — not because the engine is slow, but because certain regex patterns cause processing time to grow exponentially with input length. Here's how "catastrophic backtracking" works with patterns like (a+)+b, why it's invisible on short test inputs, why it's also a recognized security vulnerability (ReDoS), and how to recognize vulnerable pattern structures.
Slug Collisions: What Happens When Two Pages Generate the Same URL, and How CMSs Handle It
Two posts titled "How to Make Sourdough Bread" generate identical slugs by default — and what happens next varies by CMS, from silent numeric suffixes (chocolate-chip-cookies-2) to outright rejection requiring manual resolution. Here's how different collision-handling approaches work, why date/ID-based URL structures avoid most collisions structurally, and the tricky edge case of new content colliding with an old slug's redirect.
String Repetition and ANSI Escape Codes: How Progress Bars, Borders, and Terminal UIs Are Built
A terminal progress bar, a box-drawn menu, and colored CLI output all rely on the same underlying operation: repeating a character a calculated number of times, often combined with ANSI escape codes for color and cursor control. Here's how string repetition builds progress bars and borders, why Unicode box-drawing characters connect seamlessly at corners, and how terminal width affects repeated-character output.
Pagination, Infinite Scroll, or "Read More": Three Answers to "This Content Is Too Long" and When Each Fits
"Read more" links, pagination, and infinite scroll are three different answers to "content is longer than the space available" — each with different SEO, accessibility, and UX trade-offs. Here's where each fits best, why infinite scroll's footer-reachability problem is well-documented, and how hybrid approaches (load-more buttons, infinite scroll with History-API pagination underneath) combine their benefits.
ROT13 in Puzzle Design: Why Escape Rooms and ARGs Use a Cipher That's Deliberately Not Secure
ROT13 in an escape room or puzzle hunt isn't there for security — it's there because recognizing "this is a substitution cipher" IS the puzzle, and decoding it afterward is trivial by design. Here's how puzzle designers use ROT13 as a "calibration" cipher, why shift-amount discovery becomes its own puzzle layer, and ROT13's self-inverse property for spoiler-text use.
Morse Code Isn't History: SOS, Aviation Navigation Beacons, and Why Amateur Radio Operators Still Choose CW
SOS — three dots, three dashes, three dots — wasn't chosen for "Save Our Souls." It was chosen because that specific rhythm is virtually impossible to mistake for anything else, even under terrible signal conditions, and works via radio, light, or sound. Here's why Morse code remains actively used today in aviation navigation beacon identifiers and amateur radio CW operation — not as history, but for genuine technical advantages.
Whitespace as Syntax: Python Indentation, YAML Structure, Prettier, and .editorconfig
Python uses indentation as syntax; YAML prohibits tabs entirely; Make requires tabs. Here's whitespace as code structure, the tabs vs spaces debate resolved by autoformatters like Prettier and Black, .editorconfig for cross-editor consistency, and the CRLF vs LF line ending problem in mixed-platform teams.