Harry Jenkins

I'm Harry. I spent 5 years as a sparky, then swapped the tools for a keyboard and went to Monash for Computer Science. Now I mostly build dev tools and games, and most of them you can install or play.

I finish uni this October and I'm looking for a dev role in Melbourne or remote.

Projects

Monopoly Deal

Me and my girlfriend used to play the card game heaps. When she went overseas to see her family, I built this so we could keep playing. You can play with friends or against bots.

There's no server. One browser hosts the game and everyone else connects straight to it.

TypeScript, React, Zustand, Zod, WebRTC through Trystero

Sliced

I wanted to make a game me and my mates could play together. It's a PvP arena game with dismemberment, a few modes like capture the flag, and bots for when there aren't enough people on.

It's made in Godot with C#, and the multiplayer runs through Steam.

C#, .NET 10, Godot, Steamworks SDK

Highlight on Copy

I loved the VS Code extension that flashes whatever you copy, and JetBrains didn't have one, so I made it. It works in every JetBrains IDE and has over 1,200 downloads.

Kotlin, IntelliJ Platform SDK

Claude Agent SDK for .NET

I wanted to build agent workflows in .NET, but the Claude Agent SDK only came in Python and TypeScript, so I ported it to C#. It has streaming, hooks, permissions, sessions and MCP tools.

It works with NativeAOT, so your app compiles to a single native binary.

C#, .NET 10, NativeAOT

using ClaudeAgentSdk;

var options = new ClaudeClientOptions
{
    AllowedTools = ["Read", "Write", "Edit", "Bash"],
    PermissionMode = PermissionMode.AcceptEdits,
};

var reply = await Claude.QueryTextAsync(
    "Build me a portfolio site. Make it not look like AI made it.", options);

Console.WriteLine(reply);

Other projects

Outlook Mail MCP

I wanted Claude to help manage my life, and a lot of my life is in my email. So I built a CLI and MCP server that lets it search my Outlook mail. It's read only, so it can look but can't send anything.

It talks to Microsoft Graph, and the CLI and the MCP server share the same core.

TypeScript, Node.js, MCP SDK, Microsoft Graph, Zod

agsearch

I wanted Claude to look back at its own mistakes and fix my workflows so they don't happen again. agsearch is a Rust CLI that searches my old Claude Code and Codex conversations and shows what failed and how many tokens each chat used.

It reads both apps' formats into one model, and every release comes with native binaries for Windows, macOS and Linux.

Rust, Clap, Serde

Solar Engineer

Designing solar installs was my full time job as a sparky, so I built an app I could use to do it. A few people can edit the same design at once.

The live editing runs over SignalR, and the backend is a set of ASP.NET services in Docker.

Angular, NgRx, ASP.NET, SignalR, Docker, Azure

Ankive

I was using Anki heaps to study for uni, so I built this to automate most of what I was doing by hand. Write flashcards in Markdown and it keeps them in sync with Anki, both ways.

It handles cloze cards, LaTeX and Mermaid diagrams. The tests run against a real Anki in Docker.

C#, .NET 10, NativeAOT, Testcontainers

GodotUnit

I built this for Sliced so it could have proper tests. It's a unit testing framework for C# in Godot.

It finds your tests at build time, and it warns you about mistakes in your test code as you type.

C#, .NET 10, Roslyn