<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts · ArchWorks</title><link>https://archworks.co/posts/</link><description>Workshop notes, build logs, reverse engineering, and other rabbit holes.</description><language>en</language><lastBuildDate>Wed, 17 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://archworks.co/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Rebuilding a 2009 Clio's dashboard: a head unit for sound, a tablet for the rest</title><link>https://archworks.co/posts/clio-head-unit-swap/</link><pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://archworks.co/posts/clio-head-unit-swap/</guid><description>The Clio 3 dash has two things worth replacing: the radio and the little info display above it. I did both, as two separate installs - a Pioneer 1-DIN head unit that drives the speakers and sub, and a rooted, degoogled tablet that handles navigation and shows the live dashboard from the OBD Pi. The fiddly part of the radio is one connector; the fiddly part of the tablet is making Android behave like an appliance.</description></item><item><title>A knowledge graph built from everything I've typed</title><link>https://archworks.co/posts/knowledge-graph-from-my-own-words/</link><pubDate>Sun, 14 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://archworks.co/posts/knowledge-graph-from-my-own-words/</guid><description>RAG over your notes gives an AI a pile of text. A knowledge graph gives it entities and relationships. Here is how I build one only from my own words: collect, extract triples, dedupe, normalise, and read and write it live during a conversation.</description></item><item><title>"I have nothing to hide"</title><link>https://archworks.co/posts/nothing-to-hide/</link><pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://archworks.co/posts/nothing-to-hide/</guid><description>The most effective sentence ever written against your own privacy, and why it is wrong. Privacy is not about hiding wrongdoing. It is leverage, and you give it away by default.</description></item><item><title>Self-hosted LLMs and the context discipline that makes them work</title><link>https://archworks.co/posts/self-hosted-llms-subagents-skills/</link><pubDate>Sun, 07 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://archworks.co/posts/self-hosted-llms-subagents-skills/</guid><description>Five layers on top of a local model: a single-slot model swap, model tiering, narrow agents with isolated context, skills that wrap an API as one tool call, and a memory layer that learns from its own runs. The discipline matters more than the model size.</description></item><item><title>Turning a 2009 Clio's OBD port into a live dashboard</title><link>https://archworks.co/posts/clio-obd-telemetry-pi/</link><pubDate>Sat, 30 May 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://archworks.co/posts/clio-obd-telemetry-pi/</guid><description>A Raspberry Pi 4 in the car reads ~20 sensors off the OBD-II port over a Bluetooth dongle, logs them to a local time-series database, and shows them on a custom touch HUD and Grafana. The interesting parts: estimating which gear you are in with no gear sensor, and surviving the fact that turning the key off is a hard power cut.</description></item><item><title>Banking apps on stock LineageOS + microG in 2026</title><link>https://archworks.co/posts/microg-banking-apps-2026/</link><pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://archworks.co/posts/microg-banking-apps-2026/</guid><description>DEVICE-grade Play Integrity through microG works if you flip one toggle that defaults to block. The keybox is a weekly rotation, and every banking app layers its own checks on top. Here is the minimum stack that holds and what I tested as useless.</description></item><item><title>Decoding Creality's locked Klipper fork</title><link>https://archworks.co/posts/decoding-the-k2-plus/</link><pubDate>Tue, 12 May 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://archworks.co/posts/decoding-the-k2-plus/</guid><description>The K2 Plus runs a Klipper fork with a 1.88 MB Cython binary at its core. What is inside it, how I read it without the source, and what the firmware does that the touchscreen does not admit.</description></item><item><title>MeshCore on Heltec and nRF52: off-grid, encrypted, solar-powered</title><link>https://archworks.co/posts/meshcore-heltec-nrf52-solar/</link><pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://archworks.co/posts/meshcore-heltec-nrf52-solar/</guid><description>A LoRa mesh that needs no cell towers, no ISP, no permission. End-to-end encrypted, kilometre range on a coin cell. Here is the protocol I picked, the power math that decides everything, and what it extends into: sensor telemetry, Home Assistant feeds, a side channel to my server.</description></item><item><title>Sharing port 443 between a real website and a VLESS+Reality tunnel</title><link>https://archworks.co/posts/one-ip-one-port-vless-reality/</link><pubDate>Sun, 03 May 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://archworks.co/posts/one-ip-one-port-vless-reality/</guid><description>One VPS, one IP, port 443 shared between a real public website and a VLESS+Reality tunnel on the same TCP socket. DPI cannot split them apart because both are real TLS.</description></item><item><title>Handing my only GPU to a VM, and getting it back</title><link>https://archworks.co/posts/handing-my-gpu-to-a-vm/</link><pubDate>Tue, 28 Apr 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://archworks.co/posts/handing-my-gpu-to-a-vm/</guid><description>Moving your only GPU into a Windows VM and back works. It also nukes your Plasma session every single time. I ran it as an experiment for months - here is the real cost and the layout that sidesteps the whole problem.</description></item><item><title>Ansible-Bootstrap: declarative Linux hosts across any distro and hypervisor</title><link>https://archworks.co/posts/ansible-clean-bootstrap/</link><pubDate>Wed, 22 Apr 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://archworks.co/posts/ansible-clean-bootstrap/</guid><description>Describe a host as one block of YAML, run one playbook, get a configured server - and the same playbook does it to a whole fleet, the same way every time. The inventory says what a host should be; the AWX job log says what was done to it, when, and by whom.</description></item><item><title>Three-layer GitOps on K3s, in production</title><link>https://archworks.co/posts/kubernetes-gitops-layers/</link><pubDate>Sat, 18 Apr 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://archworks.co/posts/kubernetes-gitops-layers/</guid><description>A 6-node K3s cluster as one git repo. Push to master, ArgoCD picks it up, nothing gets deployed by hand. Three layers, sync waves, and the parts that took longest to get right.</description></item><item><title>Public services from a residential line, without publishing the home IP</title><link>https://archworks.co/posts/reverse-tunnel-public-without-exposed/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://archworks.co/posts/reverse-tunnel-public-without-exposed/</guid><description>Host public services from a residential line without the home IP ever landing in DNS. A 5 EUR VPS, a WireGuard tunnel, and three OPNsense NAT rules.</description></item><item><title>Hijacking the display header to embed a Pi Zero inside an Ender 3 V2 Neo</title><link>https://archworks.co/posts/ender3-v2-neo-pi-zero-internal/</link><pubDate>Sun, 22 Mar 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://archworks.co/posts/ender3-v2-neo-pi-zero-internal/</guid><description>Klipper on a Pi Zero 2W hidden inside the printer base, powered and serial-fed from the stock display header. Plus direct-drive, dual Z, custom heatbreaks, and the mods that followed once the host was clean.</description></item><item><title>Learning FreeCAD 1.x by designing hobby rockets</title><link>https://archworks.co/posts/freecad-and-amateur-rocketry/</link><pubDate>Tue, 08 Apr 2025 00:00:00 +0000</pubDate><guid isPermaLink="true">https://archworks.co/posts/freecad-and-amateur-rocketry/</guid><description>I learned FreeCAD 1.x by drawing parts for hobby rockets: nosecones, fin sections, motor mounts, recovery bays. The channel that taught me the workflow, and the parametric discipline that stuck around for everything else.</description></item><item><title>Building an ESP32 quadcopter from a public project, and what flight control actually feels like</title><link>https://archworks.co/posts/esp32-quadcopter-from-flix/</link><pubDate>Sun, 30 Mar 2025 00:00:00 +0000</pubDate><guid isPermaLink="true">https://archworks.co/posts/esp32-quadcopter-from-flix/</guid><description>I forked okalachev/flix, printed a frame, and learned the IMU pipeline the slow way. Here is what every step between 'motor spins' and 'thing hovers' actually costs.</description></item></channel></rss>