A year ago, I bought an RTX 5080 for both gaming and AI experiments. Little did I know back then that I would be giving into the joys of local LLM setups. 
Fast forward 2026, Qwen 3.5, Gemma, Qwen 3.6, I needed more than 16GB. So I got myself a refurbished RTX 3090 with 24GB. I could then run Qwen 3.6 Q4 quants, first at ~30 tok/s, then 50-60 with MTP. Not bad. But still felt limited while my…
Last week, the VPN provider I previously used went dark for days and went back with no explanation. They have an history of not communicating much and their support does suck but TBH I almost never used it, nevertheless I felt it was time for a change. I asked on BlueSky for feedback and one of the suggestions caught my eye: IVPN . 
They have very good reviews, support WireGuard and an OpenBSD…
From the project’s Github repository : 
 
 xv6 is a re-implementation of Dennis Ritchie’s and Ken Thompson’s Unix Version 6 (v6). xv6 loosely follows the structure and style of v6, but is implemented for a modern x86-based multiprocessor using ANSI C. 
 
 Having a small footprint and code base, xv6 is an excellent tool to deepen in operating systems internals,…
As you might be aware of, I am working on a minimal BSD/UNIX system called smolBSD . It is based on the NetBSD operating system, and its main target is virtual machines, more specifically microvm s. This system is capable of fully booting the OS in less than one second using a specially trimmed kernel along with small, specialized root systems. 
I was stunned to learn (but am I wrong?) that…
I got myself a brand new 43 inches monitor, it’s amazing, the visual comfort is life changing. 
It all worked pretty much immediately except one little annoying thing: 9 times out of 10, when putting the monitor to sleep with xset dpms force off and waking it up by hitting a key, it would not detect the HDMI signal for about the 30 longest seconds ever. 
 I finally found that if I…
2025/01 Update https://github.com/NetBSDfr/smolBSD/tree/main/k8s 
 I had to do it. 
So here’s how to run a NetBSD micro-vm as… a Kubernetes pod. 
 First thing is to modify the start script from the previous article in order to add Docker -style networking, i.e. port forwarding from the host to the micro-vm. This is done using the hostfwd flag in qemu ’s -netdev…
I have this little toy project for quite a while now, and I have this idea of handling a fleet of NetBSD micro-vms with Kubernetes since I started my new job in which I am caring a k8s cluster. 
 I came to realize that starting a smolBSD micro-vm with Docker was not so difficult after all. Using mksmolnb ’s startnb.sh I came up with this very simple Dockerfile : 
 FROM alpine:latest…
Ok this is possibly the easiest thing on earth but I didn’t see any clear documentation on the
topic apart from a simple text file which actually helped. 
 The server runs into a FreeBSD jail , I won’t cover this part as there are plenty of good documentation on this matter already . 
 The first step is obviously to install nsd , for example using pkg : 
 # pkg install…
At $(DAYJOB) I was asked to generate some kind of daily report, and I thought ansible would do the job; we basically want to have a couple of key metrics like load average, memory, disk … you see the deal. The result is to be send to MatterMost using mattermost’s ansible module . 
 It took me way too much time to understand how to update a single variable in order to build a mardown…
While searching for an elasticsearch tail -f , I stumble upon this nice piece of software that does exactly that. Reading the configuration file I noticed the server_kibana-proxy section and wondered if that meant that elasticsearch could be queried via kibana , and it turns out that yes, you don’t have to expose ES port ( :9200 ), you can use kibana ’s API instead, in particular the…
How misleading and complicated this task should be that I’m writing such an article in 2022? 
Anyway, if you struggle compiling a simple, standalone Linux kernel module on Debian, Ubuntu, Mint and the like, here’s the recipe: 
 
 Fetch linux-source-<version> and linux-headers-<version> 
 
 $ sudo apt install linux-source-5.4.0 linux-headers- $( uname -r ) 
 Do…
A week ago, I’ve migrated my gateway to a standalone machine running FreeBSD 13.1. The whole process was certainly flawless and soon enough it was forwarding packets to and from my network. 
 Quite happy with the result, I didn’t expect it to crash less than 2 days after its first production hour. At first I thought it could have been the temperature, the graphic card, the…
