RSSAmplifier

Blog

Avery Vigolo

Personal website and blog of Avery Vigolo, a software developer

averyv.meRSS feed ↗14 posts

Latest posts

A simple C++ module system with CMake

One way to implement a simple module/plugin system in C++ using CMake. By module or plugin, I mean a replaceable software components, where each serves a similar function, but with a different implementation. Not C++ 20 modules . Background In my current role, my team and I have been in the gradual process of converting a lot of Python code into C++. The software handles large volumes of…

The Defra pet database system is broken

England legally requires you to microchip and register cats and dogs, but the law has created perfect conditions for regulatory capture. I currently keep two cats. Ollie is a middle-aged cat who I took in for a friend who couldn't keep him any longer. The other, Napoli, I adopted as a kitten - both his parents were strays, though the mother was adopted by a neighbour. Transferring keepership…

A Bandcamp plugin for Grayjay

Grayjay is a media app which supports multiple platforms, similar to NewPipe . I've recently been trying it out in place of NewPipe, probably after one too many times where a Youtube update broke it. Note that Grayjay currently has some weird "temporary" license , so treat it as "source-available" software at best. It doesn't qualify as Free and Open Source, as of writing. A platform…

Linking in C & C++

Every C & C++ beginner's tutorial will step you through source and header files, .c and .h respectively for C, and... well take your pick for C++: .cpp and .hpp , .cxx and .hxx , or even .cc and .hh . One of the build errors you'll encounter with these types of languages is the link error . Something like undefined reference to ... . This tends to confound developers, who roughly…

Running NixOS on the Librem 5

Introduction So, I got a used Purism Librem 5. Bought it used with the grand idea of actually doing something useful: contributing to the mobile GNU/Linux ecosystem. This was definitely inspired by Sophie Tauchert's talk at NixCon 2023, where she goes over her work and the current status. I thought, since she's already upstreamed that work to nixos-hardware , it should be easy…

A Journey into Nix and NixOS

Before I started this journey, I ran this website and a few personal services on the cheapest VPS OVH offer , but the limited disk space has frequently given be trouble. 20GB isn't a lot to work with when you're using it to synchronise and stash personal files. I planned to take cancel its upcoming renewal, and instead migrate to another VPS provider that provides a bit better value for…

Book review: Meditations, Marcus Aurelius Antoninus

Introduction Having recently decided to do some more (non-fictional) reading, I started by picking up some literature already available to me, starting with Meditations . My copy was translated and annotated by Martin Hammond, and published by Penguin Classics. 1 The Meditations are the surviving writings of Marcus Aurelius, created later in his life and not intended to be published. Nevertheless,…

Splitting up Liquibase JSON changelogs

When migrating to Liquibase for your database deployments, a common practice is to create a starting point from an existing schema in a database using the generate-changelog command. This command generates a Liquibase changelog which will recreate your schema when you run $ liquibase update . Unfortunately, at least in the open source version , this command generates a single file containing all…

Git from first principles

Introduction Git is the best version control software I've used, but it has a reputation for being complex and confusing, in part thanks to confusing commands and lackluster documentation. In this article I've tried to create my own guide that'll provide readers with an understanding - and hopefully confidence - when using Git. Even if you've been a Git user for a while, you…

Do an internship

Should you find yourself in further education, or are otherwise looking to get started in an industry, I'd strongly recommend taking part in an internship. I personally found mine incredibly helpful as an undergraduate student. It boosted my confidence, gave me a better idea of what direction I wanted to take my career in the future, and made it easier to get started once I left university.…

Diagnosing issues with tcpreplay & tcprewrite

Tcpreplay lets you take previously recorded network traffic (e.g. with tcpdump ) and send it out again, keeping packets the exactly same or altering them slightly. This can be handy if, for example, you're testing an application that receives data over a network. Recorded packets include the original metadata, including the source and destination addresses, so if you want those recordings to…

Good design patterns: the command palette

Concept I first encountered the name "Command Palette" from the Sublime Text editor. The idea is simple: your application opens a menu with a textual list of possible actions that your application can perform. Add a searchbar on top that's active immediately, so that one can start typing to filter down the options until the desired action is found. These options are gathered from the…

Domain name hacks

An increasingly common trend is the use of domain hacks, wherein one uses TLDs in an unintended or unconventional way. I've noticed this recently in the primary instance of Invidious , invidio.us . While incorporating the TLD into the domain name like this might be more visually appealing and perhaps elegant, there are several downsides to doing so in my view. Each time I type that URL I find…

Software I use

Personal computers You can find most of my configuration files here . Linux My computers run a distribution of GNU/Linux, specifically Arch Linux . It's the first distribution I installed and it's served me well, so I haven't had any reason to try another. Here's some things I like about it: The Arch User Repository (AUR) lets anyone provide the build scripts for creating…