# Linux, Unix, Operating Systems

## Read Again: The Art of UNIX Programming by Eric S. Raymond

In a moment of nostalgia, I picked up my copy of “The Art of UNIX Programming” by Eric S. Raymond (esr) and flipped through it again. It’s a book I’ve had since when it came out in 2004, and that I’ve always been quite fond of. I was looking forward to a review of “the way the future was”, as viewed from the early 2000s. So, it came as a bit of a surprise to me to find that the book seems to have aged rather poorly.

## A Guide to Running GUI Applications in a Docker Container

Containers are not usually associated with GUI applications, but there may be times when one might still want to run such a program inside a container, for example to isolate the application’s dependencies. Installing a GUI application in a container means that not only the application, but also all its specific dependencies are encapsulated inside the container (respectively, the container image), and can therefore reliably be removed from the system in a single step.

The primary challenge is to let a container communicate with the host’s display system, so that it can create GUI windows on the host. A GUI application will likely also need to share files with the host system, which in turn requires the appropriate user permissions.

## In Praise of Pic (and pikchr)

In praise of what? Pic? Pic? Pic, the old diagram generation “little language” and half brother of roff (or troff or groff), from the days when Unix was young? Yes, indeed, that pic.

## Running a GUI Application in a Docker Container: Users, Permissions, Dockerfile

In a previous post, I explored the possibilities of running a GUI application inside a Docker container. In the current post, I will continue where we left off before, adding some details to make the process more convenient.

## A Fix for Pysolfc on Linux Mint 21 Vanessa

There are problems playing the pysolfc solitaire game on the latest release of Linux Mint 21 (Vanessa).

The game requires the formatter module from the Python Standard Library, which had been deprecated since Python 3.4, and has been removed in Python 3.10.

An easy, but ad-hoc workaround goes as follows:

## Running a GUI Application in a Docker Container

Containers are not usually associated with GUI applications, but there may be times when one might still want to run such a program inside a container, for example to isolate the application’s dependencies. Installing a GUI application in a container means that not only the application, but also all its specific dependencies are encapsulated inside the container (respectively, the container image), and can therefore reliably be removed from the system in a single step.

## Using Xsession to Set an Environment Variable Without a Shell

The freedesktop project, arguably the most important Linux organization you’ve never heard of, has (among many other noble deeds) done an admirable job clearing up the mess of local cache and config files in one’s home directory. But how does one override their defaults, if this requires setting environment variables globally, for all processes, and outside an explicit shell environment?

## Unix Tools Today

I learned Unix almost 30 years ago, while attending graduate school in the early 90s, from a now long-obsolete book entitled “Unix for the Impatient”.

Some of the tools and commands I learned back then have long since become irrelevant (ftp, telnet, cvs, biff — remember biff?). Others, although long in the tooth, continue to serve me well every day (emacs, tcsh, cc). And yet a third group seems to be more important than ever (such as tar, which is the basis for Docker images).