RSSAmplifier

Blog

Home on mfashby.net

Recent content in Home on mfashby.net

mfashby.netRSS feed ↗76 posts

Latest posts

Broken immich on OpenBSD

Previously I installed immich on my home server on a VM, run by OpenBSD’s VMD. This was working great until one day the VM won’t boot ;-( The log file /var/log/daemon shows these two lines. Apr 11 22:29:55 mserver vmd[31953]: started immich (vm 1) successfully, tty /dev/ttyp3 Apr 11 22:29:56 mserver vmd[21414]: vm/immich: vmd: invalid fault_type 2 The only vaguely relevant thread I can find…

Book - Service Model

I recently read Service Model by Adrian Tchaikovsky . It’s a great blend of surreal humour and dystopian future.

Advent of Code 2025

I’m attempting Advent of Code again this year, this time in common lisp. I’ve been reading Practical Common Lisp to help and I’ve found it very useful.

Book - Strata

I recently read both Strata and The Dark Side of the Sun by Terry Pratchett. I am a big fan of Terry Pratchett; I read most of his books in my late teens including all the Discworld series and they left a big impression on me. Both Strata and The Dark Side of the Sun predate the discworld. Strata is the most interesting to me because although it’s ostensibly a sci-fi novel; it contains the theme…

Immich on OpenBSD, part 2

Previously I started investigating the possibility of running Immich natively on my OpenBSD home server. I took the approach of deconstructing what the official docker-compose.yml / Dockerfiles were doing and running equivalent commands on my base server. TL; DR, it still doesn’t work, and it’s not trivial to fix. I failed to install a later version of Rust on OpenBSD; so I took an escape hatch…

Immich on OpenBSD

Immich has been on my radar for a while. I used to use google photos, but for a while now I’ve simply had my photos locally on my phone and synced with Syncthing to my NAS as a backup. I miss some of the advanced features like being able to search through photos and having them automatically categorised, as well as more basic features like simply being able to store them on the server-only to save…

Book - The Expanse

I’ve been reading through The Expanse series by James S.A Corey (actually a pseudonym), at the recommendation of a colleague. I love a good space opera, and the story and writing style always leaves me coming back to find out what happens next. I’ve just finished book 7 of the 9 main series books; and I’ve not been reading the novellas. I can only speculate what the series end will be. Given the…

Book - Flowers for Algernon

I recently read Flowers for Algernon after a friend brought it up twice in conversation about mental health. It’s a really unique and emotional piece of science fiction, written in the form of the journal of a man who undergoes experimental brain surgery to increase his IQ. I would really recommend it.

Stagit

Having got a new server , this time running OpenBSD; I’ve been slowly moving stuff over from the old raspberry pi. A kind reader left a tip on my previous post about cgit ; there’s another program called stagit . It’s conveniently packed for openBSD in the ports system! However; I would like to customize it a bit, which means recompiling it. I can start looking into the BSD ports system and how to…

New Server

I have replaced my old server with a new one. The old server was a raspberry pi 3B+. It did pretty well for several years, but it’s quite slow and I want to explore running some more intensive workloads like immich . I’m also just allowed to tinker and change things because it’s my own server, I can do what I like :D The new server is a lenovo thinkcentre; it has a core i5 processor and NVME disk,…

Advent of Code 2024

I’m doing Advent of Code again, in Scala this year. I’m probably not going to get very far with this year, as I don’t have a ton of free time right now. However it still interests me enough to have a go at the first few days. code

Write Yourself A Git

I've been working through 'Write youself a git'

Book - Meltdown: Why Our Systems Fail and What We Can Do About It

Short review of Meltdown: Why Our Systems Fail and What We Can Do About It

Bike 4

I got a cargo bike, it's fab

zigvm

I wrote a tool to download and manage Zig versions … in zig. It uses the JSON metadata available for zig downloads. It has one third party dependency on minisign . JSON parsing, HTTPS client, and tar/compression were all available in the standard library. Project page

Book - The Stranger Times

I read [The Stranger Times](https://thestrangertimes.co.uk/) series by Caimh McDonnell, TL; DR they're great.

Zine

I converted my blog from [hugo](https://gohugo.io/) to [zine](https://zine-ssg.io/).

Book - The Cathedral and the Bazaar

Book review 'The Cathedral and the Bazaar'

Communication

I believe that in software development, being open and working in the open are crucial to wellbeing and efficiency; even moreso when working remotely. There are 3 things that I think should be communicated: intention, struggle, and progress. Communications should be clear, public, searchable, and regular. This post explains my thoughts on the subject. Intent Communicating your intent ensures that…

Fairphone

I bought a fairphone 4 just under 2 years ago. I’m pleased to say last week I repaired it! I had accidentally filled the pocket on my jeans with sand on holiday, and then I put the phone in the pocket. The USB-C on the bottom of the phone got sand in it, and stopped holding a cable correctly. It just about worked for charging still, but the cable would pop out very easily, and this was pretty…

1brc

I had a go at the One Billion Row Challenge , but in Zig rather than Java. I got down to about 10 seconds :) the leading java solution runs in 2 seconds on my desktop machine (and that’s without speedup from using GraalVM)

Book - Data Oriented Design

I recently read Data Oriented Design by Richard Fabian. The book is about software design; and specifically it relates to software design in games, but the principals are partially relevant to other domains as well. The main take away seems to be that ‘Object Oriented Design’ fails to deliver on some of the properties that software engineers think it will give their projects, as well as being…

Dynamic DNS

I recently upgraded my home broadband, however in the process I lost my static IP address. I have requested a new one, but in the meantime I wrote a program to dynamically update my DNS records in case my router restarts and my WAN IP address changes. I didn’t really want to change providers in order to move to a proper dynamic DNS setup, since this is a temporary solution, but I did enjoy writing…

Advent of Code 2023

I’m doing Advent of Code again this year, this time in Zig . I’m posting the code here .

Skateboard 2

I’ve been skating indoors at LS-ten skatepark recently, as the poor weather over the last few weeks has made outdoor skating… not fun. I’ve mostly abandoned my shorter board in favour of the Lush Throttle . At 34” length it’s not too much longer than a typical ‘popsicle’ board, but I find it much more comfortable. I don’t mind the lack of double kicktail, and I prefer the longer wheelbase. I’ve…

Roc

I had a go at writing some code in the Roc programming language. It’s a functional programming language, which is statically typed, and compiled to a standalone executable. I first heard about it after listening to an interview with it’s author on the Legacy Code Rocks podcast, and later thought about it again after seeing a comment about it on hacker news . I found it pretty easy to use. I’ve…

Zipdl

I wrote a small program for downloading individual files from a remote ZIP file on a http server that supports Range requests. This was an interesting learning exercise. Project page

Book - Parable of the Sower / Parable of the Talents

By Octavia E Butler . Note, spoilers When I read fiction, I primarily read sci-fi. Some of my favourite authors include Iain M Banks, Terry Pratchett, Steven Baxter. I also enjoyed Frank Herbert’s original Dune series, and some of Issac Asimov’s short stories (particularly I Robot). ‘Parable of the Sower’ stood out to me in my local library’s tiny sci-fi section; I’d not previously read anything…

Mcl (minecraft launcher)

I wrote a minecraft launcher in zig as a learning exercise. I got a lot of practice writing zig code and I learned a few things about it. The GeneralPurposeAllocator is really useful for finding memory leaks, as is the std.testing.allocator for use in tests. The standard library HTTP client is really cool, but unfortunately fails on a lot of websites because it lacks TLSv1.2 support. Calling into…

Comments 2

Previously I added a basic comment system to my website using a separate web server which served only the comment HTML. This is fine, but it does require another program running continuously on my server. Since that server is a raspberry pi, and it is running a lot of other software as well, and my blog doesn’t get a lot of hits (let alone comments), I thought I could do better by using the Common…

Four Eyes

The four-eyes principle (also known as two-man rule or no-lone-zone) stipulates that for certain very critical operations like the launch of a nuclear weapon or the handling of very sensitive cryptographic key material, at least two qualified persons must be actively involved. I think the same principle should hold true in some IT operations work; for example some servers are running software that…

Bike 2

I haven’t posted about my bike for a while; there have been a couple of changes. Firstly; the freehub broke, which put it out of action completely until I could get it to the shop. It wound up being cheaper to get a replacement wheel than try to fix the freehub, and since the rims were worn anyway it was an easy choice. The tyres had also perished slightly, so I opted for some new ones, this time…

Book - Designing Data Intensive Applications

Link to the book. The book starts by describing very simple key-value database systems; then gradually introduces more concepts and features like indexes, joins, SQL (Structured Query Language), MapReduce, isolation, consensus, total order broadcast and so on, eventually winding up with data streaming systems. At each stage, the author explains the problems that such systems solve and the…

Semantic Dissonance

A while ago I read Enterprise Integration Patterns . It was too long ago to write a review, however the phrase that I first encountered in that book and has stuck with me since is ‘semantic dissonance’. In the field of software development, this means that we have two (or more!) incompatible models of the same real-world situation. This happens a lot in healthcare IT. The latest and greatest…

Book - Site Reliability Engineering

I’ve read Site Reliability Engineering (SRE) from Google/O’Reilly. It’s an interesting insight into how Google scales their operations work. A core theme of the book is ensuring that ‘operations’ work i.e. managing servers, computers, networks, hardware and applications scales sub-linearly with both the number of users of a service, and the number of services the company provides. The book is…

Authorization and search operations

Background: at work I help to build a SAAS web application for healthcare. An important aspect of our web application is authorization . It’s a pretty hard problem, because the business has a fairly complex set of rules about who can see what data. The rules involve attributes of the subject and object , and the direct or indirect (e.g. via a group) relationship between them. It’s also a pretty…

Cgit

In a previous post I switched back from fossil to git. I found gitea to be a pretty good server. However, it has many features I do not use, and it takes a minimum of 15% of the RAM on my Raspberry Pi home server! I found a simpler setup. I have switched to plain git server accessed with SSH, which git-scm documents how to set up. I’d still like a web UI to allow others to see and download my…

Comments

I’ve added an extremely basic, probably insecure, comments form to my blog site. I’ve built it in Rust for practice. Code is here . It uses askama templates, axum web framework, sqlx for database access, and postgres database. Askama offers compile-time validation of templates since it actually compiles the template to code, and sqlx does compile-time checking of SQL queries and generation of…

Spotifyd

I recently discovered spotifyd , an open source alternative to the deprecated libspotify. I happened to also have a pi-zero W from a while back, and a pHAT DAC amplifier. It was a relatively trivial job to set up the pi zero w headless, get audio output to the pHAT DAC, install spotifyd and use it as a spotify connect device connected to my old Cambridge Audio A1 . Install guides: raspberry pi…

Longboard 5

I’ve been stuck inside with the cold weather recently. However, I’ve also discovered Ampskate which is a great little guide for learning longboard dance and freestyle. Here’s a little clip: Which is my attempt at a cross-step . My goal is to learn the ghostride kickflip .

Advent of Code

I’m having a go at Advent Of Code this year, this time writing solutions in Rust . I have no chance at competing with ChatGPT though!

Blogsite 2

I made another small experiment source to do my blog yet another way; rather than using hugo static site generation, I can leverage Caddy server’s built-in template rendering and markdown support to serve markdown files ‘directly’ without a pre-build step. In the end though, I will probably stick with static site generation. It offers some performance and security improvements such as no…

Blogsite

I was thinking about this blog and how it’s set up. I covered the setup in a previous post, but it’s quite simple: the site is generated from markdown files with hugo and published to git. The server pulls from git on a schedule, rebuilds it and copies it to the web server directory. I made a little experiment with a different approach source . Instead of statically generating the site, it’s a…

Caddy

I switched to caddy from nginx. Caddy has a ‘simpler’ configuration syntax, and offers built-in automatic TLS support with letsencrypt. I’ve also enabled automatic TLS support in maddy mail server, and I have been able to remove certbot entirely from my home server and disable the cron job that refreshed certs! The switch wasn’t as painful as I thought it might be. It took about 45 minutes to read…

Skateboard 1

Following my previous post on longboarding, I took a few more trips to the skate park. I eventually decided to buy a regular (or ‘popsicle’) board as they really open up a lot more of the park, and tricks. I bought second hand from a local skater, and I’m quite pleased that I got a board in good condition with nice trucks. However, I’m used to a longboard and I really didn’t like the typical…

Quine

A quine is a program that takes no input, and it’s output is it’s own source code. A quine-relay is a program that outputs the source code for another program, and when that next program is run it outputs the source code of the first program. I recently saw this quine relay program which was super impressive as it goes through 128 languages like this! Having recently learned some Rust , I thought…

Blocky

I recently revisited the idea of installing pi-hole in my local network to help remove ads from miscellaneous devices on my network. However, my raspberry pi already runs a lot of stuff including this blog, and runs on an unsupported-by-pi-hole OS (manjaro linux). I found another tool blocky which is a DNS server with a lot of the same features as pi-hole. It has a reasonably simple configuration…

Back to Git

I moved back to git from fossil SCM, after previously migrating the other way. I use git for work and so couldn’t forget how to use git and go all-in on fossil, and remembering two sets of commands proved somewhat painful and I wasn’t seeing the benefit of built-in issue tracking or anything like that. Now I run gitea git server instead. Weirdly I don’t have too much trouble remembering two…

Serverless

At work, our main product is a web application. Its primary function is receiving health data from hospital systems (and GP systems, and anyone else that has health data) and making it available to patients. I’ve been heavily involved in the infrastructure side of things; including migration to public cloud infrastructure. Our infrastructure is complicated. We use SQL databases, Redis, Cloud…

Fossil 2

I tidied up my github and archived a bunch of old repositories. The few that I have kept, I have moved to my self-hosted fossil , and I have enabled a few useful options there like login-groups and correctly setting base URL and individual repository paths within fossil. It transpired I didn’t have many (any?) useful personal repositories. I have kept the repo for this site, a couple of old (and…