Developer

Build better.
Debug smarter.

Deep technical articles on APIs, security, debugging, and developer tooling.

✦ 130 Articles ✦ Updated Weekly ✦ Free to Read
✦ AI

✦ AI-powered — understands natural language

Cron Explainer Sep 5, 2026 Latest ✦

Why 0 0 1 * 1 Runs 63 Times a Year: The Cron OR Trap

Cron ORs the day-of-month and day-of-week fields, so 0 0 1 * 1 runs 63 times a year instead of once. That plus step-value gaps explains most cron scheduling bugs.

Read article
Regex Tester Jun 24, 2026

Missing a Regex Anchor Is a Bug — Why ^, $, and \b Work Differently Than You Think in Multiline Mode

The difference between a regex that matches "digits" and one that matches "only digits" is anchor characters — and missing anchors are why input validators accept strings they should reject. Here's how ^ and $ change behavior in multiline mode (a security-relevant surprise), why \b word boundaries break on Unicode text, the \z vs $ distinction for absolute string-end matching in Python, and why unanchored authorization patterns misclassify URLs.

Random String Generator Jun 24, 2026

Why the Same Random Token Breaks in Some Contexts — Hex vs Base64url vs Standard Base64 Explained

URL-safe Base64, hex, and standard Base64 are different representations of the same randomness — and the wrong choice causes "invalid token" errors when + and / characters in standard Base64 get interpreted as spaces and path separators in URLs. Here's a decision table for token format by context, why prefixed tokens (sk_live_, ghp_) enable security scanner detection of committed secrets, and why you should store only the SHA-256 hash of tokens, never the raw token.

REST API Checker Jun 24, 2026

The Most Revealing API Tests Aren't Successful Requests — A Systematic Error-Path Testing Guide

The most revealing API tests aren't successful requests — they're deliberately malformed, missing, or boundary-case inputs that expose implementation quality and security posture. Here's the systematic error-path testing discipline: what good vs weak APIs do with missing fields, why type coercion masks bugs, what oversized inputs reveal about injection surface and length validation, and how the alg:none JWT attack tests a fundamental authentication vulnerability.

Number Base Converter Jun 24, 2026

How to Read Hex Like a Debugger — Magic Bytes, Memory Dumps, and Why Byte Order Matters

Hexadecimal is a window into how computers represent data at the byte level — and once you can read it naturally, you start seeing structure in things that previously looked like noise. Here's how magic bytes identify file formats (JPEG starts with FF D8 FF, PDF with %PDF-, ZIP with PK), what hex reveals in network captures and memory dumps, the endianness problem that causes little-endian hex to read backwards, and the famous debug sentinel values like 0xDEADBEEF and 0xCAFEBABE.

Password Generator Jun 23, 2026

Why a Password Generator Using Math.random() Is Less Secure Than Its Length Suggests — Entropy, CSPRNG, and What to Check

A password generator using Math.random() is not cryptographically secure — a password's effective entropy is limited by the randomness quality of the generator, not just its length and character set. Here's what password entropy actually measures (bits of theoretical guessing difficulty), why crypto.getRandomValues() is categorically different from Math.random(), why length increases entropy faster than adding special characters, and how Diceware achieves verifiable physical randomness.

JSON Formatter Jun 23, 2026

Why JSON Doesn't Allow Comments — and the JSON5/JSONC Variants That Do (and Why They Break Standard Parsers)

JSON5 and JSONC add comments and trailing commas to JSON — and if you've ever tried to add a // comment to a tsconfig.json and wondered why VS Code allows it but JSON.parse() doesn't, you've encountered the JSON variant ecosystem. Here's why JSON has no comments by design, the three overlapping "JSON with comments" specifications, why standard parsers reject JSONC content, and the preprocessing approaches for handling these variants in automation.

JSON Diff Jun 23, 2026

Why Two Identical JSON Objects Look Different in a Diff — Normalization, Canonical Form, and the Array Problem

Two JSON objects with identical data can fail equality checks because of different key ordering — a false difference that corrupts any text-level diff. Here's the three normalization problems (key ordering, formatting, numeric representation), RFC 8785 canonical JSON for digital signatures, the practical parse-sort-serialize workflow for normalization before diffing, and why arrays create a harder normalization problem with no universal solution.

JSON Unescape & Cleaner Jun 23, 2026

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 Decoder Jun 23, 2026

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.

Base64 Encoder/Decoder Jun 23, 2026

Base64 Makes Data 33% Larger — Here's the Exact Math and When That Overhead Actually Matters

Base64 makes data 33% larger — exactly, not approximately, because encoding 6 bits per character while binary uses 8 bits per byte produces a 4/3 size ratio as a direct mathematical consequence. Here's why that overhead is negligible for tokens and small images but significant for large file APIs, the common JSON-Base64-embedded-file pattern and its alternatives, and what validation steps most Base64 decoding code skips for untrusted input.

UUID Generator Jun 23, 2026

Reading a UUID: What the Hex Characters Actually Encode — and Why v1 Exposes Your Server's MAC Address

A UUID looks random but encodes information depending on its version: v1 embeds the creation timestamp and the generating machine's MAC address (recoverable by anyone who sees the UUID); v4 is genuinely random (122 random bits); v5 is deterministically computed from a namespace and name; v7 is timestamp-ordered with random low bits. Here's what each segment of a UUID actually contains, why v1 is a privacy risk in public-facing contexts, and when UUIDs shouldn't be used as security tokens.

URL Encoder/Decoder Jun 22, 2026

URL Encoding Context: Why a URL Inside Another URL, in HTML, and in a Shell Command All Need Different Treatment

A URL that works in a browser can fail in curl, JSON, or as a query parameter — because each context has different rules about which characters need encoding. Here's why "just URL-encode it" is underspecified without knowing the context, the encoding-within-encoding problem (a URL as a value inside another URL), why & needs HTML entity encoding in href attributes but not JSON, and the + vs %20 space ambiguity.