@dairychris Facebook chris@arachsys.com GitHub Chris Webb

Chris Webb

This is Chris Webb’s home page. The best way to contact me is by email to chris@arachsys.com. You can also follow me as @dairychris on Twitter, or find me on Facebook.

Free software

A number of my free software projects are available on GitHub, BitBucket, Codeberg, GitLab and Sourcehut. You might be looking for:

Other bits and pieces including a Bayesian spam filter, paragliding scripts, Yamaha synthesiser stuff, and Arachsys Linux package trees can be found amongst my public repositories.

Please contact me by email with any comments, bug reports or proposed patches, rather than using GitHub web-based pull requests or issues.

Linux distribution

Since late 1999, I’ve maintained Arachsys Linux, an opinionated ‘from scratch’ Linux distribution for my development machines and production servers, porting from 32-bit x86 to x86-64 and arm64 in the mid-2000s. More recently, I’ve also deployed it on arm32 routers and arm64 embedded projects.

Unusual features include musl libc, support for both llvm and gcc toolchains, a simple shell-script /etc/init assisted by my init tools, and a willingness to clean up cruft at the expense of legacy compatibility. There is no /usr, /sbin, /include or /share on an Arachsys Linux system, just /bin and /lib. Shared and static libraries live in /lib/shared and /lib/static respectively, with headers in /lib/include.

Consumer distributions invariably stuff /etc with hundreds of default config files filled with comments that should be documentation, whereas an Arachsys /etc only contains a handful of files deliberately written by the user. Similarly, the distribution embraces the trend to tidy user-specific configuration into ~/.config, patching programs to enforce this where necessary. For example, bash, readline and ssh are configured from ~/.config although none of these are likely to support this upstream.

Software is packaged properly so pkg-config and friends are redundant. Libraries are on the standard link path if they are available; header files are on the standard include path if they are available. As a result, the filesystem isn’t littered with .la and .pc droppings.

Build recipes now include upstream URLs so the pkg tool can check for new releases across the entire tree. This eliminates the need to track updates manually, which is time-consuming and error-prone with large numbers of packages.

My limited time as a solo maintainer means there is little documentation other than the package tree and commit log, but the pkg build tool is written in clear, easy-to-read bash and is maintained in tree. I upload periodic snapshots of the binary images needed to bootstrap a system on the GitHub releases page.

Farming life

I’m a beef farmer and calf rearer in North Shropshire. I tweet photographs, occasional rants about agricultural technology, and general updates on the cattle and my day-to-day farming exploits as @dairychris on Twitter.

Curve25519 public key

My long-term public identity is the elliptic curve point represented in OpenSSH format as ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMHPkQPn4+cxxP2Ax29Ozhkvu7Vp0KMlPAncD6fFmqCb and in base64-encoded X25519 form as cyUynIqlEg8JL96nxStP4LKfECrYomQXrAdC6jurVwE=.

I use the corresponding private key to sign releases and git tags, and to authenticate myself more generally.