The Work
0
chapters
0
languages
0
developer who didn't know when to stop
Real shop. Real stock. Real users who get genuinely annoyed when it breaks. That last part is called production. Turns out it teaches you more than any tutorial.
Login, stock tracking, PDF exports, subscription tiers — yes, a paywall, for a single shop. The over-engineering came from enthusiasm. Which is the most forgivable reason.
↳ the subscription paywall serves exactly one business. brilliant.

move cursor
$ docker compose up --build
[+] Building backend...
[+] Spring Boot starting on :8080
[+] Neon PostgreSQL connected
[+] Frontend ready on :5173
✓ Smart Campus Operations Hub online

A campus is a chaotic organism. Rooms double-booked. Schedules in seventeen formats across four people's laptops. Spring Boot 3.4 was the enterprise hammer. Turns out sometimes the hammer is exactly right.
Java's rigidity is also the point. It won't let you misplace things. Which is occasionally infuriating, and occasionally exactly what you needed.
↳ some rooms are bookable in the backend. the frontend got busy. deadlines were involved.
The OULAD dataset tracks thousands of real students through an online course — what they click, when they submit, and whether they pass or fail. The question: can you see the ending in the first few weeks?
Two languages. Staged pipeline. Reproducible. There's also a 04_scratch folder where the actual thinking happened — and which looks nothing like the other four.
↳ models live in notebooks. gap between pipeline and product: ~2 years + an ethics board.
Load, clean, merge 500MB of CSV. Never touch the originals.
Distributions, summaries. Making statisticians feel at home.
Hypothesis tests. ANOVA. Chi-square. The classics.
Machine learning models. Can we predict who fails by week 3?
Most businesses run promotions on vibes. "Should we do 20% off?" "Maybe?" That's not a strategy. This system replaces the vibes with forecasting, LLM-grounded reasoning, and an ROI simulator.
↳ garbage in, confident-sounding garbage out. the LLM phrases it beautifully. which is almost worse.
Historical metrics. What happened.
Short-term forecasts. What will happen.
LLM-grounded advice. What to do about it.
ROI curves. Was the 20% off idea good?
Dagster. Wires the others. Gets the tab.


There's a specific suffering that comes from implementing authentication for the fourth time in a year. At some point the rational response is: write it once, write it properly, make it a module.
PASETO over JWT. Argon2id over bcrypt. Kafka for async email — so the response returns immediately and the email happens in the background. Small things. Large differences in how an app feels.
↳ "modular" is partly retrofitted honesty. it started as something else. that counts.
Argon2id hash. No MD5. We are not animals.
Kafka fires async. Response returns immediately.
PASETO access token (15min) + refresh (7 days).
Short-lived by design. Long-lived by convenience.
Refresh token invalidated. Tokens aren't immortal.
— fin —
More being built.
probably over-engineered. definitely working.
Hariswara Sidambaram · Colombo, Sri Lanka · 2026