April 2024 – July 2024
With DDN I worked on the EXAScaler Management Framework using Rust and Actix-Web. I also found myself often working on DevOps-adjacent tasks focused on improvements made towards their CI/CD pipelines.
February 2022 – August 2023
Svix is a SaaS offering making it simple to reliably and securely dispatch webhooks. While it was first implemented in FastAPI and Python, by the time I left, the service was almost entirely Rust-based using Axum.
Working for Svix required wearing a variety of hats, including DevOps-adjacent skills, maintaining a Go-based CLI, or making updates to the client-side libraries for several languages as API updates were made.
As one of the earlier members of the Svix team, I spent much of my employment aiding in a gradual transition to the Rust-based web service. This included maintaining both codebases to keep feature parity while porting endpoints to Rust over time. It often required making changes to the AWS infrastructure with Terraform such as to gradually roll-over to the Rust-backed service.
I made many improvements to the CI/CD pipelines for Svix during my employment with them. This included:
Part of Svix's offering was a range of utilities for their direct clients to use and that the clients of their direct clients could use. During my time at Svix, I rewrote one such tool, Svix Play, independently, as a part of a scaling effort.
Transformations are a feature offered by Svix that allows their indirect clients to write basic JavaScript functions to mutate a webhook payload before it is dispatched to them in a serverless fashion.
I was given the task of implementing the first iteration of this feature as well as maintaining changes to the feature for the duration of my employment.
Implementing this feature involved the complete design and development of a microservice meant to execute user-defined JavaScript in a secure sandbox. This required integrating the Deno runtime into an Axum/Rust server and writing logic to enforce RAM usage and execution time constraints for each script run.
Omniqueue is a library created and maintained by Svix. It is meant to be an abstraction layer over queue-like data systems. It allows writing generic code that relies on a message queue to be able to use any one of multiple backends.
I was tasked with the initial API design and the development of the first release of Omniqueue.
May 2021 – February 2022
At NXLog I worked mostly with backend web development (using Actix-Web/Rust) and distributed systems for Minder, a former product by NXLog meant to manage and monitor deployments of their logging agent. The bulk of the role involved basic backend web development but with the added complexity of maintaining state across a Raft cluster.
My most notable task with NXLog was the design and implementation of an entire query language. As the product was meant to manage the configurations of and monitor the health statuses of any number of logging agents, I was tasked with creating a query language meant to filter the set of tracked agents. It first involved designing the syntax, with several proposals made before we settled on a simple SQL-like syntax. The bulk of the project included everything from lexing to interpretation. Finally, it involved writing and maintaining the documentation for this functionality for the duration of this contract.
June 2019 – February 2022
September 2023 – March 2024
August 2024 – Present
While starting my career and while in between jobs, I work on various short-term contracts, most often using technologies like Rust, C++, Python, and JavaScript.
This role included the development of a complete MVP of a fintech platform for Adora Services LLC. The product used Actix-Web for the backend, and Yew for the frontend. While both back and front used Rust primarily, this role often involved FFI between JavaScript and Wasm-compiled Rust.
For a SaaS product offered by Sicher Surfen GmbH, I took on two major tasks:
I first extended a Rust DNS server to support per-request filtration parameters via an infrequently-used extension to the DNS specification. This allowed filtering requests such that one could block ads, known malware, content unsafe for children, or even block by regions. I was the only Rust developer working on the project at the time.
Second, I contributed to their client-side app written in Go which would insert these filtration parameters to every DNS request made on that device.
For the Rust-based library SeaORM to support PostgreSQL, I had to alter a schema definition and discovery system (SeaSchema) to work with the internal tables used by PostgreSQL.