Articles

Dangerous Commands 🇺🇸

Some git commands are powerful but risky because they can rewrite history, move branch tips, or discard work. Used carelessly, they break open reviews, hide teammates’ changes, and make it hard to trace what actually shipped. Treat history edits as exceptional: prefer additive fixes for shared code...

Head 🇺🇸

HEAD is Git’s pointer to the snapshot you’re currently working on—the bookmark of your checkout. Most of the time, HEAD points to the tip of a branch (like master or main). When you commit, HEAD (and that branch) advance to the new commit...

Synchronization 🇺🇸

When collaborating on a project, it's essential to keep your local repository updated with changes made by others in the team. Git provides powerful commands to facilitate this process...

Squashing Commits 🇺🇸

In Git, you might accumulate multiple small commits over the course of developing a new feature, fixing small bugs, or refactoring code. While these incremental commits are crucial during active development, they can clutter the project history in the long term. This clutter becomes especially evide...

Stashing Files 🇺🇸

In Git terminology, "stashing" refers to temporarily saving changes that are not ready to be committed. This allows you to switch branches or make other changes without losing your work...

Introduction to Version Control 🇺🇸

Git is a powerful and widely used version control system that helps you manage code changes, work with others, and keep projects safe. Think of it as a digital timeline you can jump back to whenever something goes wrong. Here are some straightforward reasons to learn Git...

Working with Branches 🇺🇸

Git branches are lightweight names that point to commits. Think of them as parallel timelines: you can try ideas on a branch without touching main, then merge back when you’re happy...

Branching Strategies 🇺🇸

Before choosing a branching strategy, it helps to decide what you’re optimizing for: speed, safety, or simplicity. Different teams and projects lean different ways—startups with small codebases won’t work the same as larger, multi-repo setups. This overview lays out the options and how to adapt them...

Create Repository 🇺🇸

Git is a version control system (VCS) created by Linus Torvalds, the same person who developed the Linux kernel. It’s a tool for tracking changes to files over time, mainly used in software development but useful for any project that involves evolving files...

Mono and Multi Repo 🇺🇸

When managing software projects, organizations often need to choose between two distinct codebase structuring strategies: monorepos and multirepos. This decision isn’t just about where code lives—it affects collaboration, tooling, versioning, and even deployment practices. When you’re starting out o...

Making Changes 🇺🇸

The three core actions you’ll perform most often in Git are staging, committing, and undoing changes...

Tags 🇺🇸

Tags mark exact commits. They’re perfect for releases, rollbacks, changelogs, and CI/CD triggers. Unlike branches, tags don’t move—ever—so you can always point to the exact build you shipped...

Observing Repository 🇺🇸

Git offers several ways to inspect and understand what has changed in your codebase. Mastering these commands helps you monitor progress, spot issues early, and keep your project history organized. Think of it like reading the "track changes" feature in a word processor—but for your entire code proj...

Points of Confusion 🇺🇸

Git is a powerful tool, but its complexity often puzzles newcomers. Let’s break down some typical areas where users get tripped up in simpler terms...

Firewall 🇺🇸

A firewall is like a guard for your computer. It keeps your computer safe from others who shouldn't use it. It checks the information going in and out and follows safety rules. In Linux, there are several utilities to manage your firewall, including iptables, ufw, and firewalld...

Running Executables 🇺🇸

We'll explore the inner workings of the Linux kernel, focusing on how it loads and executes binaries. We'll dive into the execve system call, build a custom kernel, and use debugging tools to see the execution process in action. Whether you're a seasoned developer or just curious about operating sys...

Disk Usage 🇺🇸

Managing and monitoring disk usage is necessary for server maintenance, allowing administrators to identify disk space shortages caused by large log files, such as Apache or system logs, and malfunctioning applications that generate excessive data. Tools like df provide quick overviews of available ...

Sed and Awk 🇺🇸

sed (Stream Editor) and awk are powerful command-line utilities that originated from Unix and have become indispensable tools in Unix-like operating systems, including Linux and macOS. They are designed for processing and transforming text, allowing users to perform complex text manipulations with s...

