Blog
27 posts. Older ones came over from the previous version of this site and are marked as such.
- What a WebSocket needs to survive the night
Reconnect loops, keepalive, resubscription, and half-open sockets. Everything past new WebSocket(url).
- The subsidy is in the subscription
Metered inference looks like a healthy business. Flat-rate plans are where the money is being lost.
- The fictional company had a real domain
Anthropic reviewed 141,006 eval runs to find three incidents. The most useful details are the ones the coverage skipped.
- LinkedIn has a slop button now
The most AI-generated place on the internet is where everyone goes to prove they understand AI.
- Waiting is the new context switch
The gap between dispatching a task and getting it back is ninety seconds. That interval is where attention goes to die.
- The supply chain is people
One compromised account put a credential stealer into 400+ npm packages. The technical fixes do not touch the cause.
- The verification tax
Drafting got ten times cheaper. Checking the draft did not, and that gap is where the returns disappear.
- What a take-home is actually for
If an agent can finish your take-home and you cannot tell, the assignment was measuring the wrong thing all along.
- Vetting an MCP server before you install it
Fifteen clean releases, then one line that copied every outgoing email to an attacker. What would have caught it.
- What an AI agent looks like in your logs
Finding automated clients in your own logs with LogQL, including the ones that lie about who they are.
- Grafana, Loki, and Alloy: centralized logs when you're the whole ops team
Why I run the same log collector on a homelab box and my laptop, plus the mistake that wrecks a Loki instance.
- Hardening an MCP server: from a private allowlist to enterprise controls
Three tiers of MCP server security, from the allowlist I shipped to what a compliance review demands.
- Your agent is reading a different web than you are
A gluetun compose file that fetches one URL from four egress points at once, and what the diffs mean.
- Recruiter outreach is a threat model
A list of complaints about recruiter outreach turned into an argument about who absorbs the cost.
- Putting a live options feed behind MCP
Grounding an LLM's options analysis in live quotes. The MCP part took an afternoon; the rest took a month.
- Git stash, pop, and apply in Visual Studio
Shelving half-finished work with git stash -- through Visual Studio's Team Explorer, and on the command line with interactive hunk selection.
- Cloning Git Repositories in Visual Studio Team Explorer
There are endless code repositories out there, and you can access them with a simple URL. For example, a repo hosted on Github might look like…
- Git branch on the command line
Creating, switching, and merging git branches from the command line, including what to do when a production bug interrupts your feature work.
- How to git on the command line
Git from scratch on the command line -- initialize a repository, add a file, stage it, and commit, with posh-git showing state as you go.
- Using posh-git in PowerShell
Ever forgot the state of your git repo at the command line? Posh-git helps you remember!
- Build Web Applications with Databases on .NET Core
One way to build a .NET Core web app backed by a database: a SQL Server container, EF Core migrations, and scaffolded CRUD, step by step.
- Using Azure DevOps to automagically release .NET Core apps
Wiring an Azure DevOps build and release pipeline so a push to master deploys a .NET Core app to Azure App Service on its own.
- Yet Another Post About Things To Know Before Becoming A Developer
Things worth knowing before becoming a developer, rewritten from an older post -- what held up over the years, and what I would say differently.
- Building a 2D Platformer (Harambe-themed!) in Unity
Notes from building Run Harambe, Run, a 2D Unity platformer: parallax backgrounds, pivoting platforms, and what it took to reach a closed alpha.
- Building a mobile app (game) in Unity
What I learned shipping Super Bouncy Box, a Unity mobile game -- sourcing assets, canvas UI, a start menu, and a high-score modal.
- Hello world!
The first post: committing publicly to #100DaysOfCode, an hour a day for 100 days, starting by getting reacquainted with Python.
- Giving Back to Motivated Sophomores, Career Lunches, (and doing nice things for others)
Notes from a career lunch with high school sophomores at Mt. St. Mary's University, and why small mentoring asks are worth the afternoon.