the robot holding up a page of boxes and arrows while the boy in the cap, hand on his chin and frowning, marks a correction on it with a red pen — the only colour in the drawing

The Coding Skill That Actually Degrades Isn't Syntax — It's Judgment

Everyone worries that coding with an LLM makes them forget how to code. That’s the wrong thing to worry about. The skill that really degrades is judgment — knowing when to trust the model and when to take the keyboard back.

the robot and the boy in the cap together holding up a single ballot slip marked with a question mark and YES / NO checkboxes, while behind them a dense tangle of scribbled documents is knotted into a scribble; a gear floats above the robot's head

VoteWatch: How Your Representatives Voted — and Whether You'd Agree

Parliamentary roll-call votes are public, machine-readable, and almost completely unread. I built a thing that scrapes them, distills each decision into one plain-language question, shows which party voted which way, and lets you register whether you agree — then puts your answer next to how parliament actually voted. The rule that keeps it honest: the AI writes the summary, but it never decides a fact.

mind-the-gap dashboard: 63% demand-weighted coverage, skill radar with proven/claimed/in-progress/gap states

Mind the gap: I pointed monitoring at my own skill set

A rejection isn’t actionable data. So an n8n workflow now extracts skill demand from live job listings, diffs it against what I can prove, and renders the gap as a dashboard — deployed like everything else here: via git push.

The ATS job poller workflow in n8n: schedule and manual triggers feeding config, fetch & normalize, filter, dedup, per-job LLM scoring via NVIDIA, then digest, email, and mark-seen

🎯 Know the Market Without Job-Hunting: An LLM-Scored Job Poller in n8n

You don’t have to be job-hunting to want to know your market — what’s out there, what it pays, where you’d fit. So I built an n8n workflow: it polls the public ATS APIs (Greenhouse/Lever/Ashby) plus a broad remote-jobs feed, filters for remote-EU infra roles, scores each posting against my CV with an LLM, and emails me only the 80%+ matches. No database, no scraping.

n8n workflow canvas

🍵 I A/B-Tested Cloud vs Local LLMs in One n8n Agent. The Local One Faked It.

I built an AI agent in self-hosted n8n over my kombucha-tracking app, then gave it two brains — NVIDIA’s 70B and a local Phi-3.5 — sharing the same tools. The cloud model called the tools and answered from real data. The local one couldn’t, so it made things up.

the little robot stands guard at a doorway like a friendly bouncer, holding up a hand to check a stack of papers, while the boy in the cap watches; a shield symbol floats above them, protective and watchful

🔒 Building a PII Guardrail Proxy for Cloud LLM Calls

A local model classifies every prompt before it leaves the cluster. If it’s sensitive, it’s blocked. If it’s clean, it goes to NVIDIA NIM. 150 lines of FastAPI, deployed on k3s.

the robot pressing an inking stamp down onto a sheet of text, blacking out several lines into redaction bars, while the boy in the cap holds the page steady and a padlock sits on the table beside them

🕵️ Privacy-Preserving LLM Pipelines: Anonymize Before You Send

Replace PII with semantically realistic fakes before sending to a cloud LLM, then restore the originals from the response. Started with a general model and prompt engineering — then upgraded to a purpose-built 1.7B fine-tune via Ollama.

the boy in the cap holding a tablet showing four small line charts, connected by a single cable plugged into a port on the robot's chest

📈 Observing Local LLM Inference: llama.cpp's Built-in Prometheus Metrics

llama.cpp’s inference server ships a /metrics endpoint. One flag, Prometheus scraping, a Grafana dashboard loaded via ConfigMap sidecar — AI observability without a proxy layer.

the boy in the cap holding up a small processor chip toward the robot, who reaches out to it with an open hand; behind them a plain desktop computer and blank monitor sit on a desk

🤖 Local LLM Inference on Kubernetes, No GPU Required

A CPU-only self-hosted LLM stack running on k3s: llama.cpp as the inference server, Open WebUI as the chat interface, deployed as a single Git push.