Database Migration: Knex vs TypeORM vs Sequelize

28th January 2020

I recently joined a full-stack team, and we decided to shift a prototype app into something that scales better in the future. There were a few decisions made about how we might achieve this goal, one of which is to introduce database migration to our CI/CD pipeline. This blog post will cover the key findings and the final implementation around it.

It is worth noting that at this point, the decision has already been made to go with AWS's Aurora relational database. This is due to there being a lot of relations between data so picking a relational database made sense, and picked Aurora to reduce the amount of maintenance. Although it is possible to hack around and use a document based database instead, but it just means more data duplication and introduces more maintenance headaches.

VS Code, Svelte and Prettier set up

4th January 2020

I recently tried to set up a new project to try out Svelte in more depth. I search everywhere but couldn't get VS Code (e.g. on file save) and Prettier CLI (e.g. running npm run lint) working at the same time. After hours of trial and error, I finally got it to a place I'm happy with. Hopefully, this will help anyone in a similar position.

Software developers' learning dilemma

2nd December 2019

The world of tech is moving fast, maybe too fast! Trying to keep up with everything is stressful, to say the least, might even call it impossible to be realistic. There are a countless number of frameworks and libraries being update each day and new ones being released as well. Yes, maybe is more of a JavaScript problem, but the same problem more or less applied to other programming languages as well. So how can we find time to enhance our existing skills to be a better developer, while the backlog of learning constantly growing? We are being bombarded with information each day, sooner or later we'd miss demotivated and lose the urge to learn. I've gone through all those stages and feel I have a pretty good balance on how to learn daily but not risk burn out.

Awesome tools to use in personal projects

1st December 2019

A developer who doesn't work on personal projects isn't a true developer! Just kidding! But working on small side projects is an awesome way to solidify and improve our craft. It is both practice and exploration, this is the best opportunity for you to pick up on something others might not know about! In this blog post, I will walk through some of my favourite tools and what I feel is missing in my toolbox.

Linux is still Linux in 2019

8th November 2019

The experience of installing Linux and getting it running on a machine is just as inconsistent as a year ago and years before that. There were visible improvements, but still plenty room for improvements compared to Windows and Mac OS. I encountered many issues during my little experiment, I ended up switching back to my old setup at the end.

Creating TV Apps With Web Technology

26th August 2019

Ever wondered how TV apps are made? How it differs from the usual web app or mobile app development? I was fortunate enough to work on TV platforms for about year now, and there is some exciting stuff for me to share around this subject. I will first give an introduction on TV platforms, then explain why we decided to use web technology to build TV apps, finally I'll go through some of the challenges we faced that are specific to TV app development.

Micro Frontend: An Introduction

26th August 2019

Micro-frontend is not a new concept, it is simply a rebranded idea which is now a new buzz word. In this blog post, we'll talk about what it is and why it is here, but more importantly, I hope to illustrate that people shouldn't shy away from micro-frontend because they probably know a lot about the subject already.

Self Reflection: How To Run Coding Sessions As A Volunteer

24th August 2019

After almost 4 months of volunteering, I've learned that running a weekly session for one volunteer is too much. Also don't try to teach big topics that span over a few sessions, because people will drop in and out. They will struggle after missing sessions and either stop attending or come in feeling very lost the next time. People love coding games and challenges instead of tasks with vague requirements like "make a website that uses HTML form". Going forward I'm going to try smaller bite-sized sessions so people can drop in and out more freely.