Blog
Guides, comparisons, and behind-the-scenes notes on the tools we're shipping.
Practical posts paired with each tool. Walkthroughs for when you're stuck on a cron expression or a CSS gradient. Comparisons against the tools people currently settle for. Tips for the problem spaces the catalog covers — dev workflows, design decisions, DIY estimation, everyday math. Not a content mill. A reference shelf that grows alongside the tools. Read about it, then use it.
We Redesigned the Front Door Before the Catalog Outgrew It
When AppCrib had a dozen tools, the homepage could be a list. Every tool got a card, every card got a sentence, and you could scan the whole catalog in the time it takes a kettle to boil.
Why Ground Clearance Alone Won't Tell You If You'll High-Center
A guy slides under his lowered sedan with a tape measure, reads six inches from the asphalt to the lowest bit of exhaust, and figures he's got room...
Where Conduit Bending Multipliers Come From, and When the Rounded Ones Fail You
Every conduit bending card in a tool bag lists the same shorthand for a 30-degree offset: multiply your rise by two to get the distance between mar...
The Sling Angle Trap: Why 60 Degrees and 30 Degrees Describe the Same Lift
Two riggers can stand at the same pick, look at the same bridle, and read off two completely different angle numbers. One calls it a 60-degree lift...
Calculated Gallons vs. a Strapping Table: Why Two Right Answers Disagree on a Horizontal Tank
A driver pulls up to a 1,000-gallon horizontal diesel tank, drops a gauge stick, reads 18 inches wet, and pulls the laminated chart taped inside th...
Why We're Building Calculators for People Who Work Outside
AppCrib started as a shelf of developer utilities. JSON formatters, diff tools, cron helpers, color converters. Tools for people who sit at a desk ...
Why the Same Corner Needs Different Crown Molding Saw Angles
Two carpenters cut crown for the same 90-degree inside corner. One sets the saw to 31.6 degrees miter and 33.9 degrees bevel. The other sets it to ...
Why a Round Blade Runs So Far Past the Line, and Why the Number Surprises People
A cutter sets up to drop a 6-inch-deep cut into a slab with a 24-inch diamond blade, marks the line, and assumes the cut stops where the mark stops...
Why One APR Becomes Eight Different APYs: The Compounding Frequency Dial
Take a flat 8% nominal rate and ask what it actually yields in a year. There is no single answer. Compounded once a year it yields exactly 8%. Comp...
Why the Rule of Thirds and the Golden Ratio Are Not the Same Grid
Take a 3000-pixel-wide photo and ask two photographers where the left vertical guideline goes. The rule-of-thirds answer is 1000 pixels in, one thi...
What 9H Hardness Actually Means on a Ceramic Coating Label
Pick up almost any consumer ceramic coating kit and somewhere on the box, usually in a bigger font than the actual product name, you'll see "9H." S...
Why Gradient Text Quietly Breaks, and the Borrowed Property Behind It
You paste in three lines from a Stack Overflow answer, refresh the page, and your heading shows up as a solid block of color. Or worse, a colored r...
Where the 25-to-1 Compost Ratio Comes From, and Why Cornell and Rodale Cite Different Numbers
Open three compost calculators in three tabs and you'll get three slightly different target ranges. One asks you to aim for 25:1. Another says 25 t...
Why GPT, Claude, and Gemini Disagree on the Same Token Count
Take a sentence: "The quick brown fox jumps over the lazy dog 🦊."
Where 16-Inch Stud Spacing Comes From, and What the Code Actually Says About 24
A residential framing crew laying out a 24-foot exterior wall pulls a tape and starts marking studs every 16 inches. Three blocks over, an inspecto...
How 0.08% Became the National BAC Limit, and Where It's Heading Next
A reasonable question, after seeing four different BAC limits cited on the same page (0.08% for most drivers, 0.05% in Utah, 0.04% for commercial d...
Unix Time Isn't UTC: How POSIX Skipped Leap Seconds and the 2038 Cliff Ahead
At the end of June 2012, sysadmins set alarms for 23:59:60 UTC, the timestamp that doesn't exist in any operating system. The 25th leap second ever...
APR vs APY: Where the Four-Letter Difference Compounds Into Real Money
A bank advertises a 4.5% mortgage and a 4.5% savings account. The mortgage rate is the APR; the savings rate is the APY. Both numbers look identica...
How We QA Without a QA Team
We don't have a QA team. We have something worse: a gatekeeper that can't be reasoned with, bribed, or guilt-tripped into letting a half-baked buil...
RBAC0 Through RBAC3: What the NIST Standard Actually Defines
The first time anyone documents access control for a SOC 2 readiness review, the auditor asks a question with no good off-the-cuff answer: "Is your...
Where the 10% Drywall Waste Factor Comes From, and When It's Wrong
A homeowner orders 22 sheets of 4x8 drywall for a 700-square-foot basement project. The contractor's estimating sheet says "add 10% for waste." The...
Where the 0.05 Significance Threshold Came From, and What the ASA Said in 2016
A student runs a two-tailed t-test, gets p = 0.0512, and stops. The threshold says 0.05. Their result is not significant. They got close, but close...
Why 'EXIF Stripping' Isn't Enough: The Four Metadata Standards Every Photo Carries
A photo "cleaned" by a typical online EXIF stripper still tends to leak. GPS coordinates often disappear, the device name disappears, the timestamp...
Why WCAG 2.2 and APCA Disagree About Dark Mode Text
A designer building a dark dashboard picks #FFFFFF text on a #1A1A2E navy background. WCAG returns 15.83:1, comfortably above the 4.5:1 floor for b...
The 20% Down Payment Rule Isn't a Rule: PMI Thresholds, the HPA, and the 78% LTV Auto-Cancellation
A first-time buyer puts 5% down on a $380,000 house, signs the closing papers, and asks the loan officer the obvious question: when does PMI go awa...
OKLCH vs HSL vs LCH: Which Color Space Picks the Right Gradient Midpoint
Pick two colors on opposite sides of the wheel. Blue to yellow, say #3b82f6 to #facc15. Ask a CSS gradient to walk from one to the other. Then look...
FIFO vs LIFO vs Weighted Average: Why Inventory Method Changes Your COGS
A boutique buys 100 candles in January at $4 each, another 100 in February at $5, and another 100 in March at $6. Total inventory cost: $1,500. By ...
How We Built 27 Free Tools Without a Backend
AppCrib has 27 tools live right now. A jq playground running real jq 1.8 compiled to WebAssembly. A SQL formatter powered by sql-formatter v15. A g...
JPEG vs WebP vs AVIF: The Perceptual Quality Math Behind 'Quality 80'
Save the same 4 MB product photo at "quality 80" in three formats. The JPEG comes out at 580 KB. The WebP at 340 KB. The AVIF at 190 KB. The files ...
Two's Complement, Signed Shifts, and the 2^53 Boundary: Bitwise Math Beyond Hex
Open a browser console and type 0. The answer is -1, not 4294967295. Bitwise NOT of zero, in a language where every number is a 64-bit double, retu...
JSONL vs NDJSON vs JSON Sequences: When the Newline-Delimited Formats Diverge
A common stumble: you have a file of one-JSON-object-per-line records, your pipeline tool says it accepts NDJSON, you point it at the file, and the...
K-Means vs Median-Cut vs Octree: How Color Quantization Algorithms Pick Different Palettes From the Same Image
Pick any image — a sunset photo, a brand mockup, a UI screenshot. Run it through three free palette extractors, ask each for a six-color palette, a...
Why Markdown Tables Aren't in the CommonMark Spec, and How Renderers Filled the Gap
Paste a markdown table into the CommonMark playground at spec.commonmark.org. Pipes, separator row, alignment colons, the whole thing. The renderer...
Why Diff Tools Disagree: Myers, Patience, and Structural Diff Compared
Two engineers on the same pull request see different diffs. One reviewer sees a block of seven lines moved from one helper into another, with git's...
Privacy by Architecture, Not by Promise
Every privacy policy says the same thing. "We respect your privacy." "We take your security seriously." "We only collect what we need." You've read...
Where JSON, JSON5, JSONC, and NDJSON Actually Differ
A JSON config file that opens in VS Code is allowed to contain comments. A JSON file that opens in a strict parser is not. The same .json extension...
Why SQL Formatters Still Disagree on the Same Query
Take a five-line query with a join and a CTE. Paste it into four different SQL formatters. You get four visibly different results.
When 5 Cron Fields Aren't Enough: The Seven-Variant Landscape
The job was supposed to fire at 02:30 every Sunday. Instead it ran 24 times every Sunday, once an hour at HH:02:30, and nothing the rest of the wee...
JSON Query Languages Compared: jq, JSONPath, JMESPath, and When Each Is the Right Pick
The first time you run kubectl get pods -o jsonpath='{.items[].metadata.name}', then try the same selection with jq '.items[].metadata.name', the o...
One Tool, One Job: Why We Don't Build Swiss Army Knives
You've seen the pattern. You Google "JSON formatter," land on some tool that works fine, and then you notice the sidebar. CSV converter. Base64 enc...
Clean, Modern, Private: Three Words We're Not Kidding About
Every company claims their product is modern. Every company claims to respect your privacy. Every company claims to be clean and focused. The words...
Why We Left B2B to Build a Hundred Small Things
Two years ago I was running operations at a B2B software company. My business partner was running it with me, and he'd been building it for a long ...
Read about it, then use it
Most of what we write is paired with a tool. If a post made something click, the tool itself is a click away — go solve whatever brought you here.