Why rm Doesn't Truly Delete Files -- And How to Do It Safely with shred

This article explains why using rm on Linux doesn’t truly erase files and how tools like extundelete can recover them. It introduces shred as a safer alternative for secure deletion and contrasts behavior on ext4 with modern copy-on-write filesystems like Btrfs and ZFS.

Reverse Engineering a USB Device in Linux

Explore how to reverse engineer a USB device’s communication protocol using tools like lsusb, usbmon, and Wireshark, then implement a custom Linux kernel driver to handle its input/output by directly interfacing with its USB endpoints. The driver will specifically target the DualShock 4 controller.

A History of Anti-Cheat Techniques in Video Games, from Server-Side Code to Kernel Level

A discovery of the evolution of anti-cheating technolgies over the years

Writing an OS in Rust: Bootloader #1

A brief introduction to building a custom operating system in Rust, starting with the bootloader. This article covers setting up the development environment, creating a minimal bootable kernel, and understanding how the boot process works at a low level.

Mobile payment: NFC, OS, applications... what's behind a transaction?

Using the example of mobile payment, the idea is to understand how NFC works and how it interacts with other system layers.

Systèmes embarqués dans l’aéronautique : entre précision, sécurité et innovation

Les systèmes embarqués sont au cœur de l’aéronautique moderne.

Linux networking internals: Netfilter

Deep dive into Netfilter, the packet filtering framework of the Linux kernel

Running Windows x86 application builds on a ARM64 macOS

This article will explore how applications compiled for the x86 architecture can be executed on macOS systems running on ARM64 hardware. The objective is to understand why we need tools for it, and to dissect different existing solutions.

Beyond basics exploring c metaprogramming and compile time techniques

This article will explore advanced C++ metaprogramming techniques

Explore video memory by creating your own screen sharing

This article explains how graphical display works on Linux — from the framebuffer all the way to the screen. It details the role of the kernel (DRM, GEM, KMS), the graphics compositor, and userland technologies like xdg-desktop-portal and PipeWire in the secure handling of video buffers. Finally, a C implementation illustrates how to capture a screenshot and send it to a remote server.