week 21, 2022

A decade of dotfiles

My first commit to my dotfiles repository was ten years ago. Here are a few things I’ve learned about maintaining a system configuration in that time.

(This will mostly be for macOS and Linux. I don’t have experience configuring Windows or FreeBSD machines, for example.)

Source: A decade of dotfiles, an article by Evan Hahn.

Text-Mode Games as First Haskell Projects

Many new Haskellers make it through initial material (everything up to and including the Monad typeclass, let’s say), write a couple of “Hello, world!”-tier projects that use the IO type, but struggle to make the jump to industrial libraries and/or find projects that excite them. I think text-mode games can grow very smoothly alongside a programmer learning a new language, so here’s some thoughts on how to get started, how you might extend a game, and some advice for Haskell specifically.

Source: Text-Mode Games as First Haskell Projects, an article by Jack Kelly.

Magical SVG Techniques

Smart SVG techniques, from generative SVG grids to SVG paths with masks, grainy SVG gradients, cut-out effects and fractional SVG stars. Let’s look at some magical SVG techniques that you can use right away.

Source: Magical SVG Techniques, an article by Cosima Mielke.

Crash reporting in Rust

In this post I'll be talking about recent work I and others have done to make crash handling and reporting in Rust a (fairly) straightforward procedure by introducing several new crates that can be used in conjunction with each other, or with other crates you may already have. Keep in mind that some of the crates and details I'll be talking about might change as it is still early days, but the broad strokes should stay true even if you're reading this blog post a couple of years in the future.

Source: Crash reporting in Rust, an article by Jake Shadle.

How to investigate a massive phishing campaign

A recent anonymous tip from a reader drew my attention to a malicious IP address allegedly involved in a widespread phishing campaign against users in Ireland.

The malicious actors behind this campaign have created hundreds of fake domains, impersonating several Irish banks, the national postal service of Ireland, courier services, Sky TV, covid pass issuers, as well as several other financial entities abroad, the English NHS and many others.

Source: How to investigate a massive phishing campaign, an article by Maciej Makowski.

Thanks to Paul for bringing this very interesting article to my attention.

What happened to Perl 7?

Two years ago Perl 7 was announced. A key idea for Perl 7 was to significantly reduce the boilerplate needed at the top of your code, by enabling a lot of widely used modules / pragmas, but this would have come at the price of breaking some backwards compatibility. This would have meant that some existing code wouldn't have worked without modification.

Source: What happened to Perl 7?.

We Already Have Go 2

This is a look back at the huge progress that has been made since Go 1 released and what I'd consider to be the headline features of Go 2. This is a whirlwind tour of the huge progress in improvement to the Go compiler, toolchain, and standard library, including what I'd consider to be the headline features of Go 2. I highly encourage you read this fairly large post in chunks because it will feel like a lot if you read it all at once.

Source: We Already Have Go 2, an article by Christine Dodrill.

I hate LaTeX. I love LaTeX

Everyone who knows me IRL (and, I suppose, who follows me online for long enough), knows that I have a… special relationship with LaTeX. I think it has something to do with its obscurity, when it wasn’t specifically made to be obtuse, and then being so good at what it does — which is typeset documents. It doesn’t help that people consistently make impressive things with it, thus showing that it’s not just theoretically Turing-complete, but really something you can bend to your will, provided you’re willing to grapple with books from the 70s and obscure PDFs scattered online, in lieu of some modern documentation.

Systemd by example: installing units

This is the fourth article in a series trying to understand systemd by creating small containerized examples. In Part 1, we created a minimal systemd setup in a container. In Part 2 we took a close look at systemd’s dependency management. In Part 3 we saw the basics of services and how to define them. In this post, we will see another way to add dependencies for units. This technique is most commonly used when adding new units to the system that should be activated during bootup.

Source: systemd by example - Part 4: Installing units, an article by Sebastian Jambor.

NFS Server Inside FreeBSD VNET Jail

FreeBSD Jails is a great piece of container technology pioneered several years before Solaris Zones. Not to mention 15 years before Docker was born. Today they still work great and offer some new features like entire network stack for each Jail called VNET. Unfortunately they also have downsides. For example anything related to NFS is broken inside FreeBSD Jails (especially when they are VNET based Jails) and the relevant 251347 Bug Report remains unsolved.

There is however a way to run NFS server inside VNET based FreeBSD Jail – we will use userspace NFS server implementation instead of using the FreeBSD base system kernel space NFS server. Its available as net/unfs3 package and this is exactly what we will gonna use for this guide.

Source: NFS Server Inside FreeBSD VNET Jail.

Generate Rust tests from data files

Sometimes you just have a bunch of example data laying around and you want to make sure your code works with all of them. Some of them are probably short and sweet and could live happily as doctests, which are amazing btw. But some of them are more awkward to present in such form, because, for example, of their size or number. Typically when you have an example of how the program should behave you write an example-based unit test. Ideally, each of them would represent an isolated example and they should fail independently. But, converting your source data files into a unit test one by one, manually, can be a bit tedious.

Rust build scripts to the rescue !

Source: Generate Rust tests from data files, an article by Cyryl Płotnicki.