Files and Dirs 🇺🇸

One of the fundamental skills is to navigate and manage files and directories effectively. Here, we focus on the crucial concepts that will facilitate your work within the file system...

File System 🇺🇸

In Unix, files and filesystems are important components of the operating system's structure. A file is a collection of data stored on disk, which can include anything from text documents and images to executable programs. Files are organized within directories in a hierarchical structure, allowing f...

Dwm 🇺🇸

The Dynamic Window Manager (DWM) is a minimal, lightweight, and highly efficient tiling window manager designed to help you manage application windows in a clean and distraction-free manner. Instead of overlapping windows as seen in traditional window managers, DWM organizes windows in a tiled layou...

Cron Jobs 🇺🇸

Cron is a powerful utility in Unix-like operating systems that automates the execution of scripts or commands at specified times, dates, or intervals. It is used for tasks such as system maintenance, backups, updates, and more...

Networking 🇺🇸

Networking is the practice of connecting computers and devices so that they can communicate and exchange data. It forms the backbone of the internet, local area networks, and even small home networks. To grasp the intricacies of networking, it's imperative to familiarize oneself with key terminologi...

Services 🇺🇸

A service in computing is a background process that performs specific tasks or offers various functionalities to other programs. These services typically communicate using methods such as sockets or inter-process communication (IPC). The primary purposes of a service include...

Pipe and Redirect 🇺🇸

Input redirection (<) allows a command to read from a file, while output redirection (>) sends a command's output to a file. Streams like stdin, stdout, and stderr control the flow of data between commands and the system, where stdin is the input, stdout is the standard output, and stderr is the err...

Processes 🇺🇸

In any operating system, a process is the fundamental unit of execution—a live instance of a program. Beyond its executable code (the text segment), a process encompasses its dynamic state: the program counter, CPU registers, call stack, heap, and other variable storage. To manage and schedule these...

Tar and Gzip 🇺🇸

Working with files on Unix-based systems often involves managing multiple files and directories, especially when it comes to storage or transferring data. Tools like tar and gzip are invaluable for packaging and compressing files efficiently. Understanding how to use these commands can simplify task...

Permissions 🇺🇸

File permissions are crucial in any Unix-like operating systems, including Linux, which employ several mechanisms for controlling access to files and directories. These mechanisms include standard permissions, special permissions, and access control lists (ACLs)...

Package Managers 🇺🇸

Debian and Ubuntu are popular Linux distributions for home users. These distributions and their derivatives use the Advanced Package Tool (APT). Other distributions use alternative package managers, like DNF, YUM, Pacman, which have unique functionalities and syntax...

Inodes and Symlinks 🇺🇸

Inodes are critical as they store essential metadata about files, such as permissions and locations, allowing efficient file system management. Hard links are important because they let multiple file names point to the same inode, saving disk space by avoiding data duplication. Symlinks provide flex...

Ldap 🇺🇸

LDAP is a protocol used to access and manage directory information over an IP network. It is open, vendor-neutral, and an industry standard. LDAP is commonly used for centralized authentication, where user credentials and permissions are managed in a single directory and applied across multiple syst...

Introduction 🇺🇸

Linux is a versatile and powerful open-source operating system that forms the backbone of countless technological infrastructures, from servers and desktops to mobile devices and embedded systems. Known for its stability, security, and flexibility, Linux provides a robust platform that can be custom...

Utilities 🇺🇸

We will discuss various tools that can be used on Linux systems for tasks such as taking screenshots, recording screens, preparing bootable sticks, and detecting malware. It provides brief explanations of each tool and includes installation and usage instructions...

Shells and Bash Configuration 🇺🇸

A Unix shell is a command-line interpreter that provides a user interface for accessing an operating system's services. It allows users to execute commands, run programs, and manage system resources. The shell acts as an intermediary between the user and the operating system kernel, translating user...

Kernel 🇺🇸

We will now delve deeply into the Linux kernel to understand its role in the operating system, where it resides on your system, and how kernel modules function. We will also explore how to download and examine the Linux kernel source code, and discuss the various configuration options available with...