<![CDATA[Melvin K.]]>https://melvinkoh.meRSS for NodeWed, 30 Sep 2020 13:09:41 GMT60<![CDATA[Testing Stripe Webhook Handlers]]>https://melvinkoh.me/testing-stripe-webhook-handlers-ck9zb9ezv00kzbls18l363ocshttps://melvinkoh.me/testing-stripe-webhook-handlers-ck9zb9ezv00kzbls18l363ocsSat, 09 May 2020 07:32:34 GMT<![CDATA[Memoisation In Python - Exploring @lru_cache And Its Control Knobs]]>https://melvinkoh.me/memoisation-in-python-exploring-lru_cache-and-its-control-knobs-ck9fgbgjt060ocss17pm4b5yihttps://melvinkoh.me/memoisation-in-python-exploring-lru_cache-and-its-control-knobs-ck9fgbgjt060ocss17pm4b5yiSat, 25 Apr 2020 09:58:44 GMT<![CDATA[Writing Backward-Compatible Schema Migrations - How and Why?]]>https://melvinkoh.me/writing-backward-compatible-schema-migrations-how-and-why-ck8bei7a700ojres1iv0pqpjbhttps://melvinkoh.me/writing-backward-compatible-schema-migrations-how-and-why-ck8bei7a700ojres1iv0pqpjbSat, 28 Mar 2020 09:17:12 GMT<![CDATA[Understanding The Python Reduce Function With Examples]]>https://melvinkoh.me/understanding-the-python-reduce-function-with-examples-ck7mzz8l200na8ss1ogdvw5c5https://melvinkoh.me/understanding-the-python-reduce-function-with-examples-ck7mzz8l200na8ss1ogdvw5c5Wed, 11 Mar 2020 07:24:04 GMT<![CDATA[Debugging: Using PDB in Dockerized Environment]]>https://melvinkoh.me/debugging-using-pdb-in-dockerized-environment-ck5c802yd019sqps1203cmdaahttps://melvinkoh.me/debugging-using-pdb-in-dockerized-environment-ck5c802yd019sqps1203cmdaaMon, 13 Jan 2020 09:03:48 GMT<![CDATA[Solving Producer/Consumer Problem of Concurrent Programming in Python]]>https://melvinkoh.me/solving-producerconsumer-problem-of-concurrent-programming-in-python-ck3bqyj1j00i8o4s1cqu9mfi7https://melvinkoh.me/solving-producerconsumer-problem-of-concurrent-programming-in-python-ck3bqyj1j00i8o4s1cqu9mfi7Sat, 23 Nov 2019 15:47:17 GMT<![CDATA[My Personal Guide To Choosing Technologies: Minimizing The Risks of Design Choice]]>https://melvinkoh.me/my-personal-guide-to-choosing-technologies-minimizing-the-risks-of-design-choice-ck3069ixb00h525s18ctzi7h4https://melvinkoh.me/my-personal-guide-to-choosing-technologies-minimizing-the-risks-of-design-choice-ck3069ixb00h525s18ctzi7h4Fri, 15 Nov 2019 13:22:31 GMT<![CDATA[Dockerizing and Deploying Nuxt.js SSR Apps To AWS ECS]]>https://melvinkoh.me/dockerizing-and-deploying-nuxtjs-ssr-apps-to-aws-ecs-ck1egcwoi00dmjfs1w2cr3shqhttps://melvinkoh.me/dockerizing-and-deploying-nuxtjs-ssr-apps-to-aws-ecs-ck1egcwoi00dmjfs1w2cr3shqSun, 06 Oct 2019 03:54:26 GMT<![CDATA[We bridged the gap between Slack and in-house management without paying the hefty cost]]>https://melvinkoh.me/we-bridged-the-gap-between-slack-and-in-house-management-without-paying-the-hefty-cost-cjyf6hu0z000tnas1n6qx1td3https://melvinkoh.me/we-bridged-the-gap-between-slack-and-in-house-management-without-paying-the-hefty-cost-cjyf6hu0z000tnas1n6qx1td3Tue, 23 Jul 2019 02:06:59 GMT<![CDATA[Filtering Dictionary In Python 3]]>https://melvinkoh.me/filtering-dictionary-in-python-3-cjyeapc3800052fs1gxx2n0ubhttps://melvinkoh.me/filtering-dictionary-in-python-3-cjyeapc3800052fs1gxx2n0ubMon, 22 Jul 2019 11:17:01 GMT<![CDATA[My Journey Integrating Google Calendar (G-suite) in Node.js]]>https://melvinkoh.me/my-journey-integrating-google-calendar-g-suite-in-nodejs-cjyeahq7u00032fs1gpz9vjuwhttps://melvinkoh.me/my-journey-integrating-google-calendar-g-suite-in-nodejs-cjyeahq7u00032fs1gpz9vjuwMon, 22 Jul 2019 11:11:06 GMT<![CDATA[Hi, Github! Bye, Bitbucket!]]>https://melvinkoh.me/hi-github-bye-bitbucket-cjyea60z4003muns1poh8mwrhhttps://melvinkoh.me/hi-github-bye-bitbucket-cjyea60z4003muns1poh8mwrhMon, 22 Jul 2019 11:02:01 GMT<![CDATA[Dive Into The Performance of mongoose-lean-virtuals — A Mongoose Plugin That Enables Virtuals in Lean Mode.]]>https://melvinkoh.me/dive-into-the-performance-of-mongoose-lean-virtuals-a-mongoose-plugin-that-enables-virtuals-in-lean-mode-cjye9venx000e4cs1ibhvpp3vhttps://melvinkoh.me/dive-into-the-performance-of-mongoose-lean-virtuals-a-mongoose-plugin-that-enables-virtuals-in-lean-mode-cjye9venx000e4cs1ibhvpp3vMon, 22 Jul 2019 10:53:45 GMT<![CDATA[Enabling Virtuals In Mongoose Lean Mode (in a FeathersJs service)]]>https://melvinkoh.me/enabling-virtuals-in-mongoose-lean-mode-in-a-feathersjs-service-cjye9ir3q003cuns1ujg06qtrhttps://melvinkoh.me/enabling-virtuals-in-mongoose-lean-mode-in-a-feathersjs-service-cjye9ir3q003cuns1ujg06qtrMon, 22 Jul 2019 10:43:55 GMT<![CDATA[Firebase Auth using Facebook Log-In in Expo, React Native]]>https://melvinkoh.me/firebase-auth-using-facebook-log-in-in-expo-react-native-cjye98uzv00064cs18lvfmqvdhttps://melvinkoh.me/firebase-auth-using-facebook-log-in-in-expo-react-native-cjye98uzv00064cs18lvfmqvdMon, 22 Jul 2019 10:36:13 GMT<![CDATA[PostgreSQL Connection Pooling and Load Balancing with PgPool-II Cluster (Updated)]]>https://melvinkoh.me/postgresql-connection-pooling-and-load-balancing-with-pgpool-ii-cluster-updated-cjye8vknp001g1ls14xx0cirwhttps://melvinkoh.me/postgresql-connection-pooling-and-load-balancing-with-pgpool-ii-cluster-updated-cjye8vknp001g1ls14xx0cirwMon, 22 Jul 2019 10:25:53 GMT<![CDATA[How I worked as a software engineer while pursuing my degree?]]>https://melvinkoh.me/how-i-worked-as-a-software-engineer-while-pursuing-my-degree-cjye862mz001zuns140je4wglhttps://melvinkoh.me/how-i-worked-as-a-software-engineer-while-pursuing-my-degree-cjye862mz001zuns140je4wglMon, 22 Jul 2019 10:06:03 GMT<![CDATA[Why Refactoring? How to Refactor/Restructure Python Package?]]>https://melvinkoh.me/why-refactoring-how-to-refactorrestructure-python-package-cjye7od5v001quns1yi4tcttxhttps://melvinkoh.me/why-refactoring-how-to-refactorrestructure-python-package-cjye7od5v001quns1yi4tcttxMon, 22 Jul 2019 09:52:17 GMT<![CDATA[Concurrent Programming in Python is not what you think it is.]]>https://melvinkoh.me/concurrent-programming-in-python-is-not-what-you-think-it-is-cjye71swd001juns10c7jgitzhttps://melvinkoh.me/concurrent-programming-in-python-is-not-what-you-think-it-is-cjye71swd001juns10c7jgitzMon, 22 Jul 2019 09:34:45 GMT<![CDATA[Reducing Memory Footprint While Creating Archive in Django]]>https://melvinkoh.me/reducing-memory-footprint-while-creating-archive-in-django-cjye6p8eo00021ls1vkq93ej4https://melvinkoh.me/reducing-memory-footprint-while-creating-archive-in-django-cjye6p8eo00021ls1vkq93ej4Mon, 22 Jul 2019 09:24:58 GMT<![CDATA[Wiring Communication Between Microservices]]>https://melvinkoh.me/wiring-communication-between-microservices-cjye6j5ad002nvvs1klq1rm3ohttps://melvinkoh.me/wiring-communication-between-microservices-cjye6j5ad002nvvs1klq1rm3oMon, 22 Jul 2019 09:20:14 GMT<![CDATA[Is going serverless a right choice? A Live Chat Solution with Firebase]]>https://melvinkoh.me/is-going-serverless-a-right-choice-a-live-chat-solution-with-firebase-cjye69x1j0014uns1dk30enoxhttps://melvinkoh.me/is-going-serverless-a-right-choice-a-live-chat-solution-with-firebase-cjye69x1j0014uns1dk30enoxMon, 22 Jul 2019 09:13:04 GMT<![CDATA[Is it still possible to scrape Facebook data? Yes. It is!]]>https://melvinkoh.me/is-it-still-possible-to-scrape-facebook-data-yes-it-is-cjye5wpcn0026vvs1i1n2xobshttps://melvinkoh.me/is-it-still-possible-to-scrape-facebook-data-yes-it-is-cjye5wpcn0026vvs1i1n2xobsMon, 22 Jul 2019 09:02:47 GMT<![CDATA[Building a Serverless Vuejs App with Firebase Firestore]]>https://melvinkoh.me/building-a-serverless-vuejs-app-with-firebase-firestore-cjye5jcd5001xvvs1791qnxt0https://melvinkoh.me/building-a-serverless-vuejs-app-with-firebase-firestore-cjye5jcd5001xvvs1791qnxt0Mon, 22 Jul 2019 08:52:24 GMT<![CDATA[ES6: Promisifying The Native Way (with Strophe as example)]]>https://melvinkoh.me/es6-promisifying-the-native-way-with-strophe-as-example-cjye5dj7u001uvvs1bf89ilowhttps://melvinkoh.me/es6-promisifying-the-native-way-with-strophe-as-example-cjye5dj7u001uvvs1bf89ilowMon, 22 Jul 2019 08:47:53 GMT<![CDATA[JWT Authentication in Vue.js and Django Rest Framework - Part 2]]>https://melvinkoh.me/jwt-authentication-in-vuejs-and-django-rest-framework-part-2-cjye5a3ss001qvvs1fi123163https://melvinkoh.me/jwt-authentication-in-vuejs-and-django-rest-framework-part-2-cjye5a3ss001qvvs1fi123163Mon, 22 Jul 2019 08:45:13 GMT<![CDATA[JWT Authentication in Vue.js and Django Rest Framework - Part 1]]>https://melvinkoh.me/jwt-authentication-in-vuejs-and-django-rest-framework-part-1-cjye54k1t000ouns1eq4zthu0https://melvinkoh.me/jwt-authentication-in-vuejs-and-django-rest-framework-part-1-cjye54k1t000ouns1eq4zthu0Mon, 22 Jul 2019 08:40:54 GMT<![CDATA[Consume REST Services with AJAX and CSRF protection in Django]]>https://melvinkoh.me/consume-rest-services-with-ajax-and-csrf-protection-in-django-cjye50hn2001ivvs1r847z95bhttps://melvinkoh.me/consume-rest-services-with-ajax-and-csrf-protection-in-django-cjye50hn2001ivvs1r847z95bMon, 22 Jul 2019 08:37:44 GMT<![CDATA[Configure and Send Email in Django (for both Development and Production)]]>https://melvinkoh.me/configure-and-send-email-in-django-for-both-development-and-production-cjye4y0l7000nuns1m43vstaqhttps://melvinkoh.me/configure-and-send-email-in-django-for-both-development-and-production-cjye4y0l7000nuns1m43vstaqMon, 22 Jul 2019 08:35:49 GMT<![CDATA[Asynchronous Tasks with Celery + Redis in Django]]>https://melvinkoh.me/asynchronous-tasks-with-celery-redis-in-django-cjye4tgaw000luns1ngthq609https://melvinkoh.me/asynchronous-tasks-with-celery-redis-in-django-cjye4tgaw000luns1ngthq609Mon, 22 Jul 2019 08:32:16 GMT<![CDATA[Token Authentication in Django Rest Framework]]>https://melvinkoh.me/token-authentication-in-django-rest-framework-cjye4a0yp0015vvs160wp9jebhttps://melvinkoh.me/token-authentication-in-django-rest-framework-cjye4a0yp0015vvs160wp9jebMon, 22 Jul 2019 08:17:09 GMT<![CDATA[Using Enum as Model Field Choice in Django]]>https://melvinkoh.me/using-enum-as-model-field-choice-in-django-cjye489s1000auns144ysnifwhttps://melvinkoh.me/using-enum-as-model-field-choice-in-django-cjye489s1000auns144ysnifwMon, 22 Jul 2019 08:15:48 GMT<![CDATA[Deploying Gitlab on your own server]]>https://melvinkoh.me/deploying-gitlab-on-your-own-server-cjye431ko0010vvs1lv2fprgihttps://melvinkoh.me/deploying-gitlab-on-your-own-server-cjye431ko0010vvs1lv2fprgiMon, 22 Jul 2019 08:11:44 GMT