I'm Michel Angelo, a Computing and Software Systems graduate from the University of Melbourne. I work on workflow automation, runtime tools and learning systems, with a particular interest in making complex behaviour visible and uncertain cases easier to handle.
My background is in public-facing operations. I care about what a tool helps someone do, what it shows them, and when it asks them to take over.
A useful tool should make the next step clearer. These are three choices you can examine in the work.
01
Show how a result was reached.
Threadline’s reusable tracer connects functions, calls and observed values to their source locations. The For The Siege adapter demonstrates this on a running app and adds verified replay of game state.
In Parcel Notify, “J Patel” could be two different people. The demo leaves that choice with staff and shows why it needs review. A convenient automation still needs a clear place for judgement.
For The Siege combines learning agents with a changing world. Both new maps run through the same replay and rewind checks, making the game a demanding place to test behaviour.
I build across the whole path: the data model, the behaviour, the interface, the tests and the handoff.
Companion project / Threadline
A tracer for the systems you build.
Threadline’s instrumenter and recorder apply to other JavaScript applications. The live game integration shows the core tracing in context, with an adapter for checkpoints and verified replay.
The counts describe the recorded map-pack checks. Browser timing figures are labelled by build; the parcel walkthrough uses fictional data and simulated delivery.
A function and systems tracer with a reusable JavaScript instrumenter and recorder. For The Siege is the live integration shown here; other JS/TS source can be explored too.
My turn-based arena game: six champions with Q-learning brains, lanes, turrets and minions, plus an arcade scoring layer. Follow one turn through AI, combat, world and rendering, then rewind it yourself.
6 learning champions7 loop phases~21 ms traced turn
How Threadline observes a program without changing what it does: AST probes inserted by the TypeScript compiler API, a repeatable game realm, and replays that halt at one exact statement.
Every buffer has a budget: instanced rendering, a single line buffer, typed-array counters, worker-side indexing and latest-wins scheduling. Plus the measurements that back it up.
0.64 ms per checkpoint19.1 ms median seek96 box budget
Automation I wrote for a residential building, web work in an agency content pipeline, and the engineering inside this portfolio. Each one framed as problem, solution and outcome.
Computing and Software Systems at the University of Melbourne, years in public-facing entertainment and operations, and an interest in what happens beneath the interface.