BalajiLeninrajan

Software engineer · Waterloo, ON

Hi, I'm Balaji.

SE at Waterloo. Ex-Finta, ex-Shopify, autonomy lead at WARG.

I spent the summer of 2026 at Finta, which does accounting and taxes for startups. I worked on the planning side of the product, where founders build budgets and forecast scenarios on top of their live accounting numbers. Under that sits a spreadsheet engine I built from scratch: custom formulas that can pull live accounting numbers into a cell, charts, templates, and version history. The first version took three weeks.

Multiplayer works the way Google Sheets does. Every edit is an entry on a revisioned operation log synced over WebSockets, and restoring an old version replays against that log instead of clobbering whoever is still typing.

I also did a couple of performance jobs. The dashboard took about two minutes to load, so I moved the heavy queries behind indexed PostgreSQL read models and rebuilt the page in React, and by the time I left it came up in under two seconds. The other was a subtle leak in one of our workers, rooted in how Rails caches the reverse side of an association. Memory climbed linearly with every job until the worker hit its limit and got OOM-killed.

I was on the edge infrastructure team at Shopify, where I shipped a new SSL stack in Ruby on Rails and Terraform and moved more than ten services onto it. Partway through the term a spike of 429 errors took production down. I worked the incident, then added kill switches and smarter retry backoffs so the same thing couldn't happen again.

The rest of the term went to cleanup and operations. I pruned over ten million dead hostnames, which saved more than $250,000 a year, and wrote the playbooks and automated incident-response tooling for domain and SSL job processing.

I was on the team behind Shopify's communications platform, which sends over four million emails and push notifications a month. I shipped features across the React front end, the Rails back end, and the GraphQL layer between them. The piece I'm proudest of is an email approval workflow: campaigns get a second pair of eyes before they go out, and faulty sends from human error dropped 80% after it launched.

I joined the Waterloo Aerial Robotics Group in January 2024 as a developer on the autonomy subteam, spent a couple of terms as a project manager, and have led autonomy, a team of 15+ developers, for just over a year. We won AEAC in 2024 and again in 2025. My first year went into the waypoint and diversion pathing modules for the 2024 competition drone.

As lead, most of my own code has gone into how the team works. I moved autonomy into one monorepo and wrote warg-cli, a Python tool on PyPI that sparse-clones it, materializes a project with its dependencies, and runs the commands each project defines. The onboarding bootcamp now runs on top of it and ends with a full mission flown in a simulator.

On the flight side I set the architecture for the airside stack, a ROS 2 workspace whose mission controller is a behavior tree that keeps its place when an operator hits the kill switch, and for the VSLAM pipeline that fuses OAK-D stereo depth with visual-inertial odometry so the drone can navigate without GPS.

I was the technical lead of the AWS Cloud Club. I wrote and ran our Amazon SageMaker workshops, which covered XGBoost, hyperparameter tuning, and AI workflows, and mentored 25+ students through the AWS Certified Cloud Practitioner exam.

I interned on the ERP and web team at YTY Group. I built an employee attendance prediction system with TensorFlow and Pandas, and a Flutter expense-claims app that works offline and keeps users logged in between sessions.

varchar is a really dumb SQL database: its entire state, schemas, constraints, sequences, and rows, is one UTF-8 string, and every SELECT scans that string with regexes. It is still a real parser, type checker, storage codec, and query engine. It is also a toy. I fuzzed it against a reference implementation, running random CRUD sequences and predicates through both and diffing the results.

The site is the real engine compiled to WebAssembly, with the string and the regex both on screen as each query runs.

salt reads the session logs that Claude Code, Codex, and Cursor already keep on your machine, counts the profanity in the prompts you typed, and publishes the counts to a link you can share. The scan is local and fast, 16 GB across 7,900 files in under 4 seconds, bound by disk rather than CPU.

Most of the work is filtering. Harnesses push tool results and system reminders through the same channel as real prompts and rewrite whole histories on every fork, so one prompt showed up 405 times in the corpus I built against. Reports live on one Cloudflare Worker in KV records that expire after 30 days, and the CLI ships binaries for six platforms from a single 2 MB npm package.

harness racer races the coding-agent stacks already installed and authenticated on your machine, streaming every response live and comparing cold start, time to first output, visible tokens per second, and time to finish. It drives five harnesses, Codex, Claude Code, Cursor, Grok, and OpenCode, behind one event contract that reconciles JSON-RPC, ACP, and SDK streaming.

It distrusts its own inputs: one shared tokenizer, medians over repeats, and a run is voided if output lands in a buffered burst instead of a stream. One benchmark core drives both the browser dashboard and the Ink terminal UI.

catppuccin-neu is a CSS-only design system in Catppuccin Mocha. Dark, soft, carved from shadow. It ships as three cascade layers, tokens, utilities, and recipes, so consumer CSS stays unlayered and always wins without a single !important. The recipes cover controls, status, containers, overlays, and page chrome, and a spec file is the source of truth for every rule and number in the package.

This site is built on it. The accordions you are hovering over are one of its recipes.

warg-cli provides the warg command for working with the WARG autonomy monorepo. It reads the root project registry and each project's manifest, resolves dependencies between projects, manages Git sparse-checkout paths, and runs project-defined commands. A fresh clone checks out only the root files. warg up materializes a project and everything it depends on, and warg down unloads it again.

The CLI hardcodes no command names. Each project declares its own in its manifest, the way scripts work in a package.json, so a Python project and a ROS 2 workspace get the same warg run interface. It is the first thing the autonomy bootcamp has new members install.

maram, Tamil for tree, is a CLI for git worktree workflows with variant branches and Zellij integration. A worktree set is a base branch plus any number of variant branches, each in its own worktree, so two approaches to the same feature can sit side by side and the winner gets cherry-picked back into the base.

Every set gets a Zellij session with a tab per worktree, and the layout each tab starts from is a template in the config file.

ConsenStat is anonymous, real-time exam sentiment voting for University of Waterloo students. Search for an exam or create one, with duplicate detection, then vote on whether it was touching or touchy. Tallies live in D1 and get pushed to every open tab over Durable Object WebSockets, one vote per browser per exam, with changes of heart allowed.

Skill Issue is a therapeutic service for job seekers who prefer to skip the wait for rejection. Enter a company, a job title, and your email, click "I Have Hope," and receive a corporate-parody rejection email 2 to 48 hours later. A Cloudflare Worker takes the submissions, a scheduled job drains the queue out of D1, and Resend delivers the bad news.

herdr-modes adds Zellij-style modes to herdr, a tmux-shaped terminal multiplexer. Press the prefix, then a pane key, and with sticky mode on you can drum hjkl to keep moving between panes without pressing the prefix again, while readline's own ctrl+l and ctrl+k stay yours.

A keybind opens a session-modal popup pane that runs the key loop and keeps receiving keystrokes as focus moves underneath it, which is what makes stickiness possible. Each keystroke goes over herdr's socket API instead of shelling out to the binary, so drumming is instant.

Linguini is a word game with friends, built with three classmates. You get a category and a timer and name words that fit, and groups keep a leaderboard. I wrote the main game loop on the front end and the tRPC routers for auth, users, and groups. Word validation walks a WordNet hypernym graph in PostgreSQL with recursive CTEs, so a word counts for a category several levels above it.