The Internet Is Dead, Isn’t It?

Lately I keep feeling that the internet has become a worse place. Not necessarily louder or slower, but emptier in the places where people used to be visible. Ten or fifteen years ago I could move through small personal blogs, read along in forums, disagree in comments and learn something almost by accident. It was a web made of many small voices. They were not always clever or pleasant, but they were recognisably human.
I remember evenings when I found a post about a problem, followed the comments and came away with a better solution. I wrote things myself, asked questions, corrected mistakes and linked to other sites. I still write about things such as my GitHub backup with Gickup and Forgejo or local AI in my homelab. A post used to be the beginning of a conversation rather than the end of one. Today I am much more likely to […]

GitHub backup with Gickup and Forgejo

A large part of my work lives in my GitHub account codebude, which has grown over several years. It now contains around 70 repositories, public and private, including forks. You know the trade-off: a hosted account is convenient, but the copy still lives with someone else.
My goal is simple and concrete: every repository should be mirrored automatically to my own self-hosted Forgejo instance once a day. Not as a manual export I will eventually forget, but as a routine that keeps running while I am busy with something else.
That gives me a complete copy I can clone at any time, regardless of what happens to my GitHub account or the service. It does not prevent every possible kind of data loss, but it removes one important dependency.
First I will explain why I take this detour at all. Then we will build the workflow step by step with Gickup, Docker and […]

When Docker Is Faster Than the NAS

One morning, my backup tool failed for every GitHub repository it should mirror into my self-hosted Forgejo instance. The log contained ERR pkt-line 3: EOF git=push and Exiting with status=1. I first suspected the recently updated tool image. Plausible, quick to assume, and completely wrong.
The real cause was one layer below. Forgejo stores its repositories on the NAS, mounted into the container through NFS. My Docker host booted at 04:06:14, the Forgejo container started at 04:06:45, and the NFS mounts became active at 04:07:06, with the last one arriving at 04:07:16. Docker was faster than the NAS.
This order is dangerous because Docker resolves bind mounts when the container starts and creates missing source directories itself. If the mount point is only a local directory at that moment, Docker binds that empty directory. When NFS appears later, the host sees the real data, but the container remains attached to its local […]

llama.cpp in Docker on WSL2 with CUDA

In this guide, I will show you how I set up a local, OpenAI-compatible llama-server in Docker under WSL2 with CUDA acceleration, taking you from the basic arrangement to the first working request.
The finished setup runs llama-server in a container, uses the GPU through WSL2, and is configured with exactly one slot, -np 1, and at least 128k context. I need that size from my own experience because I run a coding agent such as OpenCode against it: smaller contexts trigger compaction too often and make the work tedious. A larger context would be nice, but it no longer fits into the VRAM of my setup. It is meant for one local workstation, not for a multi-user server where several people send requests at the same time.
Any client that speaks the OpenAI-compatible API can call the resulting endpoint, while the models run locally on your own machine instead of in […]

How I start Spotify on any Alexa with Home Assistant

At home, my music comes from Spotify Premium, and most of my playback devices are Amazon Alexa devices.
I wanted my daughter to start her favorite songs without handling a phone or a screen. Tap an NFC card on the reader and the music starts: a kind of Toniebox, just built myself. The reader is a DIY build based on an ESP32 microcontroller and ESPHome Builder, following the adonno/tagreader template.
The obvious Home Assistant approach is the official Spotify integration plus media_player.play_media. That is not enough for a cold start, though. The integration can use play_media sensibly only when something is already playing. Starting a specific song, playlist or podcast from a stopped player is therefore not supported by this path. This is a limitation of the integration and its current media_player behavior, not a configuration mistake.
The solution is a small Python script. It asks the Spotify Web API for available Spotify […]

en.code-bude.net
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.