The future of the Filipino

For those with little to no context about the Marcos family, or for those willing to swallow the red pill and face the atrocities of the Marcoses head on, please spare an hour and two-thirds to watch The Kingmaker (2019 film) on YouTube (for Philippine viewers) or Amazon Prime Video.

I remember a distinct hot afternoon in my Grade 6 classroom in elementary school. Araling Panlipunan (Social Studies; AP) was not my favorite subject; I was a notorious class sleeper. But a specific chapter of Philippine history never failed to captivate me: the years of Philippine history spanning 1965 to 1986. The presidency and dictatorship of Ferdinand E. Marcos.

My AP teacher was rather strict. He would give us difficult exams that focus on our memorization of the topics. At the time, I had a rather cold opinion of him. I’d later grow up and realize that he was perhaps the most important teacher I ever had. His manner of teaching was always to the point and demonstrative — he would readily provide examples of whatever he was discussing, or tell stories about it.

He and his family was a direct victim of the various human rights violations during the Marcos reign. When the time of the year comes when the Marcos martial law period were to be discussed, our classes would spend a lot of time on personal experience stories and testimonies. Here, I spent a lot of time listening to the atrocities of the Marcos dictatorship. Having access to a decent (albeit slow) internet connection during my younger years, his stories were corroborated by numerous documented incidences of human rights violations during the Marcos dictatorship. At home, I would watch documentaries of Benigno Aquino Jr.’s assassination and the People Power Revolution. Until now, I can still find these sources as easy as I can find my post office’s phone number online (that is to say, extremely easy).

Of all his stories, what stood out to me were the torture methods. He would graphically describe to us (mostly 10 and 11 year-olds) the San Juanico Bridge, aptly named after a Marcos project, which involved forcing a person to stay straight above two separate chairs, cots, or other surface, supported only by their feet and the tip of their heads. If the person’s body failed to stay straight, they would be beaten up. These aren’t isolated incidents that occurred only to people my teacher knew, but it was a method used nationwide against other Marcos critics.

I believe that without the guidance of my AP teacher, I would have never been highly against Marcos. For that, I am forever indebted to him. I’m lucky enough to know of the atrocities done by the Marcoses, and lucky enough to have the privilege to speak about them. If I were alive in 1985, I would have surely been killed, along with other political dissenters. Until now, the stories and experiences of thousands of Filipinos worldwide about Marcos continue to be shared, and of course, I continue to listen. I even listened some stories of my grandparents, who lived in fear during the Marcos regime. For a lot of the Filipino electorate however, this is not the case.

It is no theory that the Philippine government contains corrupt officials; it is fact. With the introduction of Rodrigo Duterte to the presidential office in 2016, this has never been more true, or at least since the presidency of Gloria Macapagal Arroyo, Joseph Estrada, or perhaps Ferdinand Marcos himself. Thousands of documented extrajudicial killings and human rights violations, abuses of our justice system leading to the unjust arrest of members of the opposition as political prisoners, and the continuous discovery of billions of pesos worth in illegal drugs as the president fails his promise to eradicate them. This is only a small portion of what makes the corruption evident. Duterte has funneled a copious amount of money into troll farms, feeding mass disinformation to the public. It is no mystery why the public do not know of the administration’s atrocities: they are blinded by the darkness.

Of course, Duterte is not the only one who took advantage of the Filipino susceptibility to disinformation. For the 2022 elections, the son of Ferdinand Marcos is gunning for a seat as the country’s president. And, indeed, the apple does not fall far from the tree.

A person claiming to be a Marcos Jr. troll called Magic 89.9 (DWTM-FM) and confessed to participating in spreading propaganda to better the Marcos name just yesterday; the recording of which has gone viral online. Rappler has done a wonderful Twitter thread telling the story of Marcos Jr. supporters. Their testimonies are, of course, disheartening. It seems that Marcos Jr.’s whitewashing campaign was a success, much to the dismay of much of the Filipino people who still believe in the empirical evidence.

I woke up late in the evening yesterday only to be horrified by the quick-count results. Our hopes for a brighter future vanished as Marcos held the top spot as president. The next candidate lagged by over 10 million votes behind. A major blow to the morale of the educated, and to mine as well. Considering now the cases of vote buying, electoral fraud, falsified ballots, and destroyed ballots, I know that the COMELEC will do absolutely nothing in their power to address the documented and recorded instances of clear election violations. Why should I, when its officials are no more than Duterte followers. But perhaps the worst of it all: we had elected the son of a former dictator, convicted tax evader, liar, and butt-hurt spoiled child in office. As Vicky Morales put it in the GMA election special coverage:

Basically this election has rewritten the way elections are run in this country. Hindi na kailangan maglatag ng plataproma sa mga debate, hindi na kailangan mag-grant ng mga interview. Kailangan mo lang ng, siguro, tanyag na apelyido, solid yung machinery mo, yung social media, and maybe a long history in politics. (You no longer need to show your platform in debates, you no longer need to grant interviews. You only need, perhaps, a recognizable last name, solid machinery, social media, and maybe a long history in politics.)

