Personal & Blog Info

Blog Info:


  • Site is built with Jekyll a static site generator.
  • Posts are markdown based
  • Temporarily hosted via Netlify - with the aim to shift to a DigitalOcean instance soon for finer CI/CD control.

Personal Info:

  • Grew up in Singapore
  • First class Computer Science degree from University of Surrey
  • Started “programming” with Scratch 10+ years ago
  • Python soon after, Java from 2016 & C++ from 2018
  • (Ruby, Haskell, Prolog, Assembly, C#) along the way

First ever project:

First ever real programming project with a purpose was a chrome browser extension. My school at the time used an online Virtual Learning Environment (VLE) to set homework tasks and share files/etc. for classes.

The homework/task list was extremely inefficient - just a list of homework titles and when it was due:

[  Assignment  ]         | [Due Date]
Maths - Complete the ... | [Tomorrow]
English - Read from 3... | [Tomorrow]
Physics - Past paper ... | [ Friday ]
  • In order to mark the task as done, you had to open the task webpage.
  • In order to read the full description of the task, you had to open the task webpage, then open another link that opened a pop-up window with the full description.

This resulted in having to open a bunch of pages to see the full homework tasks and to be able to plan what work to do and when.

Even marking off tasks that you had already completed required opening another webpage!!

In order to fix this, I learnt the basics of JavaScript, JQuery and building chrome extensions. Using JQuery I called each of the links to tasks, and added extra columns to show the full description on the main page, as well as to add the mark as done button to each task.

This resulted in a page that looked more like this:

[  Assignment  ]                                 | [Due Date] | [Mark As Done]
Maths - Complete the handout                     | [Tomorrow] |      [X]
English - Read from 314 - 512, make notes        | [Tomorrow] |      [ ]
Physics - Finish past paper questions from class | [ Friday ] |      [X]

The implementation was messy, and since it loaded two pages for every task set - extremely slow. And whilst it wasn’t the biggest change, it streamlined the user experience, and so achieved its purpose.