Writing
Notes on software engineering and the projects I'm building.

My AI-automated dev setup: MCP servers for your board, Postgres, and CI
Wiring an AI coding agent into your task board, database, and CI with MCP servers — the ticket-to-PR loop, the guardrails, and where it still needs a human.

FinOps for AI: track token spend like you track cloud spend
Token bills are the new cloud waste. How to apply FinOps discipline to LLM usage — attribution, budgets, unit economics, and the optimization levers that actually move the number.

Giving an AI agent database access without losing sleep: roles, sandboxes, audit
A layered approach to letting an AI agent query your database safely: read-only roles, sandbox schemas, row-level security, allowlists, and audit logging.

Self-hosted AI: when your company legally can't use ChatGPT
A practical look at why some companies can't just use the ChatGPT API, what a real self-hosted AI stack looks like in 2025, and when it's actually the right call versus a compliant cloud option.

One GPU server for a 50-person company: minimum viable internal AI
A pragmatic, minimum-viable setup for internal AI at a small company: one GPU box, a gateway, SSO, a chat UI, and a rollout plan — without over-building.

What self-hosted AI actually costs: GPU box vs API bills
Honest cost math for self-hosted AI — purchase vs rental, power and ops time, utilization as the variable that decides everything, and when API pricing actually wins.

Choosing an open-weight model for internal use: build an eval, ignore the leaderboard
Leaderboard scores don't transfer to your tasks. A practical structure for building a 30-50 case eval set from your own data, scoring it, and running it in CI on every model or prompt change.

ASP.NET Identity Management with KeyCloak
A step-by-step guide to integrating an ASP.NET application with Keycloak for authentication and authorization using Docker Compose and MariaDB.