Skip to main content

Welcome to my Digital Home

I am a Software Engineer and Lead Project Manager at Sparkout Tech Solutions Pvt Ltd. I enjoy turning complex problems into simple, beautiful, and intuitive solutions.

I occasionally build some open-source software for myself, stock trader and an avid football player and cricket fan.

This is my playground where I share my views, code's, notes and ideas.

Have questions or interested in working with me? Feel free to Contact me.

Linkedin  Whatsapp

· 7 min read
Sivabharathy

Docker is a powerful platform that allows you to easily develop, package, and deploy applications in containers. Containers are lightweight, portable, and provide a consistent environment for running applications. Installing Docker on Ubuntu 24.04 is a straightforward process, but it requires a few steps to set up correctly.

In this article, we will walk you through the complete process of installing Docker on Ubuntu 24.04. We will also provide troubleshooting tips and post-installation instructions.

· 6 min read
Sivabharathy

In this guide, we will walk you through the process of running RabbitMQ inside a Docker container. RabbitMQ is an open-source message broker software that facilitates communication between services, ensuring that messages are sent and received reliably. Docker, a popular containerization platform, allows you to easily set up RabbitMQ in an isolated environment with minimal setup.

· 6 min read
Sivabharathy

RabbitMQ is a powerful and flexible messaging broker that enables communication between services in a decoupled manner. In a microservices architecture, RabbitMQ plays a vital role in ensuring that different services can interact and exchange data asynchronously. NestJS, a progressive Node.js framework, provides excellent support for building scalable microservices, including RabbitMQ integration.

In this article, we’ll walk through how to integrate RabbitMQ in a NestJS application, including both sending and receiving messages. We’ll also explore a real-world example where RabbitMQ is used to process tasks asynchronously.

· 7 min read
Sivabharathy

Securing a Linux server is a continuous process that goes beyond just installation and basic setup. Linux servers, while powerful and flexible, are not immune to various types of cyber threats like brute-force login attempts, malware, misconfigurations, and other vulnerabilities. This comprehensive guide will walk you through essential security steps to harden your Linux server, with detailed explanations and practical examples for each step. Let’s secure your Linux server!

· 7 min read
Sivabharathy

When building and deploying software applications, especially those with a web interface or backend systems, it's crucial to ensure that the system can handle varying levels of load. This is where performance testing comes in. Performance testing aims to measure how a system performs under different conditions, identifying its capacity and behavior under expected and extreme circumstances. The four primary testing methods used to assess performance are Load Testing, Stress Testing, Spike Testing, and Soak Testing. Let’s explore these testing techniques in detail, including examples of each.

· 7 min read
Sivabharathy

Performance testing is a crucial step in ensuring that your application can handle real-world traffic, perform well under heavy load, and recover from unexpected spikes or prolonged usage. Grafana K6 is a modern, open-source load testing tool that can be used to simulate and measure the performance of web applications, APIs, and services under various conditions.

In this article, we’ll walk through the implementation of load testing, stress testing, spike testing, and soak testing using Grafana K6 in a Node.js environment. We will also integrate Grafana to visualize the metrics and performance results.

· 8 min read
Sivabharathy

JavaScript, like most programming languages, manages different types of memory to handle variables, functions, and data in your program. Understanding the different types of memory and how they work is essential for writing efficient, scalable, and performant JavaScript code. In this detailed article, we will explore the different types of memory in JavaScript, their use cases, and how they differ from each other.

· 8 min read
Sivabharathy

In today’s digital landscape, security and privacy are critical components of any web or mobile application. As more applications interact with third-party services and user data, authentication and authorization play a key role in safeguarding sensitive information. Two widely used concepts in this domain are OAuth and Bearer Authentication. Although often used together, they refer to distinct processes that ensure secure access to resources. This article will explore both in detail, explaining how they work, their relationship, and providing real-world examples to illustrate their practical applications.

· 5 min read
Sivabharathy

When building APIs, managing different versions is critical for backward compatibility and feature updates. NestJS provides built-in support for API versioning, allowing developers to handle multiple versions of APIs gracefully.

This article explores API versioning in NestJS, its types, and how to implement them with examples.


Why API Versioning?

API versioning helps manage changes in your application without breaking functionality for existing clients. It ensures:

  • Smooth transitions between versions.
  • Backward compatibility for older API clients.
  • Clear separation of new features or deprecations.

· 4 min read
Sivabharathy

The package.json file is a crucial component of any Node.js project. It serves as the project's manifest file, providing metadata, configuration, and dependency information. In this article, we'll explore the various keys supported in package.json and their purposes in detail.


Why is package.json Important?

  1. Project Metadata: Provides details like the name, version, and author of the project.
  2. Dependency Management: Lists the libraries and tools required for the project.
  3. Script Automation: Defines custom commands for automating tasks like testing and building.
  4. Compatibility: Specifies compatible Node.js versions or other environment constraints.