The unusual way I end my X desktop sessions
I use an eccentric X 'desktop' thatis not really a desktop as such in the usual sense but instead awindow manager and various programs that I run(as a sysadmin, there's a lot of terminal windows). One of the waysthat my desktop is unusual is in how I exit from my X session.First, I don't use xdm or any other graphical loginmanager; instead I run my session through xinit . Whenyou use an xinit based session, you give xinit a
Understanding reading all available things from a Go channel (with a timeout)
Recently I saw this example Go code ( via ), and Ihad to stare at it a while in order to understand what it was doingand how it worked (and why it had to be that way). The goal ofwaitReadAll() is to either receive (read) all currently availableitems from a channel (possibly a buffered one) or to time out ifnothing shows up in time. This requires two nested select s, withthe inner one in a for loop.
The outer select has
Starting scripts with '#!/usr/bin/env <whatever>' is rarely useful
In my entry on getting decent error reports in Bash for 'set -e' , I said that even if you wereon a system where /bin/sh was Bash and so my entry worked if youstarted your script with '#!/bin/sh', you should use '#!/bin/bash'instead for various reasons. A commentator took issue with thisdirect invocation of Bash and suggested ' #!/usr/bin/env bash 'instead. It's my view
The XLibre project is explicitly political and you may not like the politics
A commentator on my 2024 entry on the uncertain possible futuresof Unix graphical desktops brought up theXLibre project. XLibre is ostensibly a fork of the X server thatwill be developed by a new collection of people, which on the surfacesounds unobjectionable and maybe a good thing for people (like me)who want X to keep being viable; as a result it has gotten a certainamount of publicity from credulous sources who don't look behindthe curtain. Unfortunately for everyone, XLibre is an explicitly
Some practical challenges of access management in 'IAM' systems
Suppose that you have a shiny new IAM system, and you take the 'access management' part of it seriously.Global access management is (or should be) simple; if you disableor suspect someone in your IAM system, they should wind up disabledeverywhere. Well, they will wind up unable to authenticate. If theyhave existing credentials that are used without checking with yourIAM system (including things like 'an existing SSH login'), you'llneed some system to propagate the information that someone
A change in how Exim's <code>${run ...}</code> string expansion operator does quoting
The Exim mail server has, among other features, a string expansion language with quite a number of expansion operators .One of those expansion operators is ' ${run} ',which 'expands' by running a command and substituting in its output.As is commonly the case, ${run} is given the command to run andall of its command line arguments as a single string, without anyexplicit splitting into separate arguments:
${run {/some/command -a -b foo -cMy system administrator's view of IAM so far (from the outside)
Over on the Fediverse I said something about IAM :
My IAM choices appear to be "bespoke giant monolith" or "DIY from amultitude of OSS pieces", and the natural way of life appears to bethat you start with the latter because you don't think you need IAMand then you discover maybe you have to blow up the world to move tothe first.
At work we are the latter: /etc/passwd to LDAP to a SAML/OIDC serverdepending on what generation of software and
Another thing V7 Unix gave us is environment variables
Simon Tatham recently wondered "Why is PATH called PATH?" . This mademe wonder the closely related question of when environment variablesappeared in Unix, and the answer is that the environment andenvironment variables appeared in V7 Unix as another of the thingsthat made it so important to Unix history ( also ).
Up through V6, the exec system call and family of system calls tooktwo arguments, the path and the argument list; we can see this inboth the V6 exec(2) manual
Python argparse and the minor problem of a variable valid argument count
Argparse is thestandard Python module for handling arguments to command lineprograms, and because for small programs, Python makes using thingsoutside the standard library quite annoying, it's the one I use inmy Python based utility programs. Recently I found myself dealingwith a little problem where argparse doesn't have agood answer, partly because you can't nest argument groups .
Suppose, not hypothetically, that you have a program that canproperly take zero, two, or three command line arguments (which are
Unix had good reasons to evolve since V7 (and had to)
There's a certain sort of person who feels that the platonic idealof Unix is somewhere around Research Unix V7 and it's almost allbeen downhill since then (perhaps with the exception of furtherResearch Unixes and then Plan 9, although very few people got theirhands on any of them). For all that I like Unix and started usingit long ago when it was simpler (although not as far back as V7),I reject this view and think it's completely mistaken.
V