RSSAmplifier

Blog

Venam's Blog — Patrick Louis (Lebanon)

A blog (by Patrick Louis in Lebanon) consisting of well researched articles about Unix, philosophy, and more. From deep dives to well-rounded overviews that remove mysticism, everything is easily explained in a consumable way. Every article tries to take a new point of view, to link ideas together, and to tackle topics that haven't been before.

venam.netRSS feed ↗83 posts

Latest posts

May 2026 Projects

A year, and an eternity, has passed since my last update. The paths I'm deliberately walking on, and routes I'm taking, keep on getting intriguing but one thing remains certain, the positivity, adaptability, and flexibility. I chose to adapt, indeed, and fully embrace my lifestyle. Every moment is a treasure in life, wherever it takes me and wherever I take it!

The Input Stack on Linux An End-To-End Architecture Overview

Let's explore and deobfuscate the input stack on Linux. Our aim is to understand its components and what each does. Input handling can be divided into two parts, separated by a common layer. We’ll try to make sense of all this, one thing at a time, with a logical and coherent approach.

June 2025 Projects

Time flows through us so quickly, like rivers and ravines; but also, like travelers, we're advancing on its endless plains, mountains, and ridges. Aren't we living contradictions, and embracing the elements. Let's sit down and write about a few things that happened since the last time.

Buried Toggles Begging to be Brought to Light Transparency, Expressiveness, and Configurability

Throughout the countless years of research on this blog a common thread always comes up: Some features and toggles are often hidden under mountains of hubris that nobody understands. It could be because the software is under-or-badly documented, that it's 'too-flexible' and made to handle cases that never materialize, or just that people don't capt what they're dealing with and never bother…

RealtimeKit and CPU Scheduling

Take a look at your process tree, it's likely that you might notice a new service: rtkit-daemon, the RealtimeKit Daemon. It seems nobody on the internet is talking about it, so let's explain what it's about in this article.

January 2024 Projects

We often get absorbed in the moment, it's tough to take a pause and reflect. However, if we never do we might forget our stances and essential parts of ourselves. So here comes the time to stop, and refresh about what I've been up to, to judge and think about the direction of things.

April 2023 Projects

´Life is what happens in the space between´. Indeed, since the last update article a world pandemic has passed, truces have been signed in some countries, new wars have started in others, climate is going increasingly haywire, and the global political and economic turmoils have led to protests and revolts in countless places. The world keeps moving and I'm but a tiny spec in the grand scheme of…

A Compendium of Access Control on Unix-Like OSes

Plenty of cheesy quotes often say that total security stands on the opposite of total freedom. Undeniably, in computers and operating systems this is a fact. This article will focus on the topic of access control on Unix-like systems. Sit back and relax as it transports you on a journey of discovery. We'll unfold the map, travel to different places, allowing to better understand this wide, often…

Ten Years

Ten years ago I had an inner urge to lay my ideas on the web, on a place I owned.

February 2022 Projects

It's already been quite a while since the last update article in Spring last year. The dynamics around the pandemic have changed but it is still omnipresent and the constant weight is taking its toll on everyone. Similarly, I'm hearing an echo that can't be silenced, that of a need for change and return to what captivates me. As some readers might have noticed, I haven't posted nor been very…

PipeWire Under The Hood

The PipeWire project is slowly getting popular as it matures. Its documentation is still relatively sparse but is gradually growing. However, it's always a good idea to have people from outside the project try to grasp and explain it to others in their own words, reiterating ideas, seeing them from their own perspective.

May 2021 Projects

It's been seven months since the last update article in October 2020. We're still in a pandemic and living a more self-reliant, distanced, and introspective life. I've personally taken the stance of slowing down, to use this intermittent time to my advantage for personal growth. Slow living and the enjoyment of little things.

Making Sense of The Audio Stack On Unix

Audio on Unix is a little zoo, there are so many acronyms for projects and APIs that it's easy to get lost. Let's tackle that issue! Most articles are confusing because they either use audio technical jargon, or because they barely scratch the surface and leave people clueless. A little knowledge can be dangerous.

A Peek Into The Future Of Distros

The year of the Linux desktop is coming, and it looks like a piñata of micro-services. Let's break it and see the candies inside.

What Does It Take To Resolve A Hostname

Resolving hostnames (DNS?) might not seem like it, but it's complicated. Let's take a moment to see if we can at least demystify what happens on the client side instead of seeing it as a big tangled mess of configurations, libraries, and tools.

October 2020 Projects

Seven long and perilous months have gone by since my previous article, what feels like an eternity, and yet feels like a day — Nothing and everything has happened. All I can add to the situation in my country, that I've already drawn countless times, is that my expectations weren't fulfilled. Indeed, after a governmental void and a horrific explosion engulfing a tremendous part of the capital, I'm…

Corruption Is Attractive!

We live in a world that is gradually and incessantly attracted by over-rationality and order. In this article we'll burst the enchanted bubble and embrace corruption and chaos — We're going to discuss the topic of image glitch art.

Did You Know Fonts Could Do All This?

Freetype, included in the font stack on Unix, is quite complex. There are so many layers to get it to do what it does that it's easy to get lost. From finding the font, to actually rendering it, and everything in between. Like most of the world, I use a rather low screens definition (1366x768 with 96 dpi) and rather old-ish laptop, unlike some font designers that live in a filter bubble where…

Notes About Compilers

Compilers, these wonderful and intricate pieces of software that do so much and that so many know little of. Similar to the previous article about computer architecture, I'll take a look at another essential, but lesser known, CS topic, Compilers. I won't actually dive into much details but I'll keep it short to my notes, definitions, and what I actually found intriguing and helpful.

Computer Architecture Takeaways

Computer architecture can be considered a boring topic, one that is studied during CS education, then put aside, and leaves place to the shiny new toys that capture the attention. I've recently revisited it, and I'd like to summarize some takeaways.

D-Bus and Polkit, No More Mysticism and Confusion

Dbus and Polkit are two technologies that emanate an aura of confusion. While their names are omnipresent in discussions, and the internet has its share of criticism and rants about them, not many have a grasp of what they actually do. In this article I'll give an overview of these technologies.

Evolutionary Software Architecture

In a previous post, I've underlined the philosophy behind Domain Driven Design, DDD, and now I'd like to move to a practical approach that handles real issues in software development and architecture, requirements that constantly change, and models that are never precise, never current, and/or never using the best technology available. One of the solution to such problems is to build an…

Domain Driven Design Presentation

We're used, as software engineers to try to make things perfect, to see things from above, to think we're great architects and creators. What's more important though is to create software that does an important job for someone. What are the best ways to create such software?

Time on Unix

An article covering everything you need to know about time on Unix. Time, a word that is entangled in everything in our lives, something we're intimately familiar with. Keeping track of it is important for many activities we do.

Software Distributions And Their Roles Today

What are software distributions? You may think you know everything there is to know about the term software distribution, but take a moment to think about it, take a step back and try to see the big picture.

March 2020 Projects

Here comes another life update. My biological clock seems to have chosen to remind me to post these updates once every 6 months, with seasonal changes.

Command Line Trash

No this isn't a post trashing shell scripting. Handling files on the command line is most of the time a non-reversable process, a dangerous one in some cases (Unix Horror Stories). There are tricks to avoid the unnecessary loss and help in recovering files if need be.

Loading of xinitrc,xserverrc,xresources,xdefaults,xprofile,xsession,xmodmap

We often hear discussions about X configuration files and their roles. Namely, xinitrc,xserverrc,xresources,xdefaults,xprofile,xsession,xmodmap. So let's try to clear up this mumbo jumbo of words.

Key And Trust Store on Unix-like OS

Let's have a discussion about all the kinds of trust stores found on Unix-like operating systems. For those not in the know, trust stores are places where the operating sytems generally, or the specific software, stores private and public keys (asymmetric), trusted CAs, and symmetric keys (decryption keys).

Professional Software Engineering Topics And Practices

As the field of SE/CS is getting more press, graduates are flooding the market. Yet, the curriculum given in many universities still seems barren when it comes to professionalism, forcing newcomers to learn via unpolished street creds. Not only is it leading to mysticism about what skills are required but is also leading to a lack of discipline, duty, and craftsmanship.

No, Alfa isn't draining your data without your knowledge

In Lebanon conspiracy theories are such a common occurrence that the whole world but yourself is to blame for your ailment. I usually dismiss them but the one in this post got on my nerves, and moreover a quite simple experiment could finally shatter it and remove it as an option from all conversations.

September 2019 Projects

In the blink of an eye 6 months have gone by. Since then, I've written a single article about time on the internet and thus the blog needs an update on my latest endeavours.

