MROOT / THE WRITING
Writing.
Guides for business owners, case studies from the demo builds, and engineering notes.
Writing
A website budget is more than the hosting line
Separate domain, hosting, email, tools, and maintenance without mistaking an example budget for a quote.
~4 min readWriting
Website security: useful checks, better questions
Five owner-level questions, the evidence to ask for, and what a checklist cannot establish.
~4 min readWriting
CMS or custom admin panel? Start with the editing work.
Compare publishing and operational tasks, maintenance ownership, and the behavior behind an audit-log claim.
~4 min readWriting
What progressive enhancement should mean for a client
Useful fallback content and honest action feedback solve different problems. A client-facing look at the distinction.
~3 min readWriting
Before adding a backend, decide what needs to be shared
Calculation, device-local persistence and shared records are different requirements. CraftNet makes the distinction tangible.
~4 min readWriting
Building both sides of a website refresh
The shared business data, hash routes and measurement gaps behind a deliberately constructed before/after demo.
~4 min readWriting
A booking-first site, with two very different booking modes
Why choosing a slot, formatting an embed URL and recording an appointment are different responsibilities.
~4 min readWriting
Keeping contact within reach on a landscaping demo
The gallery-led page, two mobile actions, and the difference between reaching a form and delivering an enquiry.
~4 min readWriting
A photography enquiry that carries the useful details forward
What the original validation function checks, what package preselection carries, and why the confirmation is not a quote.
~4 min readWriting
A landing page that explains its own design decisions
Four section strategies, a data-driven owner tour, and a clear distinction between design intent and measured effects.
~4 min readWriting
One menu, two surfaces: the phone and the table card
Shared menu content, a printable table card, and a clear boundary between source CSS and an authored print example.
~4 min readWriting
Making a review-request demo visible from both sides
The two-perspective demo, its clock-based Worker status, and the line between simulation and delivery.
~5 min readWriting
Lead Tracker: today’s queue, local data, and an optional Sheets handoff
The source stages, browser-local persistence, and the exact response checks behind saveAll.
~5 min readWriting
How MRoot turns one content collection into two interfaces
From Markdown to shared data, with two presentations and a common URL space.
~4 min readWriting
Behind Navarro: one deployment, a staff console, and AI with limits
Where catalog rules, language assistance, and cached briefings belong in a dealership application.
~6 min readWriting
How Southside staff manage the site—and what its activity log can miss
The content workflow, image routing, and separate writes behind the staff console.
~4 min readWriting
Fixing the search query—and checking the rest of the change
The parameterized-query change, the published regression, and the compatibility question introduced by LIMIT 50.
~4 min readWriting
Inside Atlas: commit the order, then publish the notification
What belongs inside the transaction, what happens afterward, and what the excerpt does not guarantee.
~4 min readWriting
Why I test the attack before I write the fix
A regression should notice when its fix disappears. The method, the example, and the limits of its assertions.
~4 min readWriting
Password resets need a reason, not just a date
Reset triggers, breach screening, and the difference between a second factor and phishing resistance.
~3 min readWriting
Stop fetching the same archive on every page view
Separate archive refreshes from page views, then examine the limits and failure states that remain.
~4 min readWriting
Build with the tools. Ship what the app needs.
Read the original Dockerfiles carefully: a stage boundary is not a production-dependency filter.
~5 min readWriting
Finding nested JSON fields with jq’s recursive descent
Walk a fictional JSON fixture, inspect the matching paths, and distinguish false, null, zero, and key casing.
~3 min readWriting
Q2 2026: authentication, scanning, and container work
An edited June 30 account with reported work, in-progress work, and evidence gaps kept separate.
~3 min readWriting
A photography gallery that runs before the API is configured
The exact condition behind the sample gallery, the separate Worker API, and the behavior the excerpt leaves open.
~4 min read