Vicky Morales, GMA Election 2022 Special Coverage, 10 May 2022, 10:58 PM

I had thought about this outcome for a while now, and I’ve aired my concerns once on my Twitter account. Being extremely anti-Marcos and participating in preventing the ongoing historical revisionism done by Marcos supporters on Wikipedia has made me fear for my future. Perhaps in this new presidency, I may be charged for my Wikipedia edits. Like the people in my AP teacher’s stories, I could be tortured and killed by police or Marcos–Duterte bodyguards. Or perhaps, much like Primitivo Mijares who I had wrote about on Wikipedia, forcefully made to disappear. But perhaps my biggest fear of all is what’s next for the Filipino people.

With these shocking results, we have failed our ancestors. We have failed the millions of Filipinos who were victims of Ferdinand Marcos’ dictatorship. We have failed those tortured and killed. We have failed our own country. We have failed our own history. The supporters of Marcos Jr. claim that we choose to believe in “lies”, a claim that itself was fueled by the lies peddled by Marcos Jr. and his cronies. An empty can with a pebble makes a lot of noise; a comparable analogy to the skulls of these supporters.

Six years is a long time. Long enough to push us into deeper debt from the economic crises sustained during the Duterte presidency. Long enough to accumulate countless innocent children killed under the pretense of drug control. Long enough to whitewash the history of the Marcoses across the nation. But for some reason, not long enough to release Leila de Lima, a political prisoner. No one knows what is in store for us; Marcos Jr. never even mentioned a platform to begin with other than hollow promises. We could be brought further into debt. Scores of Filipino families can be brought further into poverty. The Philippines could become a completely authoritarian state. At this point, we can only speculate, but I worry for the fate of the Filipino people.

But the fight does not end here. We’ll take this injustice to the Filipino people to the streets. We’ll fight to preserve the proven and factual truth — not the fodder that the Marcoses feed the unsuspecting masses. We’ve done it once, and we’ll do it again. Never again should a Marcos be in charge of the country. Never again should we allow thieves to set foot in the Malacañang Palace. This is our country. We won’t let them steal it from us too.

Hindi ako natatakot. Hindi ako kinakabahan.

Vice President Leni Robredo, Feburary 9, 2022

I am ready to fight for our people, our culture, and our history. If not on the streets, on the digital battleground — the heart of the disinformation campaigns that attempt to cleanse the Marcos name of their crimes. The battle has only just begun. Papunta palang tayo sa exciting part.


An extremely comprehensive guide to running your own school elections with old software

Nothing drives me more crazy than abandonware.

A modified version of Halalan tweaked for the 2021 PSHS-CVC SSG Elections. It includes a few graphical and functional changes, the most prominent in this screenshot being the notice right before the form box.

Facilitating school elections is no easy feat. Not because it’s hard for students to understand how to vote, but because the software is hilariously painful to deal with. The software currently suggested by PSHS-CVC teachers, and also used by the University of the Philippines, Halalan, is 9 years old as of writing. It relies on older software, and makes life extremely difficult. But no worries, since this “guide” of sorts will help you through everything you need to know.

Do note, however, that you will be severely violating some common security practices for the sake of compatibility. It is suggested that you move on to a different platform for elections, or else you might compromise the elections’ security.

A screenshot of the Halalan GitHub repository, dating its last commit back to September 19, 2012.

Halalan, literally “election” in Filipino, is an open-source voting platform developed by University of the Philippines students in early 2006. It supports both English and Filipino (albeit the language configured on the server side) and the first-past-the-post voting.

Getting started

Prior to literally anything at all, you should probably scout for where you’re going to host the election server. As a small benchmark, we ended up using a single-vCore, 2 GB RAM VPS for the elections. OVH gave this exact configuration and was also available on their Singapore datacenter, which made latencies to the Philippines extremely low. Luckily, this dedicated server allowed us to perform the elections smoothly with peak RAM usage hitting only up to 40%. Granted, we did spread out the election period quite a bit in order to decrease simultaneous traffic, but the server would have been perfectly capable of handling a hundred voters at the same time.

That said, if you’re planning to run this on an existing server that may have its own web server already installed, you might want to use Docker to completely isolate the software versions that you need. Spoiler alert: unless you’re using something as ancient as Ubuntu 12.04, it likely won’t run. Halalan requires PHP 5, which was declared EOL at the start of 2019. Luckily there’s not much restrictions on what MySQL server to use, but we’ll get to that later.

For now, you can get away with installing Apache HTTP Server (httpd) 2.4 together with PHP 5.6. This highly depends on what flavor of Linux you have installed, so I’ll leave this up to you. If you happen to be using Docker, your life will be made easy if you just use the provided PHP 5.6 images. But then there’s a catch! You need gd (with at least PNG and JPEG support so that you won’t lose your mind) and the rewrite module for httpd. So you’ll need to get those installed and enabled as well.

