Blog
Articles on backend engineering, system integrations, automation, and AI-assisted software development.
Laya, JEV and Clef against my rules: a decision benchmark
Three models that pick a label and return probabilities, tested on two real jobs of mine. The small fine-tune won where it was trained, the 27B won where nobody trained anything, and on PR effort plain rules beat them all.
I trained a classifier on a Mac with MPS and let a gate decide if it ships
I fine-tuned Laya on an M3 Max as the intent fallback for my home voice: 2.5 hours per run, no MPS memory limit, and a gate that rejected the run with the highest score.
Custom system or SaaS: when each one pays off
A guide for small business owners: when SaaS is enough, when a custom system pays off, and how to combine the two.
Ollama on a Mac: memory lies
Running a local model on a Mac is easy. Knowing how much memory it really uses is not: on October 4 RSS said 15 GB and the physical footprint was over 62 GB.
Why your site does not show up on Google (I audited mine and found out)
I audited hmdeveloper.com.br and found why Google had indexed nothing: three h1s on the home page, landing pages that never reached production, and no Search Console.
A checklist before hiring a payment integration
What can fail when payments are treated as a one-week project.
Five choices that set the cost of a customer support agent
The cost of an AI support agent depends on five choices made before the first line of code.
Front-end skills against the AI look
AI's default look comes from the model's choices. Design skills help before the CSS, but do not catch the error the build misses.
Security tests show evidence; the reviewer decides
Guidance comes in when needed and results help the reviewer. Plus the day a model invented a whole process.
The PR reviewer can't be the one who wrote it
Agents open PRs as drafts and mark them ready on their own. One agent reviews, and the merge stays with me. What broke before this worked.
The problem with RAG is knowing when it found nothing
Vector search always returns a first result. A good system knows when that result does not help.
One script in front of every non-Claude model
Every call to a model outside Claude goes through a router and a task class. The class picks the destination, and only one class can change the repository.
Your fallback probably is not a fallback
An ordered list of models looks like resilience, but it only becomes fallback when the next step can do the same work.
Stop choosing models by ranking position
Tests compare average tasks. In practice, each model needs to fit the kind of work.
Model, context, skill, tool, agent, squad
Six words look like synonyms when you leave regular chat. Separating them keeps you from asking the model for something that should live somewhere else.
A map of the code beats reading the code
Opening the whole folder to answer where something happens feels complete, but it becomes a fixed cost. A small scoped map answers better.
Six agents, each with a name, a job and a model
I started with 14 agents and cut the team to six roles. Only one reviews requests to change code.
Why I separate agent instructions from project knowledge
Keeping agent instructions separate from project knowledge avoids paying the same cost in every session.
