Career Profile
I'm a software developer and computer science enthusiast with over ten years experience in a variety of roles. I've contributed to languages, compilers, database systems and general business web applications. Talented problem solver and hard worker. I thrive while solving your software and technology problems and building systems that work.
Experiences
- Scaling and performance optimization - successfully increased the number of monitored generator units for the largest customer by 6x. Reductions in cost per unit and in the usage of Aws burst credits were achieved.
- Control Panel materialization - implemented lazily-refreshed materialized views solution in Postgres/plpgsql addressing most prominent performance issue in the most prominent interface, the Control Panel page.
- Timescale db and Postgres upgrade - upgrading a Postgres database from Postgres 10 to Postgres 15 and implementing Timescale db for the time-series tables. The upgrade process utilized Postgres logical replication, reducing downtime and allowing a hotswap to the new database.
- Generator site view - a new page and visualization of a generator site displaying a summary of the most important device readings per generator.
- Gas Meter Reset feature - a new interface displaying a reading from a gas meter, and control allowing an admin user to reset the meter on-site via the hosted webapp.
- Support for new generator control devices - Deepsea
- Sales attestation cards - this frontend modification introduced new MUI components representing a sales agent's performance. The attestation cards included a custom two-layer progress bar component representing sales. The redesigned cards were included in a prominent in-app location.
- Power bar speech recognition - implemented speech-to-text feature within a command palette allowing user to issue spoken commands
- Uni-data api - implemented a Google Cloud Run serverless service with prod, staging, dev environments along with an in-application authorizing proxy. The uni-data api connects the application via Workato, allowing the organization to synchronize with ~40 other SaaS apps with a simple interface and data model
I currently work as a lead developer on the T&T Power Group's Remote Monitoring. Remote Monitoring brings powerful control and useful data visualisation to customers choosing T&T Power Group for custom industrial control and combined heat and power generator solutions.
While at Postmedia, I delivered a Google Adwords REST service that was responsible for pulling, storing and summarizing our client's Adwords data. The implementation was in Typescript, Mongodb, Express, and was written making heavy use of javascript's concurrency features (both Promises and callback-driven concurrency). The implementation satisfied Google's Required Minimum Functionality for Adwords and allowed us to successfully apply for and obtain Standard api access.
I also delivered a Google DoubleClick BidManager REST service. The implementation was noteworthy for allowing for the streaming and chunked consumption of large csv report files produced by Google (in the gb range). Nodejs streams and concurrency features formed the backbone.
I contributed to the Reporting functionality, writing the backend REST service allowing for report creation and storage. Implemented .xls and .csv report output.
While at Auvik, I contributed heavily to the proprietary networking programming language npl. Initially, I wrote a code-generating compiler that took in Auvik's proprietary network programming language (npl) files and generated a database schema structures in the implementation language (scala). This compiler was implemented as a stage in the compilation process, integrating with the build tool sbt, and implemented a file-caching scheme that avoided unnecessary compilation work. Other contributions to the language included compilation passes implementing error handling(Option-lifting) and language primitives for sorting and ordering.
I wrote and implemented networking protocols (tftp and telnet). The implementations respected IEFC RFC specifications, and implementated both client and server-side functionality allowing clients to perform telnet and tftp operations within a web console.
I designed and contributed the initial clustering architecture, consisting of a seed node, backend and frontend node type. The implementation utilized Akka Cluster, and ran on aws at scale. Contributions were also made to the Amazon cloud formation templates necessary to create a cluster. I was primarily responsible for packaging the scala and java code, and produced .deb packages suitable for installation on Ubuntu.
To produce a responsive frontend experience, I implemented compression between our frontend server and the client. I also contributed the compilation pipeline that compressed, minified and concatenated our assets.
At D2L, I worked with a select group of high-profile clients providing a paid-premium service. As TAM, built the client-company relationship as the client's primary contact within the Desire2Learn Customer Support division. I had the distinction of being the first individual in this role. For work on behalf of clients, received a D2L Superstar award nomination for work improving semester start up experience for a large post-secondary school consortium. A large part of the job was to provide interventions on the client's behalf from within the Customer Support division. Interventions ranged from strictly technical to introduction of new process and procedure. This necessitated interacting with Technical Services, Product Development, SaaS Operations divisions to provide prompt resolution to software, hardware issues and service disruptions.
I advised clients with respect to implementation of new initiatives designed to improve user experience, to mitigate persistent issues, and in planning and implementing software updates and problem hotfixes. Thanks to this involvement, I attained a deep understanding of problems and issues facing customers within the educational-tech sector, with a focus on university and post-secondary client issues.
I also provided on-call and after hours support to clients.
Projects
“Nesticles” is an innovative software product designed to revolutionize personal computing by offering:
- Lightweight, composable desktop environments that empower users to mix and match desktop experiences.
- Advanced isolation of workloads for security-conscious users, catering to professionals, gamers, and developers alike.
- Support for embedding multiple operating systems, enabling seamless interaction between Windows, Linux, and macOS applications.
- Reinvigorating personal computing with a focus on simplicity, fun, and customizability.
By targeting SteamOS/Steam Deck initially, Nesticles aligns with the growing demand for portable, high-performance platforms. Future rollouts to Linux, Windows, and macOS are planned for 2026, broadening accessibility to a wider audience.
Beyond individual users, Nesticles presents significant benefits for organizations, including governments and educational institutions. The secure containerization technology provides a foundation for isolated and tamper-resistant workflows, addressing critical needs in regulated industries, government operations, and remote education.
Ultimately, Nesticles aims to bridge the gap between consumer entertainment, professional efficiency, and institutional security, transforming how computing is experienced across sectors.
Developed a Facebook Profile Picture Generator as an experiment in unsupervised learning, using Generative Adversarial Networks (GANs). The generator analyzed friends’ profile pictures and created novel images as outputs.
This project is a continuation of a long-standing research interest in deep learning and machine learning, sparked during studies in cognitive psychology and computational neuroscience. It demonstrates hands-on experience with TensorFlow and unsupervised learning techniques.
Updated the FrTime language, an embedding of functional reactive programming (FRP), from MzScheme to the newer Racket programming language. The work, merged in Racket 5.3.1, included significant updates to macros, higher-order functions, and continuations in a large, complex software ecosystem.
The project provided experience with software maintenance and working within existing codebases. It also involved making smaller contributions to other Racket sub-languages.
Founded and managed the world's largest online community of category theorists on Google+, with discussions ranging from beginner concepts to advanced theoretical applications. Built a collaborative space for professionals, researchers, and enthusiasts.