Lesson Learned: Serving Code to Half-A-Million Users.

Suddenly, we got viral

Brief Architecture of the Website

Lesson 1: Compression

This is an illustration as I can’t retrieve the previous billing status and it is exaggerated.
No, this is not an endorsement. This is just a sample image of a presidential candidate.

Lesson 2: Database

Lesson 3: Browser Compatibility

  1. So, when you access the PilahPilihPilpres homepage, you will be enforced to generate the fingerprint before you can access the quiz. For some users, this will completely make them stuck on the homepage. (Thanks, @dani_yp for reporting)
  2. The question page is not fully protected from the user without fingerprint, thus user without one can access it if they got the URL right. However, even though it already fixed, the user sometimes still could finish the quiz without any fingerprint detected on their cookies.
Statistic from Google Analytics about the operating system used by our user.
  • Mistake #1: Do not create a problem that doesn’t even exist. Starts with the need for fingerprinting, in this case, it could be fully replaced by cookie. At the time I decide to use fingerprinting, I just afraid that people will delete the cookie thus generating a new different identifier. Turns out this is just me hallucinating that the majority of people even know how to do this. By ignoring this problem, I could just generate an identifier using UUID, put it on the cookie or local storage, and call it a day.
  • Mistake #2: Always have a fallback. Making user stuck on the home page is the worst thing could happen on a website. There should be a timeout in home page (if I decided to still use fingerprinting), after the timeout, the fallback identifier generation should kick-in (e.g. UUID or whatever the browser could do on client side). The backend also should have fallback whenever a request doesn’t contain any user identifier.

Lesson 4: Keeping Secret

Lesson 5: Website Serving

Several more lesson…


Fewer Back-end

Cloud Function with Datastore

Analytics Tool

User Interface

The first iteration of the UI already looks like the final one. Simply because we have no time to develop it further :D

You know when created a good product…

One of the users that really want to use the website

And then, …



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store