webthinking.io Online

Software builder

Aaron Ding

I build the tools my games forgot to ship.

See the builds GitHub

Builds shipped
4
Oldest still shipping
2006
FreeCell win streak
100

What my CV can’t tell you

My CV lists where I’ve worked. This page is what I build when nobody’s asking.

I started out in Visual C++, spent years on enterprise Java, much of it in finance, and grew into architect and engineering manager roles. I still build across the whole stack, with Node.js and MongoDB on the back end and the browser on the front, and I care as much about the data model and the edge cases as about how the result feels under your thumb.

  1. Directive 01 Build the tool you actually need. Every project below started as something I wanted while playing.
  2. Directive 02 Say why, not just what. A good tool explains its answer. When a special move fails, sf6-input-check tells you which input you missed.
  3. Directive 03 Finish it, even twenty years later. Scorpion Solitaire shipped in 2006. It shipped again in 2026.

Things I built because I wanted them

Public beta2026

sf6-input-check

Tells you why your Shoryuken didn’t come out.

Input displays show that a button fired. This one names the move you were going for and, when it doesn’t come out, the input you missed. A small Windows agent reads the controller about a thousand times a second and serves the viewer to any screen on your network. The browser version needs nothing installed.

  • C#
  • JavaScript
  • XInput
  • Gamepad API
gcwind on a phone: wind speed 10.0, power ball and elevation selected, and a result of 8.3 rings with max, mid and min distances below.

Live2025 – 2026

gcwind

How many rings to aim off, answered one-handed.

A wind calculator for Golf Clash. Pick a club and level, dial in the wind, adjust for power ball, elevation and distance, and it gives you the rings. Built for a thumb on a phone mid-match, with the club data checked in CI on every push.

  • JavaScript
  • CSS
  • GitHub Actions
A game of Scorpion Solitaire in progress: seven columns of cards on green felt, several already built down in suit.

Since 2006Rebuilt 2026

Scorpion Solitaire

Written in 2006. Rebuilt in 2026. Every deal can be won.

I play a lot of solitaire, so I wrote my own in Java Swing. Twenty years later I rebuilt it for the desktop and the browser. A solver shuffles until the deal is winnable, and both versions replay the same rules recording, so a game number deals the same cards in either one.

  • Java Swing
  • TypeScript
  • Vite
  • Vitest
Path Dead end Exit

Open source2016 – 2026

maze

A mouse, a maze and a stack.

A mouse maps every corridor of a maze using depth-first search, backtracking out of dead ends and noting each exit. The original draws it in your terminal. It began in 2016 as a recursive solver; now it keeps an explicit stack, so every step can be drawn. The one on this page is a port running live in your browser, on a fresh maze each time.

  • Node.js
  • JavaScript
  • Jest

I have many hobbies. You can guess which ones I’m good at.

* 100 games in a row without a loss.

Open a channel

My CV has the rest of the story. All the code on this page is on GitHub.

github.com/aaronding