Why I write for CodeWalkers
I publish tutorials and industry notes at CodeWalkers, where an editor reviews the steps.
I keep inspectable software on the boxes I administer because I can still open the files when something fails. Open weights sit on that same disk. I have been burned by a hosted tool that moved the work off my machine. Once is enough.
The how-to writing for that habit goes to CodeWalkers. This site is the smaller desk for opinions. The tutorials live there so an editor can review the steps first.
What I write there
The how-to work starts with PHP and SQL. Those languages are still how a large share of the web persists data, even when the front page is built with something newer. I learned that stack on boxes I administered, with Apache handing a file to PHP and PHP opening MySQL. The articles assume you will open a terminal and run a query before you form an opinion.
I still write that walk because I can follow a request from the vhost to the query log. The stack is messy. It is also legible if you spend an afternoon with the files.
PHP talked to MySQL through the old mysql_* functions for years on sites I ran. Those calls mixed the password with the query text in the same include. When I moved a codebase to mysqli, and later to PDO, the change was about seeing the connection fail. A DSN lived in one place I could lock down. A broken statement failed in a way I could log.
That is the kind of walk I still send through review. You open the include and run the statement that proves the grant is what you think it is. A grant that looks right in a screenshot can still be the wrong user on the instance the reader actually opened. Review is there to catch that before the stranger copies the block.
I will put the same habit in the language I use on a failed page. If the catalog came back empty, I wanted the vhost and the query log on one desk. I could grep a line without waiting on a vendor status page.
Local-first patterns matter because defaults keep drifting toward sync jobs that leave the machine without asking. On-device models matter for the same reason I write about them here: you should know what left your disk.
A local model is a file I can hash. A hosted endpoint can swap the weights while I am in the middle of a draft. The window will look smoother the next morning, and the privacy page may have changed while I was working.
I keep a 7B-class GGUF on a disk I named, and Ollama loads that file from a path I chose. I can run sha256sum after the download. When a repeated prompt drifts, I check the file time before I blame the harness. The tutorial version of that habit is the install path and the one command that proves the runtime pointed at that file. An editor has to run those steps on a clean box. A skipped checksum is the kind of hole a reader will fall into on a Monday.
Release news belongs there when it changes what those tools can do next week. A PHP minor that tightens a default. A MariaDB note that moves a storage engine flag. I write those notes as checklists a reader can run after the bump.
I did that after a PHP bump that started surfacing a warning my old mysqli script had swallowed. The page still rendered. The log did not look the way it had on Friday. The checklist pinned the package and reran the same script against a copy of the catalog. If the warning stayed, the reader knew the bump had changed the default. If it vanished after a pin, they knew which package to hold.
The articles are procedural. An editor is paid to fail one step on purpose before a stranger copies the rest.
Why a house site, and how this one fits
A personal blog is a good place for taste and grudges. It is a poor place for step-by-step work that needs an editor to catch a broken command or a schema typo. CodeWalkers has house style and review before publish for readers who want the steps spelled out in order.
A draft on this desk can carry a grudge I have earned. A draft that tells someone to run GRANT needs a second pair of eyes. House review is that pair. I send the steps. Someone else follows them on hardware I have not seen.
House style is part of that second look. A command I typed from memory can assume a socket or a path that only exists on this box. An editor walking the same steps on a clean install will hit the assumption I stopped seeing. That is the failure I want in-house.
I once sent a PDO walk that used a socket path from my own box. The command worked here. On the editor’s install the socket lived somewhere else, and the connection error looked like a password failure. The note came back before publish. We named the socket as a variable and added the one line that prints the path PHP actually used.
CodeWalkers readers finish the install and email when a step fails. That feedback loop keeps the tutorials honest in a way a lone blog post does not. I have had a note arrive after a distro package renamed a binary. The page still looked finished. The command on their machine did not. We patched the step and left the old name in a note so the next reader would not repeat the afternoon.
markgates.dev is the smaller desk. I use it for book notes and opinions I would not put under the CodeWalkers byline. Tutorials belong where someone can trust the checklist. Essays about which books survived a decade belong here.
A Monday on the tutorial desk
I start a Monday with a folder of screenshots and a command I already ran twice. The draft is a PHP install against MariaDB on a box I can name. The opening steps name the packages. The next screen creates the application user and prints the grants that user actually holds.
I run the commands on a spare box before I send the draft. The editor will run them again on a clean install. If the grant looks right on my box and wrong on theirs, the piece waits. I will hold a Monday when the checklist has only succeeded once.
That is the job on that desk. You write the path a tired reader will follow. The opinion can wait until this site has room for it.
I sent a draft about pinning a local runtime next to a PHP project so notes never left the machine. The happy path worked on Omarchy with Ollama already installed. The editor’s box did not have the service enabled, so the first request failed with a connection refused. We added the enable step and the one check that prints the listen address. I would have shipped the happy path. Review is why I did not.
The screenshots from that week still show the listen address on the spare box. I keep them with the draft notes. If a later bump moves the default port, I want the old printout next to the new one before I rewrite the step.
What stays off the CodeWalkers byline
This site keeps the opinions. Which books survived a decade, and why I still run Omarchy on a box I administer. A hosted agent with a private mode is still a hosted agent. That claim lives here. An editor rerunning a command would not make it truer.
I keep book notes off the CodeWalkers byline. A tutorial that tells you to dump a table should not sit next to a paperback I keep for custody questions. The split is a filing habit. How-to work goes where someone can fail the steps before a stranger copies them. Taste stays here.
Linux habits belong here when they are a yes I already earned. Omarchy is the desktop under that yes. The ISO and the overlay are files I can open. The essay about why I still say yes is a claim. The local-runtime install that sits on that desktop is a checklist.
The paperback and the checklist
The paperback on my desk framed custody in plain language. Who holds the authoritative copy, and who can change it without telling you. I still ask both before I trust a stack I cannot inspect.
A CodeWalkers tutorial is the other half of that habit. Once I have decided the record should live on a machine I run, the reader still needs the dump command and the one restore that proves the dump is not empty. The philosophy can be sound and the dump still truncated. Review is how I find that out before a stranger trusts Friday’s orders to my prose.
Take a catalog I used to administer. The application user could SELECT and INSERT into the order tables. It could not DROP the catalog. The tutorial version names those grants and runs mysqldump against a spare box before anyone promises last month’s invoices are safe. The opinion version lives here. It is why I still refuse a hosted catalog I cannot restore without a vendor ticket.
The paperback keeps the question boring enough to check. The checklist is what I send through review.
CodeWalkers has the tutorials with screenshots and copy-paste commands. This site has the opinions and the paperback on my desk.