Explore the world of Golang, Node.js, System Architecture, and Server Management — with practical insights, real-world experiences, useful tips, and ideas for building reliable, scalable, and high-performance systems.
How to Use Tailwind 4 with Angular 19

How to Use Tailwind 4 with Angular 19

Tailwind CSS 4 brings modern utility-first styling capabilities to the table, making it a perfect choice for building fast, customizable, and scalable UIs. However, when integrating it with Angular 19, there are some nuances and workarounds you need to be aware of. This guide will walk you through the process step-by-step. 1. Prerequisites Before starting, ensure you have the following installed on your system: Node.js (version 18 or higher recommended) Angular CLI 19 2....

January 28, 2025 · 3 min · Ganesh Bhosale

Install Postgres on MacOS with Homebrew along with pgAdmin4

PostgreSQL is a powerful, open-source relational database management system widely used for building scalable web applications. In this article, we’ll walk through the process of installing PostgreSQL on MacOS using Homebrew, a popular package manager for MacOS, and setting up pgAdmin4, a web-based administration tool for PostgreSQL. Prerequisites Before we begin, make sure you have Homebrew installed on your MacOS system. If not, you can install it by running the following command in your terminal:...

April 21, 2024 · 2 min · Ganesh Bhosale
WebSockets: Anonymous Chat Server in Golang and Tailwind

WebSockets: Build Anonymous Chat Server in Golang and Tailwind

WebSockets provide a full-duplex communication channel over a single TCP connection, enabling real-time communication between clients and servers. In this article, we’ll build an anonymous chat server in Golang using the net/http and golang.org/x/net/websocket packages, and we’ll style the chat interface using Tailwind CSS. Prerequisites Ensure you have Go installed on your system. You can download it from here. Also, make sure you have tailwindcss installed or you can link it via CDN....

September 29, 2023 · 6 min · Ganesh Bhosale
IP Throttling or Rate Limiting in Golang using net/http and time/rate - Photo by Ksenia Kudelkina on Unsplash

IP Throttling or Rate Limiting in Golang using net/http and time/rate

IP throttling, also known as rate limiting, is a technique used to control the rate of requests from a client to a server. It helps prevent abuse, ensure fair usage of resources, and protect against denial-of-service attacks. In this article, we’ll explore how to implement IP throttling in Go using the net/http package and the golang.org/x/time/rate package, which provides a rate limiter implementation. Prerequisites Before we proceed, make sure you have Go installed on your system....

September 24, 2023 · 4 min · Ganesh Bhosale
Trigger Jenkins job from Laravel via Guzzle Request

Trigger Jenkins job from Laravel via Guzzle Request

To trigger a Jenkins job from a Laravel application using Guzzle, you can use the Jenkins API endpoint to build a job. Follow these steps: Create Jenkins Token In Jenkins, click on your User Name from Top Right Navbar, inside that page go to “Configure”. There you will see section “API Token “. Click on “Add new token " and create token. Copy the generated token and save it for future use....

September 15, 2023 · 2 min · Ganesh Bhosale
How to access Laravel Passport API from Shell Script using CURL and JQ

How to access Laravel Passport API from Shell Script using CURL and JQ

TL;DR: Access Laravel Passport API’s from Shell Script using CURL and JQ. This combination can be helpful in running remote Automation Jobs and Builds. Laravel Passport is a full OAuth2 server implementation for Laravel. It provides a simple and convenient way to authenticate users and secure API endpoints. In this article, we’ll walk through the process of logging in to a Laravel Passport API using a shell script. We’ll use curl to make HTTP requests and jq to parse JSON responses....

September 9, 2023 · 3 min · Ganesh Bhosale
Next Best Web Framework: Benchmark Comparison for Golang Fiber, Node.js Express, Laravel, Lumen, and Django

Next Best Web Framework: Benchmark Comparison for Golang Fiber, Node.js Express, Laravel, Lumen, and Django

