👋 I’m Prakash,

I am a Software Engineer with a passion for lifelong learning, problem-solving, and always improving oneself 📚

I help caring software crafters achieve technical excellence by using the best software engineering practices.

I have a solid background in using language-agnostic engineering practices such as Extreme Programming, peer programming, domain driven design and clean code.

Over the last decade, I successfully applied these practices in many kinds of industries such as E-commerce, logistics, warehousing systems, ICT Projects, content sharing etc. 💪

Beyond software engineering, I love reading books, and travelling. And occasionally writing the blog posts 😊.

Strategy Pattern in Node.js: A Practical Approach

Strategy Pattern in Node.js: A Practical Approach

In this post, I will explain how to implement the Strategy Design Pattern in Node.js. To illustrate this concept, I’ll use the example of integrating multiple payment methods which can be used in the e-commerse and other applications to accept payment from customers. Whether it’s PayPal, bank transfers, or credit card. Strategy Pattern The Strategy Design Pattern is a behavioral design pattern in software engineering that enables the dynamic selection of algorithms at runtime, allowing for greater flexibility and adaptability in the application’s behavior....

November 14, 2024 · 7 min · 1370 words · Prakash Bhandari
Scaling Kubernetes Jobs with KEDA: Triggered by Amazon SQS

Scaling Kubernetes Jobs with KEDA: Triggered by Amazon SQS

In this post, I will create a small Node.js app containing the publisher and message processor, and publish it as an image to Docker Hub. Then, I will use the same image to demonstrate scaling Kubernetes Jobs using KEDA, triggered by Amazon SQS. For demonstration purposes, I will be using a Minikube local Kubernetes cluster, but in reality, this would be done in a production Kubernetes cluster Here is the architectural diagram for our workflow....

September 28, 2024 · 12 min · 2379 words · Prakash Bhandari
Supervised Fine Tuning Large Language Models (LLMs) With Vertex AI

Supervised Fine-Tuning Large Language Models (LLMs) With Vertex AI

In this post, I will briefly define supervised fine-tuning of large language models (LLMs), prepare a dataset for Google Vertex AI collected from social media posts, and use Vertex AI to train Google’s LLM, Gemini to analyze the sentiment. This is a purely no-code blog post. I will demonstrate everything directly from the Google Cloud Console using Vertex AI. Introduction Fine-tuning a large language model (LLM) is the process of further training a pre-trained model to perform a specific task or work with a particular dataset....

September 15, 2024 · 7 min · 1446 words · Prakash Bhandari
How to Avoid the N+1 Query Problem With  Eager Loading

How to Avoid the N+1 Query Problem With Eager Loading

In this post, I will define the N+1 query problem and explain how to avoid it using eager loading. Throughout my professional career, I have enhanced the response time of numerous APIs by refactoring N+1 queries. I have seen the N+1 issue in many times that use ORMs, as well as in those that use raw queries. In this blog post, I will use raw queries to demonstrate the N+1 problem and Eager Loading to solve it....

September 11, 2024 · 7 min · 1454 words · Prakash Bhandari
Large Multimodal Model(LMM) Prompting With Google Gemini

Large Multimodal Model(LMM) Prompting With Google Gemini and Vertex AI

In this post, I will briefly define Large Multimodal Models (LMM), explain the data modalities of LMMs, and demonstrate Google Gemini’s multimodal capabilities using text and images. This is purely a no-code blog post. I will demonstrate everything directly from the Google Cloud Console using Vertex AI Studio and Vertex AI to showcase a simple example of using multimodal inputs (text file and image) Introduction A Large Multimodal Model (LMM) is an Artificial Intelligence (AI) model capable of processing and understanding multiple types of input data modalities simultaneously and providing outputs based on this information....

September 7, 2024 · 6 min · 1101 words · Prakash Bhandari
Understanding the Basic Concepts of Kubernetes(k8s) Cluster

Understanding the Basic Concepts of Kubernetes(k8s) Cluster

As a beginner, understanding a Kubernetes (k8s) cluster might be a little bit complicated. If you go through the k8s official documentation its overwhelming. In my personal view, the best way to learn any new tool and technology is by understanding its core concepts and architecture. In this blog post, I will try to simplify the basic concepts and common components of a Kubernetes (k8s) cluster with simple architecture diagram....

July 9, 2024 · 6 min · 1073 words · Prakash Bhandari
Gatling API Load Test With JavaScript

Gatling API Load Test With JavaScript

Ensuring an application runs smoothly in production is crucial. This post guides you to write and execute a simple Gatling API load test using JavaScript to ensure the stability, speed, scalability, and responsiveness of your application under a given workload. You may have written unit tests and functional tests, and the application looked good, so you shipped it to production. However, it suddenly crashes, experiences performance issues, or encounters API request timeout errors....

June 14, 2024 · 11 min · 2296 words · Prakash Bhandari
Implementing Logging Using Node.Js, Elasticsearch, Kibana and Docker

Implementing Logging Using Node.Js, Elasticsearch, Kibana and Docker

Logging play a very important role in software development. It helps monitoring, troubleshooting, debugging, event tracing, request tracing, security, and also can be used by Business Intelligence(BI) for reporting purpose. Logging has numerous benefits. But in this blog post, we will focus on building a real-world example to store application logs in Elasticsearch via a Node.js app by using the Winston NPM package and visualize them using Kibana. Additionally, we will dockerize the entire application....

June 10, 2024 · 9 min · 1755 words · Prakash Bhandari
Find MySQL 8.3 keywords and reserved words used in column names, table names, procedures, or functions

Find MySQL 8.3 keywords and reserved words used as column names, table names, procedures, or functions

Sometimes, you may see raw queries in your codebase, especially when dealing with very old codebases. Nowadays, people tend to use ORMs (Object-Relational Mapping). It’s possible that in the past, developers used table names, column names, or function names that are now considered keywords by newer versions of MySQL. In such cases, upgrading from an older MySQL version to a newer one (for example, from MySQL 5.7 to 8.x) can be challenging if your codebase uses raw queries without proper escaping for table names, column names, or function names in the queries....

April 4, 2024 · 3 min · 588 words · Prakash Bhandari
Polling vs Webhooks

Polling vs Webhooks

Sometimes, we need to notify or update another system after a certain interval or upon completing background processing jobs. In such situations, we either use webhooks or polling. Each method has its own use cases, advantages, and disadvantages. This blog post will explain the differences between polling and webhooks, along with their respective use cases, pros, and cons. What is Polling? Polling, also known as API polling, is a mechanism where the client repeatedly calls the server to check for updates or changes until it receives a response from the server....

March 13, 2024 · 4 min · 653 words · Prakash Bhandari