Vincent Bernat
banner
vincent.bernat.ch
Vincent Bernat
@vincent.bernat.ch
Network engineer at AS12322. Debian and free software developer. Like to work on projects with C, Python, or Go. He/him. https://vincent.bernat.ch
Pinned
With the team @free1337.bsky.social, we have developed a Netflow/IPFIX collector and visualizer. It is available at github.com/akvorado/akv.... It relies on several opensource components: GoFlow2, Kafka, ClickHouse, Vue, Tailwind, and more!
GitHub - akvorado/akvorado: Flow collector, enricher and visualizer
Flow collector, enricher and visualizer. Contribute to akvorado/akvorado development by creating an account on GitHub.
github.com
Compressing embedded files in Go: using a ZIP archive to reduce the space used by static assets in a Go executable. #golang

vincent.bernat.ch/en/blog/2025...
Compressing embedded files in Go
Static assets embedded in Go executable are not compressed, wasting some space. It is possible to compress them into a ZIP archive while keeping...
vincent.bernat.ch
December 8, 2025 at 6:33 AM
Modernizing Reddit's Comment Backend Infrastructure (from Python to Go, with an interesting approach of comparing reads/writes using A/B testing, as I suppose unit tests were not enough to bring confidence)

old.reddit.com/r/RedditEng/...
Modernizing Reddit's Comment Backend Infrastructure
Posted in r/RedditEng by u/Okgaroo • 470 points and 35 comments
old.reddit.com
December 5, 2025 at 6:38 AM
Akvorado 2.0.4 was released. Mostly useful for people suffering from performance regressions since 2.0.3.

github.com/akvorado/akv...
Release v2.0.4 · akvorado/akvorado
The previous release introduced a performance regression for users with many flows from a single exporter. This is fixed in this release. 🩹 docker: restart geoip container on boot 🌱 inlet: make lo...
github.com
December 4, 2025 at 1:03 PM
HAProxy 3.3.0 was released a few days ago: www.mail-archive.com/haproxy@form.... Debian packages for Debian Experimental, Debian Trixie and Ubuntu Noble have been uploaded to haproxy.debian.net.
[ANNOUNCE] haproxy-3.3.0
www.mail-archive.com
November 28, 2025 at 10:30 PM
Dingo: a meta-language for Go that adds Result types, error propagation, and pattern matching while maintaining 100% Go ecosystem compatibility. It's a transpiler. Pretty young and not complete yet.

github.com/MadAppGang/d...
GitHub - MadAppGang/dingo: A meta-language for Go that adds Result types, error propagation (?), and pattern matching while maintaining 100% Go ecosystem compatibility
A meta-language for Go that adds Result types, error propagation (?), and pattern matching while maintaining 100% Go ecosystem compatibility - GitHub - MadAppGang/dingo: A meta-language for Go th...
github.com
November 23, 2025 at 7:03 AM
reflect.MethodByName() Inflates Your Binary Size. Interesting. Also reflect.Call(). And text/template uses reflect.MethodByName() with a non-const argument. This prevents dead code elimination. I need to find how to detect this.
appliedgo.net/spotlight/re...
MethodByName Inflates Your Binary Size
Four methods in Go's reflect package can block dead code elimination and thus increase binary size.
appliedgo.net
November 20, 2025 at 7:19 AM
Reposted by Vincent Bernat
I was recently re-reading Crafting Interpreters and was struck by how delightfully effective its introduction is. In just four sentences, @stuffwithstuff.com establishes exactly what you'll learn from the book and why you'll enjoy learning it with him. refactoringenglish.com/blog/craftin...
What Makes the Intro to Crafting Interpreters so Good?
Developers are terrible at writing introductions, so it's worth studying what makes the Crafting Interpreters intro so compelling.
refactoringenglish.com
November 19, 2025 at 2:18 PM
Reposted by Vincent Bernat
So tempted to write a troll thread on how this incident shows Rust has bad error handling and wouldn’t have happened in Go, where we actually handle errors 🫣🫢😜

blog.cloudflare.com/18-november-...
Cloudflare outage on November 18, 2025
Cloudflare suffered a service outage on November 18, 2025. The outage was triggered by a bug in generation logic for a Bot Management feature file causing many Cloudflare services to be affected.
blog.cloudflare.com
November 19, 2025 at 10:14 AM
Akvorado 2.0.3 is just released! There are some important fixes, notably around flow corruption under heavy load. This release is also compatible with Docker Engine 29.

github.com/akvorado/akv...
Release v2.0.3 · akvorado/akvorado
This release contains some important fixes to prevent flow corruption under heavy load. 💥 config: skip-verify is false by default in TLS configurations for ClickHouse, Kafka and remote data source...
github.com
November 19, 2025 at 8:10 PM
People using Traefik are now likely to run into this issue when upgrading to Docker 29.0.0. This can be fixed by downgrading. This includes Akvorado's users!

github.com/traefik/trae...
Error response from daemon: client version 1.24 is too old · Issue #12253 · traefik/traefik
Welcome! Yes, I've searched similar issues on GitHub and didn't find any. Yes, I've searched similar issues on the Traefik community forum and didn't find any. What did you do? Upgraded docker to 2...
github.com
November 11, 2025 at 10:15 AM
Akvorado 2.0.2 is released. It features a bugfix for the latest version of Firefox. It increases the default Kafka buffer size of the inlet service to avoid packet drops. Plus an optional eBPF load balancer that is pretty cool but less useful than a good default value. :)

