Senior Software Engineer
CodeCombat
Apr 2020 - Present
Lead contributor at codecombat.com and ozaria.com. A client-side heavy educational game with custom HTML5 game engine, compiler, web workers and content editing tools.
- Drove initiatives to improve engineering velocity and reduce bugs in the codebase including: replacing CoffeeScript with JavaScript, refactoring Backbone.js to Vue.js, unblocking unit testing, and migrating state management into Vuex.
- Implemented the new Teacher Dashboard, building custom reusable components and endpoints. Led optimizations to improve dashboard responsiveness from seconds to milliseconds.
- Drove technical interviews and hired two senior software engineers.
Software Engineer
CodeCombat
Jul 2018 - Apr 2020
- Led team of three engineers to integrate C++ into the JavaScript game engine. This supported a business expansion into the computer science curriculum in China.
- Identified and led Node.js upgrade from version 6 to 8 across our infrastructure, improving team velocity and server response time by 20%.
- Designed and implemented an animated dialogue system with content creation tooling. Higher quality art in this system required additional optimizations to support less powerful hardware found in classrooms.
- Built and improved importing animations from Adobe Animate into our WebGL renderer.
- Led and implemented the character customization system, allowing the user to customize their in-game and in-cinematic skin and hair color.
Software Engineer
Melbourne University
Dec 2017 - Jan 2018
Implemented a meta-heuristic solver for scheduling university classes based on preference constraints. Written in Rust, using "human in the loop" and simulated annealing techniques.
Teaching Associate
Monash University
Jul 2017 - Dec 2017
Teaching Associate for FIT2102 - Programming Paradigms, a core unit for Bachelor of Computer Science. Handbook: monash.edu/pubs/2017handbooks/units/FIT2102.html
- Wrote 5, 3 hour worksheets with executable exercises and automated tests for half the course teaching function composition, lambda calculus, currying, observables and TypeScript.
- Tought x86 Assembler, Haskell, and MiniZinc.
Research Assistant
Monash University
Mar 2017 - Nov 2017
Developed a mind mapping tool for the Monash Adaptive Visualisation Lab. Skills: D3.js, RxJS, TypeScript, SVG.
Personal Projects
Riko
Browser Game
August 2020
A challenging 54 level puzzle game (spyr.itch.io/riko). Built everything including a flexible puzzle engine that supports undoing player actions, and an efficient art and audio import pipeline. Used Phaser.js, Immer.js, GLSL shaders, React, TypeScript, Aseprite (art), and Reaper (soundFX).
YouCodeThings
YouTube Channel
Run an entertaining and educational youtube channel with over 6,000 subscribers and 200,000 views. Produce videos that teach Game Development, Rust and JavaScript.