I build software. Mostly in C#.

I’m John Moore, a full stack developer working mainly in .NET — SDKs, desktop apps, and tooling. Everything below is source-available on GitHub, and most of it exists because I wanted the thing to exist and nobody had built it.

Programs

All programs

A .NET SDK for the TCGdex Pokémon TCG API — strongly typed models, a fluent query builder, and first-class Native AOT support.

  • C#
  • .NET
  • NuGet
  • Native AOT

A standalone parser for Team Fortress 2 .dem files — built to read demos from any era of TF2's 18-year history, including ones Valve's own client updates have broken.

  • C#
  • .NET
  • CLI

The WinAppDriver API, reimplemented on raw IUIAutomation COM — so an existing Appium or Selenium suite can point at it unchanged and stop hitting the ceiling.

  • C#
  • .NET
  • ASP.NET Core
  • UI Automation COM
  • JSON Wire Protocol

A Team Fortress 2 config in plain .cfg files — two profiles, every cvar checked against a live client, and a tool that tells you which ones a game update killed.

  • TF2 cfg
  • Python

A fork of a competitive Team Fortress 2 HUD, brought back into line with the shipped game — with the reasoning for every change written down, including the changes that turned out to be wrong.

  • TF2 HUD
  • Valve KeyValues
  • PowerShell

Contributions

Work that went into someone else's project rather than my own.

Hiberbee Theme — Sergiy Egoshyn’s theme extension for Visual Studio 2022 and 2026, a little over 25,000 installs as of August 2026.

Pull request #5 took three vulnerable packages out of its build — MessagePack, System.Drawing.Common and System.Text.RegularExpressions, none of them named by the project, all reached transitively through the Visual Studio SDK.

My first attempt over-corrected: I pinned two of them directly, and the maintainer asked why. Answering that properly is what found the real shape of it. Moving the SDK, the build tools and the VSIX colour compiler forward already carried MessagePack with them, so only System.Text.RegularExpressions still needed a direct reference — a transitive dependency can’t be pinned where it sits, so lifting one means promoting it to a package the project names itself. The extra pin came back out, and it merged the same morning it was opened.

Eighteen months on, two of those four lines are still there word for word: the colour-compiler version and that pin. The maintainer has since moved the SDK further along.

Written by hand, with no AI involved, and it was the first pull request I ever sent anyone.

Source on GitHub

Working together

Available for contract work — .NET applications, libraries, tooling, and web work. Scope and timelines vary enough that a fixed rate card doesn’t say much useful, so tell me what you need built and I’ll quote it.

Reach me at JDMDev4u@gmail.com.