github.com/akvorado/akv...
Release v2.0.2 · akvorado/akvorado
The modification of the default value of inlet→kafka→queue-size should prevent packet drops on busier setups. 💥 config: stop shipping demo exporter configurations from the orchestrator ✨ inlet: lo...
github.com
October 29, 2025 at 7:07 AM
Minor release of Akvorado. It includes two bug fixes: one for older kernels (before 5.1) and one for gNMI users.

github.com/akvorado/akv...
Release v2.0.1 · akvorado/akvorado
🩹 inlet: disable kernel timestamping on Linux kernel older than 5.1 🩹 outlet: fix gNMI metadata provider exiting too early 🩹 doc: fix documentation for SNMPv3 configuration 🌱 inlet: add support for...
github.com
October 2, 2025 at 5:28 AM
Reposted by Vincent Bernat
"Vampire Routing", a path finding algorithm that avoids direct sunlight 🧛 Pretty cool idea, and I actually do that during hot summer times to avoid excessive heat. sosm.ch/the-coolest-...
The coolest way to find shade paths: Vampire routing on routing.osm.ch
Climate change and increasing urbanization are causing more and more heat, which is particularly noticeable these days. Locals and tourists are therefore looking for ways to avoid direct sunlight. Of ...
sosm.ch
September 25, 2025 at 2:02 PM
A couple years ago, I have complained about "show commit changes diff" being utterly broken on Cisco IOS XR. Good news, this is fixed in 24.4.2 and 25.1.1 (and a late fix is coming for 24.2.21).

vincent.bernat.ch/en/blog/2022...
Broken commit diff on Cisco IOS XR
The diff between the running and the candidate configurations produced by Cisco IOS XR are often incorrect. This post provides a few examples.
vincent.bernat.ch
September 28, 2025 at 3:47 PM
Reposted by Vincent Bernat
Release of Akvorado version 2.0, an open-source Tool to collect network flows with IPFIX and sFlow - Project by Vincent Bernat @vincent.bernat.ch #Network #Monitoring vincent.bernat.ch/en/blog/2025...
Akvorado release 2.0
Akvorado 2.0 is out! It introduces a major architectural change with a new outlet service, as well as smaller changes detailed in this post.
vincent.bernat.ch
September 24, 2025 at 7:10 PM
Final release of Akvorado 2.0! In addition to introducing the new architecture, this companion blog post details some other changes.

vincent.bernat.ch/en/blog/2025...
Akvorado release 2.0
Akvorado 2.0 is out! It introduces a major architectural change with a new outlet service, as well as smaller changes detailed in this post.
vincent.bernat.ch
September 22, 2025 at 6:27 AM
New release of lldpd. Fast start is now enabled by default and VLAN advertisements are configurable.

github.com/lldpd/lldpd/...
Release 1.0.20 · lldpd/lldpd
Summary Changes: Enable fast start unconditionally (and move its configuration in "configure lldp") (#683) Make VLAN advertisements configurable (#740) Fix: Do not break zero-copy traffic on L...
github.com
September 13, 2025 at 10:52 AM
For x86-64, the 4 micro-architecture levels are fairly well documented. I am looking for something equivalent for AArch64 and I am almost nowhere. It does not seem to exist a piece of code that will tell you "this CPU supports ARMv8.5-A instruction set". Why?

en.wikipedia.org/wiki/X86-64#...
x86-64 - Wikipedia
en.wikipedia.org
September 8, 2025 at 5:20 AM
Some people can pollute an opensource project beyond all decency. It's the first time I have to block someone and then the first time I have to explain it explicitly.

github.com/akvorado/akv...
clickhouse in loop restarting · akvorado akvorado · Discussion #1928
Hi Good Day Everyone, im using akvorado for a month now. All of the errors im encountering I always research it first before asking on some discussions here in github please respect my post. We had...
github.com
September 2, 2025 at 5:46 AM
Another beta release of Akvorado 2.0.0. Notably, it fixes a crash likely to happen when you have many flows.

github.com/akvorado/akv...
Release v2.0.0-beta.5 · akvorado/akvorado
CautionThis is a beta release! Be sure to read the section about 2.0.0-beta.1 as well. If you use the monitoring stack, note that the Docker Compose file was split into docker-compose-prometheus.y...
github.com
August 30, 2025 at 11:31 AM
New beta for Akvorado 2.0.0. This should be the last one! Testing would be appreciated!

github.com/akvorado/akv...
Release v2.0.0-beta.4 · akvorado/akvorado
CautionThis is a beta release! Be sure to read the section about 2.0.0-beta.1 as well. This is likely the last beta before releasing 2.0.0. 🌱 outlet: improve performance of the BMP routing provid...
github.com
August 18, 2025 at 7:09 AM
Trying a bit Claude Code. I feel like I am doing all the work and paying for that.
August 12, 2025 at 9:15 PM
New week, new beta release of Akvorado. The number of workers in the outlet is now size dynamically to keep ClickHouse happy. Another interesting bit is the ability to enable TLS. Also, IPv6 is enabled by default in Docker (and a controversial change for IPv4)!

github.com/akvorado/akv...
Release v2.0.0-beta.3 · akvorado/akvorado
CautionThis is a beta release! Be sure to read the section about 2.0.0-beta.1 as well. 💥 docker: enforce a specific IPv4 subnet (in the reserved class E) 🌱 docker: add IPv6 configuration 🌱 outlet...
github.com
August 11, 2025 at 6:13 AM