Mumbling about computers

Exploring software development, embedded systems, and homelab projects.
https://blog.davidv.dev (RSS)
visit blog
Spawning VMs for unreasonable workloads
30 Sept 2024 | original ↗

Running VMs just because it's quick and easy

Booting x86-64: from firmware to PID1
24 Aug 2024 | original ↗

All I (now) know about booting x86-64

A skeptic's first contact with Kubernetes
12 Jul 2024 | original ↗

A journey into Kubernetes: key concepts from a systems engineer's perspective, with a detour to yaml-template-hell.

Learning about PCI-e: Implementing an option ROM
3 Jun 2024 | original ↗

Getting the PCI adapter all the way to Linux

Learning about PCI-e: Driver & DMA
24 May 2024 | original ↗

Creating a simple driver for a simple PCI-e device (in QEMU)

Learning about PCI-e: Emulating a custom device
5 May 2024 | original ↗

Creating a very simple PCI-e device in QEMU

Investigating crashes on self-modifying code
27 Mar 2024 | original ↗

Replacing vDSO entries on more architectures with a bang

Exploring HUB75
19 Mar 2024 | original ↗

Driving a HUB75 display from ESP32 and RP2040

Homelab backup LTE connection
14 Mar 2024 | original ↗

Setting up a wireguard backup tunnel over LTE

Minimizing Linux boot times
4 Feb 2024 | original ↗

Getting Linux to boot in 6ms

Running a cross-architecture Nomad cluster
11 Nov 2023 | original ↗

I wanted to play around with some projects on RISC-V, so I got a VisionFive 2 and tried to add it to my Nomad mini cluster. Surprisingly, nothing worked on this experimental platform! First, Nomad does not provide builds on RISC-V, and it does not build, as it has a transitive dependency on boltdb, which itself does not build for...

Spicing up a robot vacuum
17 Sept 2023 | original ↗

Playing sound on a robot vacuum

Pico8 console, part 3: Writing a compiler & Lua runtime
2 Sept 2023 | original ↗

In part 2 I was stuck trying to make Rockets! work with optimized bytecode; I pursued this for a bit and realized it was probably never going to be fast enough. So I set out to write a compiler. It was a dumb idea, but it worked. For a proof of concept, I started writing the compiler in C++. I do not really know...

"strict mode" Ansible
18 Aug 2023 | original ↗

Applying software-engineering practices to our IaC

Rust's Default in Python
17 Aug 2023 | original ↗

Implementing recursive defaults for dataclasses with dacite

Cursing a process' vDSO for time hacking
29 Nov 2022 | original ↗

Replacing time-related vDSO entries at runtime

Pico8 console, part 2: performance
24 Jul 2022 | original ↗

Improving the performance of my RP2040 based Pico-8 handheld console

Making a handheld Pico8 console, part 1
23 Jul 2022 | original ↗

Building a RP2040 based Pico-8 handheld console

Measuring keyboard to display latency
8 Jul 2022 | original ↗

I've got fed up with some latency I've been experiencing when using the work-issued VPN (remote desktop over IP), and wanted to get measurements, to see if the latency perceived is real. The approach is as basic and end-to-end as I could think of: emulate a USB keyboard pressing a button and measure the light levels changing on screen.

Building a GTK based mobile app
16 Apr 2021 | original ↗

Learning GTK to build a mobile hackernews app, with ad-blocker and reader mode

Docker-based images on baremetal
22 Jan 2021 | original ↗

The process behind creating multiple flash-able OS disk images from Dockerfiles and swapping between them on the host

Building an MQTT client for the Kindle
6 Jan 2021 | original ↗

The never-ending rabbit hole I found while trying to build a simple MQTT client for the kindle

Cross compiling for OpenWRT platforms
29 Dec 2020 | original ↗

I own a TP-Link X which is an ath79 based wireless router, which runs OpenWrt. I've been trying to get some specific software running on the router to do wifi-based presence detection to enable some automation, and I thought it'd be nice to get some experience doing this in rust. Compiling for the...

Reverse engineering the Bose QC35 bluetooth protocol
9 Jan 2020 | original ↗

Capturing packets from an android device on linux To capture bluetooth on android you have to enable HCI snoop log, you can do so by going to Preferences -> System -> Developer Options...

Creating a golden CentOS image
23 Dec 2019 | original ↗

How to create a flash-able CentOS disk image

Flashing Linux disk images from an initramfs
21 Dec 2019 | original ↗

What is involved in flashing a disk image over PXE, includes grub, kernel, initrd and disk expansion

Revamping an old tv as a gift
13 Oct 2019 | original ↗

Putting a raspberry pi in a 60's CRT for a gift

Bookworm - Utility to download books via IRC
12 Oct 2019 | original ↗

Developing a tool to download e-books

BSD inspired network setup
21 Sept 2019 | original ↗

I replaced my home dnsmasq with nsd, unbound and dhcpd for a more reliable environment.

Messing up backups
3 Aug 2019 | original ↗

Never try to restore backups when sleep deprived

Simplifying the IOT framework's API
10 Jul 2019 | original ↗

A small refactor in my IOT framework with the goal of simplifying the API

Extending the capabilities of dumb devices
5 Jul 2019 | original ↗

Hooking non-smart devices into the house automation framework

Logging and remote debugging on the IOT house
5 Jul 2019 | original ↗

I am trying to debug why my IOT devices don't always recover from a DNS/DHCP failure – it is quite hard as they simply get stuck, not doing anything until rebooted. I'll go over what I am currently doing to try and shed some light on the possible causes. Preparing for disaster Only one of the devices I have currently installed is accessible from the serial debug port – the rest are...

Automated Debian install
29 Jun 2019 | original ↗

Fully automated debian vm creation

