ssh-keygen -t ed25519: Which SSH Key Type to Use
Why ssh-keygen -t ed25519 is the right default, how Ed25519, ECDSA and RSA compare, what quantum computing really changes, and using one key for Git and SFTP.
Read post →Practical writing on the things these tools touch: SSH keys, UUIDs, JWTs, tokenization, image formats and the maths behind them. No fluff, worked examples. Subscribe via RSS →
Why ssh-keygen -t ed25519 is the right default, how Ed25519, ECDSA and RSA compare, what quantum computing really changes, and using one key for Git and SFTP.
Read post →
A v4 UUID carries 122 bits of randomness; a v7 carries 74. How each is built, where each is used, and why randomness and entropy are not the same thing.
Read post →
A decision framework for picking a web framework: the four questions that actually narrow the field, and why team familiarity beats benchmarks.
Read post →
The nine things every invoice needs, how to number invoices properly, what Net 30 means, and the wording changes that measurably speed up payment.
Read post →
HEIC is the iPhone's default photo format — half the size of JPEG at the same quality, but it won't open everywhere. Why Apple uses it, and how to get JPGs.
Read post →
When you upload a PDF to a free online tool, where does it actually go and how long does it live there? The real risks, and the browser-only alternative.
Read post →
The five cron fields, the schedules everyone actually needs — every 5 minutes, daily at midnight, weekdays at 9 — and the day-of-week trap.
Read post →
Keyword casing, leading vs. trailing commas, indentation that shows query structure, and JOIN/CTE layout — the SQL rules that make queries reviewable.
Read post →
Anagram techniques that actually work: alphagrams, prefix/suffix chunking, and the letter math behind Scrabble, Wordle and newspaper jumbles.
Read post →
The average human reaction time is about 250 ms to a visual stimulus. How that shifts with age, hardware and sound vs. sight — and how to test yours.
Read post →
What SPF, DKIM and DMARC actually check, how the three DNS records fit together, and the misconfigurations that send legitimate email to spam.
Read post →
Most RAG retrieval failures start at chunking. Fixed-size vs. structure-aware vs. semantic chunking, sensible size and overlap defaults, and how to evaluate.
Read post →
A QR code is a 2D barcode holding text with heavy error correction. How the modules encode data, why a torn or logo'd code still scans, and the quishing risk.
Read post →
"Unexpected token" tells you something broke, not what. The handful of mistakes behind almost every JSON parse error, with the one-line fix for each.
Read post →
Picking the wrong image format bloats pages and hurts Core Web Vitals. Lossy vs lossless, transparency, when WebP and AVIF win, and what compression saves.
Read post →
#7c3aed, rgb(124 58 237) and hsl(258 83% 58%) are one colour. What each CSS colour format encodes, why HSL is the tweakable one, and where oklch fits.
Read post →
Embeddings turn text into vectors so machines can compare meaning. What an embedding is, why cosine similarity is the metric, and how semantic search works.
Read post →
Will that model fit on your GPU? Where VRAM goes (weights, the KV cache, overhead), what quantization actually saves, and a sizing table by GPU.
Read post →
Tokens aren't words, and you're billed per token. How LLM tokenization works, why code and emoji cost more, and how to estimate your API bill before you ship.
Read post →
A TLS certificate is signed metadata binding a public key to a name. How to read the fields that matter — subject, SAN, issuer, validity — and spot red flags.
Read post →
Moving from Valorant to CS2? Here's the exact sensitivity conversion, why cm/360 is what really matters, and how to keep the muscle memory you built.
Read post →
What counts as a good CPS (clicks per second)? See click-speed benchmarks by skill level, what affects your score, and proven ways to click faster.
Read post →
The 6-digit code isn't sent by the server. How TOTP works: a shared secret, an HMAC of the current time, and why the code rotates every 30 seconds.
Read post →
Slacking or emailing a password leaves it in logs forever. How to share one safely without a vault: the two-channel rule, and what never to do.
Read post →
A plain hash of a request body proves nothing. Why webhook verification needs HMAC (a keyed hash), how the flow works, and how to compare signatures safely.
Read post →
A JWT isn't encrypted, only signed, so anyone can read the payload. How JWTs work, why alg:none is dangerous, and how to validate one safely.
Read post →
Debt snowball vs. avalanche: the snowball builds momentum, the avalanche saves the most interest. See how each works, the trade-off, and which to pick.
Read post →
UUIDv4 is random; UUIDv7 is time-ordered. Why random UUIDs fragment database indexes, how v7 fixes it, and a decision table for primary keys vs auto-increment.
Read post →
UUIDs come in several versions, each for a different job. What v1, v3, v4, v5, v6, v7 and v8 (plus nil and max) are for, and which one to reach for.
Read post →
Crack-time charts oversimplify. The real math of password strength: entropy in bits, guesses per second, why length beats complexity, and how to test yours.
Read post →
A task-oriented regex cheat sheet: the building blocks that cover 90% of cases, greedy vs lazy, capture groups, copy-paste recipes, and the ReDoS pitfall.
Read post →
Compound interest means earning interest on your interest. See the formula, a worked example, and why starting a decade earlier can beat saving far more later.
Read post →
What a Unix timestamp really is: seconds since 1970 UTC. Seconds vs milliseconds, why you store UTC, the Year 2038 problem, and how to get epoch time anywhere.
Read post →
Base64 is reversible encoding, not encryption: no key, no secrecy. How it works (3 bytes to 4 chars), why it exists, the 33% size cost, and what to use instead.
Read post →
SHA-256 turns any data into a fixed 64-character fingerprint. A plain-English look at what a hash is, what SHA-256 is used for, and why you can't reverse it.
Read post →
Why Andergrove Software exists, and how this lean static site is built and maintained.
Read post →
A practical guide to the IBM DataPower Gateway REST management API: structure, key resources, and curl examples for reading and updating configuration.
Read post →
How to run IBM DataPower Gateway locally as a free Docker service for development: setup, the docker run command explained, and enabling the Web UI.
Read post →
Andergrove Software is a software services company from Canberra, Australia, run by Chris Hare — an introduction to the blog.
Read post →