Phineas Fritsch

← work

Dibs

up · 630ms 2026 · Rails 8 · PostgreSQL · Kamal · Docker · AI-assisted

Ranks UCLA general-education courses by real grade history and emails you when a seat opens in one you are watching.

The decision

It runs on one 2.5 GB VPS, so the whole configuration is shaped by that ceiling. Postgres is set to 60 connections rather than the obvious 30, because Rails multi-database means a single thread holds four connections at once, and Kamal overlaps the old and new containers during a rollout — so the limit is breached exactly when deploying, and the symptom is the website failing rather than the jobs. That one is written down in config/deploy.yml so the next person does not have to rediscover it at 2am.

What it does not do

UCLA only, and it cannot enroll you. It watches and it emails. The grade data ends at Spring 2025, because that is the last term the public-records responses cover.

What an AI wrote

AI-assisted Claude wrote most of the code. The data model, the scraping budget, and the deployment sizing were decisions I made and can defend line by line.

Check it yourself

status measured 2026-09-01 10:03 UTC
Live
dibs.ge
Source
github.com/phineasfritsch/ge_snipe
Stack
Rails 8, PostgreSQL, Kamal, Docker