Hoisin Chicken
5-6 servings / 45 minutes
| 600 g chicken thighs | A little neutral oil |
| 3 cloves garlic | ~100 ml soy sauce |
| ~2 thumbs ginger | 75 g cashew nuts |
| 2 tbsp five-spice | 200 g hoisin sauce |
| 2 tbsp sesame seeds | 200 ml water + 1 bouillon cube |
| 2 tbsp sesame oil | |
| ~100 ml teriyaki or oyster sauce | For serving |
| Salt | Cooked rice |
| 1 broccoli (approx. 300–400 g) | 1 handful fresh coriander |
| 1 bunch spring onions | 1 lime |
| 2-3 tbsp brown sugar |
Preheat the oven to 190°C (convection/fan). Cut the chicken thighs into rough chunks. Place them in a bowl, and press the garlic over them with a garlic press, and add the finely diced ginger. Sprinkle with five-spice, sesame seeds, sesame oil, and salt, and toss everything together. Cut the broccoli into bite-sized florets. Roughly slice the spring onions.
Spread the chicken, broccoli, and spring onions (save some for serving) in an oven-proof dish. Sprinkle with the brown sugar, and drizzle with oil and soy sauce. Bake in the hot oven for 10 minutes. Add the cashew nuts, hoisin sauce, teriyaki/oyster sauce, and the water with the dissolved bouillon cube, and bake for a further 15 minutes, until the chicken is cooked through and the broccoli florets are tender and al dente.
Serve in deep plates, preferably with cooked rice. Sprinkle the remaining spring onions and picked coriander over the top, and serve with lime wedges.
Linux Remote Desktop Access
Edited on 2026-01-26 after upgrading to NixOS 25.11 and GNOME 49, which don’t support X11. Wayland is the only option from now on.
TL;DR
Here I compare Gnome Remote Desktop, RustDesk and x11vnc.
I ended up using Gnome Remote Desktop. I use “Desktop Sharing” for the physical desktop; and since switching to Network Manager, “Remote Login” works too — though it only gives a separate virtual desktop, not the physical one (see below).
KVM and Remote Desktop Access
TL;DR
Lesson learned. I need EDID emulation in a KVM if I want to be able to connect to my desktop remotely with e.g. x11vnc or rustdesk or anything really.
One without EDID works fine unless I need to to connect to it remotely. And I do! 🙂.
So now I’m using a KC-KVM302AS: A 3-Port 2-Monitor HDMI 4K60Hz KVM-Switch with EDID Emulation:

Details
A KVM allows me to switch my mouse, keyboard, webcam and monitor between my work laptop and my private desktop.
shpool - much preferred over tmux and screen
Whats wrong with tmux
tmux (and screen before it) are wonderful. They allow me to start a CLI app in a terminal, disconnect from tmux, close the terminal, and reconnect to it again later. Or I can ssh to a remote machine, start tmux and run a critical command without fear of loosing the connection, because I can always ssh in a re-attach if that happens and still see the old “terminal”.
Python New Module Guide
Python new project guide
I’ve written this mostly as a guide to myself. I’m a little new to python (so this is the perfect time for me to write this), but not new to programming.
This is not about the python language or syntax, but about the right modules to use to setup a skeleton project.
This doc came out of painfully learning these things one by one.
Use uv
uv is an extremely fast Python package and
project manager. It replaces pip, pipx, venv, and most of what you’d use
hatch for. Install it following the official
instructions.
How to use Mathjax in Hugo
Hugo is the static site generator that this site is built with. This is how to enable Mathjax in Hugo so you can write LaTeX in your pages, as I’ve used e.g. in On the Economics of Streaming: Show me the money
Put this in the page source somewhere. I put it in layouts/partials/head-additions.html, but perhaps that is specific to the ananke theme:
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>Now you can put this on your page and have it rendered like you’d expect:
On the Economics of Streaming: Show me the money
I’ve never spent as much money on music or TV and movies as I do now by paying my Spotify and Netflix subscriptions. But still artists apparently aren’t getting any money for their art. How can this be? Where is the money going?
Below I’ve done a back-of-the-napkin calculation. If all the premium money went to artists we should be listening 45.5 hours/month, but on average, we actually listen 25 hours/month. Which means that Spotify is keeping 45% of my subscription, and only paying 55% to artists.
Data Visualization: It Matters How we Show Graphs
Should we show graphs using horizontal lines like this:

Or using “slanted” lines like this? :

Perl: Schema for APIs with code generation?

Two things have occurred lately for me in Perl:
- I’ve been bitten enough times by un(der)specified RPC and API documentation to make it worth my while to begin documenting the interfaces in schemas.
- I’ve been bitten by Moose. Using real objects instead of raw hashes.
MSDN Blogs: Looking Forward: Microsoft Support for Secure Shell (SSH)

Fantastic news! MS Windows will support SSH both as client and server. This is superb! “… and there’re not exact days yet. However the PowerShell team will provide details in the near future on availability dates.” Source: MSDN Blogs