OIDC Won’t Stop the Next LiteLLM-Type Attack, but It Will Limit the Blast Radius
The LiteLLM compromise shows why CI/CD secrets are dangerous. OIDC cannot stop malicious code, but it can dramatically reduce what attackers keep.
Thoughts on software engineering and life as a developer
Featured article
The LiteLLM compromise shows why CI/CD secrets are dangerous. OIDC cannot stop malicious code, but it can dramatically reduce what attackers keep.
Senior full-stack engineer with 11+ years of experience in .NET, JVM, microservices, production AI systems, AI-assisted delivery, and developer tooling.
Recent writing
Secure C# begins with system boundaries and disciplined use of the language: narrow APIs, immutable state, short-lived secrets and deliberate dependencies.
A surviving mutant is not automatically a request for another test. It may be exposing unnecessary code, a missing specification, or a design responsibility in the wrong place.
A tiny VS Code workspace setting that makes Markdown files open in preview mode instead of the editor.
Boring code is not a failure of imagination. It is often the most maintainable choice, with cleverness reserved for experiments that earn their cost.
A practical beginner-friendly guide to building a polished personal website cheaply with Astro, GitHub Pages, and a custom domain.
A short portfolio of public projects covering AI tooling, semantic search, C# engineering, frontend work, VR, Rust, and local-LLM experiments.
Tome is a Python MCP server for local semantic search over books, long-form documents, and C# source files using Ollama embeddings and LanceDB.
How I used an AI-assisted browser workflow to turn noisy job listings into a ranked, reviewable shortlist.
Approving AI-written code is too easy to rubber-stamp. The quality comes back when you write the scaffolding, tests, tooling, and constraints first.
I turned my resume into a versioned, printable, mobile-friendly page that is easier to share and keep current.
How I use Claude Code to keep myself on track — PRDs for scope, pomodoros for pace, rules files so I don't have to hold everything in my head.
One /blogpost command: Claude drafts the article, generates cartoon illustrations with Cloudflare's free AI tier, previews in the browser, publishes to GitHub Pages, and fires off a LinkedIn post — all without leaving the terminal.
Claude Code silently loads MCP server definitions for integrations you've never used. Here's how to find out how bad it is and fix it in 30 seconds.
An 8B LLM running at 180+ tokens/sec on a laptop GPU using just 1.1 GB of VRAM — complete walkthrough for Bonsai 8B on Windows with CUDA.
Why bankers rounding is the right default for financial code in C#, how it works, and how to avoid an angry accountant when ledgers don't balance.
Topics