Power of Eloquence

Bye Bye Heroku, Hello Render! Migrating My Personal Apps from Heroku to Render: A Comprehensive Guide

| Comments

Generated AI image by Microsoft Bing Image Creator

In the early days of my software development career, I relied on Heroku to host all of my personal apps without incurring any costs. However, over the years, Heroku has gradually shifted from a free model to a subscription-based service. As a software developer, I’m always on the lookout for platforms that offer better performance, scalability, and ease of use for hosting my applications while continuing to manage my projects on budget. After careful consideration and evaluation, I’ve decided to migrate all of my personal apps from Heroku to Render. In this guide, I’ll walk you through the migration process and explain the reasons behind my decision.

Demystifying Common Design Patterns in Modern Software Development

| Comments

Generated AI image by Microsoft Bing Image Creator


In my previous post, I mentioned the usefulness of apply software patterns for scalable Javascript applications so far. I thought of revisiting this again because after working as a software engineer/developer for a while, I always found myself that design patterns are heavily applied across all projects (outside of Javascript domain) I have seen. Those projects were anything around Java, PHP, Python, C++, etc, thus I found there’s a common notion that design patterns are ubiquitous when applying to solve interesting and challenging software problems in our modern times.

Setting Up New MacBook Pro M2 for Local Development

| Comments

Generated AI image by Microsoft Bing Image Creator


Happy Belated New Year of 2024!

With the arrival of my shiny new MacBook Pro M2, I will explain In this guide how I setup my machine for a seamless software development experience.

I would love to keep my current Macbook Pro Intel Core i5 2017 edition to continue using it.. But, over the years, the CPU and memory requirements have gone up for more modern full-stack development using Docker, updated Chrome extensions, or upgrade browsers, my limited 8GB RAM and 250GB of SSD storage started to feel small for me to do any decent software development tasks these days. If I knew Apple is incredibly stringent to make memory and storage computing parts non-upgradeable after the purchase is made, I could have turned back the time to request upfront upgrade for these back then, and not to feel the terrible waiting grind for the systems resources to free itself whenever I start up Chrome browser or Docker background process, which ended up to seem like an eternal wait… ⏰⏱

So, forcibly speaking, I have to start moving from my old mac, and say hello to my new Macbook Pro M2!

Elevating Software Development: Unleashing the Power of Apple MacBook Pro M2 (2023)

| Comments

Generated AI image by Microsoft Bing Image Creator

Before I start making my blog post intro, I have to say, Wow! It’s been a while since I made my post here. It’s almost the entire year of 2023 that’s about to draw its last curtain before 2024 is coming around the corner.

Since my last post earlier in the year, I mentioned my wedding plans mid-year of 2023 and now that’s all done and dusted. Naturally, the next thing to do after my wedding was to book our honeymoon to tour all the fun places around Malaysia and Indonesia towards the end of October 2023.

Here’s one of the best photo trips we took during our initial stay in KL.

The magnificent sight of Petronas Twin Towers during the night.

How to work with EventEmitters for unit testing in NodeJS

| Comments

Generated AI image by Microsoft Bing Image Creator

Happy New Year! Here’s to my first blog post of 2023.

Since my last post, I have finally managed to get a number of errands to accomplish before the end of 2022. One of the most important items was getting my father’s ashes finally sent homebound back to Malaysia in September for his eternal rest. It was great to be back home and get a good holiday stint around my hometown of Sibu, Sarawak as well as the capital city, Kuching where I haven’t been for a long time to just wind down and relax, along with the wedding preparations underway downunder.

Now, that’s all out of the way, it’s time to get back into my world of blogging once more!

Last year, I faced a deceptively complex but interesting solution design problem when working with NodeJS event-driven programming model, EventEmitter and how we should go about writing up appropriate unit testing when listeners were subscribing to certain events being emitted.

Migrating Octopress to Hexo

| Comments

Generated AI image by Microsoft Bing Image Creator

We’re edging towards halfway of 2022.. And boy. Look how time has gotten passed by.

