Goodbye, nix-darwin!
Why I stopped using nix-darwin on macOS after slow rebuilds, painful updates, installer script issues, and corporate tooling conflicts.
My LaraPlugins Performance Audit: 12 Fixes That Saved my Stressed server
An 8 GB VPS at 90% memory, 50,000 Cloudflare purge jobs in one cycle, and 12 Horizon supervisors running wild. Here is how I brought LaraPlugins.io back under control, with real numbers.
Bypassing Conditional Access policies that have a resource exclusion
There is a documented enforcement gap in Conditional Access policies that apply to “all resources” but have an exclusion for at least one resource. What is not documented, is that this gap is much…
Cloudflare is quietly building the agent cloud
It was Cloudflare’s announcement of Markdown for Agents a few months bac that made everything click for me. I’m revisting the note I had saved in my Obsidian vault in preparation for my…
A weekend in the wool: mapping a Chinese reward-farming underground from one GitHub repo
A weekend that started with a grep.app search for leaked password prefixes and ended in a 16-actor Chinese reward-farming (薅羊毛) ecosystem: its script DRM, its C2, its credential theft, and the civic…
RFC8950: Announce IPv4 with an IPv6 next-hop
For the last few days I have been playing with RFC8950 setup, which allows routing of IPv4 on top of IPv6. While logically it’s quite simple, it has a very powerful application towards making…
Fun with Docker, broken networking, remote filesystem mounts, and race conditions on Debian
There's nothing more satisfying than having a clean and problem-free boot sequence.
How to migrate from Gel to Disc
The hardest part is getting your data out of Gel in a useable format, the rest is easy (but mind your links on the way in, warning near the end).
Cybersecurity Wiretap #113: From Agentic AI Exploitation to ClickFix Campaigns with a Focus on Defender Zero-Days (week of 06/15/2026)
Welcome back to the weekly digest about the Cybersecurity & Threats in the wild. Below you will find a very subjective summary of Cybersecurity events for the prior week. 1.EXPLOITATION OF MODEL…
Design of a Simulated 5G & Wi-Fi IIoT (TSMS) for a Power Grid Cyber Twin System
Design of a Simulated 5G & Wi-Fi IIoT Thermal State Monitoring System (TSMS) for a Power Grid Cyber TwinProject Design Purpose : This article introduces the design and implementation of a…
Tutorial Part 2: Drive, Map & Navigate Your Proscenic M6 Pro in ROS 2
Tutorial Part 1 got SangamIO running on the vacuum, exposing its motors, wheel encoders, IMU and LiDAR over TCP port 5555. Part 2 connects that to ROS 2 the easy way — a prebuilt Docker image that…
Setting up a Reverse Proxy
The first step on my homelab improvement journey is setting up a reverse proxy. What’s a reverse-proxy? A reverse proxy is a server that sits in front of your other servers. Instead of sending…
Make GitHub Actions Do More For You
Merge-queue deploys, robust releases and chores you keep forgetting
Inside the Git Proxy: Capturing What an AI Agent Pushed (Part 2)
Part 2 — how the git proxy intercepts HTTPS, forces a parseable pack, logs every commit, pins the objects with marker refs, and survives the sharp edges of a signed, atomic protocol.
Understanding Sandboxes: gVisor, Hypervisors, and Firecracker
Every time you run a serverless function on AWS Lambda, execute a container on Google Cloud Run, or spin up a GitHub Actions workflow, your code runs on a physical machine shared with hundreds of…
Packagist and Composer security with Jordi Boggiano
Josh welcomes Jordi Boggiano the lead maintainer of Composer and Packagist to explain the truckload of security features they’ve recently added. Packagist is the PHP package registry, Composer…
Putting an AI Agent into Production: The Hard Part Was Never the Prompt
One day your agent starts giving wrong answers. Nobody touched the code, nobody changed the prompt. Turns out the provider silently swapped the model version behind the same API. In a demo you just…
Use cloudflared for SSH and close port 20
Cloudflare tunnels can be used for SSH, meaning you don't need any open incoming ports on your VPS.
Extending MySQL Capabilities with UDFs, Plugins and Components
MySQL offers three different approaches to extending the SQL capabilities with the default product you download and install. These are: User Defined Function (UDF) MySQL Manual MySQL Plugin MySQL…
Faster micro-frontends: optimising CDN behaviour for performance
How optimising CDN caching improved performance metrics for our microfrontend architecture
GPS spoofing teleported me to Peru, mid-flight
My first encounter with electronic warfare
Build an Asset CDN on AWS with CDK (S3 + CloudFront + Route53 + ACM)
Build a fast asset pipeline with a private S3 origin, CloudFront caching, custom DNS, and HTTPS certificates using AWS CDK.
Chain of trust with AI generated code
Introduction Chain of trust has long served as a foundational security principle in computing systems. From secure boot architectures to software supply-chain[1] security, trust is established at a…
Backups with Restic: 2-year retrospective
Around 2 years ago I started looking into how I could back up my laptop and my phone. I went with Restic and multiple backends for storage and I'm fairly happy with the result, even though I…
How to Write to SSDs - Co-Designing DBMS and Flash Storage
. [How to Write to SSDs](optimising-ssd-writes-for-dbms-cover...
DFS Wi-Fi channels are invisible to phones
import Detail from "../../components/Detail.astro"; While debugging [Bluetooth and Wi-Fi fighting over 2.4GHz](/posts/bluetooth-wifi-coexistence), I hit a confusing one: my router was happily…
Bluetooth and Wi-Fi fight over 2.4GHz
I have a phone running a Snapcast client: it pulls synced audio over Wi-Fi and plays it out to a pair of Bluetooth headphones. It buffered constantly: a few seconds of audio, then a stall, then a…
Five years of Observability at Canonical
After five years of leading Observability at Canonical, that journey is coming to an end.
Fantastic clear-text passwords and where to collect them (Part 1 - Linux)
1. Introduction During Digital Forensics and Incident Response (DFIR) investigations, we frequently observe Threat Actors (TAs) using various methods to harvest clear-text credentials on Linux…
Cracking simple XOR cipher with simulated annealing, part II
Cracking simple XOR cipher with simulated annealing, part II
I Zeroized My Secret. Or Did I?
If you work with secret keys — signing keys, API tokens, anything that must not leak — you’ve probably written this happy little line and felt good about it: 1 secret.zeroize(); Wiped! Auditor happy,…
PANhunt is now on PyPI
Why PANhunt exists When I started working in a payment processor, Dionach PANhunt project was already in use on many servers. It was not a tool I discovered later because I wanted to write something…
The Security Blind Spots of Local Agentic AI Ecosystems
The Prompts Are Coming From Inside the House: Why Agentic AI Is Becoming the Ultimate Insider Threat Cybersecurity has always been defined by a simple assumption. The attacker exists somewhere…
Teensy Firmware OTA Update Via SSH to Pi5
Posted 21 June 2026 After getting OTA via Bluetooth to the onboard HC-05 going for the 2-wheel robot, I had an epiphany; For vision processing the 2-wheel robot uses an on-board Raspberry Pi5 with a…
Avoiding .DS_Store Cache Misses in Bazel
It is well known that macOS Finder .DS_Store files should never be checked in to a repo, or leave the single machine for that matter. Fairly recently, I noticed that a lot of my iOS resource…
Self-hosting High Availability is just Backups
Everyone needs backups, we all know it in our bones, but you can also live your life without any backups.
Malware-Laden GitHub Follow-up
As I noted ~6 months ago, GitHub has repositories distributing Trojan horse-style malware. A lot of repositories, actually.
Releasing debvulns: CLI for listing Debian vulnerabilities
Announcing the release of debvulns CLI, a standalone utility built on the debsecan-mcp core logic.
Dendritic flake partitions
tl;dr ¶ Some of my sandboxed CLI agents aren’t in nixpkgs, so they ride along as flake inputs. They’re heavy, and were polluting the flake.lock of every machine that consumes the flake.…
http extension for windows updated to include PostgreSQL19 64-bit
Updated June 21st, 2026 64-bit package for PostgreSQL 19 http extension v1.7.1 release . For those folks on windows who want to do http gets and posts directly from your PostgreSQL server, we've made…
cuenv: one typed file for your whole project
Most projects don't have a configuration system — they have a pile: a .env file, a Makefile, a CI workflow, and secrets in a fourth place, none of it validated and all of it slowly drifting apart.…
Pas peu fier
Donc depuis presque deux ans les enfants ont une machine à eux. Elle tourne sous Linux et je peux donc en prendre la main à distance. Cela m'évite de crier quand ils décident d'ignorer mes demandes…
Replacing pgAgent with pg_timetable: Part 1
pgAgent has been my go to scheduling solution for quite some time. Sadly in 6 months it will be completely retired and the pgAgent UI in pgAdmin will be gone. The main reasons I liked pgAgent were:…
You've reached the end.