Blog
Thoughts on engineering, design, and building great products.
Processes and Signals
A deep dive into what's running on the system: processes and the parent-child relationship, viewing with ps/top, running in the background with &, and controlling with signals — why kill -9 differs from a plain kill, and when to use which.
Permissions: User, Group, and chmod
A deep dive into Linux's permission mechanism: reading the rwx string, the three groups user/group/other, octal notation, changing permissions with chmod (octal and symbolic), changing ownership with chown, and the umask that decides default permissions.
Pipes, Redirects, and Data Streams
A deep dive into the mechanism behind the command line's power: the three streams stdin/stdout/stderr (file descriptors 0/1/2), how to redirect them into files, merge errors, discard with /dev/null, and chain commands with pipes.
Reading and Processing Text: grep, sed, awk and Friends
The toolset behind the power of the Linux command line: viewing files (cat, less, head, tail), filtering (grep), cutting columns (cut), sorting (sort, uniq), counting (wc), and transforming (sed, awk). Each tool does one thing well.
Editors: nano and vim
Edit files right in the terminal — a must-have skill when working on a server with no GUI. nano for beginners, and survival vim: understand the modes, open/edit/save/quit, search, undo.
File and Directory Operations
The commands you use every day: create, copy, move, rename, delete files and directories, create links, use wildcards to operate in bulk, and find files with find.
The Filesystem and FHS: Everything Is a File
Understand the Linux directory tree under the FHS standard — what each core directory (/etc, /var, /usr, /proc...) is for — and why Linux treats almost everything, including devices and process info, as a file. With a diagram and absolute/relative paths.