<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Andergrove Software</title>
    <link>https://andergrove.com/</link>
    <description>Fast, private browser tools and short writing about building software.</description>
    <language>en-us</language>
    <atom:link href="https://andergrove.com/feed.xml" rel="self" type="application/rss+xml" />
    <lastBuildDate>Sat, 25 Jul 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>ssh-keygen -t ed25519: Which SSH Key Type to Use</title>
      <link>https://andergrove.com/posts/ssh-key-types-ed25519-vs-rsa/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/ssh-key-types-ed25519-vs-rsa/</guid>
      <pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>How Random Is a UUID? Entropy, v4, and v7</title>
      <link>https://andergrove.com/posts/uuid-randomness-and-entropy/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/uuid-randomness-and-entropy/</guid>
      <pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>How to Choose a Web Framework (Without Reading 50 Listicles)</title>
      <link>https://andergrove.com/posts/how-to-choose-a-web-framework/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/how-to-choose-a-web-framework/</guid>
      <pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate>
      <description>A decision framework for picking a web framework: the four questions that actually narrow the field, and why team familiarity beats benchmarks.</description>
    </item>
    <item>
      <title>How to Write an Invoice: What to Include (and What Gets You Paid)</title>
      <link>https://andergrove.com/posts/how-to-write-an-invoice/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/how-to-write-an-invoice/</guid>
      <pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate>
      <description>The nine things every invoice needs, how to number invoices properly, what Net 30 means, and the wording changes that measurably speed up payment.</description>
    </item>
    <item>
      <title>What Is a HEIC File? (and How to Convert iPhone Photos to JPG)</title>
      <link>https://andergrove.com/posts/what-is-a-heic-file/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/what-is-a-heic-file/</guid>
      <pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>Are Online PDF Tools Safe? What Happens When You Upload a File</title>
      <link>https://andergrove.com/posts/are-online-pdf-tools-safe/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/are-online-pdf-tools-safe/</guid>
      <pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>Cron Syntax Explained: A Cheatsheet of the Schedules Everyone Actually Uses</title>
      <link>https://andergrove.com/posts/cron-syntax-cheatsheet/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/cron-syntax-cheatsheet/</guid>
      <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
      <description>The five cron fields, the schedules everyone actually needs — every 5 minutes, daily at midnight, weekdays at 9 — and the day-of-week trap.</description>
    </item>
    <item>
      <title>How to Format SQL: A Pragmatic Style Guide</title>
      <link>https://andergrove.com/posts/sql-formatting-style-guide/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/sql-formatting-style-guide/</guid>
      <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
      <description>Keyword casing, leading vs. trailing commas, indentation that shows query structure, and JOIN/CTE layout — the SQL rules that make queries reviewable.</description>
    </item>
    <item>
      <title>How to Unscramble Words: Techniques Top Scrabble Players Use</title>
      <link>https://andergrove.com/posts/how-to-unscramble-words/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/how-to-unscramble-words/</guid>
      <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
      <description>Anagram techniques that actually work: alphagrams, prefix/suffix chunking, and the letter math behind Scrabble, Wordle and newspaper jumbles.</description>
    </item>
    <item>
      <title>Average Reaction Time: Benchmarks by Age, Device, and Stimulus</title>
      <link>https://andergrove.com/posts/average-reaction-time-benchmarks/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/average-reaction-time-benchmarks/</guid>
      <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>SPF, DKIM, and DMARC Explained: Why Your Email Lands in Spam</title>
      <link>https://andergrove.com/posts/spf-dkim-dmarc-explained/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/spf-dkim-dmarc-explained/</guid>
      <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
      <description>What SPF, DKIM and DMARC actually check, how the three DNS records fit together, and the misconfigurations that send legitimate email to spam.</description>
    </item>
    <item>
      <title>Chunking Strategies for RAG: Why Chunk Size Makes or Breaks Retrieval</title>
      <link>https://andergrove.com/posts/chunking-strategies-for-rag/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/chunking-strategies-for-rag/</guid>
      <pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate>
      <description>Most RAG retrieval failures start at chunking. Fixed-size vs. structure-aware vs. semantic chunking, sensible size and overlap defaults, and how to evaluate.</description>
    </item>
    <item>
      <title>What's Inside a QR Code? How They Encode Data (and the Risks)</title>
      <link>https://andergrove.com/posts/how-qr-codes-work/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/how-qr-codes-work/</guid>
      <pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>Common JSON Errors and How to Fix Them</title>
      <link>https://andergrove.com/posts/common-json-errors-and-how-to-fix-them/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/common-json-errors-and-how-to-fix-them/</guid>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
      <description>"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.</description>
    </item>
    <item>
      <title>WebP vs. JPEG vs. PNG: Which Image Format, and When</title>
      <link>https://andergrove.com/posts/webp-vs-jpeg-vs-png/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/webp-vs-jpeg-vs-png/</guid>
      <pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>Hex, RGB, HSL: How CSS Color Formats Work</title>
      <link>https://andergrove.com/posts/css-color-formats-explained/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/css-color-formats-explained/</guid>
      <pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate>
      <description>#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.</description>
    </item>
    <item>
      <title>What Are Embeddings? Cosine Similarity Explained for Developers</title>
      <link>https://andergrove.com/posts/embeddings-and-cosine-similarity-explained/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/embeddings-and-cosine-similarity-explained/</guid>
      <pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>How Much VRAM Do You Need to Run an LLM Locally?</title>
      <link>https://andergrove.com/posts/how-much-vram-to-run-an-llm/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/how-much-vram-to-run-an-llm/</guid>
      <pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>How LLM Tokenization Works (and Why Your API Bill Is Higher Than You Think)</title>
      <link>https://andergrove.com/posts/how-llm-tokenization-works/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/how-llm-tokenization-works/</guid>
      <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>How to Read a TLS Certificate (and Spot a Bad One)</title>
      <link>https://andergrove.com/posts/how-to-read-a-tls-certificate/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/how-to-read-a-tls-certificate/</guid>
      <pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>Convert Your Valorant Sensitivity to CS2 (Without Losing Your Aim)</title>
      <link>https://andergrove.com/posts/valorant-to-cs2-sensitivity/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/valorant-to-cs2-sensitivity/</guid>
      <pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>What Is a Good CPS? Average Click Speed and How to Click Faster</title>
      <link>https://andergrove.com/posts/what-is-a-good-cps/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/what-is-a-good-cps/</guid>
      <pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>How TOTP and Authenticator Apps Actually Work</title>
      <link>https://andergrove.com/posts/how-totp-authenticator-apps-work/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/how-totp-authenticator-apps-work/</guid>
      <pubDate>Sun, 10 May 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>How to Share a Password Securely at Work (No Special Tools)</title>
      <link>https://andergrove.com/posts/share-a-password-securely/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/share-a-password-securely/</guid>
      <pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>HMAC vs. Hashing: How to Verify Webhooks and API Requests</title>
      <link>https://andergrove.com/posts/hmac-and-webhook-signature-verification/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/hmac-and-webhook-signature-verification/</guid>
      <pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>JWT Security: How JSON Web Tokens Work and How They Get Abused</title>
      <link>https://andergrove.com/posts/how-json-web-tokens-work/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/how-json-web-tokens-work/</guid>
      <pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>Debt Snowball vs. Avalanche: Which Pays Off Debt Faster?</title>
      <link>https://andergrove.com/posts/debt-snowball-vs-avalanche/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/debt-snowball-vs-avalanche/</guid>
      <pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>UUID v4 vs. v7: Which Should You Use for Database IDs?</title>
      <link>https://andergrove.com/posts/uuid-v4-vs-v7-for-database-ids/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/uuid-v4-vs-v7-for-database-ids/</guid>
      <pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>The UUID Versions Explained: What v1 to v8 (and Nil) Are For</title>
      <link>https://andergrove.com/posts/uuid-versions-explained/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/uuid-versions-explained/</guid>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>How Long Would It Take to Crack Your Password? The Real Math</title>
      <link>https://andergrove.com/posts/how-long-to-crack-a-password/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/how-long-to-crack-a-password/</guid>
      <pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>A Practical Regex Cheat Sheet: Patterns You'll Actually Use</title>
      <link>https://andergrove.com/posts/practical-regex-cheat-sheet/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/practical-regex-cheat-sheet/</guid>
      <pubDate>Thu, 05 Mar 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>How Compound Interest Works (and Why Starting Early Wins)</title>
      <link>https://andergrove.com/posts/how-compound-interest-works/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/how-compound-interest-works/</guid>
      <pubDate>Tue, 24 Feb 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>Unix Timestamps Explained: Epoch Time, Time Zones, and the 2038 Problem</title>
      <link>https://andergrove.com/posts/unix-timestamps-explained/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/unix-timestamps-explained/</guid>
      <pubDate>Sat, 14 Feb 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>Base64 Isn't Encryption: What It Actually Does (and When to Use It)</title>
      <link>https://andergrove.com/posts/base64-is-not-encryption/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/base64-is-not-encryption/</guid>
      <pubDate>Wed, 04 Feb 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>SHA-256 Explained: What It Is and Why It's Everywhere</title>
      <link>https://andergrove.com/posts/sha-256-explained/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/sha-256-explained/</guid>
      <pubDate>Sat, 24 Jan 2026 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>Hello, Andergrove</title>
      <link>https://andergrove.com/posts/hello-world/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/hello-world/</guid>
      <pubDate>Sun, 11 Jan 2026 00:00:00 GMT</pubDate>
      <description>Why Andergrove Software exists, and how this lean static site is built and maintained.</description>
    </item>
    <item>
      <title>IBM DataPower Gateway - Management APIs</title>
      <link>https://andergrove.com/posts/datapower-mgmt-apis/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/datapower-mgmt-apis/</guid>
      <pubDate>Sun, 07 May 2023 00:00:00 GMT</pubDate>
      <description>A practical guide to the IBM DataPower Gateway REST management API: structure, key resources, and curl examples for reading and updating configuration.</description>
    </item>
    <item>
      <title>IBM DataPower Gateway - Docker for Local Development</title>
      <link>https://andergrove.com/posts/datapower-docker/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/datapower-docker/</guid>
      <pubDate>Thu, 02 Mar 2023 00:00:00 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>Introduction</title>
      <link>https://andergrove.com/posts/introduction/</link>
      <guid isPermaLink="true">https://andergrove.com/posts/introduction/</guid>
      <pubDate>Mon, 08 Jun 2020 00:00:00 GMT</pubDate>
      <description>Andergrove Software is a software services company from Canberra, Australia, run by Chris Hare — an introduction to the blog.</description>
    </item>
  </channel>
</rss>
