Consulting and Craft

The practice of building software, and the lessons that keep turning up. Direct essays on engineering practice, plus shorter pieces from the kitchen that turn out to be about software too.

Consulting and Craft · In Practice

The Value Is in Ideas, Not Code

LLMs have made code implementation almost trivial. The bottleneck has shifted from writing code to knowing what to ask for. Your library of patterns, concepts, and hard-won experience is now your competitive advantage.

Read article

Consulting and Craft · Through the Kitchen

The Quiet Jar in the Fridge

My last sourdough starter died through a quiet chain of postponed feeds. I'm starting a new one today. Most of what I'm learning as I begin again, I wish I'd known a decade earlier about codebases.

Read article

Consulting and Craft · Through the Kitchen

The Knife in My Hand

A sharp knife is safer than a dull one. Pick the right tool for the job, then put in the practice. Speed comes from practice, not pressure. A few focussed, well-maintained, well-practised tools will more predictably take you further than the latest beautiful shiny offering.

Read article

Consulting and Craft · Through the Kitchen

The Salt in the Dish

There are four kinds of salt in my kitchen drawer and they are not interchangeable. This post is about salt. Most of it is actually about dependencies, and about the discipline of knowing what you're putting into the dish before you put it in.

Read article

Consulting and Craft · In Practice

The Price of Everything

Pricing isn't a finance decision; it's a product decision. The journey from a gut-feel launch number to validated unit economics is one of the hardest things a small team has to do, and one of the most consequential.

Read article

Consulting and Craft · Through the Kitchen

The Probe in the Meat

I own four kitchen thermometers, each for a different kind of cooking, and the differences between them are the differences between the kinds of decisions they help me make. Most of what I've learned about observability, I could have learned from a brisket, a vat of hot oil, a batch of caramel, and a steak.

Read article

Consulting and Craft · In Practice

Technical Debt Is a Loan, Not a Crime

Calling something 'tech debt' is usually an accusation. It shouldn't be. Used deliberately, debt is a tool: ship something imperfect, learn from the market, pay it back with what you learned. Used carelessly, it compounds until the interest swallows the principal.

Read article

Consulting and Craft · Through the Kitchen

Resting the Meat

You take the steak off the heat and the hardest part begins: doing nothing. Most of what I've learned about shipping software, I learned from a piece of resting beef.

Read article

Consulting and Craft · Hands On

Triaging Maintenance Requests with a Bedrock Classifier

The first pilot out of an AI envisioning session is usually a classifier, because classifying is the cheapest, most measurable thing a model does. We take one pick, routing a property agency's inbound maintenance requests, all the way to code: a Bedrock Converse call that returns structured JSON, a schema you can trust, PII guardrails, a confidence threshold that hands the hard ones to a human, and an eval set that tells you whether any of it works.

Read article

Consulting and Craft · Hands On

Answering Tenant Questions from the Lease with Bedrock

The second pick from an AI envisioning session is a retrieve-and-answer pilot: let tenants ask questions and answer them from the lease and handbook, with citations to the actual clause. We build it on Bedrock, and most of the work isn't the model. It's making sure each tenant only ever sees their own lease, that the answer is grounded in a real clause, and that the system says 'I'm not sure, I'll pass this to your property manager' instead of inventing a notice period.

Read article

Consulting and Craft · In Practice

The Language of Tests

Your test says 'should return 200.' RFC 2119 says 'should' means 'there may exist valid reasons to ignore this.' If it's actually a hard requirement, your test has a specification bug, and the LLM that wrote it doesn't know the difference.

Read article

Consulting and Craft · Hands On

Keeping an AI Pilot Honest After It Ships

Launching an AI pilot is the start of the measurement, not the end of it. Models change under you, the inputs drift, and a guardrail that held last quarter quietly stops holding. This is the unglamorous machinery that keeps a shipped pilot trustworthy: the eval set as a merge gate, drift you can see, an adversarial suite you run on purpose, a human-feedback loop that improves the data, and a calm path for when something goes wrong.

Read article

Consulting and Craft · Hands On

Catching Rent Arrears Without a Model

The most useful outcome of an AI envisioning session is sometimes the idea it sends away. A property agency wanted to 'predict' which tenants would fall into arrears; the honest answer was a rule, not a model. This is the boring, reliable thing built in full: a query over the ledger, a few thresholds, an escalation ladder, and the reasons it beats the model nobody needed.

Read article

Consulting and Craft · In Practice

Code Is Read More Than It Is Written

The Law of Demeter says don't chain through objects you don't own. The real reason isn't about object-oriented purity, it's that order.Customer.Address.City is a sentence that forces the reader to hold four concepts in their head to understand one line of code.

Read article

Consulting and Craft · Hands On

Extracting Lease Terms with Bedrock

An envisioning session parked this one with a single note: no gold answers. Pulling structured terms out of lease PDFs is a clean extraction job, but you can't ship what you can't measure, and there was nothing to measure against. So the build starts where the parking note pointed, building the gold set, and only then wires up the model: structured output, field-level confidence, and a human confirming anything the model isn't sure of before it touches the system of record.

Read article

Consulting and Craft · Hands On

Reading Inspection Photos with a Multimodal Model

The last parked idea from the envisioning session was the most tempting and the least ready: read routine inspection photos and flag the problems. It was parked because thousands of photos sat unlabelled, with no ground truth to measure against. The build turns that weakness into the plan, using the model itself, under a human's eye, to bootstrap the labelled set it lacked, while keeping anything that touches a tenant's bond firmly in human hands.

Read article

Consulting and Craft · Through the Kitchen

Mise en Place

Everything in its place before the first flame. Professional kitchens prep for hours before service. The ones that don't prep are the ones that burn the food.

Read article

Consulting and Craft · Hands On

Monitoring a Bedrock Pilot in Production

Keeping an AI pilot honest is a principle; this is the plumbing. SageMaker Model Monitor watches a tabular model by capturing its traffic to S3 and running a scheduled job that scores it against a baseline. Claude on Bedrock isn't a SageMaker endpoint, so you rebuild the same shape by hand: capture every invocation, replay a golden set on a schedule, measure the live traffic against a profile, and turn the movement into CloudWatch alarms. Here's the wiring at Lodgewise.

Read article

Consulting and Craft · In Practice

The Discovery Ledger

Event storming produces walls. Walls produce photographs, transcripts, and a wiki that starts lying within a month. On a recent engagement everything folded into one sequential table instead: one row per card, reading top to bottom walks the timeline, and every open question is a red row sitting beside the thing it questions.

Read article

Consulting and Craft · In Practice

Scaling Knowledge: From One Person's Head to Twenty-Five People's Practice

The hardest scaling problem isn't technical, it's knowledge. How domain knowledge moves from implicit to explicit to embedded, and which techniques unlock each step.

Read article