February 2019 Projects

The new year has begun... A while ago! My last post Was almost 9 months ago, more than half a year has passed. A lot has happened but I still feel like time has passed quickly.

Adding Glue To a Desktop Environment

In this article we will put some light on a lot of tools used in the world of Unix desktop environment customization, particularly regarding wmctrl, wmutils, xev, xtruss, xwininfo, xprop, xdotools, xdo, sxhkd, xbindkeys, speckeysd, xchainkeys, alttab, triggerhappy, gTile, gidmgr, keynav, and more. If those don't make sense then this article will help. Let's hope this can open your mind to new…

Xft but for XCB

In this post I'm going to go over "fonts for xcb" a mini-project I've been working on recently and I'll document the parts that are not usually found online.

Drawables, Regions, Shapes, Types of WM, Reparenting, Compositing, Redirecting, Unredirecting, Rendering

In this article we're going to go over the big list of words found in the title. When I worked on 2bwm I didn't have much experience with X programming in general. I've sort of learned it on the spot. That's why I'm trying to gain more knowledge before continuing to re-rewrite 2bwm from scratch. Now that I've got a bit more background I think it's good to share it with the world, for others that…

May 2018 Project List

Five months have past since my last post about personal projects.

Less ties with a machine

Let's say you've been using a machine for a year or two and over time you gradually become more attached and dependent on it. This is a situation I've found myself into more than once and it is quite annoying, it's straining for the brain. I've been through it the past few days and it and I kept wondering about the ways I could make it less of a pain. Imagine if today you suddenly lost access to…

Tools, glue, scripts, and automation on Unix

Today we take for granted the concept of software as a tool but it didn't always exist. Mini-scripts, the interoperable programs, the small utilities for specific tasks, etc. This is what we're going to discuss, where do they come from, the history, and a bit more.

December 2017 Projects

Five months have past since my last post about personal projects and endeavours but it feels like I've been stagnating for much longer.

Data Storage on Unix

Libraries and banks, amongst other institutions, used to have a filing system, some still have them. They had drawers, holders, and many tools to store the paperwork and organise it so that they could easily retrieve, through some documented process, at a later stage whatever they needed. That's where the name filesystem in the computer world emerges from and this is one of the subject of this…

Logos and Artworks in the Unix World

Logos and artworks in the Unix world, where do those come from. We'll try to analyse a bunch of popular Unix mascots and logos. Throughout my research I could distinct two groups of mascots and logos. Even though it's not fun to have a binomial vision of the world, black and white, but this is what I found and this is mostly what it is.

Processes On Unix

In this episode we'll tackle a topic that joins many parts of the systems and so is hard to fully cover. It has a relationship with everything in the system, it glues it together. We're going to be discussing processes on Unix.

July 2017 Projects

It's been four months since the last post about my personal projects and endeavours. These past months I've been following, slowly but steadily, on the activities I had set the pace for previously.

Zombies

You check your processes and see some hanging around with a weird status and using no resources. You don't know if you should remove them or not. Then you try removing them and it doesn't work. In this episode we're going to discuss zombie processes.

WM & DE

We've had a previous episode discussing xcb, x11, wayland, all about display servers. I've said in the beginning of the episode that it would not be about window managers. Well, today folks we're going to do just that. This one is going to be about window managers and desktop environments.

Green on black?

The idea of green text on black background comes from the "Green screens" aka monochrome monitors. It was nicknamed Green screen even though the monochrome monitor came in many other different colors other than green. A monochrome monitor is a monitor that only has one color, as the name implies. It was used before color screens were invented in the early days of computing, from 60s till the 80s,…

Shells

What's a shell, what does it do, why would we need that? A shell is a program that acts as an intermediary between the user and the operating system, the kernel. It lets you execute commands on a computer. Specifically, on Unix, the shell is a command-line interface, a prompt that waits for commands entered by the user, interpret and execute them, and when its done, prompts again for a new…

Unix philosophy

Understanding the Unix philosophy and what makes a Unix system Unixy. Let the good discussion flow, let all arguments and ideas be put down on the table.

Terminals

We spend so much time typing at a terminal and yet the underlying mechanisms and history behind it are often overlooked. The TTY is an integral part of Unix, and we take most of its behavior for granted even though it has a huge history baggage that it carries to this day. For instance pressing control-C or control-Z to stop or put in the background a process, or using control-A to go to the…