I must admit I haven’t had the chance to sit down and write up another good tech blog post. A lot is happening in motion since the start of the year 2022 from my recent engagement to my fiancee of 3 and half years; busy with my day job as a contractor for a bank; finally getting my passport renewal done in Canberra (after almost 2 years of nationwide lockdown) as part of my travel plans to Malaysia so I can send my father’s ashes for his final resting place; along with talking plans having my fiancee and me moving together later in the year and preparing my next career technical certifications to take on, etc…

The list could go on.

Nevertheless, still, I’m glad to take the time to write about what I have accomplished recently.

That is…

I’ve decided to migrate my Octopress site to Hexo! 📦🚚

Snyk - For your web security and dependencies vulnerabilities health check on Github repos

| Comments

Generated AI image by Microsoft Bing Image Creator

If you’re like me, and you’ve built several Github repositories over time as part of developer learning fun projects, there’s probably a good chance these same repositories will not get maintained on some form of regular basis.

The reasons for this to happen can be wide-ranging - everything from being too busy at work, changing interests for different software frameworks, lifestyle priorities changes, changing career responsibilities etc, etc - there’s too many to list here.

They took the best of our coding life as months or years go by.

As a consequence, your Github repositories do become quickly stale over time.

This ‘staleness’ - come with old dependencies that do not get updated, which at worse, could be leaking software security issues over time.

I have over 50 repositories in my Github profile and there’s no way that I could keep track of knowing which repos have more security holes to address after another, let alone have to fix up security vulnerabilities dependencies one PR at a time on my own… 😨

Thus I need to find a way to auto-manage all these repositories without lifting a finger (much)

Without further ado, I found this useful toolchain from Github marketplace - Snyk.

Differences between Django vs Flask/Falcon

| Comments

Generated AI image by Microsoft Bing Image Creator

It’s been some months since 2021 has begun (and we’re not where near safe coming out of the pandemic woods just yet ). I’ve been itching to come and sit down to write my first blog post for the year.

What better way to start out writing ins-and-outs on certain Python web frameworks.

I’ve been working on Python web projects for some time and I’m here to offer my rants/thoughts when working between Django and Flask/Falcon and outline the comparisons between these two.

Let’s start with the ones I’m most familiar with.

NB - Before I begin, this article assumes the reader either has a good understanding or good working knowledge of MVC software patterns as more web frameworks are built around this pattern. If you don’t know what that is, you may want to visit this Wikipedia page as a refresher course, before proceed reading.

Looking back the year of 2020...

| Comments

Generated AI image by Microsoft Bing Image Creator

// when the giant red button got triggered - 🚨🚨
async function globalWHOAlertSystem(pandemicAlertLevel, globalToiletPaperSupplyChain) {
	let message = document.getElementById("message");
    message.innerHTML = "";
	try {
		do {
			const areWeDoomed = await globalToiletPaperSupplyChain.verifyStockLevel()
			if (areWeDoomed) throw "We are so screwed😱!!"
		while (pandemicAlertLevel > 60000); // it's over 60,000!
	} catch (err) {
		message.innerHTML = err;

Well, the code snippet above pretty much summarises everything we all knew what the year of 2020 has brought us.

All small jokes aside, this year has been an incredibly difficult year for all, especially for the tech community in general.

Countless of tech meetups, tech networking events and tech conferences have either been postponed indefinitely, rescheduled or cancelled altogether around the world.

Filter, Map and Reduce functions - the Python way

| Comments

Generated AI image by Microsoft Bing Image Creator

With every new tool, framework or methodology comes along, developers with their insatiable appetite or thirst for knowledge and power, they will find ways to make dedicated time to learn how they work and how they’re planning to use them as part of the day to day job.

And functional programming (FP) - a newish paradigm has been permeating through the scenes of developer community for some time; everything from Haskell, Elixir, React, AWS Lambdas to Clojure etc.

Or, at least it’s yet to make establish some norms within the community…

But I must digress.