Quick Tool Notes

Sun Feb 8, 2015

Hardware

This is a thing now. And it wasn't for a very long time. I remember sitting down and honestly trying to figure out how I would go about getting a Yeeloong to Toronto. Eventually concluding that my best bet would be to learn Mandarin, then hang out around Jiangsu-based chatrooms/IRC channels and try to to make friends. This seemed like more work than I could realistically do, so I didn't. Instead I've been piloting a Lenovo x220i and putting up with this

~ $ vrms
                Non-free packages installed on self

firmware-ralink                     Binary firmware for Ralink wireless cards
firmware-realtek                    Binary firmware for Realtek wired and wireless network

  2 non-free packages, 0.1% of 1672 installed packages.
~ $

Anyhow. That first link I put up earlier takes you to a CrowdSupply page that promises to ship a fully Free(Libre) 15-inch laptop in another couple of months. I've already been looking for a new machine for a year or so, and this is officially cool enough to get me to pull the trigger. So I've ordered one in the interests of being the canary; I'll let you know how it runs once I get mine, at which point I expect I'll be able to recommend it thoroughly.

To be clear, the goal here isn't "get a good deal on a laptop". This thing is going to cost me something like three or four hundred bucks above what I'd pay for a Lenovo piece. But. I'm committed enough to the idea of freedom in computation that I'll willingly pay that in order to subsidize a company with the same goals.

Software

On the other side of the development coin, "purely functional" build systems/package managers are becoming a popular meme.

I mentioned last time that I was seriously considering getting a separate, frequently-snapshotted, VM for the purposes of Haskell development. To that end, I briefly looked at Qemu and Docker, before hearing about nix. And shortly thereafter guix. The idea behind both of these package managers|1| is that you never throw away a package. That is, when you "upgrade" a library or piece of software, you build the new version from scratch, sharing identical pieces but building any new dependencies non-destructively. Which I assume is the reason they both use the "purely functional" label, despite the fact that both clearly write information to disk, but I digress.

What this gives you is two things.

Those two things are exactly the goals I had when looking at qemu/docker for Haskell development. Which means that for my purposes, nix/guix directly obsoletes any kind of virtual machine setup. This isn't a general property, so don't let it stop you from putting some reading time into Xen, but I have very little reason to in the near future.

Choosing between nix and guix is another matter. As I mentioned, the guix docs imply that I won't have to. And they both take the same general approaches to building software. The big difference, as far as I'm concerned, is that the guix extension/package-definition language is actually Guile, as opposed to a really weird-looking mix of JavaScript, Perl and Haskell.

My GNU fanboyism and affection for parentheses is well documented, so I expect that predicting the outcome isn't hard here. Still, I plan to try both of them out to see how they feel. As always, I'll let you know how it goes.


Footnotes

1 - |back| - Both of Which have had full-on linux distros built around them, if that's your thing. Nixos for nix and "Guix System Distribution" for guix.


Creative Commons License

all articles at langnostic are licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License

Reprint, rehost and distribute freely (even for profit), but attribute the work and allow your readers the same freedoms. Here's a license widget you can use.

The menu background image is Jewel Wash, taken from Dan Zen's flickr stream and released under a CC-BY license