2026-03-06
TIL sbrin/lopaka - a FOSS graphics editor for embedded devices.
2026-03-05
Testing yet another set of used 32GB DDR4 SODIMM sticks. One is borked, one is fine. Sending one back.
Looking forward to the end of the rampocalypse.
2026-03-04
Deployed to my homelab:
2026-03-03
TIL about pv, a terminal-based tool for monitoring the progress of data through a pipe. Can do rate limiting as well!
For example, limit the rate of reading /dev/urandom:
# TCP listener
|
# TCP sender
| |
Also, got a used stick of RAM for my hypervisor and it has bad regions š¢. Luckily the sender agreed to take it back.
2026-03-02
TIL curl can do client-side rate limiting.
2026-03-01
- TIL lnxd/github-backup.
- Configured the Proxmox VE integration for Home Assistant.
2026-02-28
Continued development of fibo ā a showcase, Golang REST API project.
2026-02-25
TIL go-size-analyzer
2026-02-24
- Refreshing the concepts of Kubernetes networking with this KubeCon 2024 webinar
- Now that nixpkgs #490142 is merged, I can revisit upgrading K3s.
- TIL cruster-api (lol).
2026-02-23
Watching this webinar about Talos Linux security.
2026-02-22
- Designing a magnetic mount for the ZG-101ZS ZigBee scene switch.
- Basing the OpenSCAD design on model/1057464.
- Reading:
- Fiddling with Omni.
- Deployed copyparty to my VPS.
2026-02-21
- Playing around with Talos.
- Migrated ESPHome (web) from K8s to HAOS, in order to consolidate all smart home management services into one VM.
- Reading:
2026-02-20
- TIL about Retrosizer ā a web reference for true retro handheld console sizes.
- The Anbernic RG35XX series has 1GB of RAM and a quad-core 1.5GHz ARM CPU. I think I could squeeze a K3s kubelet into it š¤. Also, I totally dig transparent cases exposing the internal circuitry. I mean, just look at this:
- TIL thereās an active homebrew GBA development community ā gbadev.net.
2026-02-19
Assembled the Sensorbox v2.
2026-02-18
- Printing this Sensorbox internal carrier remix. The original one couldnāt accomodate the SCD40 COā sensor.
- Reading about the inner workings of the QEMU Guest Agent.
2026-02-17
Reading about the RED method to service instrumentation.
Also, an evening with Leprous š¤š„
2026-02-16
- Enabled change grouping for Renovate PRs (example). The individual click-ops was getting a bit too much.
- Researching PCIe disk controllers for my M920q machine. Found this LSI Host Bus Adapter (HBA) Power Consumption Comparison from ServeTheHome.
- Re-enabled kube-prometheus-stack in my homelab K3s cluster.
- Choosing the appropriate ESP32-CAM kit for my cat monitoring needs. Planning to print this antenna case, based on this design. Iāll have to modify the lens opening to accommodate the 160° lens, which has a 10.1mm diameter.
2026-02-15
Published:
2026-02-14
TIL about the following K9s plugins:
2026-02-15
Seriously considering building these hot-swap disk bays with Dell Poweredge drive caddies:
2026-02-12
K3s shipped out patch release candidates for the excessive CPU utilization bug on first embedded ETCD cluster (#13574) ā v1.34.4-rc1+k3s1.
2026-02-11
- Finished updating my resume (find it here).
- Expanding my homelab notes.
2026-02-10
Learned about Typst ā a new, markup-based typesetting system. My first impression is the far better UX from the LaTeX the academic standard.
2026-02-09
Updating my resume.
Also, CAT8 cable:
2026-02-04
Upgrading local-path-provisioner in my lab from v0.0.32 to v0.0.34.
v0.0.33 broke compatibility for the StorageClass.parameters.pathPattern through #542, which was later remediated and worked around through #547 and #548.
My original pathPattern was {{ .PVC.Namespace }}/{{ .PVC.Name }}, which is already compliant with the newly proposed safe prefix of {{ .PVC.Namespace }}/{{ .PVC.Name }}/ ā mine was just missing the trailing slash. Even if the internal path-joining implementation has changed, it was safe for me to switch to using the safe prefix as my new, complete pathPattern. This however posed two challenges:
StorageClass.parametersare immutable after creation.- A
StorageClasscannot be deleted until all of the corresponding PVs are deleted, and so deletion and recreation was out of the picture.
Given the path compatibility, Iāve decided to add the trailing slash to the pathPattern manifest, and just:
Then I committed, confirmed new volumes are being provisioned correctly and called it a day.
2026-02-03
Deployed Booklore onto my homelab.
2026-02-01
Accidentally dropped an Amidon FT140-43 when taking it off a high shelf. It broke in 4 pieces. I followed this thread from the EEVblog forum and glued it back together with a very thin CA glue. Wrapped in some electrical tape for added stiffness.
Iāll admit, itās not the cleanest job, but itās better than nothing. Planning to build a 49:1 unun with two of these.
2026-01-28
Setting up Renovate for my homelab.
2026-01-24
- TIL about this great guide on designing for 3D-Printing ā blog.rahix.de.
- Added new blog sections:
- Wrote a post on clock-safe reboots in OpenWRT
2026-01-22
Hereās a picture of Luna
2026-01-20
Second attempt at QSO on the shortwave bands, with an abandoned shipping containerās wall used as the antenna. My Xiegu G90ās tuner managed to tune the entire 40m amateur band to a SWR < 1.3 (pretty crazy huh). Didnāt make a contact this time, presumably due to the waning propagation conditions in the region and lots of active high-power stations.
Tried to spot the northern aurora borealis caused by the G4 geomagnetic storm. Couldnāt see any with the naked eye, saw something resembling the phenomenon through a long-exposure photo taken through my phoneās tiny sensor.
2026-01-19
A weird SSL cert rotation issue caused one of my PVE nodes to become inaccessible via the web ui. This PVE forum response helped me reset to self-signed certs and retry from there. Hereās what I did:
TIL ImageMagick can generate photo collages. Hereās a 3x3 grid:
More details on montage.
2026-01-17
Finished and installed my DIY Kallax-style cabinet. Finally have a place to keep my lab gear neat and tidy.
Lots of love to my friends, who helped and advised me throughout the project ā¤ļø.
2026-01-11
2026-01-08
Got my own ultrasonic cleaner, to which I have several comments:
- Does a great job at cleaning fine particulates from sanded 3D prints. Plain water worked fine, but Iāll have to try adding a surfactant on the next occasion. TL;DR they facilitate cavitation by reducing surface tension, and thus helping water penetrate deeper into cavities.
- EXCRUCIATING NOISES.
- The cat hates it, but tolerates it if I place it behind a closed door in another room.
- The noise is fairly high-pitched (duh), hence easy to further suppress with a blanket stuffed into the remaining gap under the door.
2026-01-07
Calibrating the smart-cat-litter-box.
The above is a time series of my cat doing her business in the litter box. The load cell array detects as low as a ~20g weight difference, which provides enough resolution to detect very minute movement. In the above picture:
- front paws go in,
- rear paws go in,
- turning, digging, searching for a good spotā¢,
- business,
- paws burying the artifact,
- cat jumps out, all paws at once.
If only I knew how to build a statistical model to analyze different aspects of these data. Perhaps itās a good reason to study some machine learning and data analysis.
2026-01-06
Finished printing rack mounts for my friendās homelab. These are the first prints I did on a PEI powder sheet. Iām very happy with how the bottom layers turned out.
2026-01-04
Testing how far I can go with overhangs at 0.3mm layer height, with a 0.6mm nozzle, before I start a 16 hour print. Skipping supports at 60° would cut down to ~3 hours of print time, not to mention the filament that will otherwise go to waste.
I know, the print is not looking perfect around the digits, but Iām mostly printing functional objects. First and foremost theyāre supposed to be durable and print reasonably fast. Aesthetics are nice to have, but not really a priority.
2026-01-03
- Charging my LiFePO4 battery for the first time. Iāve built a custom XT60M to banana plug adapter, in order to charge it from my bench PSU. Disclaimers:
- Generally, XT60F plugs are used for power sources (like a bench PSU, or battery). Conversely, XT60M plugs are used for power sinks (end devices). That is because itās far more difficult to accidentally short an XT60F. However, charging a battery is an acceptable exception to this rule.
- LiFePO4 batteries must be first charged with a constant-current (CC) source, until they reach 3,6V per cell. The current must be chosen appropriately to the batteryās capacity, best not to exceed 1C. Then, the battery should be topped up with a constant-voltage (CV) source. Sources vary on how long this should take. My batteryās BMS takes care of balancing and CV cut-off at the end. RTFM before attempting this on your own!
- Trying out a new PEI powder sheet for the print bed.
- Working on my home office/workshop cabinet. First time Iām fitting hinges onto a cabinet door.
- TIL about this KORAD lab PSU mod adding networking and far better control features to the KA3005 PSUs.
2025-01-02
Used an abandoned shipping container on a hill as a makeshift shortwave antenna. Xiegu G90 managed to tune it to SWR < 1.2 across the 40m band. The weather was cold and damp, so I didnāt stick around long, by managed to make a QSO with SN3WWA.
Printed some plastic feet paddings for the load cells in my smart-cat-litter-box project. The metal feet were quite noisy at could potentially scratch my floors. Added some felt later on.
2026-01-01
Used my balconyās railing as an antenna for shortwave radio reception, on the 80m band. Listened some Polish hams making contacts at night.
2025-12-31
Happy new year š!
Participated in the SP6ZHP SSTV mission. Received a fair amount of the images encoded in Scottie 1.
The radiosonde reached an altitude of 16km and speeds of over 120km/h ā and itās just a hot air balloon! It also got very cold, measuring under -80°C š„¶. It (crash) landed somewhere in Czechia.
2025-12-27
Reflashing my Tasmota smart plugs with ESPHome. Working out the power measurement quirks.
2025-12-24
Got the scanner up and running. Replaced the funky power connector with a common one with the same PCB footprint, installed the drivers (sane-epson-perfection-firmware), and scanned some objects successfully.
2025-12-23
Building a new, Kallax-like cabinet for my office/lab. Same length as a 4x1 Kallax, but downsized in depth and height. Also, much better looking, as itās solid wood š.
Shout out to my friend ā who shall remain anonymous ā for helping me cut the raw materials on a miter saw.
2025-12-22
Got a free document/photo scanner from e-waste ā Epson Perfection 3490 Photo. Disassembling and performing an initial diagnosis.
2025-12-21
- smart-cat-litter-box
- Reworking the ESPHome config to achieve both level-driven and periodic state publishing.
- Adjusting the OpenSCAD enclosure design.
2025-12-20
- Starting out with building a custom shelf unit for my home office.
2025-12-19
- Adopting SOPS based on age for a narrow part of my Kubernetes GitOps delivery model. The goal here is to try out both SOPS and Sealed Secrets, and then decide on one. Facilitates dropping ESO, which is great by itself but is not the best solution for my needs at the moment.
2025-12-17
TIL molly-guard ā protects machines from accidental shutdowns/reboots.
Originally a Plexiglas cover improvised for the Big Red Switch on an IBM 4341 mainframe after a programmerās toddler daughter (named Molly) tripped it twice in one day. Later generalised to covers over stop/reset switches on disk drives and networking equipment. [1]
2025-12-16
Deployed InfluxDB 2 in my homelab. Hooked up Home Assistant as a data source via the InfluxDB integration.
Deployed the Sealed Secrets operator in my homelab. This is a potential alternative to using Bitwarden as my secret store, via ESO.
Printed and installed the mainboard enclosure for the smart-cat-litter-box project
2025-12-15
Finished designing the enclosure for my Smart Cat Litter Box project.
2025-12-14
Wrote a guide for the ESP-02S/TYWE2S programming jig that Iāve built last month (2025-11-22).
2025-12-13
Printed some silica gel containers for drying filament.
Tried using my balconyās railing as an improvised shortwave antenna. It appears it tunes quite nicely on the lower end of the 40m band. Iāve actually managed to receive an FT8 transmission at around 7.077 MHz.
2025-12-10
- Had trouble with word movements in Kitty on OSX, found this fix.
- TIL about YAPP_Box, a parametric, OpenSCAD project box framework.
- Designing an enclosure for the mainboard of my smart-cat-litter-box.
2025-12-09
- Building a Smart Cat Litter Box:
- Printing load cell holders in order to attach load cells underneath my catās litterbox š±.
- Assembling the platform.
- Developing the ESPHome-based firmware.
2025-12-08
Finished modding the Xiaomi 3H purifier. Reassembled, added to Home Assistant, works like a charm. I took plenty of notes and will do a write-up about this process.
2025-12-07
Flashing the Xiaomi 3H purifier mainboard with esphome-miot
2025-12-05
Volunteered as an instructor at a soldering workshop for children. Taught basic soldering techniques and safety practices to 4 kids, while assembling a blinking PCB bear. I truly hope it piqued their interest in STEM āØ.
2025-12-01
Gave a guest lecture at Politechnika WrocÅawska, on the topics of development environments, CI/CD, containerization and application security.
2025-11-30
Finished disassembling my Xiaomi Mi Air Purifier 3H. Iāll probably flash it sometime next weekend.
2025-11-28
2025-11-27
Deploying KEDA on my homelab cluster. Iāll use it with the Cron scaler, in order to scale most of my workloads down to zero replicas during nighttime. The goal here is to reduce power consumption and slightly cut back on the energy bill throughout the year.
TIL that while CNPG does not support scaling a PostgreSQL cluster to 0 replicas, there is a way to stop the DBās operation safely. It can be done through declarative hiberation. The DBās operation can then be resumed through rehydration (stopping hibernation).
2025-11-26
- Finally got Zigbee2MQTT working. Still need to finish the Mosquitto deployment for Z2M to not exit on the first failed connection attempt.
- Cleared and flashed my ZigBee dongle with fresh firmware install. Zigbee2MQTT was having issues before that, and now it just works.
- This will be a cool writeup, adding to my list.
2025-11-25
- Deploying Zigbee2MQTT and Mosquitto.
- TIL:
- rss-bridge ā The RSS feed for websites missing it.
- Borgmatic supports intermittently available servers and removable devices by design ā docs link.
2025-11-24
Received my first batch of ZigBee devices for home automation. Yet to setup Zigbee2MQTT and the Mosquitto broker.
2025-11-23
Jailbroke TYWE2S-based, Tuya-only smart plugs into local-only, ESP-based (ESP8285), Tasmota smart plugs. I will be migrating these to ESPHome later on, as thatās my preferred ecosystem. Tasmota was just the first thing I happened to flash successfully on the day before š.
Disassembling my Xiaomi Mi Air Purifier 3H in order to jailbreak the device and allow LAN-only operation via esphome-miot.
This disassembly video on YouTube helps a lot, but I got stuck on prying open some of the deeper-seated tabs. Ordered some metal spudgers to get this done in a few weeks time.
2025-11-22
Building a custom ESP-02S/TYWE2S flashing adapter. The device is based on Odaniās design, but I couldnāt get the pogo pin housing to print accurrately enough on a 0.4mm nozzle, for the pogo pins to fit properly. Despite many attempts to tweak the model, the resulting holes were either ill-fitting, or not durable enough. The pins would eventually work their way out as the material gradually fatigued, causing the pins to lose contact with the PCB.
Luckily a friend from the Hackerspace ā whoās a CNC machinist ā saved the day by machining a fitting equivalent from a harder material.
This was my first hands-on encounter with pogo pins. Theyāre great, but also quite delicate. Just holding them with pliers, while attempting to press-fit into a housing, can block the movement of the sprint-loaded mechanism, or at least cause it to not glide as smoothly. Iāll definitely be getting some of these for my electronics lab.
I will be making an in-depth post about this, once I take better pictures of the setup.
2025-11-21
- Figuring out how to flash an ESP-02S, the same form factor, electrically compatible replacement (for the most part), for a TYWE2S.
- This programming jig by Odani seems promising.
- Playing around with agenix and Tailscale configuration on a NixOS node.
2025-11-20
- Upgraded Immich to 2.3.1, as 2.2.3 happened to have a regression which cause the browser tab to become unresponsive.
- Configured iGPU PCIe passthrough into my Kubernetes VM, and configured HW acceleration on Jellyfin.
2025-11-19
Iām now officially a licenced ham radio amateur!
Looking forward to making my first QSO š„³.
2025-11-15
- Upgraded Immich to 2.2.3, hit issues with startup, reporting errors relating to the pgvecto.rs to VectorChord migration. Followed the TrueCharts migration guide to resolve this issue.
- Wrote down some notes on ZFS
2025-11-13
Deployed stakater/Reloader to my K3s cluster.
Fixed the network switch sag:
2025-11-12
Iāve completed my main serverās disk pool rework. Ended up doing a ZFS mirror (2 disks) for critical data, and then simple ext4 for data I can afford to lose ā re-download or re-rip from CDs. Learned many lessons along the way, most notably:
- ZFS RAID-Z is as slow as a single disk for both reading and writing, as no two disks contain the same data (stripes, parity). Reportedly it can also butcher disks pretty fast.
rclone copydoes not persist file permissions and ownership metadata, even if--metadatais used (that persists modification times), and even if both the source and target filesystems are the same kind. Usersyncwhen in need of preserving original file ownership and permissions. Had to restore my offsite backup to get the original metadata back.- PSU issues can manifest as slower disk speeds (slower response times) and intermittent, but recoverable dropouts. Switching from a 65W, to a 135W PSU miraculously solved what I initially suspected to be disk/controller issues. Turns out adding the 3rd disk pushed the smaller PSU right at around its limit.
2025-11-11
My network switch rackmount is sagging a bit, presumably due to the extended low heat coming off of the machine right below it. Iāve desiged a simple frame that wedges right into the existing mount, straightening the whole assembly back up.
2025-11-10
Got a ZigBee coordinator dongle for free (antenna too)!
Need to order some sensors now š.
2025-11-09
- Re-provisioning my main hypervisorās storage to have a PVE-managed zpool.
- PVE has really nice documentation on storage performance tweaks.
- Saving this ZFS tuning cheat sheet by JRS Systems so I can find it more easily in the future.
- TIL about esphome-miot, Iāll be jailbreaking my purifier soon.
2025-11-08
Backing up my whole storage ZFS pool from kube-01 to the nas host, in preparation for a switch from a ZFS mirror (2x1TB) to RAID-Z (3x1TB striped). The kube-01 host is a guest on the pve-01 hypervisor, and was originally created via a lift-n-shift (sort of) from a bare metal installation, and it still manages its own zpool, with the disks mounted via QEMU device passthrough. I want to move away from this architecture, as itās very limiting:
- The zpool is locked and available to a single host only.
- The guest VM crashes and or/cannot start if a disk goes down. This is sort of good, as no further wear is put on the pool, but I do frequent backups need my service dang it!
So the general idea is to have all zpools in my lab managed by the hypervisor, and expose the datasets as emulated storage devices, managed by Proxmox. The VM only sees a SCSI/SATA interface.
2025-11-02
- Learning Rust
- Researching o11y options for my Netgear GS308Ev4 switch:
- ha-netgear-plus ā HomeAssistant integration
- py-netgear-plus ā Python library
- netgear-gs308e-exporter ā Prometheus exporter
- prosafe_exporter ā actively maintained, written in Rust š¦
2025-11-01
TIL:
- About the Linux SysRq module.
- Zola supports Markdown footnotes.
Iām thinking it would be nice to have calendar-like means of navigation for the devlog. Perhaps something like a GitHub commit graph or a view of the month, with colored blocks on days with a devlog entry, and hyperlinks to the corresponding section on each of the blocks.
2025-10-31
šÆļøš»šøļøšš§
2025-10-30
Upgraded the firmware on my Netgear GS308Ev4 switch (v1.0.1.3 ā v1.0.1.9).
2025-10-29
TIL about Python MappingProxyType, as a way to make tidy, actually read-only, dict-like objects.
Wrote a post about it ā Read-only dictionaries with MappingProxyType.
2025-10-26
- Working (pro-bono) on documenting the server infrastructure of Hackerspace WrocÅaw.
- Printing yet another Asometech PD PSU rack mount for my friend.
- Reading OPNsense CARP configuration docs. Iām coming to the conclusion this is too much of a hassle for my homelabbing needs. Iāll just stick with keeping backups on a secondary hypervisor, should my main hypervisor fail, bringing the OPNsense guest VM down with it.
- Deployed n8n to my homelab.
Hereās a cat picture:
2025-10-25
- TIL foundObjects/pve-nag-buster
- TIL The US military used turd-shaped seismic intrusion detectors, equipped with VHF and/or UHF transmitters 1.
2025-10-24
- Bootstrapped my Rust REST API project.
- Watching Rust Talks by No Boilerplate.
2025-10-23
Researching Rust web frameworks for a simple backend project. Figured Iād use this as an opportunity to learn some Rust. tokio-rs/axum and tamasfe/aide look promising.
Deployed ArchiveBox onto my homelab and then removed it after I saw how half-baked this software is. Great idea, but the implementation needs more work, and the project seems to be barely maintained at this point.
2025-10-22
TIL OPNsense can not only work in HA mode (fail-over) via CARP, but it also ensures thereās only one PPP interface actively connected at any given time (the master). I happen to be authenticating into my ISPās uplink via PPPoE, which qualifies as a derivative of PPP.
The way Iām currently prepared for a fail-over, is by having a relatively recent clone of my main OPNsense VM on a second hypervisor, sitting offline. Itās ready to power up within a couple minutes, in case the current one fails. Reworking this to a setup base on the native HA capabilities will definitely save me some work.
Shout out to stakater/Reloader, which triggers automatic K8s workload rollouts, whenever any of the referenced Secrets or ConfigMaps are updated.
Per the docs, you just need to add this annotation to your workload (not to be confused with the Pod template):
kind: Deployment
metadata:
name: my-app
annotations:
reloader.stakater.com/auto: "true"
Supports more granular triggers if needed (kind, name).
2025-10-21
TIL about The Human Only Public License.
TIL about topolvm, a persistent local storage CSI plugin, backed by LVM.
- Could be considered an alternative to rancher/local-path-provisioner (LPP).
- Itās capacity aware, while LPP is not.
- (Un)fortunately I run ZFS, and donāt intend to switch, while topolvm requires LVM2 on top of ext4, xfs, or btrfs.
Found this amazing collection of die shot photos over at happytrees.org. Hereās an Intel Xeon MP Gallatin A0 (130nm) āØ:
2025-10-20
- Deploying Renovate onto my homelab.
2025-10-19
- Working on the Helm chart for Bitwarden CLI ā majabojarska/bitwarden-cli-helm.
2025-10-18
- TIL about glow, the CLI Markdown renderer.
- Learned about this magnificent application of modern technology (meow).
- Attended End of 10 at the WrocÅaw Hackerspace. Helped a stranger continue using their Win 10 laptop by migrating it to Linux. They opted for Fedora Gnome edition (nice choice!).
2025-10-17
- The first release of bitwarden-cli-docker is out š!
- TIL about asciiflow, the ASCII diagramming software.
Iāve been setting up a couple new repos recently, and the UX around adding a GH workflow to required status checks makes me wanna bite the designerās ankles.
- The āAdd checksā search doesnāt list any known (and already executed) GH workflows.
- You need to search for the jobās name for it to appear on the list.
- Searching for the workflowās name does NOT work. Meaning, I need to match the exact job name starting characters in my search query, in order for the job to appear on the list to select from.
2025-10-16
Kicked off work on my Bitwarden CLI Docker image. A Helm chart will follow up.
2025-10-15
Upgraded to Immich major version 2.
2025-10-14
- Upgraded my PVE 8.4 nodes to major version 9.
- TIL about deb822.
2025-10-12
Recently Iāve upgraded to Gnome 49 and one my extensions stopped working. However, it looks like itās working just fine once the extension version validation is disabled. Hereās how you can change the config:
# Read current
# Disable extension version validation
2025-10-09
Went to KCD Warsaw 2025.
I can recommend the KubeEdge presentation (once the recording comes out). I still have some reservations in regard to the suitability of using first-class Kubernetes objects for implementing edge device management (think IoT sensors). However, Iāll need to educate myself better on the problem domain, before Iām able to form an opinion. Regardless, it was a good presentation!
Another talk I found interesting was about driving a major shift in OpenTelemetry Logs by pellared. Also TIL about Slidev ā a markdown-based slide renderer.
Hereās my swag haul š
2025-10-07
Printed and assembled another one Asometech PD PSU rack mount for my friend.
2025-10-01
TIL git log supports limiting by date, e.g.:
See commit limiting docs for more details!
2025-09-30
Passed my ham radio exam š! The privileges of my license will be the equivalent of the USA FCC General class.
Thinking about callsigns now.
2025-09-21
Finished my cable hanger. Finally got an easily-accessible place to store cables without tangling them together!
Kudos to b2vn for the OpenSCAD parametric model.
2025-09-20
Printing elements for my wall-mounted cable hanger.
2025-09-18
TIL you can calibrate your oven by using the melting point of sucrose as a temperature reference [1].
2025-09-17
Noticed my Immich instance pulls the smart search ML model sometime after every restart of the ML service Pod. To be precise, the download totals to ~700MB, and is pulled upon receiving the first smart search query, which understandably, requires the ML model to perform the inferencing.
Turns out that the chartās default was to mount the ML cache in an emptyDir volume, which is fresh (and clean) for every new Pod. Iāve since replaced it with a proper SSD-backed PVC. Now smart search kicks in way faster after an Immich rollout.
While searching about the ML cache, I found Immichās recommendations for running as a non-root user. In my case, matplotlib was defaulting to caching its config to /tmp/..., since it couldnāt write to /.config.
);
Iāve got no more startup warnings after applying the recommendations.
)
2025-09-15
The Tailscale/NixOS issue from 2025-09-07 has been fixed upstream, applied the fix on my infra successfully.
2025-09-14
Fixing the stuck lidar drive in my robot vacuum. Iāll make a short post out of this.
2025-09-11
- Improving my Homepage dashboard.
- Studying for the ham radio exam.
- Should I try switching to Neovim š¤?
2025-09-10
- Quick homelab maintenance, updates.
2025-09-09
- Studying for my ham radio exam. Itās just a couple weeks away!
- TIL the
CIVILmnemonic for phase differences between current and voltage, in capacitive and inductive resonant circuits. See this video (16:55) from EEVblog Dave. TL;DR:- In capacitive (
C) resonant circuits (I), current leads voltage (V). - Voltage (
V) leads current (I) in inductive (L) resonant circuits.
- In capacitive (
2025-09-08
- Read this publication: Federated Systems ā Jeremy Rubin (2015). Here are my key takeaways:
- Federated systems are fully recursive. Each federated system can contain (be composed of) other federated systems.
- Composability is king. Aiming to solve a single problem helps make the system composable. See DNS, HTTP, SMTP, XMPP.
- Solve large-scale problems centrally, and federate the small-scale ones.
- Customizability is desirable, but can break compatibility. If needed, seek to make it composable, and constrain the system to prevent strong divergence between clients.
- Interoperability is key, but itās possible to overdo it (Friendica vs diaspora*).
- Donāt rely on the usersā generosity to keep the system afloat, because it can abruptly run short. Have a business model for providers.
- McDonaldās is actually a federated system (lol).
2025-09-07
Wee infra maintenance. Pulled in the in-flight patch for current Tailscale kernel regression issues in NixOS ā #16966:
nixpkgs.overlays = [(_: prev: {
tailscale = prev.tailscale.overrideAttrs (old: {
checkFlags =
builtins.map (
flag:
if prev.lib.hasPrefix "-skip=" flag
then flag + "|^TestGetList$|^TestIgnoreLocallyBoundPorts$|^TestPoller$"
else flag
)
old.checkFlags;
});
})];
2025-09-06
- Troubleshooting homepage service/widget state issues. Turns out thereās a known limitation in regard to service/group name uniqueness ā discussion #5756.
- TIL you can link to any text on any page, and (most) modern browsers support it! This is a web feature called āText fragmentsā. You can even define a suffix/prefix to constrain the query with š¤Æ!
2025-09-05
Performed stress testing of my ham radio PSU under thermal vision. Used a 50Ī© dummy load to sink the transceiverās antenna output.
The PSU performed well under a continuous ~6A load. Funnily enough, the bright spot on the photo below is a 510Ī© resistor, dropping the voltage for the standby status LED. It drops ~10V at 20mA, resulting in 0,2W of total power dissipated as heat. Since itās a 1/4W resistor, itās operating within spec, and the temperature eventually stabilizes around 54°C in room temperature conditions, which is totally safe.
2025-09-04
- Rolled out FreshRSS and Miniflux to my homelab. Iāll be trying both out and will choose the one I like better by next Sunday.
- Creating graphics for my hackerspaceās next SSTV radiosonde event. This one will be themed around the beloved cat that hangs around the workshop, named Komódka (after Commodore 64). Learned a lot of Inkscape today, itāsw pretty neat!
- Trying to figure out why my Calibre-web instance sometimes just fails to ingest a book.
2025-09-03
Trying out the Nagoya UT-108UV antenna on 2m and 70cm bands.
2025-09-02
Working on the ham radio PSU post.
2025-08-31
Playing around with SSTV. Only at the audio level for now, yet to transmit the first Luna (the cat) on the amateur bands.
2025-08-30
- Doing a bunch of homelab maintenance tasks ā checks, backups, upgrades.
- Upgrading OpenWRT on my TP-Link Archer C6 v2, from old stable 23.05 to 24.10. Reportedly, the 5GHz radio issues are fixed with 24.10.2.
- Hit this tailscale issue (#16966) on my NixOS setup. Kudos to @tetov for providing a workaround.
2025-08-29
Spent the day operating the HF0CEBULA special event ham radio station, which was active for the duration of Cebula Camp 2025. Iāve made approx. 20 QSOs on the 2m band, which Iām quite proud of ā the station made even more QSOs in total that day. Ironically, I think there was more interest in the stationās operation (and ham radio in general) on-site from the attendees, than remotely, over the ham frequencies. Good times!
2025-08-27
- Reading about the music analysis and clustering algorithms in AudioMuse-AI.
- Connecting my cloud VPS to the homelab via Tailscale.
- Deploying a fresh instance of Prometheus and Grafana in the cloud. Used to have these on my K3s cluster, but itās not the best design in case of K3s issues.
2025-08-26
Spent the afternoon on 20/40M bands at the SP6PWT radio club. Operated the Yaesu FT-710. Made a couple successful QSOs: IU1RVT, SO8DON, ED5FS8, IT9DOR.
2025-08-24
Today itās just logs, without the dev.
2025-08-23
- TIL about exportify, an export/backup tool for Spotify playlists.
- Troubleshooting invalid behavior of the Tailscale widget, when multiple instances are spawned in the same group.
- Filed an issue with the Homepage project, regarding documentation site breakage ā discussions/5707.
2025-08-21
Playing around with Homepage sources. Experimenting with feature enhancements for the Tailscale widget.
2025-08-20
- Made a small docs contrib to the Truecharts Homepage Helm chart ā #38666
- Adding even more pretty lilā widgets to my Homepage instance.
In case you wondered, hereās how you can escape environment variable interpolation in Homepage configs, within Helm manifests:
- Immich:
icon: immich.svg
href:
widget:
type: immich
url:
key:
version: 2
2025-08-19
- Reworking my NixOS iptable firewall rules to accomodate my Kubernetes metrics-server with Flannel, on top of K3s, without the built-in, kube-router based NetworkPolicy handling.
2025-08-18
- Adding pretty lilā widgets to my Homepage instance.
- Learned about this cool dot matrix printer font, the EPSON MX-80 ā courtesy of Michael Walden.
- Learned about ESO, the project which Iāve recently deployed to my homelab, is experiencing serious team capacity issues. Iām seriously considering signing up as a maintainer, but still need to weigh my priorities.
2025-08-17
- Figured out why my K8s metrics server workload started failing recently ā this will be a nice short post.
- Deploying Homepage.
- Deploying Grafana, Prometheus and Node Exporter to my VPS (on NixOS). Kudos to Xe Iaso for this guide!
2025-08-16
- Migrated my Kubernetes secrets to ExternalSecrets (tokens, passwords, logins, etc.).
- Added the Flannel CNI to my Kubernetes cluster.
- Figuring out a better approach to homelab monitoring.
- Iāll probably migrate Prometheus and Grafana off of the homelab, onto the cloud VPS. Thatās where I plan to host my alerting system, so it makes sense to keep things close.
- metrics-server is acting up on my cluster, looking into it.
- Added some nicer CSS transitions to the blog.
2025-08-15
Finished deploying ESO with Bitwarden integrations. That Bitwarden guide is severely outdated, so Iām already planning to improve it.
After some initial NetworkPolicy shenanigans, I got my first ExternalSecret provisioned successfully, from the now Kube-connected Bitwarden Vault. Iām gradually migrating homelab secrets over there.
Iāll probably also roll my own Docker image sources (and builds) for the Bitwarden CLI. Currently Iāve manually built a custom image, based off of charlesthomas/bitwarden-cli. Iāve submitted some improvements to it in the past, but the maintainer generally isnāt very responsive. Once I create my own sources from scratch, the image will be exactly how I need it. Canāt promise Iāll respond quicker, but Iāll definitely make time to intake repo activities once or twice per week. Fingers crossed, hehe š¤.
And finally, since Bitwarden has access to sensitive data, itād be nice to have the images signed. Thatās a good opportunity for hands-on experience with sigstore/cosign.
2025-08-12
Deploying External Secrets Operator.
2025-08-11
Deploying the Arr stack.
2025-08-10
Visited SP6PWT, the Student Radio Club of the Wroclaw University of Science and Technology.
2025-08-07
Learning about PostGIS and Leaflet.
2025-08-05
Figuring out Intel iGPU passthrough for QEMU VM on PVE, to facilitate hardware video acceleration for my workloads dealing with video processing.
2025-08-04
For years Iāve used Spotify, but Iām unhappy about where itās headed as a service. Iāve decided to explore alternative, networked music player alternatives. This obviously poses a big challenge in terms of the library and content curation. Regardless, Iām going to start purchasing physical CDs from artists that I value, and then rip and ingest into my homelab. As a test run, today Iāve deployed Jellyfin.
2025-08-03
Finished building my ham radio power supply, everything is working as intended ā„ļø.
Iād still like to do some load testing, to ensure the connectors and wiring are solid, when conducting higher, sustained currents.
2025-08-02
Went to the local hackerspace to get some change of scenery at the end of the week. Intended to blog a bit while there, but got nerd-sniped by someone elseās issues with a Wordpress plugin post-migration. While I was troubleshooting, they made a laser-cut depiction of my cat, Luna.
Shout out to wowkdigital!
2025-08-01
Printed the enclosure for my ham radio power supply, wiring is in progress.
2025-07-31
Xiegu G90 comes with a single-fuse power supply cable (positive rail). Thatās nice of the manufacturer to do, but itās not enough to protect from certain failure modes. To alleviate this risk, Iāve added another (littel)fuse, to the ground wire. Donāt be fooled by the red insulation ā the fuse socket came pre-wired and sealed, so I had to cut a piece of the original black cable out š.
K0NR shared a nice write-up on when and why you might wanna have two fuses (one on each lead), instead of one.
2025-07-30
Writing a post on my homelab rack display (continued).
2025-07-29
Finished rewiring and mapped out the hardware on my modded Petlibro PLAF101. Luna (the kitty) provided valuable feedback throughout the process.
2025-07-28
Figuring out how to properly drive the motor and detect axis rotation increments. Will need to add more modwires, since the motor was definitely connected to the underside pins of the WBR3, which the ESP-12E does not have.
2025-07-27
Flashed ESPHome onto the modded Petlibro PLAF101 board. Configured the basics, mapped out buttons and LEDs.
2025-07-26
Built a custom ISP harness for the Petlibro PLAF101 motherboard. Soldered an ESP-12E module in place of the original WBR3.
2025-07-24
Writing a post on how I built my homelab rack display.
2025-07-22
Finally repaired my ZFS storage pool. Turns out the USB3/SATA adapter was acting up, leading to random IO issues, and the disk eventually going offline.
Replacing the adapter solved the issue. This result is in line with the lack of SMART errors and no bad blocks detected during full-surface read testing without the adapter. If it was the disk at fault, the failures would have occurred in both environments (regardless of the adapter).
The original adapter board has a JMicron JMS578. Initial analysis shows that adapters using this chip tend to be flaky in terms of power management, disk enumeration, and SMART support. This can be improved by flashing alternative firmware [1]. Itās certainly an interesting avenue, but itās not a priority to me at the moment.
Questions:
- If it was the JMS578 firmware at fault, why didnāt this fail earlier?
- Iāve seen the same behavior with a different unit of the same exact adapter model, how likely is it that both are defective and exhibiting the same behavior?
- Iāve had this hardware setup for almost a year now. Perhaps a recent hypervisorās kernel update caused an interoperability regression?
2025-07-21
- Studying for my ham radio exam.
- Ordered replacement parts for my main virt server:
- new SSD for the ZFS storage pool,
- new external 2.5ā USB3 disk enclosure.
- Tweaked blog Zola macros to sort recent posts by update date, instead of creation date.
2025-07-20
- Learning shortwave propagation theory.
- Investigating IO instability issues with one ZFS storage pool disk on my main hypervisor.
2025-07-19
Modding the server PSU
Designing a front enclosure for my HSTNS PL-28 server PSU.
2025-07-17
Attending an antenna theory workshop at my local radio club (SP6HACK).
2025-07-16
Finished the lilā dashboard display
Next up:
- dedicated Grafana dashboard and possibly a playlist;
- Fully Kiosk browser screen dimming and motion detection configuration.
Iāll do a full writeup once I complete this project.
2025-07-15
Designing a surface mounted holder for the modded phone
Iāve decided to surface mount this phone to the glass door of my homelabās rack. Working on a design to enclose the whole device (with the mods).
2025-07-13
Modding Nokia G22 to operate without a battery
I wanted a compact homelab dashboard, but didnāt want to implement a custom embedded solution from scratch. Iām modding an old, defective smartphone to operate solely on external power.
2025-07-12
Planning the jailbreak strategy for my Petlibro PLAF101 pet feeder
At first glance, the on-board WBR3 module seems electrically compatible with an ESP8266. Iāll pursue this avenue, since it would enable the usage of ESPHome. Looks like people have done it before with other devices!
VLC playback issues on Arch Linux
Encountered x264 playback issues in VLC after upgrading on Arch Linux. It appears the vlc package moved plugins into optional packages, which were not explicitly required on my system. Namely the ffmpeg backend plugin, which facilitates x264 decoding.
- Minimum viable remediation:
pacman -S vlc-plugin-ffmpeg. - All-in-one fix for other plugins:
pacman -S vlc-plugins-all.
Xiegu G90 stand
Printed this stand for my Xiegu G90:
2025-07-11
Xiegu G90 Speaker Deflector
Printed a speaker deflector for my Xiegu G90.
HF rig planning
Planning the at-home power supply for my HF station.
- During initial tests, the observed current draw at full TX power didnāt exceed 4,5A at 13,8V.
- The unitās manual recommends a supply of at least 8A.
- I hoped to use my bench PSU, but I misremembered it having a current capacity of 10A, while itās actually 5A. This technically might be enough, given the measurements, but a 4,5A load is awfully close to the limit, and Iād rather not run the PSU that hot on a regular basis.
- As a long term solution, Iāve ordered a used 460W server PSU. These are built like tanks and are very cheap ā I got mine for just $10. Iām planning to modify it into a 13,8V supply, since HF radios typically operate optimally at that voltage. Iāll do a separate write-up on this project once itās finished.
2025-07-10
Got my first HF transceiver! Iām learning to operate it at my local radioamateur club, since I donāt have an antenna rig at home (yet).
2025-07-08
Reworking my off-site backup strategy for Kubernetes PVCs.
2025-07-07
Slamming my head against a wall Setting up Nvidia drivers on Arch Linux (btw) for Nvidia RTX4070.
- Turns out my only HDMI output just refuses to work with the proprietary drivers (
575.64.03-2), whereas the DisplayPort outputs work just fine. - Followed the official Arch Linux guide for Nvidia, and installed
nvidia,nvidia-settings,nvidia-utils. - Running kernel
linux-lts, which at the time of writing is6.15.5-arch1-1. - I doubt the HDMI issue is rooted in hardware, since it works just fine in BIOS and when booted with nouveau.
2025-07-06
Observed an issue with my Tailscale setup on OPNsense, where it kept losing its Tailnet connection shortly after startup. No clear indication of failure in the logs. Iāve been previously using the FreeBSD ports implementation and later switched to the recently added, official OPNsense Tailscale plugin. Itās possible that any combination of the following wouldāve sufficed, but hereās what I did to remediate:
- ensured the old install is removed from the system and does not attempt to start alongside (possibly conflicting with) the new plugin (like a system service);
- deleted
/var/db/tailscale; - reconfigured the Tailscale plugin with a fresh auth key.
2025-07-05
Fixing/improving the Apollo theme for Zola: 1, 2, 3.
2025-07-04
Made my first international shortwave radio contact (20m band) š. Direct comms from WrocÅaw to Spain, over at the Hackerspace WrocÅaw club (SP6HACK).
2025-07-02
Migrating site theme from Terminimal to Apollo.
2025-07-01
Ensuring Kubernetes workloads shut down gracefully, on my single node cluster, during scheduled backups. Iāll make a brief post out of this.