About Me
I’m Jamie Phan (he/him), a software engineer with a degree in Computer Science from the University of Leicester. I work across the stack, from TypeScript and React front ends to Node.js services, containerised infrastructure and CI/CD pipelines, and I’m comfortable dropping down to native code when a problem calls for it. I’m equally at home in Linux and Windows environments, and in the networking and identity layers beneath most production systems.
What I enjoy most is automation and developer tooling: turning repetitive, error-prone work into systems that run reliably on their own, such as a GitHub Actions pipeline that tracks every game update, a serverless API on Cloudflare Workers, or a Node-API binding published to npm. I care about the details that make software pleasant to use and easy to maintain: clear interfaces, accessible and fast pages, and helpful documentation.
Outside of work, I build and maintain open-source tools for the Heroes of the Storm modding community, from a browser-based map generator to automated data archives that other modders rely on. It’s where I experiment with new tools and techniques, which often find their way back into my day-to-day work.
I write occasionally on my blog. You can connect with me on LinkedIn, reach me by email or browse my open-source work on GitHub.
Skills
- Languages
- TypeScript, JavaScript, Java, Python, C#, C++, SQL, Bash, PowerShell
- Java & Spring
- Spring Boot, Spring MVC, Spring Data JPA, Spring Security, Hibernate, Maven, Gradle, JUnit
- Node.js & TypeScript
- Node.js, Express, Hono, Next.js, Node-API (N-API) native addons, npm package publishing
- Front end
- React, Vite, Three.js, HTML, CSS, responsive design, accessibility (WCAG), web performance
- Desktop
- Electron, cross-platform installers and auto-updating release pipelines
- APIs & architecture
- RESTful API design, microservices, serverless functions, JSON / XML / YAML data processing
- Databases & caching
- MySQL, PostgreSQL, SQLite, MongoDB, Redis
- DevOps & cloud
- Docker, Kubernetes, Cloudflare Workers, GitHub Actions, CI/CD pipelines, infrastructure automation
- Testing & quality
- Unit and integration testing (JUnit, Vitest), linting, type checking, code review
- Platforms
- Linux and Windows administration, shell scripting (Bash, PowerShell, batch), virtualisation
- Networking & identity
- Firewalls, gateways, reverse proxies, DNS, Kerberos, Active Directory, Microsoft Entra ID
- Tools & practices
- Git, GitHub, Agile delivery, technical documentation, automation-first workflows
Projects
Much of my professional work lives in private repositories, so this is a selection of my open-source projects. You’ll find more on GitHub.
jamiephan.github.io
This website: a prerendered React and TypeScript site built with Vite, set against an interactive Three.js solar system rendered in real time.
simple-multicast-share
A self-contained file and text sharing app for local networks, distributed as a single binary backed by SQLite, with multicast DNS discovery so devices find it automatically.
cf-bnet-version
A Cloudflare Workers API built with Hono that fetches the latest application versions from Battle.net and serves them as JSON, including Shields.io badge endpoints.
Heroes of the Storm: Modding
Heroes of the Storm, Blizzard’s MOBA, runs on a modified StarCraft II engine. Unlike StarCraft II, it ships without a public map editor, but it inherits undocumented support for loading custom maps.
With more than 3,000 hours in the game and many more spent modding it, I build open-source tools that make custom maps accessible to the community.
CascLib & StormLib for Node.js
Modern cross-platform Node-API (N-API) native bindings for CascLib and StormLib, the libraries for reading Blizzard game archives. Published on npm as
@jamiephan/cascliband@jamiephan/stormlib.Storm Map Generator (source code for Storm Map Generator)
A web app that generates
.stormmapfiles without any local tooling. Choose a template map, add AI players, enable debug mode, set a welcome message and attach custom XML game data, which you can edit and validate in the browser.Try Mode 2.0
A drop-in replacement for the in-game Try Mode that adds debug mode, unit spawning and live editing of game values, and builds map variants (including AI variants) from custom modding data.
Try Mode 2.0 Installer
An Electron desktop app that simplifies installing Try Mode 2.0 and fetches the latest maps from GitHub Releases.
Game Data
An automatically updated archive of all non-binary game data. It also generates an XSD schema that enables validation and editor auto-completion for custom mods.
S2MA
A GitHub Actions pipeline that downloads each game update and extracts the map and mod files used by Try Mode 2.0 and AI Maps.
AI Maps
Automatically injects AI players into maps from the S2MA repository, generating team compositions such as 1v5 and 3v3. The 5v5 variant is used by Try Mode 2.0.
Game Data HTTP
A Cloudflare Workers API that serves the Game Data repository in multiple formats, with badge endpoint support.
Tools
Utilities and scripts that support my Heroes of the Storm modding workflow.