Vicky Hariadi

The work

One project, and I'm still on it.

Everything else I’ve built was inside a company, under someone else’s name. This is the one I’ve owned end to end. It’s also the only honest way I know to show what staying actually looks like.

One. That's the argument, not the apology.

The project

A school exam system

Exams for an Indonesian madrasah, an Islamic primary school. Children sit them in a browser; teachers mark them and print the report cards in the same place. Years four to six, every subject, every term.

The shape of it

Who's on it
Around five hundred students on the roll and thirty-odd teachers. Years four to six sit the exams. Classes are split banin and banat, boys and girls, and each homeroom teacher owns one side of that.
Live since
September 2025. First commit that July; first real exam week that September.
How it reaches them
A browser, on whatever device is in the room. On a phone it installs itself to the home screen, so there’s no app store in the way.
What it's made of
Ruby on Rails and Hotwire, PostgreSQL, Docker behind a Cloudflare tunnel. Nothing exotic. Exotic is a maintenance bill.

What it does

  • Students sit the exam in a browser, against a clock that ends when the timetable says it ends.
  • Five kinds of question, including ones a child draws on screen with a finger.
  • Multiple choice marks itself. Written and drawn answers queue up for a human.
  • Teachers grade from a filtered list: one subject, one class, one gender at a time.
  • Homeroom teachers generate the report cards and print them.
  • A proctor reads out a code. Nothing opens until it’s typed in.
  • A class-wide ledger: every student down the side, every subject across the top.
  • At the end of the year the whole school moves up a grade in one go.
What a child sees, mid-exam
What the teacher sees afterwards

Sketches, not screenshots.

How you'd actually judge it

Exam seasons, not launch dates

A launch date proves nothing. Anything works on the day you demo it. An exam week is a deadline that cannot move: a few hundred children sit down at the same hour, and it either holds or the school goes back to paper.

Five so far, and the weeks in between.

  1. Sep – Oct 2025

    The first one

    Mid-semester exams. Fifteen subjects, three year groups, and a system nobody had ever used. I shipped the proctor’s code lock and the marks export during that fortnight, between subjects.
  2. Nov 2025 – Jan 2026

    End of the first semester

    Second season, and the first where teachers were grading inside it rather than watching it. Report cards came out the other end.
  3. Mar 2026

    Mid-semester, second term

    By now an exam week had a shape. The work moved from make it work to make it less work, which is a much better problem to have.
  4. May 2026

    An olympiad, on the same rails

    The school ran a competition trial through it. Nobody designed for that, which is usually the moment you find out whether a thing generalises or just coped.
  5. Jun 2026

    End of year, and the leavers

    Final assessments for years four and five, plus the madrasah exam for the class going out the door. Twelve subjects for year six alone.
  6. Aug 2026

    Between seasons

    No exams, most of the work. The question editor, the score ledger and the year-end promotion all came out of these quiet weeks.

Nobody is impressed by a launch. Ask what it looked like on the fourth exam week.

The part I'd point at

For a year, every question went in through me.

The night before an exam day, I’d take the teachers’ questions and load them in myself: one set per subject, per year group, per day. By the end of the school year that was more than a hundred and thirty sets, typed in by me, usually after dinner.
Which is fine, until you look at what it actually is: a single point of failure with my name on it. The school couldn’t run an exam without me being awake.

Staying is not the same as being needed.

So in August I built the teachers their own question editor. They write, edit and publish their own sets now. It saves as they type, and a question that already has a child’s answer against it can’t be yanked out mid-exam.
It cost me the job I’d been doing every exam night for a year. That was the point.

That's what "no lock-in" looks like written down.

In the open

And one thing I stopped working on.

The section above is about handing work back. This is the other half of the same habit: knowing when something is actually done, and leaving it alone instead of pretending it’s still alive.

Untouched since 2020. That isn't neglect.

nano

A small HTTP router for Go: the part of a web application that decides which piece of code answers which address. Around fourteen hundred lines, and you can read every one of them in an afternoon.

I wrote it in 2020 to learn Go properly, then took it further than learning needed: route groups, middleware, request binding and validation, CORS and gzip, eleven hundred lines of tests, and a manual long enough to build something real from.
What it’s good for now is the thing I wanted when I started. Someone learning a language gets a to-do list and a hello world, and neither shows you how a working library is put together on the inside. This one is small enough to hold in your head and complete enough to fork.
Public since
January 2020. Nine months of work, and the last commit was that October.
Where it got to
Tagged v1.0.0-alpha and left there. It never reached 1.0, and it was never going to.
What's in it
About 1,400 lines of Go, and 1,100 more of tests. MIT licensed, so fork it, take it apart, ship it.

Nobody's business runs on it.

Which is the whole difference. A school depends on the system above, so it gets my evenings. A router that exists to be read doesn’t need me standing over it. It needs to sit still and stay readable.

Before you ask

What it isn't

It's one school. It hasn't been sold to a second one, and it isn't a product.

It isn't finished, and I can name the parts. A lockdown feature wired up and deliberately switched off. Two test frameworks where there should be one.

I didn't write a single question in it. The teachers did all of that. I built the room they do it in.

A list like that is what owning something looks like. The alternative is a developer who tells you it's all fine.

Your turn

Want that person on yours?

You don't need a system this size.

You need someone who'll still be there on the fourth exam week.

Let's talk

Goes to my WhatsApp. I reply myself.

Say hi