TL;DR: Web Framework Recommendation for Performance and Ease of coding in 2023. Golang and Express excel in high-performance scenarios, while Laravel, Lumen, and Django prioritise developer experience and feature completeness Choosing the right web framework for your project is a critical decision that can significantly impact the success of your project. Developers have a plethora of options available, each with its own set of advantages and trade-offs. In this benchmark comparison, we’ll evaluate five popular web frameworks: Golang Fiber, Node....

September 3, 2023 · 5 min · Ganesh Bhosale
Error Handling Strategies in Go: Panic, Recover, and Error Wrapping - Photo by Francisco De Legarreta C. on Unsplash

Error Handling Strategies in Go: Panic, Recover, and Error Wrapping

Error handling is an essential aspect of robust software development. In Go, error handling is straightforward yet powerful, thanks to the built-in panic and recover mechanisms, along with the ability to wrap errors for improved context. In this article, we’ll explore these error handling strategies in detail, along with comprehensive code examples. 1. Panic and Recover What is Panic? panic is a built-in function in Go that stops the ordinary flow of control and begins panicking....

August 15, 2023 · 3 min · Ganesh Bhosale
Enable GZIP Compression on Ubuntu + Apache

Enable GZIP Compression on Ubuntu + Apache

Enable GZIP Compression on Ubuntu + Apache GZIP compression is a technique used to reduce the size of files transmitted over the internet, which can significantly improve website performance and decrease load times. In this article, we will guide you through the steps to enable GZIP compression on an Ubuntu server with Apache. Step 1: Check if mod_deflate is installed Before proceeding, we need to check if the mod_deflate module is installed and enabled in Apache....

August 3, 2023 · 2 min · Ganesh Bhosale
Install NVM / Node for all users including Jenkins

Install NVM / Node for all users including Jenkins

Node Version Manager (NVM) is normally installed for a single user, typically under ~/.nvm. This works well for development environments, but it can become problematic on servers where multiple users or services need Node.js. For example, on an Ubuntu server you may need Node.js for: Jenkins CI/CD jobs Supervisor-managed applications www-data Deployment scripts Regular SSH users A better approach for this scenario is to install NVM in a shared system location such as /opt/nvm....

July 16, 2023 · 5 min · Ganesh Bhosale
A Comprehensive Guide to Interfaces in Golang - Photo by Hal Gatewood on Unsplash

Interfaces in Golang: A Comprehensive Guide

In Go, interfaces play a significant role in achieving polymorphism and abstraction. They define a set of method signatures that a type must implement to satisfy the interface contract. In this article, we’ll delve into what interfaces are, why they are useful, explore the concept of empty interfaces, and discuss some common useful interfaces in Go, accompanied by comprehensive code examples. What is an Interface in Go? An interface in Go is a type that specifies a set of method signatures....

June 18, 2023 · 6 min · Ganesh Bhosale
How to Run a Root-Level Shell Script in Jenkins

How to Run a Root-Level Shell Script in Jenkins

Jenkins normally runs shell commands as the jenkins user. However, some server-maintenance tasks require root privileges—for example, cleaning APT caches, removing old packages, or managing system files. A common but unsafe approach is to give the Jenkins user unrestricted sudo access: jenkins ALL=(ALL) NOPASSWD: ALL This allows Jenkins jobs to execute arbitrary commands as root. A much safer approach is to allow Jenkins to run only one specific maintenance script as root....

June 12, 2023 · 4 min · Ganesh Bhosale
Setup Jenkins on Ubuntu 20.04 / 22.04 and run Jobs are root user

Setup Jenkins on Ubuntu 20.04 / 22.04 and run Jobs are root user

Requirements Add the repository key to the system and append the Debian package repository. wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo apt-key add - sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' sudo apt update Install Java 17 sudo apt install openjdk-17-jre-headless Update JAVA_HOME in .bashrc : nano ~/.bashrc export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 Install Jenkins sudo apt install jenkins Allow firewall for 8080 port...

