← Entry

The Work

Five things built.
Several regrets.
No refunds.

0

chapters

0

languages

0

developer who didn't know when to stop

Scroll
Chapter 01Inventory

Someone needed
a spreadsheet.
I built a SaaS.

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.

Next.js 16SupabaseTanStack TablePDFKit

↳ the subscription paywall serves exactly one business. brilliant.

Seetha Dashboard

move cursor

Chapter 02Enterprise
PAF-SCOH — bash

$ docker compose up --build

[+] Building backend...

[+] Spring Boot starting on :8080

[+] Neon PostgreSQL connected

[+] Frontend ready on :5173

✓ Smart Campus Operations Hub online

pom.xml lines you didn't write today: 0_
PAF-SCOH dashboard

They said Java.
I Googled "career change".
Then I used Java.

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.

Spring Boot 3.4Java 21React 19 + VitePostgreSQLDocker

↳ some rooms are bookable in the backend. the frontend got busy. deadlines were involved.

Chapter 03Data Science

500MB of
student data.
Answer: sort of.

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.

PythonRJupyterrenvGit LFS

↳ models live in notebooks. gap between pipeline and product: ~2 years + an ethics board.

00_
Data PipelinePython + R

Load, clean, merge 500MB of CSV. Never touch the originals.

01_
DescriptiveR

Distributions, summaries. Making statisticians feel at home.

02_
InferentialR

Hypothesis tests. ANOVA. Chi-square. The classics.

03_
PredictivePython

Machine learning models. Can we predict who fails by week 3?

Chapter 04AI Systems

Five agents walk into
a Docker network.
The orchestrator gets the tab.

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.

ANLYSAnalysis Agent

Historical metrics. What happened.

PREDPrediction Agent

Short-term forecasts. What will happen.

RECMRecommender Agent

LLM-grounded advice. What to do about it.

OPTOptimizer Agent

ROI curves. Was the 20% off idea good?

ORCHOrchestration Agent

Dagster. Wires the others. Gets the tab.

ANLYSPREDRECMORCH
Weekly Report Pipeline
Sales Forecast AI
Sales Forecast AI
FastAPIDagsterLlama 3.3 70BDockerAWS S3
Chapter 05Infrastructure

I wrote login
for the last time.
In Go. Properly.

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.

access tokenv4.local.Zm9yZ290X215X3Bhc3N3b3Jk← hover me
GoFiberPostgreSQLKafkaPASETOArgon2id
01Register

Argon2id hash. No MD5. We are not animals.

02Verify Email

Kafka fires async. Response returns immediately.

03Login

PASETO access token (15min) + refresh (7 days).

04Refresh

Short-lived by design. Long-lived by convenience.

05Logout

Refresh token invalidated. Tokens aren't immortal.

— fin —

End of Chapter One.

More being built.

probably over-engineered. definitely working.

Hariswara Sidambaram · Colombo, Sri Lanka · 2026