Integrating a Kindle into house automation
14 Dec 2018 | original ↗

Idea Most nights I read from my Kindle until fall asleep, leaving my night light on.. after a few hours I usually wake up, annoyed at the light and turn it off, but some nights I cannot fall back asleep.. So, I thought why not have the light turn itself off when I fall asleep? Given that I can already turn it on/off via my home automation scripts, it should not be too difficult to detect somehow that my kindle...

Rewriting history on Firefox to get reddit's old UI back
17 Nov 2018 | original ↗

I do not like reddit's new UI - I liked the old and compact one a lot more; see the image for comparison I kept getting annoyed by Firefox' autocomplete leading me to the 'www.reddit.com' instead of 'old.reddit.com' and I decided to modify my browsing history. A quick search online pointed me to

OTA updates for the IOT house
8 Aug 2018 | original ↗

After setting up my lamp I realized that I had left the built in LED permanently on. For a nightlamp, this is extremely annoying and given that taking it apart was going to be a hassle, I decided to do it for one last time and do it right. The plan The simplest way I could think of was to replace a file in the VFS of the sensors so that it gets reloaded on reboot. For this, I needed to...

IOT house with Sonoff and MicroPython
5 Aug 2018 | original ↗

Idea I bought a few sonoff basics and wanted to set up some sensors and triggers around the house, with some restrictions: If a sensor or switch replaces something existing, then there should be always a fallback to that functionality even if there's no connectivity. Code should be fully open There should be no complex infrastructure to support this

Network update part 3: Network segregation
19 May 2018 | original ↗

After adding a fancy router to my setup and adding some monitoring I decided I could segregate my network, as the current state was just bunching everything on the common VLAN. New...

Network update part 2: Monitoring the network with NetFlow, InfluxDB and Grafana
18 May 2018 | original ↗

After adding a fancy router (see here) to my setup I decided to monitor my network (now that it is possible). Having already a Grafana+InfluxDB setup for my standard monitoring I decided to (somehow) feed the network data into this setup.

3D printer woes
1 May 2018 | original ↗

I got a 3D printer, the Anet A8. After fiddling with the parts for a few hours I managed to get it assembled. Issues Motor not working After setting it up and configuring the printer, I noticed my...

Network update part 1: Custom router with espressobin
29 Apr 2018 | original ↗

I wanted to replace my pfSense VM with a dedicated router so I could take my homelab offline without losing internet connectivity, so I bought an Espressobin Basic setup

Hacking the HG659
9 Mar 2018 | original ↗

I want to have internet usage data from my router as it cannot be put in bridge mode. I currently use the services of T-Mobile (NL). Investigating the data These 'smart' people decided to do a POST that never returns. I guess that's to avoid people like me trying to get the...

GPU Passthrough in Debian
26 Feb 2018 | original ↗

This is a recompilation of various sources to get gpu passthrough on Debian. General notes Update your kernel. Seriously, 90% of my issues were solved by being on 4.14.7 AND I got better performance with the NPT patch. Passthrough a usb controller. I had slightly jittery pointer movements...

Debian stretch headless install
23 Feb 2018 | original ↗

This is my adaptation of this for debian stretch. Mount the iso and copy the contents for rw. Change the menu to load SSH on boot by default, edit isonew/isolinux/gtk.cfg (To see what file to edit in case of future changes you can run grep "menu default" isolinux/*) I replaced the entire...

Meta blogging
16 Aug 2017 | original ↗

I wanted to write something to keep up with my buzzword-bingo, so I rewrote my blog using hip technologies. The idea behind the blog-post flow is to: Commit Markdown files to a GitHub repository Get GitHub to trigger a build on my Jenkins server Sync the resulting built to the web server hosting my...

Good luck, I'm behind 4 reverse proxies
28 Jun 2017 | original ↗

Serving content over https is trivial, right? It's not so trivial if you want to learn about HA and keep everything working with SSL. This is how my current setup is working: The inbound TCP connections on port 443 get scanned with sslh and redirected based on the protocol, SSL connections get redirected to the LoadBalancers via Round Robin DNS. The LoadBalancers decide where the...

nginx, caching and X-Accel-Redirect
28 Jun 2017 | original ↗

Nginx is awesome. I use it everywhere, for load balancing, file caching, reverse-proxying, rate-limiting, etc. Now, I'm trying to cache a file served from an X-Acccel-Redirect header and it seems impossible. My idea was to resolve requests to files in a back-end and serve these files without a client redirect. In fact, the original files are not accessible by the client. For...

Patching over Backblaze's B2 lack of CORS
2 Apr 2017 | original ↗

I've been trying to move our video content from youtube to our own server, but keeping in mind that we add about ~40GB / Month to our collection (and it never goes away..) and that DigitalOcean's disks are not very cheap, I decided to serve our videos directly from Backblaze. Currently there's no CORS support on B2 ( https://help.backblaze.com/hc/en-us/articles/114094192774-Does-B2-have-CORS-headers-support- ) Backblaze...

Backups, Backups, Backups
22 Feb 2017 | original ↗

I reached a point where I could recreate all (or most) of my labs with ansible. What I had not yet configured is an extensive backup system. I'll explain here what I did. Backing everything up to a central location For this I use a combination of...

Migrating single disk to RAID1 on Debian
18 Oct 2016 | original ↗

I have set up a system with /dev/sda as its only disk. I want to avoid any downtime and unplanned surprises (disks deciding to die) so I thought I'd set up the system in a RAID1. So I need to: Copy the partition table from sda to sdb Create the disk array with the new disk and a missing disk Create filesystems on the new partitions (sdb) Set up mdadm Copy the data from...

↑ these items are from RSS. Visit the blog itself at https://blog.davidv.dev to find other articles and to appreciate the author's digital home.