Search icon
  • # 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

    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