June 10, 2023 · 3 min · Ganesh Bhosale
Enable Bootstrap Tooltip in Angular using Attribute Directive

Enable Bootstrap Tooltip in Angular using Attribute Directive

Bootstrap is a popular CSS framework that provides a set of ready-to-use components and styles for building responsive web applications. In this article, we will explore how to enable Bootstrap Tooltip in an Angular application using an attribute directive. Install Bootstrap: npm install bootstrap Import Bootstrap SCSS in styles.scss: // For Setting Project Specific Bootstrap Variable. Like $primary Color @import "assets/scss/variables.scss"; // Import Bootstrap @import "../node_modules/bootstrap/scss/bootstrap.scss"; // App Specific components @import "assets/scss/app....

June 3, 2023 · 2 min · Ganesh Bhosale
Concurrency in Golang: Goroutines and Channels - Photo by amirali mirhashemian on Unsplash

Concurrency in Golang: Goroutines and Channels Explained

Concurrency is a powerful aspect of Go (Golang) that allows developers to execute multiple tasks concurrently, enabling efficient resource utilization and improved performance. In this article, we’ll explore two key concurrency primitives in Go: goroutines and channels. Understanding Goroutines Goroutines are lightweight threads managed by the Go runtime. They enable concurrent execution of functions or methods independently of other parts of the program. Goroutines are more lightweight than operating system threads, allowing Go programs to create thousands or even millions of them without significant overhead....

May 14, 2023 · 6 min · Ganesh Bhosale
How to speed up Laravel Unit tests using Schema:Dump

How to speed up Laravel Unit tests using Schema:Dump

Laravel, an open-source PHP framework, provides built-in functionalities for developers to write tests for their applications. However, running tests, especially database tests, can sometimes be slow and time-consuming, affecting the productivity of developers. This blog post will elaborate on how to speed up Laravel unit tests using the schema::dump command. The Problem While performing unit tests in Laravel, developers often face a problem: migrations. Each time you run a test, Laravel runs all migrations, creating a database schema....

May 10, 2023 · 4 min · Ganesh Bhosale
Singleton Pattern Approaches in Golang - Photo by Isaac Benhesed on Unsplash

Singleton Pattern Approaches in Golang

The Singleton pattern is a creational design pattern that ensures a class has only one instance and provides a global point of access to that instance. While Go does not have traditional classes like object-oriented languages, it does allow for the implementation of the Singleton pattern using various approaches. We are going to use Goroutines in testing our approaches in Multi-threading. In this article, we’ll explore different approaches to implement the Singleton pattern in Go, along with code examples....

May 1, 2023 · 4 min · Ganesh Bhosale
Hello World Photo by Vladislav Klapin on Unsplash

Golang: Hello World

Simple Hello World Program in Golang for beginners ...

April 29, 2023 · 1 min · Ganesh Bhosale
PHP-FPM Get list of running php files

PHP-FPM Get list of running php files

We always find need to know which php files (Malware or otherwise) consuming the CPU and Server resources, so that you can fix those files. FPM status page give this exact information. For that it needs to be enabled and configured in your apache confirguration where you want it to be displayed. Find where your FPM configuration is and edit www.conf. nano /etc/php/7.4/fpm/pool.d/www.conf Update file for: pm.status_path = /fpm7.4-status Restart FPM sudo service php7....

April 9, 2023 · 2 min · Ganesh Bhosale
Manage Laravel Queues using Supervisor

Manage Laravel Queues using Supervisor

Every Laravel Queue has it’s own cached version of Laravel Models, Jobs & Notification. You will be in serious panic if you are working on Jobs & Notification as Queue will not update the version of those file dynamically. You will need to restart Queue every time, by finding it in processes and killing it. Supervisor is a client/server system that allows its users to control a number of processes on UNIX-like operating systems....

November 7, 2021 · 1 min · Ganesh Bhosale