back to homepage

About

A history of this website: This personal website of mine has gone through numerous iterations. Previously, I hosted this website on a spare laptop running Apache but have since moved to Vercel for hosting—forwarding ports, fiddling with DNS records, generating HTTPS certificates with Let's Encrypt, configuring my mail server daemons Postfix and Dovecot, and everything else associated with server administration were an absolute nightmare. I have not so fond memories of spending hours reading through my server logs, trying to figure out why my emails didn't forward. I remember, after debugging for days, finally narrowing the problem down to my ISP blocking the port for SMTP. I was forced to use this service called GhettoSMTP. I also remember using a DigitalOcean's droplet at some point for hosting once. The only upside of all this fumbling around is that I learned a lot about server administration.

I believe initially I used a handwritten SSG in C++ to generate my website, since I was a tad bit obsessed with C/C++ those days and dutifully endeavoured to write all my software projects in C++. I don't have those files anymore, unfortunately. I proceeded to rebuild my website in a dozen different web frameworks (Next.js, Svelte, Vue.js, etc.) before deciding to write my own in Node.js. It crawls for Nunjucks templates and blog posts written in my own Markdown-like document language. It uses Babel for JavaScript transcompilation and miniaturization, highlight.js to syntax highlight blocks of source code, and MathJax for rendering the LaTeX embed in my posts. I have a Node.js script that hosts a HTTP development server which injects a bit of JavaScript into all the HTML. This JavaScript receives websocket commands from a websocket server that I host alongside the HTTP one. When I edit a post or webpage that belongs to this website, the script is notified and the websocket server sends a command to the embed JavaScript to refresh the page. This is basically poor man's live reloading. A handful of randomly scattered shell scripts aid in my development process.

Tools I've Used