I work as a freelance contractor for about a year now, I quit a 10+ years regular CTO job to give into more technical subjects, troubleshoot, code, build infrastructures, A-Team style , I help companies with complex matters that might require experience and rigorousness. 
 One of my last missions was really, really fun to deal with. A rather big company handling scientific, secret-level data,…
I’m in the process of automating pretty much all I can in my house, and one piece of well known
IOT hardware is eWelink’s Sonoff mini , which has the good taste of being flashable when set
in DYI mode. This has multiple benefits, one of them is not to rely on a Chinese cloud to
handle my house’s lights. 
 There are plenty of tutorials on how to achieve this, it is…
The other day, my wife asked me if I could just redirect all mails going to her own domain
to her GMail account. “Easy task”, foolish past-me thought, not knowing the standards you
have to meet to actually forward a mail from somwhere to GMail … 
 I naively searched for a simple bouncing method and postfix ’s virtual tables seemed
perfectly fit for the task…
Because I ran gpart bootcode on the wrong partition of every replacement disk I swapped and because my motherboard is incapable of finding an EFI partition, I basically bricked my FreeBSD NAS / gateway. 
 It took me a ridiculous amount of time in order to find how to boot into an existing ZFS FreeBSD installation from a FreeBSD LiveCD (I used mini-memstick ). 
 Finally, in a 2014 thread…
Since Binance Smart Chain and more specifically DeFi on BSC are a thing, I’ve been learning the amazing ways of Smart Contracts , and while many documentation exist on this topic, I didn’t find a clear one on how to “simply” execute a Smart Contract on geth , aka Go Ethereum , the most used Ethereum implementation and client. 
 Geth can interact with the Ethereum…
In order to keep my cryptocurrencies as secure as possible, I only interact with those within a virtual machine located on an encrypted USB stick. I own both a Ledger Nano S and a Ledger Nano X , which connect using USB . Also I don’t use libvirt for this as I want it to be as easily and quickly usable as possible. So here’s the secret formula in order to access those hardware wallets…
The other day, I realized that from time to time, alpine , my console mail client for about 20+ years now, would close the connection to the IMAP server because of an “error”. 
Digging in the logs, I realized my server was being bruteforced for months, if not years. NetBSD being the fantastic OS it is, it actually had nearly no effect on my server’s behaviour, only those…
Again from the stop-trying-to-use every-flag-available department. This makes me think about this Percona engineer who once told me and my team “people keep tuning MySQL with tons of configuration options when really 10 parameters define 90% of the performance ”. 
 For some reason, I was somewhere where I needed to stream my webcam quickly to a remote machine on my home network…
I keep reading overcomplicated QEMU / KVM command lines, when really, to start a VirtIO disk and bridged VirtIO NIC virtual machine, only this command is needed: 
 $ sudo qemu-system-x86_64 -enable-kvm -m 1024 -cpu host -daemonize \
 -drive file = mydisk.img,if = virtio \
 -net nic,model = virtio -net tap,ifname = tap0
 
 drive type is virtio 
 nic model is virtio and the…
