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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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!
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!
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!
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!
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!
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!
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!
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!
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!
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!
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!
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.
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.
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.
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.
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.
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.
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.
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.
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.
2023 Unwrapped
Looking back a year and talking about how 2023 was for me
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.
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!
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!
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!
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!
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!
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!
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!
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!
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!
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!
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!
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.
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.
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 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 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.
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.
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.
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.
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!
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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!
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.
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.
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.
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.
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.
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.
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.
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.
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 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 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 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.
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.
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.
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 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.
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 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.
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.
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.
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.
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 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.
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.
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.
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.
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.
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!
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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!
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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!
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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
Open Source alternatives you must try - Part 2
List of open source alternatives for Comment systems and virtual meetings
Open Source alternatives you must try - Part 1
List of open source alternatives for Analytics and No-code tools
Journey into "how to professionally say" project
Join me in the journey of this project which got way more traction than expected
How to use ES6 import syntax in Node.js
Learn how to quickly start using ES6 import syntax in Node.js
Increase Root Partition Size On Fedora
Learn how to increase root partition size on fedora in 2 simple steps.
Backup Users Home Directory In Linux Using Tar Command
Learn how to easily and systematically backup your home directory in linux.
Disable Source Maps in GatsbyJs V2 for Production.
Quickly disable source maps in gatsbyjs for your production website.
Infosys Power Programmer Interview Experience
Sharing my Infosys power programmer interview experience
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.
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.
LNT Infotech (LTI) Interview Experience.
Sharing my LTI pool placement process with the interview experience.
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
HackWithInfy 2019 Round 2 Experience.
Sharing my Hackwithinfy 2019 Round 2 experience and other useful tips.
HackWithInfy 2019 Round 1 Experience.
Sharing my Hackwithinfy 2019 Round 1 experience and other useful tips.
Github CLI ready for your terminal.
Read more about the new beta feature added by Github which is their Command Line Interface(CLI).
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.
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.
TCS Codevita Interview Experience
Sharing my TCS Codevita interview experience with bonus tips and questions.
Learn JavaScript Array .reduce() method with code examples
Learn about Javascript array reduce method also chaining it with map and filter
Learn JavaScript Array .filter() method with code examples
Learn about Javascript array filter method in easiest way possible.
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
Welcome to my website
Finally I have started with this blogging platform. Hope you will have a good time here 😍😍