The Website

This website ( is one of the biggest projects that I’ve undertaken. In 2019, I decided to spend some money, buy a domain, and guilt-trip myself into working on a website. I’ve learned so much about the internet and how web technologies work. I’m sure that I wouldn’t have learned as much if I hadn’t decided to publish my work.

Blog Posts

Here are some posts on my journey (I’ll be adding more eventually):

  1. Why Won’t My Images Load - I briefly describe the process of redesigning my website and struggling with Cloudflare’s aggressive caching policy.


I’ve learned so much through this endeavour and I’m glad that I forced an investment. I urged me to leave my comfort zone and start working with Web Technologies. I am now motivated to leverage my learnings and continue to create software that is beneficial to everyone and also, open and accessible.


Screenshot of the TicTacToe app.
A minimal, modern take on the classic game.
  1. Link to working demo.
  2. Link to GitHub repository.

My First Progressive Web App

I wanted to see how viable Progressive Web Apps really are. As it turns out, they can do quite a lot! If you do not need to access specific native controls of a device, you can get away with a PWA.

I made this as an experiment to see how far I can go. The project is complete enough as a proof of concept. It is not finished. And I don’t think I need to complete it. I’ve learned a lot from this project. Some of these things include:

  1. Converting a website into a Progressive Web App.
  2. Allowing a website to work offline using Service Workers.
  3. Adding an image to the link preview for a website.
  4. Creating icons for the installable versions of the website/app.
  5. Using modules properly in TypeScript.

I’ll Revisit It Later

I’m not done with this project yet. I am a bit fatigued though, so I will return to it in the future. The reasons to do so are manyfold:

  1. I have to implement an AI player. I have some ideas in mind but I’m not motivated right now.
  2. Currently the UI is event-based. I plan to make the main thread poll for event changes. Otherwise, it would be tedious to incorporate player versus CPU functionality into the app.
  3. The current end screen for a player win is too dull. I have the basic canvas in place. I have to add animations to it.


It was a really satisfying experience for me. I was absolutely thrilled to be able to install my app on my phone as a (near-)native app! This proved to me that PWAs are definitely a viable way to ship software. Despite the limitations, I plan to proceed in this direction and I plan to make more apps eventually.