Software developer intern
Where the work is quiet and the bugs are subtle
Data retention service
helpdesk connectorCRM connector
- Findacross third-party systems
- Confirma person says yes
- Deletethen, and only then
- Recordtamper-evident
I am a software developer intern at Motio, a data analytics company out of Dallas, working remote. Most of my time goes to Purge Pilot, a data retention service in Java, Spring Boot, React and PostgreSQL, where I own the helpdesk and CRM connectors end to end. OAuth 2.0 with token caching, rate limit backoff, query translation.
I found and fixed three separate causes of silent record loss in keyset pagination running over a search index that lags its own writes. Nothing crashed. Nothing errored. Records just quietly did not come back, which is the worst kind of bug in a system whose whole job is deciding what to delete. I also wrote down the exact point where the guarantee stops holding.
I built the operator console's frontend out from a designer's mockup into reusable components, and introduced Vitest and Testing Library where the frontend had no test setup at all. On the backend I wrote roughly 40% of the test suite and shipped 14 database migrations against a trunk shared with the team.
- Reliability
- Evidence uploads to cloud storage, with idempotency aware retry and a durable local fallback, so audit records survive a remote outage
- Across teams
- A user interface update delivered to a second team's project, handed to the team building it
- With the team
- Code review, and three live demos at internship review, one against a real external sandbox
- Languages
- Java · TypeScript · Python · SQL
- Tools
- Spring Boot · React · PostgreSQL · Git · CI
I also built Jarvis, a command line router that dispatches work across three LLM subscriptions and treats running out of quota as a real outcome rather than an error, so only a genuine limit benches a provider.
understandball.com
I wanted to know if a trade was actually good
Most trade grades start and end with an analyst's judgment. I wanted one that could show its work, so I built understandball.com: a live NBA trade evaluator that grades each side against what that team is actually trying to do, contending or rebuilding, rather than against a single idea of value.
The scoring engine is fully deterministic. No model inference anywhere in the scoring path, which means the same trade always produces the same grade and the site can explain how it got there. 9,129 tests cover that engine and the salary cap rules it enforces, and they run in a GitHub Actions pipeline.
It implements the 2023 CBA properly: both aprons, tiered salary matching, the second apron aggregation ban and frozen first round picks.
The NBA is the league that is built. Each league declares whether its own data is live, empty or unbuilt, so the others are scaffolded and their grades are withheld until the data behind them is real. A grade nobody can trace is worse than no grade at all.
Before a third party API expired I designed and ran a data capture pipeline that archived its data across 23 sports.
The goal underneath all of it: I want to work in an NBA front office. UnderstandBall is where I am learning to build software for basketball decisions.
Trade evaluator example
Sports: the NBA is live, other sports are withheld until built.
One trade, two goals. Each side is graded against its own.
Contending
graded against winning now
Helps now
Rebuilding
graded against what it keeps for later
Pays off later
Same trade, same grade, every time. No model in the scoring path.
Legal under the 2023 CBA: both aprons, tiered salary matching, the second-apron aggregation ban, frozen first-round picks.
- Stack
- Java 21 · Spring Boot · React · Vite · Vitest · JUnit · Docker · Vercel
A router across three AI subscriptions
Alfred, at your service.
- Butler
- on duty
- Employer
- Master Robert
- Router
- Jarvis (claude / codex / gemini)
- Silver
- polished
- Tea
- Earl Grey, steeping
- Patience
- inexhaustible
- Judgement
- reserved, but present
DEMO: canned replies, no models called
/help for commands, /exit to be dismissed.
Good afternoon. You are Master Robert's guest, and this is a demonstration.
Nothing here calls a model. Try: about, routing, limits, example.
Jarvis is a command line router that dispatches tasks across three LLM provider subscriptions, choosing by task type and falling back down a chain when one is unavailable. It is covered by 994 tests that spend no quota.
Running out of quota is a first class outcome, distinct from an error, so only a genuine limit benches a provider on a cooldown rather than a transient failure.
Every layer has a dry run mode that prints the exact command it would run, and no layer can silently downgrade a rehearsal into a real, billable call.
I pay for three AI subscriptions and used to lean on one, so its quota ran out while the other two sat idle. Jarvis is what I did about it.
Alfred is the interface on top of it. What runs on this page is its demonstration mode: the same canned tour the real one gives, calling nothing.
Jarvis decides where the work goes. Alfred is the one you actually talk to.
- Stack
- Python 3.12 · Typer · Pydantic · pytest
ProbStatsStudy
Prob & Stats
Dealer showing 4
You 12
Bet $10
Dealer, showing 4♠
Where the dealer's hand ends, drawing from the 309 cards you cannot see.
Your hand: 12
P(bust) if you hit: 30.7%
EV per $1 bet
| Action | EV |
|---|---|
| Standchart | -0.211 |
| Hitbest | -0.210 |
| Double | -0.421 |
best is the exact number for this shoe;chart is what the basic-strategy chart says. When they differ, the gap is the price of playing from a chart of averages.
Hitting busts you 31% of the time, but standing on 12 loses to any dealer 17 or better, which happens 61% of the time. The chart says stand; for this shoe the exact numbers prefer hit by 0.001 per dollar, which is $0.01 on this bet.
Exact recursion over the remaining shoe (9,396 states). The one approximation: split hands are valued as independent, no resplits.
A snapshot of the study site's blackjack table: six decks, dealer stands on soft 17, one spot, every number computed by its engine for the cards on the felt.
Interactive study site for MTH 2480: practice problems, a formula reference, and a Crapless Craps simulator.
BB45-ShipTracker
BB45
A first-person horizon view of ships passing my deck in Blue Bay, Curaçao, drawn at their true bearing, with a weather-driven visibility edge.
Curaçao
The ladder
| Rung | My dad | Me |
|---|---|---|
| MSDTMaster Scuba Diver Trainer | ||
| Instructor | stopped here | |
| Divemaster | ||
| Advanced Diver |
Logbook: ran the Coral Estates site as its only instructor for most of the season, certified more than 50 students in one season, and led several hundred guided dives.
I learned to dive at twelve, in a swimming pool in Texas, over spring break, because my dad made me. I hated it.
What changed my mind was Curaçao, and the people at Central Dive who taught there. Between sixteen and eighteen my dad did the whole ladder with me, Advanced Diver through Divemaster. He stopped at Instructor. I did not.
Then February 2020 happened and I could not leave. Stuck on the island until December, back again the next spring because school was still online and our villa was sitting empty, home for a week to graduate, back for the summer. I got my Divemaster at eighteen and my Instructor rating after high school.
In the summer of 2022 I ran Dive Division's Coral Estates site as its only instructor for most of the season: all of the teaching and the guided diving, and the shop's daily operations around them. I was alone at the shop on my second day. I certified more than 50 students that season and led several hundred guided dives, and I finished the summer as an MSDT.
The shop was mine to open and close: customer intake, scheduling, sales, reconciling the cash in Odoo, securing the site around every dive departure, and the equipment maintenance in between. Three days a week I was there alone; the other four, with one office staff member.
About a month before I left, the shop hired a second, more senior instructor. One day I let her take a dive and did not think anything of it. Then I was told: we want you to take all the dives.
I was also a certified Emergency First Response Instructor, teaching CPR, emergency oxygen and AED use, including Care for Children. The summer before Coral Estates I had taught freelance at two other Curaçao dive centres, tracking each student's progress toward certification.
The part I actually kept is the people. Dutch, American military, Canadian, local, college graduates and college dropouts, and Calvin, a German instructor who is still my best friend.
Both of my AP Capstone papers were written on that island, during the stretch I could not leave.
Written here
central-curacao
Central Curaçao
Central Car Curaçao
Central Dive Curaçao
Confirmed Pickup at the shop. Gear included with the dives.
Online booking system for Central Car Curaçao and Central Dive Curaçao. The people who taught me to dive co-own it with my dad, so this is the one project where I already know every user by name.
AP Research · 29 pages · 5,661 words
Mixed-Methods Historical and Statistical Analysis of American Metrication
The 1975 Metric Conversion Act failed where Australia, Canada and Ireland succeeded, because the American switch was voluntary and had no deadline. The cost of staying imperial is measurable: a $125 million Mars orbiter lost to a unit mix-up, and billions a year in medical error.
AP Seminar · Individual Written Argument · 2,228 words
Social and Health Effects of Binge-Watching
Binge-watching has real social and health benefits, but the harms are more common: cancelled plans, a tolerance curve that looks like addiction, and disrupted sleep. Avoiding them takes deliberate self-monitoring.
American Campus Communities
The leasing office
Community Assistant
Chauncey Square 150 units, 380 beds
- Every day
- Open the model apartment and the office
- The front desk: whoever walks in or calls
- Tours, applications, twelve-month leases in Salesforce
- The model walk, for curb appeal
- Close
- When it comes up
- A parent worried about their kid: the student signs, the parent decides
- Maintenance triage: stabilise it for maintenance, or resolve it so they are never called
- Resident events
- Marketing on and around campus, and the social media ideas
- Weekends
- No manager on site. The CAs run the office
- With the assistant general manager post vacant for long stretches, more of it landed on us
- One week at a time
- On call, rotating among the CAs, holidays included
- One month a year
- Turn: most residents out July 31, new students in around August 16
- Scrub apartments, move furniture, watch vendors for residents' belongings and code
- Thirteen-hour days
Twenty hours a week alongside a full course load, for two years.
For two years I was a Community Assistant at Chauncey Square, a 150-unit, 380-bed student housing property. I closed more than 25 twelve-month leases, over $300,000 in signed value at roughly $13,000 a contract, tracking every lead in Salesforce from first inquiry to signature.
The leasing was the measurable slice. The rest of the job was the front of the office: whoever walked in or called, the model apartment and the office opened and closed every day, a walk of the property for curb appeal, resident events, marketing on and around campus, and social media, where I was asked for the ideas as well as to appear in it. A manager was on site most of the time. On the weekends the CAs worked there was none, and for long stretches the assistant general manager post sat vacant, so the CAs ran the office and more of it landed on us.
The harder conversations were with parents. The student signs the lease and the parent decides, and a lot of the job was giving an anxious parent a real reason to feel their kid would be safe there.
Community Assistants carried a real on-call rotation: one week at a time, rotating among the CAs, holidays included. I also learned maintenance triage in the first-responder sense: stabilise a problem so maintenance arrived to something that had not got worse, or resolve it so they never had to come.
Turn was its own month. Most residents moved out on July 31 and new students arrived for classes around August 16, so the whole property changed hands in about two weeks: scrubbing apartments, moving furniture, and watching vendors so residents' belongings stayed safe and the work was up to code. Thirteen-hour days. The rest of the year it was twenty hours a week alongside a full course load, for two years.
It is the same job as the dive shop in a different climate. Somebody has to be the one who picks up, and for two years that was me.