Planet Guix

Confusion: PDP-10 Zork

I grew up playing Infocom, Magnetic Scrolls, and Level 9 text adventures, with the Zork trilogy, the Enchanter trilogy, Planetfall, Wishbringer, The Guild of Thieves, The Pawn, Knight Orc, and Silicon Dreams being particularly prominent in my memory (somewhat re-activated through recent listening to the Eaten by a Grue podcast). I would have played all of these on an Atari 8bit or ST computer, and didn’t have any access to anything like a mainframe, and so never actually played the original Zork, which was written in the Lisp-derived MDL language (which formed the basis for the MDL-subset Infocom-specific ZIL language used for their subsequent offerings) for the DEC PDP-10.

Dockerised Firefox on GuixSD

So GuixSD doesn’t currently package Firefox (though hopefully that is changing), but only IceCat (which is now EOL). On freenode#guix, pkill9 suggested that Firefox (and Chromium etc.) could be installed on Guix via the Nix installer (install as per instructions on their site and then nix-env -i firefox) with the following trick, create a file ~/.local/bin/firefox with the following content:

Guix: You are in a maze of lispy little passages, (map equal? ′(′all ′alike) ′(′all ′alike))

So I finally made a serious go of running GuixSD, a GNU Linux distro which is largely built on GNU Guile Scheme (a dialect of Lisp) on one of my machines (one I had actually put together with GuixSD in mind: an X200 Thinkpad, which I Libreboot‘ed and put a Atheros Wi-Fi card in), and, to increase both the quantity and variety of Lisps involved, am trying to use with StumpWM (which is written in Common Lisp).

Ruby on Guix

I’ve been working with Ruby professionally for over 3 years now and I’ve grown frustrated with two of its most popular development tools: RVM and Bundler. For those that may not know, RVM is the Ruby version manager and it allows unprivileged users to download, compile, install, and manage many versions of Ruby instead of being stuck with the one that is installed globally by your distro’s package manager. Bundler is the tool that allows developers to keep a version controlled “Gemfile” that specifies all of the project’s dependencies and provides utilities to install and update those gems. These tools are crucial because Ruby developers often work with many applications that use different versions of Ruby and/or different versions of gems such as Rails. Traditional GNU/Linux distributions install packages to the global /usr directory, limiting users to a single version of Ruby and associated gems, if they are packaged at all. Traditional package management fails to meet the needs of a lot of users, so many niche package managers have been developed to supplement them.

Reproducible Development Environments with GNU Guix

If you’re a software developer, then you probably know very well that setting up a project’s development environment for the first time can be a real pain. Installing all of the necessary dependencies using your system’s package manager can be very tedious. To "solve" this problem, we have resorted to inventing new package managers and dependency bundlers for pretty much every programming language. Ruby has rubygems and bundler, Python has pip and virtualenv, PHP has composer, node.js has npm, and so on. Wouldn’t it be nice to instead have a single package manager that can handle it all? Enter GNU Guix, a purely functional package manager and GNU/Linux distribution. Using Guix, you can easily create a development environment for any software project using the guix environment tool.

First GNU Guile Patch and More Guix Packages

I have spent some of the last month working on contributing to GNU Guile and now I can finally say that I have contributed code to the project. Guile has several hash table implementations: a Guile native one, SRFI-69, and R6RS. SRFI-69 contains a handy procedure, alist->hash-table, which allows for a sort of hash literal-like syntax: