I write software: full stack web apps, backend services, robotics, and ML.
Some of my software writes itself.
Projects
Project | Description |
---|---|
WIP! AutoML-N | Evolutionary search for local online learning rules in sparse graphs with primitives. No gradients. No backprop. Embrace the Bitter Lesson. |
Spectacles to Unitree | Teleoperate a Unitree G1 humanoid robot from Snapchat Spectacles AR glasses. Copy hand movements with inverse kinematics, locomotion via virtual joystick and raycast. Simulated visualization HUD. |
Passed the Future by Breakjoint Games | A retro-themed racing game. I contributed to AI development with Godot-RL PPO and GOFAI. |
Technologies I’ve Worked With
I’m tech-agnostic – any language or framework works for me, as long as it’s the right tool for the job.
That being said, I’ve bolded the ones I particularly enjoy.
- Languages: Rust1, Go2, Python3, C#4, TypeScript5, *sh, SQL6
- Frameworks: React7, Hugo, Godot8
- DevOps: Docker / OCI9, Terraform10, Kubernetes, GitHub Actions
- Databases: Postgres11, AWS DynamoDB, Microsoft SQL Server12
- Cloud providers: AWS13, Azure, Vast.ai14
- Operating systems: Linux15
Résumé
Work History
- Senior Software Developer at Notable Systems: 2022-08 – 2024-04
- Researched document segmentation and developed PyTorch CNN insurance card detection model with ~98.7% accuracy on production data
- Wrote a machine learning inference server with Go + PyTorch that dynamically loads models to serve document classification requests for gRPC clients
- Designed and used development & production Docker containers (CV & ML stacks), allowing for quick start-up for developers working on ML training instances, and a uniform dev & prod environment
- Created GitHub Actions for CI/CD from git to AWS ECR, ECS, Lambda, enabling automated builds and deployment to test systems
- Developed a public-facing OpenAPI service for B2B use of document processing systems
- Created gRPC microservices and AWS Lambda functions to scale production on demand
- Wrote a TextMate grammar for a document parsing DSL to provide syntax highlighting in VS Code and Sublime Text to help onboard data extraction programmers
- Software Developer at Rosendin: 2021-03 – 2022-08
- Worked with internal customers (field electricians, BIM) to take applications from business problem to production
- Wrote several full-stack React and .NET applications
- Developed a standard template for developing and deploying SPAs and backing APIs with React, C#, and Azure OAuth, and NPM package repos for semantic-versioned components and internal APIs
- Created ETL and database schemas to process data from CSVs, Excel, and SQL Server for CRUD applications
- Wrote OpenAPI and GraphQL services and generated client libraries for TypeScript and C# clients
- Added telemetry to applications via OpenTelemetry, Jaeger, and Azure Application Insights
- Implemented UUIDv7 in C# based on the IETF draft proposal
Fantastic. ↩︎
if err != nil
isn’t that bad, just press Tab to let your LLM of choice autocomplete it. ↩︎Best kept locked up in a container for ML workloads or data analysis. I use uv for package management, and conda mostly when I don’t want to build my own C++. Jupyter is fun for scratchpad work. ↩︎
Solid, batteries included. LINQ is underrated. ↩︎
Makes web development tolerable. The type system is excellent, even if it inherits JS’ “pecularities”. ↩︎
I generally eschew ORMs in my own projects, although I understand the utility for dev velocity in line-of-business applications; I prefer plain SQL and query building. I use sqlx in Rust. ↩︎
Solid for web apps. I reach for this if I want any interactivity. Vite is my current build tool. ↩︎
Open source game engine, used with Passed the Future. Godot-RL used when training PPO agents (although I failed to converge to a decent policy and ended up writing a PID and heuristic-based controller). ↩︎
I do all of my development in devcontainers and deploy basically everything in containers. Eventually I’ll check out Nix… ↩︎
Wordy but absolutely better than hand-configuring infra. Used to deploy ~all of my infrastructure, including this site. ↩︎
ACID of choice. ↩︎
Temporal tables are a secret weapon for business data auditing and I wish more databases supported them natively. ↩︎
Labyrinthine, but I run everything there. Best managed entirely through Terraform. I typically work with ECS, EKS, Lambda, S3, Route53, CloudFront, RDS, etc. ↩︎
Used to run PPO training workloads in containers. ↩︎
In practice I almost always use Ubuntu, or Debian derivatives. I’ve worked with ext4 and ZFS via TrueNAS. I daily drove Arch + KDE for a few years – I miss AUR and Dolphin, but don’t miss nonfree NVIDIA + Wayland conflicts. ↩︎