field notes of
full-stack engineer: constantly building, occasionally writing.
A framework for picking the smallest language model good enough to embed on a phone. Real recipes, engineered ground-truth nutrition, and a benchmark that plateaued accuracy at 3-4B and shrank the model down to a bounded judge over a deterministic calculator.
A year of frontend work to move off Firestore. Dual writes, feature-flagged reads, SSE for real-time, no customer-visible incident.
A two-day rewrite of a paid third-party ANTLR SQL parser, 3–20× faster on real customer SQL. The production version isn't mine.
Redux subscriptions, duplicate data, and an entire workspace held in memory. Memoization was the bandaid.
View models, state management as a data access layer, and why feature isolation is a lie.
Typed error handling in TypeScript, mapping errors between layers, and an unusual namespace pattern.
Controllers, Services, and Repositories, and the dependency injection decisions that make it practical.
A framework for picking the smallest language model good enough to embed on a phone. Real recipes, engineered ground-truth nutrition, and a benchmark that plateaued accuracy at 3-4B and shrank the model down to a bounded judge over a deterministic calculator.

Frontend engineering on a complex local-first data-transformation platform built with React, TypeScript, Redux, and Antd, originally backed by Firestore, now PostgreSQL. Embedded across teams as a senior IC for new-product direction, architectural decisions, and high-leverage migration and performance work.
Recent: a no-downtime frontend cutover from Firestore to PostgreSQL, a React performance push for enterprise customer workspaces, and a two-day ANTLR parser POC running 3–20× faster than the paid third-party SQL parser it replaced. Co-authored the design doc that became a cross-functional skunkworks with VP Engineering and CTO/CPO involvement, working to make CLI and file-based AI integration the product’s next surface.
This role involved supporting a newly introduced eventing system, developing internal code generation tooling and libraries using the TypeScript compiler AST (TypeScript, Protobuf, Kafka). The role also involved optimising for Kafka infrastructure costs, and with my team building a new external platform global control plane management API service (TypeScript, NodeJs, Express, Knex).
We implemented the global authentication plane using Auth0, requiring an in-depth understanding of the OAuth2 standard. Services were deployed to AWS and used Postgres running in RDS for primary storage. As a code owner, I was responsible for gate-keeping the quality of the codebase. I was a SME for eventing in this role.
Contract role extending a JavaScript-based legacy React + Redux application and migrating core pieces to TypeScript. Built new Node.js API endpoints to replace existing Spring-based services.
Collaborated on delivering new customer on-boarding forms using Gatsby and TypeScript, with Mulesoft and Salesforce on the backend. Helped mentor a junior engineer in best practices. Investigated and pushed for better observability tooling like Dynatrace and Datadog.
In this role I owned the frontend for a market-making financial services platform for cryptocurrency trading. Built with React and TypeScript, communicating with Node.js services via uWebsockets. Backend implemented MongoDB and integrated with Ethereum through the Web3 SDK.
This position involved designing and developing a message driven architecture on AWS using SNS, QLDB, DynamoDB, Lambda (TypeScript), SQS, API Gateway, the Serverless Framework and Epsagon (Observability tool). QLDB is used for databasing to provide intrinsic event sourcing behaviour. This role also involved the development of internal tools built in React with TypeScript that communicate with our backend primarily with websockets. In this role, I also take a position of leadership as sprint master in our modified scrum workflow and some systems management. Azure DevOps was leveraged for repositories, artifacts and pipelines.
This role involved developing an iBeacon based alternate reality game using React Native (TypeScript) and a REST API using AWS tools including Lambda, DynamoDB, Cognito and CloudFormation. I utilized Jira (Scrum) and Bitbucket in this role.
a page about me
I’m a fullstack engineer. I started in a startup at university and have been shipping ever since. Right now I’m a Senior Engineer at Coalesce, based in New Zealand and working remotely across any timezone.
What I’m best at is greenfield product work: making the architecture choices early, deciding what to build, leading the team that builds it, and orchestrating the cross-team work it depends on. I’m comfortable in legacy work and plenty of it gets done, but greenfield is where I do my best thinking.
Outside of paid engineering I co-organise the Terrible Ideas Hackathon, run a homelab (mostly an excuse to learn ZFS the hard way after losing 50TB), cook, and miss having an electronics workshop.
Fully remote. Available for contract engagements worldwide, in any timezone.
Kubernetes · DynamoDB · Pulumi · Vite · Kafka · Express · Auth0 · Tailwind
Graduate Diploma, Computer Science (AUT).