After installing httpd and PHP 5.6, you’ll need to get MySQL up and running. I’d actually advise against using MySQL, and instead use a fork of it, MariaDB, as it contains significant performance improvements which can help make the elections much more smooth. The latest version of MariaDB (currently 10.6.4) works perfect for the job, as it is backwards compatible with the required MySQL version for Halalan.

Now, however, is where I introduce the first dealbreaker for Halalan: you must disable strict mode in your SQL server’s configuration. Merely attempting to open the website without disabling strict mode will show an error immediately on load. That’s definitely something you should not be looking for.

After disabling strict mode, you can now begin installation of Halalan. You can download the latest version as a zip file from GitHub, or just clone the repository on your server. You’ll need to extract the repository onto your document root (probably /var/www/html) to get the files in and then modify the system/application/config/database.php file to set up the database. After entering your configuration, the installation menu should now be accessible. This is located in the /install subdirectory of your web server. Halalan will present you with a few options for setup.

The configuration screen for Halalan.

The configuration here is mostly up to you. For the SSG elections, we went with PINs disabled, candidate details showing, and password lengths at 10 characters. This would make the election process simple and straightforward for students, without compromising security.

Here comes the second dealbreaker for Halalan: passwords are stored as SHA-1 hashes. I don’t have to go in-depth on how insecure SHA-1 is since there’s hundreds of articles about that already. When you’re dealing with elections, you really want to aim for the best security possible. SHA-1 just doesn’t make that any helpful. You can spend some time in the depths of the code trying to replace all the instances of SHA-1 hashing with SHA-256, or better yet Blowfish with password_hash, but this takes time, effort, and technical knowledge of what you’re doing and what you might get wrong. Granted, all passwords are automatically generated by Halalan, so this might not be an issue for you as long as you tightly secure your server.

Once you’ve configured your server and moved the configuration file to its final destination, you will now be able to configure your elections. Congratulations! You can already stop here if you really just wanted to play around. If you want to use this in production though, you need to secure your server quite a bit before you get the elections going.

Locking down

You might be tempted to just start the elections with this setup. If you do that, you’ll be leaving some vital components exposed to the wild by default (at least on Debian or Ubuntu). Your next step would be to open up a firewall to allow access only to ports 80 and 443 (if you’re using SSL, which you should). You might wonder just how the hell are you supposed to control the server if you block off all ports. I present to you the wonders of ZeroTier: a service that’s kind of like Hamachi, but completely free and open source.

ZeroTier opens up a virtual private network between you and the server, and it counts as a completely separate interface, which means your firewall can easily whitelist that interface. You can do things like access the SSH and SQL ports over the private connection without risking exposure to the rest of the internet. There’s separate tutorials for this, so I’ll spare you the details on how exactly this is done.

After getting ZeroTier set up, whitelisting ZeroTier connections in nftables is as easy as two lines:

udp dport 9993 accept  # ZT communication port
iifname zt* accept     # or jump to a different chain

When you’re done with that, you’ve mostly secured yourself against intrusion. It is still best to follow other security practices though, such as only allowing public key authentication with SSH and disallowing root logins for both SSH and SQL.

Next step is to get a domain. A cheap one if possible. The reason why you’d likely want to register a domain is because Let’s Encrypt provides SSL certificates completely for free, and because requesting an SSL certificate IP address is extremely expensive. If you had the money to buy an SSL certificate for your election server’s IP address, you might as well have bought a domain name, heck, even invested in a custom-made election server.

Your focus now is to improve on client-side security, which means adding in an SSL certificate so that the elections can be conducted through HTTPS. Of course, you can skip this option entirely, but you might lose voter trust if they find out that their votes are being transmitted unencrypted through the internet. You can also opt for a self-signed certificate which, although is better than HTTP, will still throw warnings for a browser.

That’s it!

A diagram with the complete infrastructure used by the PSHS-CVC SSG Election server.

If you were able to follow all those steps, then you’re 100% ready for an actual election using Halalan. The only thing left now is to add in the data through the administration panel, and to begin the elections yourself. For the SSG elections, I opted not to use the in-built results panel (since the candidates preferred to keep the actual count of votes hidden) and instead created my own live results dashboard using Grafana. Such a thing is out of the scope of this guide, however it’s not that hard to set up if you know how to deal with SQL and Grafana itself.

If you did happen to stumble upon a few issues, remember that Halalan is nearly 9-year-old software. It is expected to break at this point given changes to the other software and services that it depends on now. In case you do end up giving up and moving on, you can always turn to GitHub for some alternatives that might fit your use case.

The total cost of everything ended up at around US$ 3 and my sanity. Not bad, if I do say so myself.

That’s all for now. Good luck with getting your elections running!