Jul '18–Dec '18
I joined CEM with the assignment to convert a set of adaptive assessment algorithms from ActionScript to TypeScript, retro-fitting unit tests to legacy code to verify that all behaviours were preserved. I completed this well within the projected timescale and contributed to several other areas, including:
Flash -> HTML5 transformation
Converted algorithms from ActionScript to TypeScript; tests from ASUnit to Jasmine; and data from XML to JSON.
Completed quickly and to a high standard, moving forward estimates for key projects within the company.
Async unit test framework/workflow design
A large part of the task was writing unit tests for event-driven code, which involved a repetitive process of handling and firing events to implement what were essentially function calls. To address this, I wrote a small framework to abstract the event boilerplate away from the tests. This made them smaller, easier to read, and faster and less error-prone to write. I also designed a surrounding workflow to speed up and automate as many of the other repetitive elements as possible, using a combination of ad-hoc scripts, instrumentation, editor macros, and other tools.
Increased team productivity and code quality.
- Maintained translations in a Flask app with Jinja2 templates
- Provisioned VMs with SaltStack
- Wrote script to stress-test WebSocket metrics server, documented results and applied memory upgrade to improve responsiveness under peak loads
- Backed up and restored MongoDB databases
- Set up Smoothwall firewall machine to simulate school network
- Used tcpdump to debug proxy issues
- Set up Squid proxy to test sites from behind the Chinese firewall
- Managed staging and production machines & services