In November 2018 AWS published an Open Source tool called Firecracker , mostly a virtual machine monitor relying on KVM , a small sized Linux kernel, and a stripped down version of Qemu . What baffled me was the speed at which the virtual machine would fire up and run the service. The whole process is to be compared to a container , but safer, as it does not share the kernel nor any resource, it…
This bug forbids rofi window mode to give focus to a selected window when click to focus is disabled in XFCE . Using the same trick the first commenter used, I came up with this script which uses wmctrl to handle windows listing, selection and focus: 
 #!/bin/sh
 
 clicktofocus = 'xfconf-query -c xfwm4 -p /general/click_to_focus -s ' 
 
 $clicktofocus true
 w = $( wmctrl…
As a password-store user, GPG is particularly important and sensitive, I use it for
pretty much everything authentication / encryption related. Also, about a year ago I got myself
a pair of Yubikeys , and they are now involved in all of the mentioned workflows. 
 Now on the topic, as my keys are a crucial part of my online life, I wanted to make sure I had
those backuped safely,…
I’ve contributed to a small project I found useful in my digging of Bitcoin ’s LevelDB databases structure; leveldbctl is a CLI tool that permits to parse a LevelDB database rather simply. But it was missing a critical function for my use case, hexadecimal fields handling, which are heavily used by Bitcoin . Until now it was only capable of reading / writing strings . 
 It is now…
Yet another topic IMHO explained in the most possible complicated way in Gitlab documentation , Gitlab pages are in fact extremely powerful and simple to use. 
 In order to create a website with an URL of the form https://<username>.gitlab.io/<project> , there are a couple of steps to follow. First, write a Job to publish your pages, this job can be part of your project’s .gitlab-ci.yml…
While writing Go tests for goxplorer , I wanted to test all boolean flags combinations without having to cascade for loops. 
This first method came to mind: 
 package main 
 
 import (
 	 'fmt' 
 )
 
 func stob ( bf [] bool , s string ) {
 	 for i , b := range s {
 		 if b == '0' {
 			 bf [ i ] = false 
 		} else…
I switched to Gitlab when Github was bought by Microsoft . Call me extremist, stupid, and all the names you like, I personally felt the need to do it. 
And quite honestly, I’m pretty happy with that choice, Gitlab is an incredibly useful suite, we use the community version at work and would never go back. But there’s one thing that’s pretty annoying with Gitlab , their…
Another one of those quickies that can save you some time. When my Linux laptop resumed from sleep, I was annoyed that DrDuh’s perfect Yubikey setup would throw me the following when I tried to SSH : 
 sign_and_send_pubkey: signing failed: agent refused operation
 Seems like the key doesn’t like being put to sleep and woken up. Another annoyance, for some reason, also when…
A quicky in case anybody has the same issue. I use pine / alpine as a mail client since my firsts steps on the UNIX/Linux world, it always served me well. 
Nevertheless, since a couple of weeks, I had this weird behavior where the mail content pager would not display accents (éàü…) while the mail list would! Worse, this inconsistent behavior only happened in tmux . 
I suspected…
I use the fantastic motion project to monitor my apartment activity when I’m not home (not happening until God knows when these days…). I wanted it to warn me when there’s movement more interactively than with a basic email. Telegram and its very well documented bot API is really perfect for this task, so I came up with the following motion configuration: 
 on_picture_save…
Again at ${DAYWORK} I was working on a network diagram, and found this incredibly useful website that regroups thousands of svg icons for all the major brands. I use draw.io to create my diagrams, and whereas they have a tutorial on how to modify an svg color ( fill property) within draw.io , it would not work as shown. 
 I figured out there was a very simple method to specify an svg file…
The other day at ${DAYWORK} we got hit by a simple yet efficient DDoS attack, basically, there were lots of regular HTTP queries with a specific query parameter but using either GET , POST or HEAD methods: 
 www.customer.com:443:80 174.76.48.233 - - [19/Mar/2020:17:26:11 +0000] 'POST /?=Best_HTTP_Flooder_For_FREE_by_PassDDoS&9716 HTTP/1.0' 200 62861…
Brand new iMil.net ! 
 I’ve wanted to switch from hexo to hugo for quite a long time for various reasons, one of them being I love golang and, well, let’s just say I don’t like javascript / node much. Also, hugo documentation is pretty well done, its author is a well known figure in the golang community, and last but not least, I find the overall workflow more simple and…
This post is more like a self-reminder on how I setup automatic SSL/TLS certificate renewal on my servers. 
 I chose LEGO to handle my certificates renewal with Let’s Encrypt because it’s simple to use, has no dependency, great documentation and is worked on at a constant pace. 
 I found this and this articles very useful, but they are outdated in their use of the tls and http…
While this article might only have interest for french people, you might want to get yourself an inexpensive Neufbox 6 on eBay or the like to play with it, thus the english language. 
 When I lived in France, my last Internet provider was SFR , it was (and still is) a fiber provider, and you got connected thanks to a box called the “Neufbox” . There were a couple of versions of…
I knew about a MacOS task bar plugin called Anybar , which basically draws an icon on the task bar to which you can send behaviors with a simple nc command. Naturally, someone cloned it for our beloved Free Unices environments, and it’s called somebar . 
 I am sometimes in places with weak network, and I like to see at a glance how is my connection doing, somebar seemed the perfect tool…
Update (2020/05/21) the method used in this post is totally sub-performant, and I finally found out about LevelDB ’s and Badger ’s batch methods, which make writes considerably faster, I’ll probably write another note about this. 
And by the way, I found Badger to be much faster at writing batches than LevelDB . 
 Actual post 
 I’m working on a plugin for…
In the past month, it’s the second time I’m being bitten by FreeBSD in the networking field. 
 First time with my own gateway, I had this weird behaviour where machines on a different VLAN than the main one would use the Internet at full speed but would struggle to make any transfer from the main VLAN . 
 Turns out this was a tcp segmentation offload issue, which seems to cause…
The reference documentation when it comes to couple golang and continuous integration in Gitlab is this one , it’s well put, easy to read and pretty accurate. Except for the caching part, or at least nowadays with go modules . This is what happens when a commit is pushed with the .gitlab-ci.yml given as an example in that document: 
 131 Creating cache default...
 132 WARNING:…
In a previous article , I tried to explain my understanding of go channels interaction with ranges . Turns out my explanation was probably not clear enough because here I am, nearly a year after, struggling to achieve pretty much the same exercise. 
 So here we go again, on a good old trial and error fashion progress. 
 The goal here is to retrieve channel messages that are pushed from go…
Yet another “blockchain explained” article, I know, I really thought about if releasing it or not, but you know, you only understand what you can explain clearly, so I hope I’ll be able to explain proof of work and blockchain as clearly as it is clear in my mind. 
The originality of this post is that I’ll try to make those concepts clear through pieces of code…
Maybe I can’t read, but I have the feeling that official documentations explain every single corner case for a given tool, except the one you will actually need. My today’s struggle: replacing a disk within a FreeBSD ZFS pool . 
 
 What? there’s a shitton of docs on this topic! Are you stupid? 
 
 I don’t know, maybe. Yet none covered the process in a…
Because I’m the kind of person who likes genericity, I often find myself using features of languages that are flagged as “only use it if you know what you’re doing” . Golang reflection is one of those features, powerful yet a bit confusing. 
 Reflection, as explained in The Laws of Reflection is the ability of a program to examine its own structure, particularly through…
While my main workstation is a Linux Mint machine, I occasionally use my OSX ${WORK} laptop for traveling and composing. I’m not really fond of the OS, but at least it’s an UNIX-like , and pkgin runs well with it ;) 
When I’m “on the go”, I like to try things and play along with technologies I’m currently obsessed with, among them Kubernetes . 
On OSX ,…
Here we go again with my golang self teaching, today with a topic I had hard time understanding correctly (and hope I actually did): range over channels along with goroutines . 
 First of all, let’s have a little reminder. We all know a goroutine live its own life and must be waited for at the main level , i.e. in this example: 
 package main 
 
 import 'fmt' 
 
 func…
I’m still in the process of learning golang the right way. Yes I already wrote some projects with the Go language ( here and here ), but I like to understand the real meaning of techniques when using them. 
One of what is said to be the most amazing features of Go is interfaces . Here’s what the official golang docs has to say about it: 
 
 Interfaces in Go provide a way to…
Here’s a procedure I came up with in order to migrate an elasticsearch 1.1 database to version 6 (actually 6.4 but probably any 6.x version). 
 
 Fire up a temporary elasticsearch version 1.1 
 
 Fetch the tar.gz version from https://www.elastic.co/downloads/past-releases/filebeat-1-1-2 and untar it. 
 Use the following basic configuration file 
 $ egrep -v…
Assume the following scenario: your {Open,Free}BSD pf -enabled (yes, I know what’s missing and it’s a pity , I am well aware of it) gateway connects to an OpenVPN server. This server pushes a couple of routes to your gateway that you’d like to be able to reach from within your own private network. As routers on the other end don’t have routes to your network(s), mandatory…
With all the noise around those topics I would have imagined this one had been covered thousands of time, yet I did not find a single complete resource on this subject which I found to be a basic building block: pushing docker images from GitLab CI to the Docker Hub registry . 
 There’s actually an opened issue on Docker GitHub ’s that’s sitting there for 3 years, and it…