RSSAmplifier

Blog

Chris' Homepage

Christopher Besch's Homepage about Software, Articles and Photography

chris-besch.comRSS feed ↗28 posts

Latest posts

WireGuard for Saints Row: The Third

Great games come with LAN co-op. Even greater games allow you to directly enter the game lobby's IP address. Saints Row: The Third doesn't and relies on UDP broadcasts, instead. And because WireGuard doesn't transmit UDP broadcasts, you cannot immediately play this game over a WireGuard VPN. In this article, however, I explain how a simple Python script relays UDP broadcasts into the tunnel and…

Userspace's Role in Linux Networking

On Linux what does networking? What parts are implemented in the kernel and what parts require userspace tools or daemons? How much of networking is inherent to the kernel and how much is up to distributions? What tools may be combined and what others cause conflicts? I've always wondered these questions and more about Linux' networking stack. For this article I finally took the time to thoroughly…

Enable Respawn in ARMA: Cold War Assault

The milestone in gaming history that is Arma: Cold War Assault (previously Operation Flashpoint) is a blast and runs on a toaster. Now I'm creating my own missions and wanted to enable respawning. That's not easy so here I explain how you go about doing that.

Mistakes in the Docs: UART on Raspberry Pi 5 Compute Module

We have a Raspberry Pi Compute Module 5 IO Board without a monitor or network connection. How do you see what the system is doing? How to read the Linux and bootloader log? A simple answer is UART. Turns out, UART isn't so simple on the Raspberry Pi 5 and its documentation, datasheet and raspi-config is wrong in a couple of places.

Rapid Transit Oddities

High-speed trains are fun! My significant other and I typically use them to get to our vacation destination. Once we're there, we use rapid transit to get around, e.g., bus and metro. This article is about some oddities we've experienced, being tourists on rapid transit.

Dabbling with Zephyr Driver Development: STM32 direct LCD Driver

I want to use an LCD glass on an STM32WB55RG, which has an LCD direct driver in hardware. You directly connect all LCD segment and common pins to the SoC. Because I want to use Zephyr but Zephyr doesn't have an LCD driver already, I implemented one myself.

Don't forget about the Option Bytes

What's the reason for a watchdog taking 23 times as long to reset the device? It turns out the Flash Option Bytes are. And a mass erase doesn't reset those.

Automatic Firmware Generation for Spaceflight Hardware based on Schematics

Any satellite's Power Conditioning and Distribution Unit (PCDU) fulfills the same purpose, providing the subsystems with electrical power. However, because each satellite has a unique set of subsystems, differing PCDUs must realize differing power distributions. How do you efficiently develop firmware for such similar hardware? One approach is to group components and their PCB layout into a…

React without a Framework

Reimplementing my homepage without a framework made me more flexible and independant. I only rely on React, TypeScript and Node.js to generate a static HTML+CSS website. Also, it has been a lot of fun!

When You Don't Take the Shot

I list the things I realized to improve my photos. There are the technical abilities (equipment, exposure, post processing, ...) and the surrounding conditions (time, location, ...). And sometimes, photography means letting the shutter rest.

The Photographer and her Camera

I bought a new, bigger camera and want to be independent of it.

Forgejo Actions Notification Development

Some stories of how I work on Forgejo. How is a Go project structured? What's the point of Forgejo's layered architecture and what's that pub-sub pattern? Additionally, I exhaustively explain how to setup a development environment for Forgejo.

The History of Forgejo's Pub-Sub Pattern

I created a tool to visualize Forgejo's Pub-Sub pattern. Why not run that tool on all 24 thousand commits in Forgejo's history? What could possibly go wrong?

How my GitHub Pages got Hacked

A DNS forward is an expression of trust. GitHub broke my trust and someone else received control over my domain.

Why I love Open-Source

We all live in a world of immensely complex technology. The concept of Open-Source might seem radical at first but it's indispensable in our world. Regardless if you are a user, developer or simply interested in a healthy society, you benefit from Open-Source and we should fight for every bit of it. Open-Source is a quality mark, a form of democracy and ownership, capitalism at its best and thus…

Real-Time Application Development on Linux with PREEMPT RT

While Linux is optimized for throughput and efficiency, real-time applications require bounded worst case latencies. However, with the merging of PREEMPT RT, mainline Linux converts to a real-time operating system (RTOS). Through presenting the application developer’s perspective and the changes PREEMPT RT introduces to the kernel, we review Linux’ real-time capabilities. Additionally, we…

The Bitter Feeling of Technical Compromises

My very personal troubles dealing with compromises, explained at an example of docker_cron with Renovate. Sometimes you really don't have to worry as much and trust your previous, careful considerations.

Real-Time Linux on RISC-V

Setting up Linux v6.12 on a StarFive VisionFive 2 with PREEMPT_RT. Also: How to setup your Linux laptop as a simple NAT router.

Guided Missiles in Minecraft

I'm having a stab at designing an enitity seeking missile in Minecraft with the mc_missile mod. Or: How I blew up my brother.

Saving Time with Tests

Using tests not to increase quality but to more quickly get things done. Or: How I started to enjoy writing tests.

Docker: Breathing Life into Decades old Fortran

Bringing decades old Fortran code to life with Docker and animating it with Python. Now you get to see Fig.3.5. from "Introduction to Conventional Transmission Electron Microscopy" by Prof. Marc De Graef at 30 frames a second.

Inject Fonts into Web SVGs with sed

Add font-loading CSS to SVGs with a sed script.

grub-install --removable for buggy UEFI

Install Debian on a device with a broken NVRAM.

LunarVim in Distrobox

You're missing that one program that isn't available in your Linux distro? With Distrobox, the 'Linux Subsystem for Linux,' you can install it anyways. This article explains how to do that with the example of installing LunarVim on Red Hat.

Bodging MP3 Names in Bash

Why do it complicated when a Bash one-liner does it too?

reveal.js your Presentation

reveal.js is a PowerPoint alternative. With it you programmatically define your presentation via HTML. This article shows how you can use reveal.js for your own presentation.

Installing Gentoo To My Liking

Gentoo is a Linux distribution that offers as many options as possible. This article leads you through the decisions I took to end up with a system that best suits my needs.

Maki, Atoms and Time Travel

Maki showcases how a program for interactive and programmatic animation development can be implemented. Its programmatic approach provides the precision technical concepts require, while its interactivity and real-time updates avoid a disconnect between input and output.