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
Text Diff in Practice: Legal Redlining, Code Review, and How AI Writing Assistants Show Changes
Legal document redlining, Git pull request review, Word's Track Changes, and AI writing assistants all use the same diff principle. Here's how each context uses comparison differently, why legal diff needs more than plain text comparison, and how AI tools use diff to show suggested edits.
Morse Code and the History of Digital Communication: From Telegraph Networks to Huffman Coding
Morse code was the first digital communication protocol — and its variable-length encoding by letter frequency is the same principle used in JPEG compression today. Here's how Huffman coding originated in Vail's counting printer type cases, why timing disambiguates codes without fixed delimiters, and why CW radio survived into the 21st century.
Character Frequency and NLP Foundations: How Zipf's Law Underlies Search Engines and Language Models
Word frequency analysis underlies search engines, compression algorithms, and how large language models learn. Here's Zipf's Law, TF-IDF for meaningful keyword extraction, how word embeddings come from co-occurrence statistics, and why the character frequency distribution you measure is the same foundation that GPT models learn from.
Sort Orders Explained: Why "file10" Sorts Before "file2" and When It Matters
"file10" sorts before "file2" alphabetically — which is correct for strings but wrong for filenames. Here's natural sort vs lexicographic sort, locale-aware collation for multilingual names, multi-column SQL ORDER BY, and why stable vs unstable sort algorithms matter in practice.
String Padding and Repetition Across Languages: Python, JavaScript, SQL, and Bash
Python's str * n, JavaScript's repeat() and padStart(), SQL's RPAD() and LPAD(), and bash printf are all solving the same problem: building strings of specific lengths and patterns. Here's the complete cross-language reference for string repetition and padding with practical formatting examples.
Automating Text Transformations in Spreadsheets: SUBSTITUTE, REGEXREPLACE, and Bulk Editing
Excel and Google Sheets have SUBSTITUTE, REGEXREPLACE, PROPER, and TRIM functions that automate text transformation across thousands of cells. Here's chained SUBSTITUTE formulas, REGEXREPLACE for phone number formatting and HTML stripping, and practical workflows for cleaning product exports and generating URL slugs.
Truncation Bugs: Database VARCHAR Silent Data Loss, CSS Overflow, and Windows Path Length Limits
MySQL silently truncates strings that exceed VARCHAR column lengths — no error, just missing data. Here's database silent truncation, CSS text-overflow and multi-line clamping, the accessibility problem with truncated UI text, API response truncation flags, and the Windows 260-character path length problem.
Writing for Word Count: Academic Essays, SEO Content Length, Social Media Limits, and Ad Copy
Academic essays need minimum words to develop an argument; SEO content length correlates with quality but isn't a direct ranking factor; Twitter's 280-char limit shapes writing style; Google Ads allows 30 characters per headline. Here's word count requirements across contexts and why they exist.
String Reversal and Unicode: Why the Simple Implementation Breaks for Emoji and Combining Characters
Reversing a string in JavaScript with split("").reverse().join("") breaks emoji — each emoji is two code units and the split separates them. Here's why naive string reversal fails for Unicode, how surrogate pairs and combining characters cause problems, and the correct grapheme cluster approach in Python and JavaScript.
Unicode Case Conversion Challenges: The Turkish I Problem, German ß, and Locale-Aware APIs
JavaScript's toUpperCase() returns the wrong character for Turkish 'i', and uppercasing German ß changes the string length from 6 to 7 characters. Here's the Unicode case conversion edge cases that cause real bugs, locale-aware API alternatives in JavaScript and Python, and why title case rules differ across languages.
International URL Slugs: Transliteration vs Native Characters for Non-Latin Scripts
Chinese, Arabic, and Cyrillic characters in URLs are technically valid and browsers display them readably — but transliteration vs native-language slugs involves real SEO and UX trade-offs. Here's how percent-encoding works, transliteration libraries for different languages, and how major frameworks handle non-ASCII slugs.
Sorting Algorithms Explained: Why the Choice Matters at Scale
Bubble sort handles 1,000 items fine but takes hours on 1 million. Quicksort handles both in milliseconds. Here's how common sorting algorithms actually work, why O(n log n) is the comparison sort lower bound, and what TimSort is doing inside Python and Java.