Writing about Software Development, System Design, Building my Home Lab and more.

I have been writing since 2020, mostly around tech and my career.
In total I have written 221 posts. I hope you enjoy them.

Subscribe to the RSS feed to stay updated.

Search icon
  • # homelab# selfhosted

    MeTube — Self-hosted YouTube downloader with a sleek web interface

    MeTube is a web UI for youtube-dl/yt-dlp that allows you to download videos from YouTube and other platforms. It's perfect for archiving your favorite content or downloading videos for offline viewing.

  • # homelab# selfhosted# networking

    Setup Caddy with automatic SSL certificates with Cloudflare

    Recently I migrated my homelab from using Nginx with local domain certificates to using Caddy with automatic SSL certificates from Cloudflare. This post will go over the steps I took to set up Caddy with Cloudflare.

  • # bash# devops

    Automatically Update AWS Security Group with Your Dynamic IP

    Learn how to automate updating your AWS security group with your current IP address using a simple Bash script. Perfect for users with dynamic or CGNAT IPs who need secure, seamless access to their resources like bastion servers.

  • # homelab# selfhosted

    PairDrop — Transfer files between devices seamlessly

    PairDrop is a self-hosted file transfer service that allows you to transfer files between devices seamlessly. It is a great alternative to services like Airdrop, Snapdrop, and ShareDrop.

  • # linux

    Mount a drive permanently with fstab in Linux

    Let's see how to mount a drive permanently in Linux using the fstab file which will mount the drive automatically on boot.

  • # engineering

    Learning Through Building — Engineering Advices

    Over the years, I have learned a lot of things through building projects. In this post, I will be sharing some of the advices that I have learned through my journey.

  • # linux# homelab# selfhosted

    Setup Jellyfin with Hardware Acceleration on Orange Pi 5 (Rockchip RK3558)

    Recently I moved my Jellyfin to an Orange Pi 5 Plus server. The Orange Pi 5 has a Rockchip RK3558 SoC with integrated ARM Mali-G610. This guide will show you how to set up Jellyfin with hardware acceleration on the Orange Pi 5.

  • # homelab# selfhosted

    Jellyfin + arr stack — Self-hosted media streaming in my Homelab

    Since ages, I have been collecting lots of movies, TV shows, and music. Ever since I got into self hosting, I have been looking for a way to stream my media collection to my devices. Jellyfin is the perfect solution for this.

  • # homelab# selfhosted

    Syncing made easy with Syncthing

    Syncthing is one of those tools which have made my life easier. It is a decentralized file synchronization tool which is open source and free to use. Learn how to set it up and use it.

  • # docker# homelab

    Optimizing cAdvisor for Lower CPU Usage

    So you are seeing high CPU usage from cAdvisor, well I was too. Here is how I fixed it.

  • # homelab

    Welcoming a new member to my Homelab — A Orange Pi 5 Plus

    Happy to share that I have added a new member to my homelab, a Orange Pi 5 Plus. In this post, I will share the specs and the initial setup process.

  • # homelab# selfhosted# networking

    Tailscale — Accessing Homelab services outside my network

    Tailscale is another service that I use in my homelab setup to access my services outside my network. It's a VPN service that makes it easy to access your devices, services, and networks securely.

  • # engineering# security

    How I use GPG in my day to day workflows

    GPG is a powerful tool that allows you to encrypt and sign your data and communications. In this post, I will explain how I use GPG in my day to day workflows.

  • # engineering# security

    What is GPG and why you should start using it

    GPG is a tool that allows you to encrypt and sign your data and communications. In this post, I will explain what GPG is and why you should start using it in your workflows if you aren't already.

  • # homelab# selfhosted

    Ansible — Configuration as Code for building up my Homelab

    I have been using Ansible to manage my homelab infrastructure. It's a great tool to automate the deployment and configuration of servers and services. Let me share with you how I use Ansible to manage my homelab.

  • # homelab# selfhosted# networking

    AdGuard Home — Network Wide Ad Blocking in your Homelab

    Let's talk about AdGuardHome, a network-wide ad blocking software that you can run in your homelab. It's a great way to block ads and trackers on your network without having to install ad blockers on every device.

  • # homelab# selfhosted# networking

    Nginx — The reverse proxy in my Homelab

    Nginx is a powerful reverse proxy that I use in my homelab to expose services to the internet. In this post, I'll show you how I use it and how you can use it too.

  • # docker# raspberrypi

    Resolving Missing Memory Stats in Docker Stats on Raspberry Pi

    Running Docker containers on your Raspberry Pi can be a great way to explore different software and services. However, encountering issues with retrieving memory usage information using docker stats can be frustrating. In this blog post will dive into the common reasons behind missing memory stats and guide you through the troubleshooting steps to resolve them.

  • # system design

    Building a Read-Heavy System: Key Considerations for Success

    In this article, we will discuss the key considerations for building a read-heavy system and how to ensure its success.

  • # system design

    Building a Write-Heavy System: Key Considerations for Success

    In this article, we'll discuss crucial considerations that can guide you towards success in building a write-heavy system and help you navigate the complexities of managing high volumes of write operations.

  • # system design

    Tackling Thundering Herd Problem effectively

    In this article, we will discuss what is the thundering herd problem and how you can tackle it effectively when designing a system.

  • # system design

    How the Bulkhead Pattern Can Fortify Your System

    In this article we will explore the Bulkhead pattern, a pattern that can help you build more resilient systems.

  • # overthewire

    Exploring OverTheWire: Level 20 to Level 21 - Bandit Challenge

    Welcome back to our captivating journey through the Bandit Challenge! In this blog post, we're geared up to conquer Level 21, where a setuid binary introduces a novel challenge involving network connections. Join me as we delve into the mechanics of connecting to localhost, reading text, and successfully obtaining the password to proceed. Let's dive in!

  • # overthewire

    Exploring OverTheWire: Level 19 to Level 20 - Bandit Challenge

    Welcome back to our thrilling journey through the Bandit Challenge! In this blog post, we're poised to conquer Level 20, where we encounter a setuid binary that holds the key to our progress. Join me as we explore the concept of setuid binaries, learn how to execute them, and successfully uncover the password to continue our journey. Let's dive in!

  • # overthewire

    Exploring OverTheWire: Level 18 to Level 19 - Bandit Challenge

    Welcome back to our riveting journey through the Bandit Challenge! In this blog post, we're set to conquer Level 19, where a password is concealed within a file. However, a clever twist awaits us—someone has tampered with the system to log us out during SSH login. Join me as we navigate through this challenge using commands like ssh, ls, and cat, all while devising strategies to overcome the unexpected hurdle. Let's dive in!

  • # overthewire

    Exploring OverTheWire: Level 17 to Level 18 - Bandit Challenge

    Welcome back to our captivating journey through the Bandit Challenge! In this blog post, we're set to conquer Level 18, where our mission is to identify the password that has been changed between two files. Join me as we explore file comparisons, employ commands like cat, grep, and diff, and successfully uncover the password to progress further. Let's dive in!

  • # overthewire

    Exploring OverTheWire: Level 16 to Level 17 - Bandit Challenge

    Welcome back to our exhilarating journey through the Bandit Challenge! In this blog post, we're poised to conquer Level 17, where we're tasked with submitting the current level's password to a port within a specific range on localhost. Our challenge is to identify the correct port, establish a connection, and retrieve the next set of credentials. Join me as we navigate through port scanning, network exploration, and gain access to the coveted credentials. Let's dive in!

  • # overthewire

    Exploring OverTheWire: Level 15 to Level 16 - Bandit Challenge

    Welcome back to our captivating journey through the Bandit Challenge! In this blog post, we're poised to conquer Level 16, where the path to victory lies in submitting the current level's password to a specific port on localhost using SSL encryption. Join me as we navigate through secure socket layers, SSL encryption, and gain access to the coveted password. Let's dive in!

  • # overthewire

    Exploring OverTheWire: Level 14 to Level 15 - Bandit Challenge

    Welcome back to our enthralling voyage through the Bandit Challenge! In this blog post, we're set to conquer Level 15, where the key to success lies in submitting the current level's password to a specific port on localhost. Join me as we delve into port communication, networking concepts, and gain access to the coveted password. Let's dive in!

  • # overthewire

    Exploring OverTheWire: Level 13 to Level 14 - Bandit Challenge

    Welcome back to our adventurous journey through the Bandit Challenge! In this blog post, we'll conquer Level 14, where we'll obtain a private SSH key that grants us access to the next level. Join me as we navigate through secure connections, employ cryptographic tools, and use the obtained key to log into the next level. Let's dive in!

  • # overthewire

    Exploring OverTheWire: Level 12 to Level 13 - Bandit Challenge

    Welcome back to our exhilarating journey through the Bandit Challenge! In this blog post, we'll conquer Level 13, where we'll encounter a password stored in a file that has been repeatedly compressed and is represented as a hexdump. Join me as we navigate through the file system, extract the hexdump, decompress the file, and successfully obtain the password. Let's dive in!

  • # overthewire

    Exploring OverTheWire: Level 11 to Level 12 - Bandit Challenge

    Welcome back to our thrilling adventure through the Bandit Challenge! In this blog post, we'll conquer Level 12, where we'll encounter a password stored in a file where all the letters have been rotated by 13 positions. Join me as we navigate through the file system, decipher the rotated letters, and successfully extract the password. Let's dive in!

  • # overthewire

    Exploring OverTheWire: Level 10 to Level 11 - Bandit Challenge

    Welcome back to our exciting journey through the Bandit Challenge! In this blog post, we'll tackle Level 11, where we'll encounter a password stored in a file containing base64 encoded data. Join me as we navigate through the file system, decode the base64 data, and successfully extract the password. Let's dive in!

  • # homelab# selfhosted

    Self-Host Vaultwarden with Scheduled Backups

    In this article, I will show you how to self-host Vaultwarden along with a backup solution that will periodically backup your data safely.

  • # linux# homelab

    HTTPS with self-signed certificates for your Homelab services

    In this article we will deep dive into understanding how we can setup HTTPS with self-signed certificates for our Homelab services.This is often required when you are running your own services and you want to access them over HTTPS.

  • # linux# homelab# networking

    Setup Shareable Drive with Samba in Linux

    In this article we will setup a shareable drive in Linux with SMB. We will learn how to setup the share directory using Samba on server and how to mount it on client.

  • # networking# linux# homelab

    Setup Shareable Drive with NFS in Linux

    In this article we will learn how to setup a shareable drive with NFS in Linux. We will see the steps to setup NFS server and mount the drive on a client machine.

  • # homelab# selfhosted

    Linkding: Self Hosted Bookmark Manager

    In this post I will show you how to setup Linkding, a self hosted bookmark manager that I am personally using for a while now and I am very happy with it. I will also share with you my setup and how I am using it.

  • # postgres# docker

    Safely Backup PostgreSQL Database in Docker / Podman Containers

    In this article, we will learn how to safely backup PostgreSQL database in Docker/Podman containers safely. We will also learn how to restore the database from the backup.

  • # raspberrypi

    Fix Sudo not asking Password on Raspberry Pi

    If you have installed a fresh copy of Debian or Raspbian on your Raspberry Pi you might notice that sudo does not ask for a password. This is a security risk and should be fixed. Let's see how to fix it.

  • # raspberrypi

    Increase Swap Memory on Raspberry Pi

    There can be multiple scenarios where you need to increase the swap memory size on your Raspberry Pi. This post will show you how to do it.

  • # raspberrypi

    Update Wifi Password on Raspberry Pi in Headless Mode

    Changing the wifi password after the first installation can be tricky sometimes. Here is a quick guide on how to do it quickly and easily.

  • # personal

    2023 Unwrapped

    Looking back a year and talking about how 2023 was for me

  • # homelab# personal

    My self hosting journey in 2023

    In the journey of homelabbing, I have started self hosting some really amazing services that I am using in my day to day life. This blog outlines what all service I am self hosting in my homelab and what I plan to explore in the upcoming year.

  • # overthewire

    Exploring OverTheWire: Level 9 to Level 10 - Bandit Challenge

    Welcome back to our thrilling journey through the Bandit Challenge! In this blog post, we'll conquer Level 10, where we'll search for a password hidden within a file containing human-readable strings preceded by several '=' characters. Join me as we navigate the file system, utilize powerful commands, and extract the password from the strings. Let's dive in!

  • # overthewire

    Exploring OverTheWire: Level 8 to Level 9 - Bandit Challenge

    Welcome back to our exciting journey through the Bandit Challenge! In this blog post, we'll conquer Level 9, where we'll search for a password hidden within a file that occurs only once. Join me as we navigate through the file system, utilize powerful commands, and identify the unique line containing the password. Let's dive in!

  • # overthewire

    Exploring OverTheWire: Level 7 to Level 8 - Bandit Challenge

    Welcome back to our thrilling journey through the Bandit Challenge! In this blog post, we'll conquer Level 8 by searching for a password hidden within a file using specific keywords. Join me as we navigate the file system, employ powerful commands, and locate the password next to the word 'millionth'. Let's dive in!

  • # overthewire

    Exploring OverTheWire: Level 6 to Level 7 - Bandit Challenge

    Welcome back to our thrilling journey through the Bandit Challenge! In this blog post, we'll tackle Level 7, where we're tasked with finding a password that possesses specific ownership and size properties. Join me as we navigate the server, employ essential commands, and uncover the password that meets the given criteria. Let's dive in!

  • # overthewire

    Exploring OverTheWire: Level 5 to Level 6 - Bandit Challenge

    Welcome back to our thrilling journey through the Bandit Challenge! In this blog post, we'll conquer Level 6 by hunting for a password hidden within a file that possesses specific properties. Join me as we navigate the 'inhere' directory, utilize critical commands, and uncover the file that meets the given criteria. Let's dive in!

  • # overthewire

    Exploring OverTheWire: Level 4 to Level 5 - Bandit Challenge

    Welcome back to our thrilling expedition through the Bandit Challenge! In this blog post, we'll conquer Level 5 by uncovering the password hidden within the only human-readable file in the 'inhere' directory. Join me as we navigate the file system, utilize crucial commands, and unravel the mystery of the human-readable file. Let's dive in!

  • # overthewire

    Exploring OverTheWire: Level 3 to Level 4 - Bandit Challenge

    Welcome back to our exciting expedition through the Bandit Challenge! In this blog post, we'll conquer Level 4 by unearthing the password hidden within a hidden file located in the 'inhere' directory. Join me as we navigate the file system, utilize crucial commands, and unveil the secret of hidden files. Let's dive in!

  • # overthewire

    Exploring OverTheWire: Level 2 to Level 3 - Bandit Challenge

    Welcome back to our thrilling adventure through the Bandit Challenge! In this blog post, we'll conquer Level 3 by unraveling the password hidden within a file with spaces in its filename. Join me as we navigate the file system, employ essential commands, and overcome the challenge of handling spaces in filenames. Let's dive in!

  • # overthewire

    Exploring OverTheWire: Level 1 to Level 2 - Bandit Challenge

    Welcome back to our thrilling journey through the Bandit Challenge! In this blog post, we'll conquer Level 2 by unraveling the password hidden within a file with a unique name. Join me as we employ essential commands, unravel the mystery of the dashed filename, and unlock the next level. Let's dive in!

  • # overthewire

    Exploring OverTheWire: Level 0 to Level 1 - Bandit Challenge

    Welcome back to our journey through the Bandit Challenge! In this blog post, we will conquer Level 1 by uncovering the password hidden within a file called 'readme.' Join me as we navigate through the home directory, utilize essential commands, and triumph over this challenge. Let's dive in!

  • # overthewire

    Exploring OverTheWire: Level 0 - Bandit Challenge

    Join me on an exciting journey as we explore the OverTheWire challenges! In this first blog post, we will dive into Level 0 of the Bandit Challenge. Discover the initial steps I took, the strategies I employed, and the valuable lessons I learned along the way. Get ready to unlock the world of cybersecurity!

  • # homelab# selfhosted# networking

    AdGuard Home + Tailscale = Erase Ads on the Go

    Fed up with pesky online ads? In this blog, I'll show you how a dynamic duo, AdGuard Home and Tailscale, can give you ad-free browsing anytime, anywhere. It's a technical adventure that's worth every click.

  • # homelab

    How I Safeguard Essential Data in My Homelab with Off-site Backup on Cloud

    Data is the lifeblood of my homelab, and losing it would be a nightmare. Join me in exploring my backup strategy, featuring rclone and systemd, to keep my databases, vital data, and even passwords safe and sound in the cloud.

  • # linux

    Easily Backup your Local Data to the Cloud in Linux

    In this digital age, securing your precious data is non-negotiable. Let's delve into the world of continuous backups using a nifty tool called rclone, perfect for tech-savvy folks. We'll even set up a backup with Google Drive as an example. Your data's future is in good hands!

  • # linux

    Linux System Logs: An Overview of System Logs and How to Read Them

    Have you ever wondered where all the information about your system's activities and events is stored? Linux system logs contain a wealth of information that can help diagnose and troubleshoot system issues. In this article, we will give an overview of Linux system logs and explain how to read and interpret them.

  • # linux

    Linux RAID Configurations for Data Redundancy and Performance

    RAID is a popular method of combining multiple physical storage devices into a single logical unit, for the purposes of improving data redundancy and/or performance. Linux has a number of built-in tools and configurations for managing RAID setups. In this article, we'll provide an overview of RAID and the different RAID levels, as well as examples of how to configure and manage RAID arrays in Linux.

  • # linux# networking

    How I setup SSH config for effectively managing multiple servers

    Managing multiple servers can be a breeze with SSH configuration. Learn how to leverage the SSH config file to streamline your connections, enhance security, and make server management a whole lot smoother.

  • # linux

    Exploring the Linux File System

    Welcome to a fascinating journey into the heart of the Linux operating system! In this blog, we'll take you on a tour of the Linux file system, unraveling the purpose and significance of each directory. Whether you're a curious enthusiast or a seasoned developer, join us as we explore the intricacies of this vital component of the Linux ecosystem.

  • # system design# database

    Choosing the Right Data Storage Solution: SQL vs. NoSQL Databases

    Navigating the world of data storage solutions can be like choosing the perfect tool for a job. Join me as we dive into the dynamic debate of SQL and NoSQL databases, understanding their strengths, limitations, and where they best fit in real-world scenarios.

  • # system design

    Raft and Paxos: Distributed Consensus Algorithms

    Dive into the world of distributed systems and unravel the mysteries of consensus algorithms with Raft and Paxos. In this blog, we'll embark on a human-to-human exploration, discussing the inner workings of these two popular consensus algorithms. If you have a solid grasp of technical concepts and a curious mind eager to understand how distributed systems achieve consensus, this guide is your ticket to clarity!

  • # system design

    Understanding Load Balancing Algorithms: Round-robin and Consistent Hashing

    Welcome to the world of load balancing algorithms, where we unravel the magic behind Round-robin and Consistent Hashing. If you have a solid grasp of technical concepts and are eager to understand how these algorithms efficiently distribute traffic across servers, this blog is your ultimate guide. We'll embark on a human-to-human conversation, exploring the inner workings of Round-robin and Consistent Hashing, and how they keep our systems scalable and performant.

  • # system design

    Dealing with Cache Avalanche to Safeguard Your System

    In the vast digital landscape, ensuring your web applications perform seamlessly is paramount. Yet, a phenomenon called 'Cache Avalanche' can bring your application to a grinding halt. Fear not, for in this guide, we'll demystify Cache Avalanche, delve into its intricacies, and equip you with actionable strategies to shield your system from its disruptive effects.

  • # system design

    Caching Strategies: Understand Write-Through, Write-Behind, Read-Through, and Cache Aside

    Welcome to the world of caching strategies, where we unravel the mysteries of optimizing data access with Write-Through, Write-Behind, Read-Through, and Cache Aside techniques. If you're a technically sound developer seeking to supercharge your application's performance, this blog is your compass. Let's embark on a human-to-human exploration of caching strategies, understanding how they work under the hood and how to wield them to unlock the full potential of your applications.

  • # system design

    Fair Resource Allocation: Understand Rate Limiting and Throttling

    Dive into the world of rate limiting and throttling to ensure your applications play fair when it comes to resource allocation. Learn how these powerful techniques prevent overloading, maintain system stability, and create a smoother experience for users.

  • # system design

    Eventual Consistency and Consistency Models in Distributed Systems

    Step into the fascinating world of distributed systems, where we unravel the mysteries of eventual consistency and various consistency models. Join me in this human-to-human conversation as we explore the subtle balance between data availability and integrity in distributed environments. If you're a technically sound enthusiast seeking to navigate the complexities of consistency models, this blog is your guiding light to achieve harmony in distributed systems.

  • # system design

    Distributed Transactions: Navigating the Complex World of Data Consistency

    Delve into the realm of distributed transactions and unravel the secrets of maintaining data consistency across multiple systems. Join me as we explore the challenges and solutions in handling distributed transactions, and learn how to ensure data integrity in a distributed environment.

  • # system design

    Handling Failures in Distributed Systems: The Circuit Breaker Pattern Explained

    Discover how the Circuit Breaker Pattern empowers developers to handle failures gracefully in distributed systems. Learn how this powerful mechanism ensures your applications stay resilient and responsive, even when facing turbulent conditions.

  • # homelab

    Should You Self-Host Password Managers On-Premises?

    The idea of self-hosting your password manager on-premises has been a hot topic in the homelab community. But is it worth the effort and potential risks? I've gathered insights from experienced self-hosters to help you decide.

  • # git# engineering

    Selecting the Right Git Merging Strategy: Merge Commit, Squash and Merge, or Rebase and Merge

    Uncover the intricacies of Git merging strategies – merge commit, squash and merge, and rebase and merge. Discover the pros and cons of each approach and learn how to navigate the decision-making process based on your project's dynamics and team preferences.

  • # projects# engineering

    I built my own in-house Newsletter system

    Discover how I transformed the need for a newsletter system, sparked by Revue's shutdown, into a fulfilling side project. Dive into the my journey of conceptualizing, breaking down, and building a custom newsletter system that seamlessly integrates with my website's content workflows.

  • # linux

    SystemD Timers vs. Cron Jobs

    Explore the world of task scheduling in Linux as we compare the classic Cron Jobs with the modern SystemD Timers. Learn when to use each method and how to set them up to automate your Linux system tasks effectively.

  • # engineering

    Incremental Static Regeneration: Dynamic Websites with SSR and Cache Headers

    Step into the world of web development magic as we unravel the fascinating tale of Incremental Static Regeneration (ISR). Join me on this journey where we'll explore how to leverage Server-Side Rendering (SSR) with smart cache headers to build dynamic websites that load with lightning speed. Buckle up – we're about to give your website a turbo boost!

  • # engineering# nodejs

    Running SSL on Localhost

    In today's digital landscape, security is paramount. Secure Sockets Layer (SSL) is a crucial technology that encrypts data transmitted between a user's browser and a website, ensuring confidentiality and integrity. But did you know you can also enable SSL for your localhost development environment? This guide will walk you through the process step by step.

  • # docker

    Reduce Docker Image Size Like a Pro

    Dive into the realm of Docker image optimization and learn how to sculpt sleek and efficient images that won't weigh down your containers. Join me on this journey as we unravel practical techniques and step-by-step methods to trim the excess fat, from choosing the right base image to mastering multi-stage builds. Let's embark on a quest to craft Docker images that are both agile and powerful.

  • # security

    The Dangers Lurking in Free Public WiFi

    Picture this: you're sitting at a cozy café, sipping on your latte, and surfing the internet on the free public WiFi. Seems harmless, right? But hold on a sec – let's talk about the not-so-friendly company you're sharing that network with. Join me as we unravel the risks of using that enticing, but potentially treacherous, free public WiFi.

  • # astro

    Set Up Draft Pages Effectively in Astro with Config-Driven Content Authoring

    Learn how to harness the power of content collections in Astro to manage draft pages effortlessly. Discover how to exclude draft content from production while enabling local content creation, all guided by a smart configuration setup.

  • # javascript

    Write Secure JavaScript Applications

    Dive into the realm of writing secure JavaScript applications. Uncover practical strategies to shield your web apps from XSS and CSRF vulnerabilities, ensuring robust and safe software in an interconnected world.

  • # javascript

    Multi-Threaded JavaScript with Web Workers

    Are you tired of slow and unresponsive web applications? Do you want to improve the performance of your JavaScript code without sacrificing user experience? Look no further than JavaScript's Web Workers API. In this article, we'll explore the basics of web workers and how they can help you create multi-threaded web applications.

  • # javascript

    Asynchronous JavaScript Programming: A Guide to Promises, Async/Await, and Generators

    Asynchronous programming is essential in JavaScript to handle time-consuming operations and provide a better user experience. This article will provide a detailed guide to mastering asynchronous JavaScript programming with Promises, Async/Await, and Generators.

  • # javascript

    Event Handling in JavaScript: Understanding Delegation and Propagation

    Event handling is an essential part of JavaScript programming. Whether it's a simple click event or a complex user interface interaction, understanding how events work is crucial to writing effective and efficient code. In this article, we'll explore advanced event handling concepts in JavaScript, including delegation and propagation. By mastering these concepts, you'll be able to write more maintainable and scalable code.

  • # javascript

    Partial Application in JavaScript

    In JavaScript, partial application is a powerful technique that allows you to create new functions by fixing some, but not all of the arguments of an existing function. This technique can help you write cleaner, more concise code, and improve the reusability of your functions. In this article, we'll explore what partial application is, how it works, and how to use it in your own code.

  • # javascript

    JavaScript Design Patterns for Better Code Organization and Maintainability

    JavaScript has become a popular programming language for building complex web applications, but with its increasing complexity, maintaining and organizing code can be a daunting task. However, using design patterns can help you structure your code for better organization and maintainability. In this article, we will explore some of the most common JavaScript design patterns and how to implement them in your code.

  • # javascript

    Boosting Your Website's Performance with JavaScript Code Optimization

    JavaScript is a crucial component of modern web development, and its performance can have a significant impact on user experience. By optimizing your JavaScript code, you can improve your website's loading speed, reduce memory usage, and enhance overall performance. In this article, we'll discuss some advanced techniques for optimizing your JavaScript code and achieving optimal performance.

  • # astro

    Seamless Error Tracking: Integrating Sentry with Astro

    Learn how to enhance your Astro-powered website's reliability by seamlessly integrating Sentry for error tracking. Discover step-by-step instructions to integrate Sentry's browser package for frontend errors and utilize the toucan-js package for API endpoints. Elevate your website's user experience through effective error monitoring and resolution.

  • # system design

    Finding Your Way: Understanding Service Discovery and Service Mesh

    Join me on this tech-savvy adventure as we delve into the fascinating world of service discovery and service mesh. In this blog, we'll navigate through the complexities of distributed systems, exploring how service discovery acts as a compass, guiding applications to find and communicate with each other seamlessly. Get ready to unravel the mysteries of service mesh and understand how it empowers us to control, secure, and optimize the flow of information between microservices.

  • # system design

    Building Resilient Systems: A Guide to Designing for Fault Tolerance

    Join me on a journey into the world of building robust and resilient systems. In this blog, we'll explore the art of designing for fault tolerance, where we'll discover how to prepare our applications to gracefully handle failures and bounce back stronger. So, grab a seat and get ready to fortify your systems against unforeseen challenges.

  • # system design

    Designing for Scalability: Building a Flexible and Future-Proof System

    Join me on an exciting journey into the world of scalable system design. In this blog, we'll explore the art of crafting flexible and future-proof architectures that can handle the growing demands of your application. So grab a cup of coffee, and let's dive into the realm of scalability, where we'll unlock the secrets to building systems that stand the test of time.

  • # system design

    High Availability Architectures: Uninterrupted Services for a Seamless Experience

    Discover the world of high availability architectures and how they ensure your services are always up and running, no matter the circumstances. Join me as we explore the art of building resilient systems that guarantee 24/7 uptime and deliver a seamless experience to users.

  • # system design

    Distributed Tracing and Observability in Your System

    Dive into the world of distributed tracing and observability to gain valuable insights into your system's performance and behavior. In this blog, we'll embark on a human-to-human exploration of tracing techniques and observability tools that empower you to understand the intricate interactions among your microservices. From tracing spans to logging and monitoring, we'll uncover the key components that illuminate the path to a more observable and controllable system.

  • # system design

    Observability and Monitoring: Illuminating the Inner Workings of Large Systems

    Join me on an illuminating journey into the world of observability and monitoring when building large systems. In this blog, we'll demystify the art of understanding, visualizing, and diagnosing the intricate inner workings of complex systems. Get ready to shed light on hidden issues, gain insights, and ensure smooth sailing for your projects.

  • # system design

    Consistent Hashing in Distributed Systems: Navigating Data Distribution with Finesse

    Welcome to the captivating world of consistent hashing in distributed systems! In this blog, we'll explore the elegant technique of consistent hashing that empowers distributed systems to distribute and balance data with finesse. Join me as we unravel the magic behind consistent hashing and discover how it enables seamless scalability and fault tolerance in modern distributed architectures.

  • # system design

    Exploring the Event-Driven Architecture

    In the world of software engineering, architectures play a significant role in determining how a system will behave and perform. One such architecture that has gained popularity in recent years is event-driven architecture (EDA). It is a paradigm that enables developers to build systems that are more scalable, flexible, and responsive.

  • # system design

    Understanding Pub-Sub Messaging

    Pub-Sub messaging is a popular messaging pattern used in modern software development. This pattern enables effective communication between multiple software components that need to exchange messages in a decoupled way. In this article, we will dive deep into the concept of pub-sub messaging and explore how it is used in real-world scenarios.

  • # database

    Solving the N+1 Select Query Problem in Database

    Are you tired of seeing slow database queries in your application? One of the most common causes of this issue is the N+1 select query problem. In this article, we will explore what this problem is and how you can solve it to improve the performance of your application.

  • # database

    Maximizing Query Speed with Database Indexes

    In this article, we will take a closer look at what a database index is and how it works, and we will explore why it is an essential tool for improving the performance of your database queries.

  • # linux

    Mastering Intermediate Linux Commands for Efficient Server Management

    As a Linux server administrator, you may have already learned the basics of Linux commands. However, to manage your server more efficiently, you need to dive deeper into the lesser-known, but equally important intermediate-level commands. In this article, we will cover some of the intermediate-level Linux commands that will help you become a more proficient Linux sysadmin.

  • # linux

    Essential Linux Commands for Server Maintenance at Home

    As a Linux system administrator, it's essential to have a good grasp of the command-line interface. In this blog, we'll explore some of the most common and useful commands used for maintaining a Linux server at home. From handling files to networking, these commands will help you streamline your work and keep your server running smoothly.

  • # linux# docker

    Build Your Own Docker with Linux Namespaces, cgroups, and chroot: Hands-on Guide

    Take a practical approach to containerization as we guide you through the step-by-step process of building your own Docker-like environment using Linux namespaces, cgroups, and chroot. Dive into the code and command examples to gain a deeper understanding of how these technologies work together to create isolated and efficient containers.

  • # linux

    How to Create a Restricted Environment with the Linux chroot Command

    The Linux operating system is known for its flexibility and robustness. One of the many powerful tools available in Linux is the chroot command, which can be used to create a restricted environment within the existing file system. This can be useful in a variety of scenarios, such as testing new software or isolating sensitive data. In this article, we'll explore how to use the chroot command in Linux and provide practical examples to help you get started.

  • # linux

    Linux Control Groups: Fine-Tuning Resource Allocation for Optimal System Performance

    Explore the power of Linux control groups (cgroups) and how they revolutionize resource management in your Linux environment. Uncover the secrets of cgroups to effectively allocate system resources, limit process usage, and optimize performance for your applications and services.

  • # linux

    Linux Namespaces: Isolating Your System for Enhanced Security and Performance

    Discover the power of Linux namespaces and how they enable you to create isolated environments within your system. Dive into this comprehensive guide to understand the concept of namespaces, their benefits, and how they enhance security and performance in your Linux environment.

  • # linux

    FZF: The Ultimate Linux Productivity Tool

    Are you tired of endlessly scrolling through terminal output or file listings? Look no further than fzf! This powerful command-line tool allows you to quickly and efficiently search and select from lists of files, processes, command history, and much more. In this article, we'll explore what fzf is and how you can use it to level up your Linux productivity game.

  • # security

    Mastering App Security: 7 Crucial Risks Every Developer Must Mitigate

    In the world of software development, ensuring the security of your applications is paramount. From protecting user data to safeguarding against malicious attacks, developers must be aware of the potential risks and take proactive measures to mitigate them. In this comprehensive guide, we will explore seven key security risks that every developer should know when building their app. Get ready to enhance your app's resilience and protect your users' sensitive information.

  • # linux# security

    Exploding your system: The deadly Fork Bomb in Linux

    Are you familiar with the term 'fork bomb' in Linux? If not, it is a potentially dangerous command that can severely impact system performance and stability. In this article, we will explore what a fork bomb is, how it works, and how to protect your Linux system from its harmful effects.

  • # linux

    Linux bzip2 and gzip Compression Utilities: An Overview of File Compression

    In the world of Linux, bzip2 and gzip are two popular compression utilities that allow you to compress and decompress files. They are efficient, fast, and easy to use, making them an essential part of any Linux user's toolkit. In this article, we'll give you an overview of bzip2 and gzip, explain how they work, and provide examples of their usage.

  • # linux

    Beyond ext4 — Exploring Linux File Systems Btrfs and ZFS

    Linux is known for its flexibility and customizability, which is largely due to its file systems. While the ext4 file system is commonly used in Linux distributions, there are other options available that offer unique features and advantages. Two of the most notable alternatives are Btrfs and ZFS. In this article, we will explore these file systems and see what makes them stand out from the crowd.

  • # linux

    Linux Package Management: A Guide to apt, dnf, and pacman

    Linux package management can be daunting for new users. With multiple package managers like apt, dnf, and pacman, it can be overwhelming to understand how they work and which one to use. In this article, we'll provide an overview of these package managers and their features to help you get started with Linux package management.

  • # engineering

    Mastering Debugging in VSCode: A Beginner's Guide

    Debugging is an essential part of a software developer's workflow, helping to identify and resolve issues in the code. VSCode, one of the most popular code editors in the development community, provides a robust and user-friendly debugging experience. In this article, we'll take a deep dive into how to set up and use the VSCode debugger to debug Node.js applications.

  • # engineering

    Mastering Debugging: Tips and Techniques for Software Engineers

    Debugging is an essential part of the software development process. It can be frustrating, but with the right techniques, it can also be a rewarding challenge. By following the tips and techniques outlined in this article, software engineers can improve their debugging skills and become more efficient problem solvers.

  • # engineering

    Mastering Google: Advanced Tips for Software Engineers

    As a software engineer, your ability to find and use information quickly can make all the difference. But with the vast amount of information available online, it can be overwhelming to find what you need. In this article, we’ll go beyond the basics and explore advanced techniques to help you become a Google master.

  • # engineering

    How to Google like a Pro as a Software Engineer: Beginner's Guide

    Google is an invaluable tool for software engineers, but knowing how to search effectively is key to finding the right information quickly. In this article, I'll share some tips and tricks to help you Google like a pro and become a more efficient and effective developer.

  • # git# engineering

    Git Beyond Basics: 7 Uncommon Git Commands Every Developer Should Know

    Git is one of the most popular version control systems used by developers worldwide. However, most developers only use a handful of Git commands in their daily work. In this article, we will explore some uncommon Git commands that can help improve your workflow and productivity. These commands will help you to work more efficiently, troubleshoot issues, and collaborate more effectively with your team.

  • # engineering# nextjs# astro

    Embracing the Future: Migrating from Next.js to Astro

    Discover the exciting transformation of migrating a website from Next.js to Astro. Join me as we explore the motivations behind this switch, the benefits of Astro's HTML-first approach, and the valuable insights gained along the way. Embrace the future of web development and unlock new possibilities for your own projects.

  • # engineering

    Demystifying Go-URLs: Unleashing the Power of Shortened URLs

    Explore the world of Go-URLs and discover how they are used in various contexts. From shortening long URLs to enabling deep linking and tracking, Go-URLs offer a powerful way to optimize and enhance your web experiences. Join us on this journey as we unravel the mysteries of Go-URLs and delve into their practical applications.

  • # javascript

    Integration Testing in JavaScript with Jest and Nock: A Beginner's Guide

    Integration testing is an essential part of the software development process, and it ensures that all the components of your application work together as expected. In this article, we'll explore the basics of integration testing in JavaScript and show you how to use Jest and Nock to write effective tests that simulate real-world scenarios.

  • # javascript

    Unit Testing in JavaScript: How to Ensure Code Quality and Catch Bugs Early

    Unit testing is a critical aspect of software development that ensures code quality, improves maintainability, and catches bugs early. In this article, we'll explore the basics of unit testing in JavaScript, including what it is, why it's important, and how to write effective unit tests using popular testing frameworks.

  • # nodejs# projects

    Building and Publishing TypeScript NPM Packages: A Step-by-Step Guide

    Learn how to create and publish your own Npm packages using TypeScript. This comprehensive guide covers everything from setting up your project with TypeScript, using tsup for building, vitest for testing, and semantic release for versioning and publishing. Take your TypeScript projects to the next level and share your code with the world!

  • # system design

    Snowflake ID: Generating Unique IDs for Distributed Systems

    In modern distributed systems, generating unique IDs is crucial for data consistency and scalability. Snowflake ID is a type of unique identifier that is widely used in distributed systems for generating IDs with high precision, scalability, and availability. In this blog post, we will discuss what Snowflake ID is and how it works, and explore its use cases and benefits.

  • # javascript

    Array and Object Manipulation in JavaScript: Advanced Techniques

    Arrays and objects are fundamental data structures in JavaScript. They are used extensively in modern web development to store and manipulate data. In this blog post, we will explore advanced techniques for manipulating arrays and objects in JavaScript. We will cover topics such as flattening arrays, merging objects, filtering and mapping arrays, and much more. By the end of this post, you will have a deeper understanding of JavaScript's array and object manipulation capabilities.

  • # javascript

    Mastering Iterators and Generators in JavaScript: A Beginner's Guide

    JavaScript's ability to handle data manipulation and iteration has been enhanced with the introduction of iterators and generators. These powerful features allow developers to write more concise and efficient code for handling complex data structures. In this article, we'll explore what iterators and generators are, how they work, and how to use them in your code to simplify data manipulation. Whether you're a beginner or an experienced JavaScript developer, this guide will provide you with the foundational knowledge you need to master iterators and generators in JavaScript.

  • # javascript

    Mastering the Art of Currying in JavaScript: A Beginner's Guide

    Are you tired of dealing with multiple function arguments in your JavaScript code? Currying is here to simplify your life! Learn how to use this powerful technique to create reusable and flexible functions in JavaScript.

  • # javascript

    Functional Programming in JavaScript: An Introduction

    Learn the basics of functional programming in JavaScript, a paradigm that emphasizes immutability, higher-order functions, and pure functions. Discover how to create more reliable and maintainable code by following this programming style.

  • # javascript

    Understanding Pure Functions in JavaScript: A Comprehensive Guide

    Pure functions are one of the most important concepts in functional programming. In JavaScript, they play a critical role in creating maintainable and predictable code. In this article, we will explore what pure functions are and how they work in JavaScript, along with some code examples.

  • # javascript

    The Power of Immutability in JavaScript

    Immutability is a concept that has been gaining a lot of attention in the world of programming, and JavaScript is no exception. Immutability refers to the ability to create data structures that cannot be changed after they are created. In this blog, we will explore what immutability is and why it is important, along with some examples of how to achieve it in JavaScript.

  • # javascript

    Demystifying Higher Order Functions in JavaScript

    Higher Order Functions are an essential aspect of functional programming in JavaScript. They allow developers to write more concise and reusable code, making it easier to manage complex codebases. In this blog post, we will take a deep dive into Higher Order Functions and explore their potential uses.

  • # javascript

    Demystifying Closures and Lexical Scopes in JavaScript

    JavaScript’s closure and lexical scope features can be confusing for many developers, especially those coming from other programming languages. However, understanding these concepts is essential to write efficient and reliable code. In this article, we will dive deep into closures and lexical scoping in JavaScript, explore their nuances, and provide practical examples to help you grasp the concepts with ease.

  • # linux

    How to Use the Linux Socat Command for Bidirectional Data Transfer Between Network Connections

    The Linux socat command provides a powerful and flexible solution for bidirectional data transfer between network connections. In this article, we'll explore how to use the socat command in Linux and provide practical examples to help you get started.

  • # linux

    How to Use the Linux Shred Command for Secure File Deletion

    Deleting a file from your computer's hard drive doesn't actually erase the data, leaving it open to recovery by unauthorized individuals. The Linux `shred` command provides a simple and effective solution to securely delete files from your computer's hard drive. In this article, we'll explore how to use the `shred` command in Linux and provide practical examples to help you get started.

  • # linux

    How to Use the Linux Netcat Command for Network Communication and Testing

    The Linux 'nc' command, also known as Netcat, is a versatile networking tool that can be used for a variety of tasks such as network communication, port scanning, file transfer, and network testing. It provides a simple and effective way to connect and interact with other networked devices. In this article, we'll explore how to use the 'nc' command in Linux and provide practical examples to help you get started.

  • # linux

    A Beginner's Guide to Using the Linux Mount Command for File System Management

    The Linux mount command is a powerful tool that allows you to attach file systems to your system's file hierarchy. In other words, you can use the mount command to access the contents of a file system, which may be stored on a local hard drive, network server, or even a CD or USB drive. In this article, we will cover the basics of using the mount command to mount and unmount file systems on Linux systems.

  • # linux

    Splitting and Concatenating Files on Linux Made Easy with the split Command

    The Linux operating system is a favorite among developers, system administrators, and power users due to its flexibility, security, and stability. One of the many built-in utilities available in Linux is the split command, which is used to split large files into smaller, more manageable parts or join multiple smaller files into a single, larger file. In this article, we'll explore how to use the split command for file splitting and concatenation, and provide practical examples to help you get started.

  • # linux

    How to Use the Linux lsof Command for Listing Open Files and Processes

    The Linux lsof command is a powerful tool that allows you to view information about open files and processes on your system. In this article, we'll explore how to use the lsof command in Linux and provide practical examples to help you get started.

  • # linux

    Tracing the Network Path with the Linux Traceroute Command

    Have you ever wondered how your network traffic reaches its destination? The Linux traceroute command is a powerful tool that allows you to analyze the network path between your device and a destination server. In this article, we'll explore how to use the Linux traceroute command for network path analysis.

  • # linux

    Mastering Disk Imaging and Cloning with Linux's dd Command

    The Linux dd command is a powerful tool for disk imaging and cloning, allowing users to create exact copies of disks or partitions for backup, recovery, or migration purposes. Though it may seem daunting at first, the dd command is straightforward and easy to use once you understand its basic syntax and options. In this blog post, we'll explore how to use the dd command to create disk images and clone disks or partitions on Linux systems.

  • # linux

    Mastering Batch Processing with Linux xargs Command

    Batch processing tasks can be time-consuming and cumbersome when performed manually. This is where the Linux xargs command comes in handy. It enables you to efficiently process a large number of files or inputs in one go, saving you time and effort. This article introduces you to the Linux xargs command, its syntax, and practical examples of how it can be used for batch processing.

  • # linux

    Simplify Text Processing with the Linux Awk Command

    Are you tired of manually processing and manipulating text files on Linux? The awk command is a powerful tool that can automate these tasks and save you time and effort. In this article, we'll explore the basics of using the Linux awk command for text processing and manipulation.

  • # linux

    Mastering Text Manipulation with the Linux sed Command

    The Linux sed command is a powerful tool for text manipulation. It allows you to search for patterns in text and replace or delete them. With sed, you can automate repetitive tasks and transform text in complex ways. In this article, we'll provide an overview of the sed command and show you how to use it to manipulate text.

  • # linux

    Streamline Your Linux Output with the Tee Command

    Do you find yourself constantly redirecting output to multiple files or commands on Linux? The tee command is a useful tool that allows you to send output to multiple destinations simultaneously. In this article, we'll explore how to use the Linux tee command for redirecting output to multiple destinations.

  • # linux

    Mastering the Linux Tar Command: A Guide to Archive Creation and Extraction

    Have you ever needed to compress multiple files into one convenient package for easier transfer or storage? The Linux tar command is a powerful tool that can create and extract archive files quickly and efficiently. In this article, we'll guide you through the process of using the tar command for archive creation and extraction.

  • # linux

    Mastering the Art of File and Directory Search with Linux's Find Command

    Linux is known for its command-line interface and powerful tools that help users perform various tasks efficiently. One such tool is the 'find' command, which lets users search for files and directories with ease. While the command might seem a bit intimidating at first, it can save users a lot of time and effort in finding files and directories scattered across the system. In this blog post, we will guide you through the basics of using the Linux find command and its various options.

  • # linux

    Mastering Linux grep Command for Searching Text Files and Directories

    Searching for text within large files or directories can be a tedious task, especially if you have to do it manually. Fortunately, Linux offers a powerful tool that can make this process easier and more efficient: the grep command. In this article, we will explore how to use the Linux grep command to search for text within files and directories.

  • # linux

    Simplify Your File Synchronization and Backup with Linux Rsync Command

    Keeping your files synchronized across multiple devices and creating backups can be a daunting task, especially if you have a large number of files to manage. Fortunately, the Linux rsync command can help make this process more manageable and efficient. In this article, we'll explore the rsync command and learn how to use it for file synchronization and backups.

  • # linux

    Mastering Process Monitoring and Management with htop Command in Linux

    When it comes to process monitoring and management on Linux, the htop command is a powerful tool that can help you keep track of all the processes running on your system, and even take action to manage them. With its intuitive interface and advanced features, htop is an essential tool for any Linux system administrator or power user.

  • # networking

    Discover the Power of Subnets: The Ultimate Guide

    Subnets play a crucial role in networking by dividing an IP network into smaller subnetworks. They enable efficient use of IP address space and enhance network security. In this article, we’ll dive deep into subnets, discussing everything from their basics to advanced concepts, and explore how to use them to their fullest potential.

  • # system design

    Exploring the Differences Between HTTP/2 and HTTP/3

    As the internet continues to evolve, so does the protocol that powers it - HTTP. HTTP/2 and HTTP/3 are two of the latest versions of HTTP, both designed to improve web performance and security. In this article, we'll explore the differences between HTTP/2 and HTTP/3 and how they impact the modern web.

  • # system design

    Exploring HTTP/2 Server Push: An Efficient Way to Speed Up Your Web Applications

    HTTP/2 Server Push is an innovative feature of the HTTP/2 protocol that allows web developers to proactively push resources to clients before they even request them. This feature helps in reducing page loading time and enhancing the overall performance of web applications.

  • # system design

    WebSocket: Real-time Communication Made Easy

    Are you tired of relying on traditional HTTP requests for real-time communication in your web applications? Look no further than WebSocket! This powerful protocol allows for two-way communication between a client and server, enabling real-time data transfer without the need for constant requests and responses.

  • # system design

    Understanding Message Queues: The Key to Building Reliable and Scalable Systems

    Message queues have become a fundamental part of modern software systems, allowing developers to build distributed, reliable, and scalable applications. In this article, we will explore the concept of message queues, their architecture, and their use cases in both technical and layman terms. Whether you are building a simple application or a complex system, understanding message queues is essential to designing a robust and efficient solution.

  • # system design

    Understanding Back Pressure in Message Queues: A Guide for Developers

    Are you tired of dealing with message queues that slow down or crash under heavy loads? Back pressure is a common issue that many developers face when working with message queues. But fear not! This guide will explain everything you need to know about back pressure, including how it works, why it's important, and how to master it.

  • # system design

    What is a Cache and How Does it Speed Up Your Applications?

    Caching is a powerful technique used by software engineers to speed up their applications. But what exactly is a cache, and how does it work? In this article, we'll dive into the technical details of caching, explain how it can improve the performance of your applications, and provide real-world examples to help you better understand this essential concept.

  • # system design

    Race Conditions: Understanding and Avoiding Them

    Race conditions can cause unpredictable and hard-to-reproduce bugs in software systems. In this article, we'll explain what race conditions are, why they occur, and how you can design your system to avoid them.

  • # system design

    Understanding Remote Procedure Call (RPC) in Distributed Computing

    Remote Procedure Call (RPC) is a popular mechanism used in distributed computing to allow programs running on different machines to communicate with each other. This article will explain what RPC is, how it works, and provide real-world examples of its applications.

  • # system design

    Understanding Representational State Transfer (REST)

    Learn what Representational State Transfer (REST) is and how it has become the de facto standard for building web APIs today.

  • # system design# networking

    What is UDP and When to Use it? A Comprehensive Guide

    UDP is a lesser-known protocol when compared to TCP, but it plays a vital role in network communication. If you are looking to learn about UDP and its use cases, you have come to the right place. Read on to explore the ins and outs of UDP and when it should be used.

  • # system design# networking

    Demystifying TCP: A Comprehensive Guide to Transmission Control Protocol

    TCP is a fundamental protocol of the internet, and understanding how it works is essential for anyone who wants to know more about networking. In this article, we will demystify TCP and explain how it works in both technical and layman terms.

  • # system design# database

    Understanding Federation in Databases: Definition, Types and Use Cases

    Learn about how federated databases enable the efficient management of distributed systems by allowing for seamless data access and sharing across multiple databases and data sources.

  • # system design# database

    Exploring Sharding in Databases: Partitioning Your Data for Better Scalability

    Sharding is a method of breaking up a large database into smaller, more manageable pieces, allowing for greater scalability and performance. This technique involves distributing data across multiple machines, reducing the load on any one server and enabling faster and more efficient queries. In this article, we’ll dive into the concept of sharding and explore how it can be implemented to improve the performance and scalability of your database system.

  • # system design# database

    Master-Slave Replication: Scaling Your Database for High Availability

    As businesses grow, their databases can become overloaded and slow, leading to a poor user experience. To address this issue, database administrators can use a system called master-slave replication, which allows for multiple copies of a database to be distributed across different servers. In this article, we'll explore the concept of master-slave replication, how it works, and why it's important for achieving high availability in your database.

  • # system design# database

    Exploring Master-Master Replication in Databases: How It Works and Its Benefits

    Master-master replication is a powerful technique that can help you improve the availability and scalability of your database system. But what exactly is master-master replication, and how does it work? In this article, we'll explore the details of this technique, including its benefits and some real-world examples.

  • # system design

    The Power of a CDN: Delivering Lightning-Fast Content

    Do you want your website to load faster for users all over the world? A Content Delivery Network (CDN) is the solution you've been looking for. This article will explore what a CDN is and how it works to speed up your website, giving you a competitive edge in today's fast-paced online world.

  • # system design

    Balancing the Load: Understanding Load Balancers and Their Types

    Dealing with a heavy traffic load on your website or application? Learn about load balancers and how they distribute traffic to keep your online presence running smoothly. Discover the differences between Layer 4 and Layer 7 load balancers and find the right solution for your needs.

  • # networking

    Unlocking the Secrets of SSL Certificates: How They Keep Your Data Safe Online

    Are you curious about how SSL certificates work to secure your online transactions? In this article, we'll explore the technicalities of SSL certificates, including how they encrypt data and the various types available for website owners.

  • # system design# networking

    VPN Explained: Understanding Virtual Private Networks

    Learn about the basic principles and use cases of VPNs, and how they help keep your internet traffic secure and private.

  • # system design

    Unlocking the Power of Forward Proxies: Simplified

    Discover what a forward proxy is and how it can be used to enhance network security, increase browsing speed, and more. Get a clear understanding of this powerful technology and its real-world applications.

  • # system design

    Reverse Proxies: A Beginner's Guide to Unlocking Their Power

    A reverse proxy is an intermediary server that sits between your client and servers, routing client requests to the appropriate server. In this article, we will explain what a reverse proxy is and its benefits, both in technical terms and real-world examples.

  • # system design

    Latency vs Throughput: Balancing the Two Sides of System Performance

    When it comes to optimizing the performance of a system, two key metrics come into play: latency and throughput. But what exactly are these two metrics, and how do they differ? In this article, we'll explore the definitions and real-world examples of latency and throughput, and show you how to balance them for optimal system performance.

  • # system design

    Balancing the Tradeoff: Availability vs Consistency

    In the world of computing, a delicate balance must be struck between two important concepts: Availability and Consistency. But what exactly do these terms mean and how do they impact your systems? Read on to find out!

  • # system design

    Performance vs Scalability: Understanding the Key Differences

    Performance and Scalability, two crucial components of any system design, yet often misinterpreted. In this article, we will dive into the technicalities of both concepts and understand the key differences, helping you make informed decisions for your system's success.

  • # security

    Zero Day Attacks: Understanding the Unannounced Threats

    Discover the dangerous world of zero day attacks and learn how they can exploit vulnerabilities in software to cause harm to businesses and individuals alike. From the definition to real-life examples, this article covers all you need to know about zero day attacks.

  • # security

    Denial of Service Attacks: What They Are and How to Protect Against Them

    Discover the basics of Denial of Service (DoS) attacks and learn how to safeguard your website and online presence from these malicious attacks.

  • # networking

    Understanding DHCP Server - The Essential Guide

    DHCP, or Dynamic Host Configuration Protocol, is a crucial component of modern network infrastructure. In this article, we'll explore what a DHCP server does and how it helps manage IP addresses dynamically in a network.

  • # networking

    Understanding Recursive DNS: A Comprehensive Guide

    Learn about Recursive DNS, how it works and its benefits. Discover why Recursive DNS is important for improving the speed and reliability of domain name resolution and enhancing internet security.

  • # cloudflare# homelab

    Unleash the Power of Self-Hosted Services with Cloudflare Tunnels

    Say goodbye to complicated port forwarding and hello to effortless access to your self-hosted services with Cloudflare Tunnels. Discover how to configure and use this game-changing technology.

  • # cloudflare# homelab

    Dynamic DNS Made Easy with Cloudflare API

    Get rid of the hassle of manual IP updates for your domain with our step-by-step guide on how to create a DDNS using Cloudflare DNS API. Effortlessly keep your domain pointing to your dynamic IP address with just a few simple scripts.

  • # system design

    Concurrency vs. Parallelism: Understanding the Key Differences

    Concurrency and parallelism are often used interchangeably, but they refer to distinct concepts in computer science. In this article, we will break down the differences between concurrency and parallelism, explore the benefits and drawbacks of each, and provide real-world examples to help you better understand these concepts.

  • # performance# database

    Navigating Your Database Efficiently: Cursor Based Pagination vs Offset Based

    Take control of your database performance with cursor based pagination. Learn why it's a better option compared to offset based pagination.

  • # performance

    The Importance of 99th Percentile Latency in System Performance

    Latency is a crucial metric for measuring the performance of any system, and understanding the 99th percentile is crucial for determining real-world performance. In this article, we'll delve into what the 99th percentile means and how it is calculated, with examples to help you understand this essential metric.

  • # golang# raspberrypi

    Installing the Latest Version of Golang on Your Raspberry Pi

    Get started with developing in Golang on your Raspberry Pi. This comprehensive guide will show you how to install the latest version of Golang on your Raspberry Pi, making it a powerful development tool.

  • # nodejs# raspberrypi

    Get Up and Running with the Latest Version of Node.js on Raspberry Pi

    Do you want to run the latest version of Node.js on your Raspberry Pi? This guide will take you through the process of installing the latest version of Node.js on armhf architecture using binary packages.

  • # engineering

    Mastering Dotfiles Management with GNU Stow

    If you're a software developer or a power user who works with a UNIX-like operating system, you might have heard about dotfiles. Dotfiles are hidden configuration files that are used to customize the behavior of applications or the shell environment. In this article, we'll explore what dotfiles are, and how to manage them using the GNU Stow project.

  • # linux

    Effortlessly Manage Torrent Downloads with Headless qBittorrent on Linux

    Learn how to install qBittorrent on a Linux server without a GUI and run it in the background with SystemD for a seamless torrenting experience.

  • # homelab

    Revamp Your Old Android Phone into a Mini Linux Server

    Turn your old Android phone into a portable Linux server with the Linux Deploy app. Learn how to set up a Debian server on your device and use it to host websites, run scripts, and more!

  • # linux

    Running a Service in the Background with SystemV in Linux: A Comprehensive Guide

    Take control of your background services with SystemV in Linux. Learn how to write a SystemV init script, install and start the service, and control its behavior with this comprehensive guide.

  • # linux

    Keep Your Services Running in the Background with SystemD

    Do you want your Linux services to keep running even after you log out of your system? SystemD makes it easy to run services in the background. In this guide, we'll show you how to create a SystemD service, start and stop it, and monitor its status.

  • # linux

    Init Systems Unveiled — Understanding the Differences between SystemD and SystemV

    Get a comprehensive understanding of SystemD and SystemV init systems in Linux. Explore the similarities and differences between these two init systems, with explanations to help you make an informed decision.

  • # linux

    Effortlessly Download Torrents on Your Server with Aria2

    Don't wait hours for torrents to download on your server. Aria2 is a lightweight, open-source download manager that can handle torrents with ease. In this guide, we'll show you how to install and set up Aria2 on your server, download torrent files, and manage downloads.

  • # linux# security

    Stay Secure — Essential SSH Security Practices for Linux Servers

    Protect your Linux server from potential threats by following best practices for SSH security. Learn about using strong passwords, disabling root login, enabling public key authentication, and more in our comprehensive guide.

  • # linux# security

    Protect Your Linux Server with UFW Firewall: A Step-by-Step Guide

    Ensure the security of your Linux server by setting up a firewall. UFW (Uncomplicated Firewall) is a user-friendly firewall that's easy to set up and configure. In this guide, we'll walk you through the process of installing UFW, creating firewall rules, and managing firewall rules in Linux.

  • # homelab

    Building My First Home Lab

    Finally after waiting for a long time, I started building my first Home lab and here's how I got started with it.

  • # cloudflare# security

    How to protect your website from attacks using Cloudflare WAF and Rate Limiting

    In this article, I will explain how I was able to protect my website from attackers and how you can too using Cloudflare WAF and rate limiting.

  • # cloudflare# devops

    How to setup Cloudflare proxy for your website hosted on Vercel or Netlify

    In this article, I will show you how to properly set up Cloudflare proxy for any of your website which is hosted on some other service like Vercel or Netlify.

  • # nextjs

    How I automatically generate a dynamic sitemap in Next.js

    Learn how to generate a dynamic sitemap on build time automatically in Next.js with Contentlayer

  • # bash# postgres

    3 simple steps to create a local backup of Postgres database using Bash script

    In this article, I will show you how I back up the Postgres database hosted on Supabase (ideally can be anywhere) to the local system and automate this process.

  • # security

    Add a Honeypot in your Forms to avoid Spam Submissions

    Learn how to quickly add a spam filter to reduce spam submissions in any of your forms on your website.

  • # react

    How to add fuzzy search to your React app using Fuse.js

    Learn how to create a reusable useSearch hook in react using Typescript to add searching functionality in your app

  • # oss

    Open Source alternatives you must try - Part 2

    List of open source alternatives for Comment systems and virtual meetings

  • # oss

    Open Source alternatives you must try - Part 1

    List of open source alternatives for Analytics and No-code tools

  • # projects

    Journey into "how to professionally say" project

    Join me in the journey of this project which got way more traction than expected

  • # javascript# nodejs

    How to use ES6 import syntax in Node.js

    Learn how to quickly start using ES6 import syntax in Node.js

  • # bash# linux

    Increase Root Partition Size On Fedora

    Learn how to increase root partition size on fedora in 2 simple steps.

  • # bash# linux

    Backup Users Home Directory In Linux Using Tar Command

    Learn how to easily and systematically backup your home directory in linux.

  • # gatsby

    Disable Source Maps in GatsbyJs V2 for Production.

    Quickly disable source maps in gatsbyjs for your production website.

  • # interview

    Infosys Power Programmer Interview Experience

    Sharing my Infosys power programmer interview experience

  • # nodejs

    How to manage multiple Node.js versions on your system

    Learn how to manage multiple versions of Node.js on your local system with ease.

  • # devops

    Top Free Services To Deploy Full-Stack Applications

    Sharing the list of these amazing free services that can help you go online with your app for free.

  • # interview

    LNT Infotech (LTI) Interview Experience.

    Sharing my LTI pool placement process with the interview experience.

  • # nodejs

    API Rate Limit for Production Ready Applications in Node.js

    Learn how to quickly rate limit your API endpoints for small and large size applications

  • # competition

    HackWithInfy 2019 Round 2 Experience.

    Sharing my Hackwithinfy 2019 Round 2 experience and other useful tips.

  • # competition

    HackWithInfy 2019 Round 1 Experience.

    Sharing my Hackwithinfy 2019 Round 1 experience and other useful tips.

  • # git

    Github CLI ready for your terminal.

    Read more about the new beta feature added by Github which is their Command Line Interface(CLI).

  • # javascript

    New Features in ES2020 with code examples.

    Get insights about new features added in Javascript es2020 like BigInt, Promise.allSettled, Optional Chaining and many more.

  • # git# engineering

    5 Basic Git Commands Every Developer Must Know

    Learn the top 5 basic git commands with examples that you must know as a developer in 2020.

  • # interview

    TCS Codevita Interview Experience

    Sharing my TCS Codevita interview experience with bonus tips and questions.

  • # javascript

    Learn JavaScript Array .reduce() method with code examples

    Learn about Javascript array reduce method also chaining it with map and filter

  • # javascript

    Learn JavaScript Array .filter() method with code examples

    Learn about Javascript array filter method in easiest way possible.

  • # javascript

    Learn JavaScript Array .map() method under 5 minutes with code examples

    Comprehensive yet very easy explanation about JavaScript array map method along with code examples

  • # personal

    Welcome to my website

    Finally I have started with this blogging platform. Hope you will have a good time here 😍😍