RSSAmplifier

Blog

Raphael Kabo

Raphael Kabo's blog

raphaelkabo.comRSS feed ↗25 posts

Latest posts

Navigating git diffs in VSCode with VSCodeVim

In Vim, ]c and [c jump to the next and previous git diff ( c is for change). Unfortunately this is a keybinding I have memorized and cannot live without. The venerable Vim plugin for VSCode doesn't support this out of the box, but I managed to wire it up myself - it just took a bit more fiddling than I was expecting. First I added this to settings.json : "vim.normalModeKeyBindingsNonRecursive" : […

Self-hosting Matrix Synapse with Docker Compose and Caddy

Discord recently announced that they're planning to start requiring all their users to upload photos of their faces or government ID for age verification. Their press release was somewhat incoherent in that they are seemingly trying to prevent their investors from fleeing by assuring them that every user will now need to be age verified, but also trying to prevent their users from fleeing by…

The Framework 12 is the Thinkpad X220 we deserve in 2025

Of course I covered it in stickers immediately. 'Trust Your Technolust' is available from my Redbubble store ! Before my Framework 12 arrived in the post today, my favourite ever laptop was a Thinkpad X220 I bought almost 10 years ago, when it was already some 5 years old. I did so many good things on that thing. I wrote a PhD thesis. I coded a utopian social network. I replaced the old barrel…

Building a Tell-Tale Heart with an Adafruit Prop-Maker FeatherWing

"The Tell-Tale Heart" is a short story by Edgar Allan Poe, in which an extremely sane man very calmly proceeds to explain to you, the reader, how he murdered the old man with whom he was lodging and hid his body under the floorboards. When the police come around, he can still hear the old man's heart beating under the floorboards. It is an excellent short story and if you haven't read it, I highly…

Using Eleventy and S3 to build a personal photo blog

I wanted a nice place to display albums of photos I take (I'm not a great photogapher, but it's nice to be able to share them with friends). I don't use Instagram or Flickr, and websites like 500px seem intimidating. In any case, as soon as I upload a photo to a third party business, I lose control over it. I'd far rather just have a site where I put my photos up and unambiguously license them…

OpenOrb - a curated RSS and Atom feed search engine

Two weeks ago, I built a search engine which only searches over a list of RSS feeds you expressedly give it. If you regularly read ten blogs, you can add those ten to the engine, and then search for stuff in them. I called it OpenOrb - if you click on that link, you'll be able to use my own instance. RSS feed readers can usually do this sort of thing, but RSS readers aren't meant to be shared, so…

WS2812 fairy lights with ESPHome and the Pimoroni Plasma Stick

Last month I picked up the Pimoroni Plasma Stick , which is essentially an RP2040-powered Raspberry Pi Pico bolted onto a terminal block and a Qwiic/STEMMA QT connector, to make it easier to connect WS2812/NeoPixel-style individually addressable RGB(W) LED light strips. That's a lot of terminology! Once the Plasma Stick arrived in the mail, I connected it to a string of WS2812 LEDs, also from…

Best-fit D&D damage to dice calculator

Just here for the goods? Download the damage-to-dice NPM package here , or use the online version below! Damage Modifier Calculate Best fit All possible rolls I was recently creating a new homebrew monster for a 5th edition D&D campaign I'm running, and I was horrified to discover how complex the monster creation rules in the Dungeon Master's Guide were. My interesting idea for a horrific…

Deploying an Astro site through SourceHut

Today I decided to finally try out Astro , a Javascript framework for building websites, by trialling it on my homepage. Suffice to say I liked it so much, and it was so easy to get to grips with, that this site is now built using Astro. [1] I was previously less interested in Astro because I thought it was mostly a tool for building websites using an islands architecture , something we're…

Finding out when the bins need to go out using Python, Docker, and Pushover

When I lived in Australia, the local council would send us a little calendar a few times a year with all the bin collection dates listed on it. It had a magnet on the back, so you could stick it on the fridge. I think it also included some cheery information about how much the local MP was doing and why we should absolutely vote for them in the next election. Now I live in Cambridge, and the local…

Suspending on idle on Void Linux using Sway WM

I'm setting up another PC with the delightful Void Linux (my third so far!), and I decided I wanted to set this one up with Sway WM , a Wayland-based window manager. This is my first time using Wayland (I have, if anything, been over-cautious), and it's been a real breeze so far. Despite what look like early teething problems with Sway on Void, as far as I can gather from forums, all I did to get…

Wiring up Wireguard, Caddy, and Docker on a home server

I wanted to write a little guide, mostly for my own future use, to describe how I set up Wireguard on my home sever. Hopefully this will be of use to someone else! Why Wireguard? I run a home server (an old, reliable, much-battered HP Proliant called Ottoline). It runs a few public-facing websites in Docker containers, like a library of plants in our house, a gitea , and a Nextcloud sever. It also…

uvcdynctrl-udev.log - a 20GB logfile

I logged on to my computer on Monday this week and ran startx as usual, but Xserver crashed, complaining that it couldn't write to /tmp . At first I thought there was an odd permissions issue or some problem with .Xinitrc , but it turns out after running some exploratory du -h commands that my root partition was completely full. The culprit turned out to be the file /var/log/uvcdynctrl-udev.log ,…

Using a HD44780 LCD display with MicroPython on the Raspberry Pi Pico

I got my Raspberry Pi Pico today (it's now part of our mandatory lockdown ration, right?), and immediately tried to do something vaguely undocumnented with it - namely, run one of those generic HD44780 LCD displays. Mine was a lovely Adafruit one via Pimoroni ; thanks for taking all my money Pimoroni! Suckers, what they don't know is that I'm going to keep spending my money there until I'm…

A simple gocryptfs mounting/unmounting script

Nothing fancy, but I got bored of typing out both directories when I was mounting or unmounting my gocryptfs filesystem. This script creates a mount folder, mounts to it, and opens it in Thunar. When you unmount, it also deletes that directory if it's empty. Neat, and makes me happy. #! /bin/bash # cryptmount v1.0.0 # mv this script to /usr/local/bin (or similar) # Change the directories to match…

Announcing two new online utopian games

Over the last year, I've been really enjoying learning React, and I've recently used all the fun new skills I've learned to code two online card games, both about imagining and exploring utopian spaces and communities, but in very different ways. Both started life as physical games, but have become virtual because of the Covid-19 lockdown. Loving Allness is a game designed by Sinjin Li which…

You should write a static site generator

Recently, I decided to learn everyone's new favourite programming language, Rust . I really, really enjoy Rust, mostly because learning it has made me realise that our human brains must do a vast amount of hiding the compile-time errors of our thoughts from us. My problem was that I am by no means a patient or an exacting coder. I had a brief look at the Rust book, found some source code which…

HelloEdit: The demon child of a Markdown editor, Microsoft Word 5.1, and Macintosh System 7

Recently, I booted up Mini vMac, an emulator for classic Macintosh computers from the 1980s, and set up System 7 with Microsoft Word 5.1a, running on a Macintosh Plus. This replicates the first computer I ever used, a retired Macintosh Plus from mum's office. My parents inexplicably set it up in the laundry, and I spent a lot of time writing 'novels' in Word and drawing weird abstract art in…

A script to create print-ready tiny zine layouts on macOS

I recently experienced a headache when I was trying to make a very, very small zine. Zines are great, and small zines are even better - especially for sharing academic research. People love small things; they're memorable; and the small format forces you to really think hard and critically about the most important things you want to say to an audience. You can make zines and give them out before a…

Introducing DocDown, the easy way to turn academic Markdown into Word documents

In a previous post , I elaborated a complex solution to a problem I was encountering while writing my PhD (which, by the way, I'm still writing - isn't procrastination swell?). I wanted to write in Markdown in the amazing MacOS text editor Ulysses , using citation keys automatically generated by Zotero for my footnotes and bibliography. But I (and my supervisor, and eventually my viva panel) also…

Wordpress in a subdirectory with Caddy

I've recently moved my webserver to Caddy , a fantastic modern webserver which is very user-friendly, with a helpful support community, and most importantly, effortless HTTPS on every site through the good folks at Let's Encrypt . The one issue I had with Caddy was running a Wordpress blog which was located on a subdirectory ( https://domain.com/blog ) of the domain https://domain.com . Whatever…

Simple image captions in Jekyll

Images, and image captions, are always a problem in Markdown. Not only is there no real way to semantically signify images using a text-only format, but it's never really obvious how to tie image captions to the images to which they belong. This Stack Overflow post demonstrates the simplest way to display image captions on a Jekyll site or blog while keeping the markup and resulting HTML…

A simple Jekyll rsync script

I've just moved this site to Jekyll , which is the first time I've played around with it properly, and I'm very happy with how easy and logical it has been to use. Thanks, Jekyll. I keep my Jekyll sites in a folder on my Macbook, and have written this very simple bash script to build and upload any updates to my server. It's a little different to the rsync script available on the Jekyll site…

A command line die roller for D&D

Real nerds roll dice from the command line, so I made a command line die roller. It's very basic and doesn't have good error checking, but it's the first proper thing I've ever written in Python. It's heavily adapted from this script , but I've added the ability to repeat a roll multiple times (while losing the ability to roll multiple sets of dice in the same command, which I will bring back…

My workflow for transforming academic Markdown into beautiful Word documents

12/01/2019 I've bundled a significant part of this setup into a simple menu bar application, available here . 01/03/2018 Updated for compatibility with Pandoc version 2.1.1. Over the last few months, as I've been working on my PhD, I've set up a workflow to convert my writing (in everyone's favourite simple markup language, Markdown), as if by magic , into Word documents which I can email to my…