Privacy-First Lorem Ipsum: Why Filler Text Needs No Server (2026)
Privacy-first Lorem Ipsum means your filler text never leaves the browser. Here is why server-side generators are a needless request, and how to check.
Tutorials, deep-dives, and privacy-first thinking about developer tools.
Showing 1–12 of 38 posts
Privacy-first Lorem Ipsum means your filler text never leaves the browser. Here is why server-side generators are a needless request, and how to check.
XMLHttpRequest becomes xml_http_request only if your converter knows where the acronym ends. Here is the boundary rule, the regex, and what style guides say.
kebab-case shows up in CSS properties, URL slugs, and command-line flags for reasons that are not stylistic. Here is what the specs actually require.
Every lorem ipsum generator is a small word bank plus a few rules. Here is the actual algorithm: 182 Latin words, sentence windows, commas, punctuation.
Where does Lorem Ipsum come from? Not an unknown printer in the 1500s. The paper trail runs from Cicero in 45 BC to a 1914 Loeb edition to Letraset in 1966.
CSV files carry no types, so every parser guesses. Here is when a numeric-looking field should stay a string, and how to stop silent data loss.
Semicolon CSV files aren't broken exports. They come from Excel's locale list separator. Here's why it happens and how to read the files anywhere.
The Notification API lets a timer reach you after you switch tabs. Here is the permission flow, the options that matter, and the failures nobody warns you of.
Your CSV opens as mojibake in Excel because the file declares no encoding. Here is why it happens, how a UTF-8 BOM fixes it, and when the BOM backfires.
RFC 4180 defines CSV in a single page, yet parsers still break on quotes, CRLF, BOMs and semicolons. Here are the edge cases and how to handle each one.
Background tab throttling is why your JavaScript timer falls minutes behind. Here is what Chrome and Firefox actually do, and the fix that survives it.
setInterval drift is why your 60-second timer finishes late. Here is why the event loop causes it, and how performance.now() fixes it for good.