Vincent Bernat
Vincent Bernat's homepage
- Posts
- 184 from 31 Dec 1996 to 4 Oct 2026
- Posting
- monthly (17 in the last year)
- Kind
- personal blog
- Feed
- https://vincent.bernat.ch/en/blog/atom.xml
2026 16
- Hacking the Go compiler to efficiently map IPv4 to IPv6
- My blog
- Self-hosted HTTP tunnels with SSH and nginx
- Bot-free self-hosted analytics with GoatCounter on NixOS
- Sidenotes with CSS anchor positioning
- An interactive tour of the spanning tree protocol
- A non-interactive tour of the spanning tree protocol
- Building a Soviet Nail Factory: how KPIs killed efficiency
- Blogging with LLMs as a non-native speaker
- Sharding a routing table for lock-free reads in Go
- CSS & vertical rhythm for text, images, and tables
- Calculate “1/(40rods/hogshead) to L/100km” from your Zsh prompt
- Automatic Prometheus metrics discovery with Docker labels
- Fragments of an adolescent web
- RAID 5 with mixed-capacity disks on Linux
- Using eBPF to load-balance traffic across UDP sockets with Go
2025 4
2024 4
2023 5
2022 5
2021 12
- Custom screen saver with XSecureLock
- Automatic login with startx and systemd
- Git as a source of truth for network automation
- How to rsync files between two remote servers?
- FRnOG #34: how we deployed a datacenter in one click
- Short feedback on Cisco pyATS and Genie Parser
- Switching to the i3 window manager
- ThinkPad X1 Carbon (Gen 7): 2 years later
- Upgrading my desktop PC
- Serving WebP & AVIF images with Nginx
- Jerikan+Ansible: a configuration management system for network
- Transient prompt with Zsh
2020 14
- Zero-Touch Provisioning for Juniper
- My collection of vintage PC cards
- Running Isso on NixOS in a Docker container
- Speeding up bgpq4 with IRRd in a container
- Syncing RIPE, ARIN, and APNIC objects with a custom Ansible module
- Keepalived and unicast over multiple interfaces
- Syncing NetBox with a custom Ansible module
- Syncing MySQL tables with a custom Ansible module
- Syncing SSH keys on Cisco IOS XR with a custom Ansible module
- Writing a custom Ansible module
- Zero-Touch Provisioning for Cisco IOS
- Safer SSH agent forwarding
- Downgrading all Debian packages to a specific date
- ThinkPad X1 Carbon 2014: 5 years later
2019 7
2018 12
- HiDPI on dual 4K monitors with Linux
- BGP LLGR: robust and reactive BGP sessions
- Multi-tier load-balancing with Linux
- A more privacy-friendly blog
- OPL2 Audio Board: an AdLib sound card for Arduino
- Self-hosted videos with HLS
- Go @ Exoscale
- Integration of a Go service with systemd: socket activation
- Route-based VPN on Linux with WireGuard
- Packaging an out-of-tree module for Debian with DKMS
- OPL2LPT: an AdLib sound card for the parallel port
- L3 routing to the hypervisor with BGP
2017 16
- (Micro)benchmarking Linux kernel functions
- SwiNOG #32: BGP LLGR
- Vienna Linux Meetup: are distributions still relevant?
- Route-based IPsec VPN on Linux with strongSwan
- Performance progression of IPv6 route lookup on Linux
- IPv6 route lookup on Linux
- Performance progression of IPv4 route lookup on Linux
- IPv4 route lookup on Linux
- SwiNOG #31: L3 routing to the hypervisor
- VXLAN: BGP EVPN with FRR
- VXLAN & Linux
- Proper isolation of a Linux bridge
- Netops with Emacs and Org mode
- Integration of a Go service with systemd: readiness & liveness
- Writing your own terminal emulator
- A Makefile for your Go project (2017)
2016 4
2015 3
2014 9
- Eudyptula Challenge: superfast Linux kernel booting
- Staging a Netfilter ruleset in a network namespace
- Intel Wireless 7260 as an access point
- Replacing Swisscom router by a Linux box
- Dashkiosk: manage dashboards on multiple displays
- Local corporate APT repositories
- EDNS client subnet support for BIND
- Coping with the TCP TIME-WAIT state on busy Linux servers
- Testing infrastructure with serverspec
2013 10
- Dailymotion: quick introduction to SystemTap
- Snimpy: SNMP & Python
- Automatic debugging packages in Debian
- High availability with ExaBGP
- Boilerplate for autotools-based C project
- Packaging a daemon for macOS
- lanĉo: a task launcher powered by cgroups
- Contributing to open source: a new feature for RRDtool
- Comptabilité d'une EURL avec GnuCash
- lldpd 0.7.1
2012 8
2011 25
- Tuning Linux IPv4 route cache
- TLS & Perfect Forward Secrecy
- A quick look at Typekit
- TLS computational DoS mitigation
- TLS termination: stunnel, nginx & stud, round 2
- Speeding up TLS: enabling session reuse
- TLS termination: stunnel, nginx & stud
- jchroot: chroot with more isolation
- Plot benchmark results with Matplotlib
- Rewriting my .zshrc
- Dealing with missing locales on remote hosts
- Alternate Android firmware on Samsung Galaxy S
- Network lab: site to site VPN
- The sorry state of Flash with 64-bit Debian
- Anycast DNS
- Mobile browsing & content optimization
- Ready for World IPv6 day?
- GNOME Power Manager without GNOME desktop
- Providing a mobile version with CSS Media Queries
- SNMP support for Keepalived
- Network lab with User Mode Linux
- Debian on ThinkPad Edge 11″
- FVWM configuration
- New website with Hyde
- Migrating from Trac to GitHub
2010 1
2009 2
2007 1
2006 1
2001 1
1998 6
1997 16
- Dix vœux pour 1998
- Interview : Philippe Supera
- France Télécom : baisse des tarifs
- Reduce your France Télécom bill
- Les spams
- La guerre du push
- Législatives et sondages
- Rumeurs : virus par e-mail
- La jungle des plugins
- Le commerce électronique
- La France en retard ?
- Client d'Internet
- Une page de pub
- Le web multimédia
- Les cookies
- Microsoft Virtual Machine