Top all-time · #1122
Vincent Bernat
Personal blog · vincent.bernat.ch · on HN as vbernatsystemsprogramming
Vincent Bernat's personal blog at vincent.bernat.ch covers systems and programming. Since 2018, 64 different Hacker News readers have linked it 106 times, most often “Writing Sustainable Python Scripts”. It is still writing: the last post was on 2026-11-01, and you can follow it by feed.
Vincent Bernat's homepage
Most-linked posts?
- Writing Sustainable Python Scripts5 people · 5 mentions · first linked 2019-07-20
- Coping with the TCP Time-Wait State on Busy Linux Servers ⁕ Vincent Bernat5 people · 5 mentions · first linked 2020-10-02
- Pragmatic Debian Packaging (2019 Edition)5 people · 5 mentions · first linked 2019-05-27
- Hacking the Go compiler to efficiently map IPv4 to IPv65 people · 5 mentions · first linked 2026-10-04
- IPv4 Route Lookup on Linux4 people · 7 mentions · first linked 2020-01-24
- An interactive tour of the spanning tree protocol4 people · 5 mentions · first linked 2026-08-24
- HiDPI on dual 4K monitors with Linux4 people · 5 mentions · first linked 2018-10-29
- Why content providers need IPv64 people · 4 mentions · first linked 2024-06-24
- Sharding a routing table for lock-free reads in Go3 people · 3 mentions · first linked 2026-05-25
- Git as a source of truth for network automation3 people · 3 mentions · first linked 2021-11-17
What Hacker News says?
> From the kernel point of view, there is a only one socket with a unique listen queue. This socket is associated to several file descriptors: one in systemd and one in the current process. The socket stays alive as long as there is at least one file descriptor. An incoming connection is put by the kernel in the listen queue and can be dequeued from any file descriptor with the accept() syscall. Therefore, this appr…
Comment linking /en/blog/2018-systemd-golang-socket-activation
on “Why I Built Litestream”Submitted Non-interactive SSH password authentication as a story · 270 points
HN discussionHow's https://golden.com doing? I have come across some really detailed Wikipedia articles (for sports events, for example) and at times some really drab ones which I try to edit to improve. But original research articles sometimes do contain a lot more specific information that doesn't survive editor scrutiny on Wikipedia. And the less we talk about numerous advertisment/PR/fluff articles and socio/geo-political ed…
Comment linking /en/blog/2017-ipv4-route-lookup-linux
on “Wikipedia now has more than 6M articles in English”Submitted Self-hosted HTTP tunnels with SSH and Nginx as a story · 206 points
HN discussionIf you just want to put a binary in a .deb, for internal usage, check out https://vincent.bernat.ch/en/blog/2019-pragmatic-debian-pack... . I went through it in the last year, worked fine to build for bookworm.
Comment linking /en/blog/2019-pragmatic-debian-packaging
on “What to expect from Debian/Trixie”Submitted Switching to the i3 window manager as a story · 112 points
HN discussionNot on IOS XR: https://vincent.bernat.ch/en/blog/2020-syncing-ssh-keys-iosx... . The commands you mention are for NXOS.
Comment linking /en/blog/2020-syncing-ssh-keys-iosxr-ansible
on “Non-interactive SSH password authentication”Submitted An interactive tour of the spanning tree protocol as a story · 108 points
HN discussion> Finding ways to have, say, 10 million blacklist elements with a small memory footprint is left as an exercise for the reader. In case the reader is interested (and this may not be what OP had in mind): In trading memory gains with computation, this is how I squeezed ~4M entries in less than 30 MiB: 1. Compress (reversed) individual entries using a dictionary or entropy encoder. I experimented with Shoco [0], Femto…
Comment linking /en/blog/2017-ipv4-route-lookup-linux
on “Ad blocking with Raspberry Pi and Pi-hole”Submitted Offline PKI using 3 Yubikeys and an ARM single board computer as a story · 52 points
HN discussionThanks for the excellent write-up. Probably not as cache-friendly, but did you, at any point, evaluate Radix Tree [0] or Patricia Trie / CritBit Tree [1][2] as an underlying data-structure for the hash-table? These also compact nicely into one of the many succinct data-structures [3][4]. Radix Tree, in particular, seems to work really well for IPs from what I've read [5]. --- [0] https://vincent.bernat.ch/en/blog/20…
Comment linking /en/blog/2017-ipv4-route-lookup-linux
on “When Bloom filters don't bloom”Submitted Crafting endless AS paths in BGP as a story · 47 points
HN discussionThis looks a good idea to let people choose their preferred medium. I am not into video either, but I turned one of my latest blog article into a video using Claude, since I thought it would be “easy.” I asked it to build the video by screencasting a browser presenting the interactive diagrams of the article and add some titles. It build some kind of recording app for me. It still took me many hours, but I think I w…
Comment linking /en/blog/2026-spanning-tree-video
on “Show HN: HN.watch – Videos of all Hacker News posts”Submitted Jerikan: A configuration management system for network teams as a story · 45 points
HN discussionI'm not sure what he's done about HiDPI, but apparently that can be invoked (depending on the app) using xsettingsd[1]. [1] https://vincent.bernat.ch/en/blog/2018-4k-hidpi-dual-screen-...
Comment linking /en/blog/2018-4k-hidpi-dual-screen-linux
on “NsCDE: Not So Common Desktop Environment”Submitted Why content providers need IPv6 as a story · 15 points
HN discussionIs that with systemd logind? Why does logind interact with BIOS? https://vincent.bernat.ch/en/blog/2021-startx-systemd
Comment linking /en/blog/2021-startx-systemd
on “Why systemd is a problem for embedded Linux”Submitted Pragmatic Debian Packaging (2019 Edition) as a story · 8 points
HN discussionAs for building packages for your own use, the tooling is not that difficult. The documentation is just oriented to contribute packages for Debian itself. This implies some unwanted complexity and navigating outdated documentation. Packaging for Debian becomes simpler, but it's heavily rooted into having multiple files describing the package, use of a tarball as the source package and having each language comes with…
Comment linking /en/blog/2019-pragmatic-debian-packaging
on “Debian Packages That Need Lovin'”Submitted Writing Sustainable Python Scripts as a story · 7 points
HN discussionBack in the HTTP/0.9 era TIME_WAIT was a big problem when running a busy [reverse] proxy. I remember using ndd to "tune" tcp_time_wait_interval on Solaris for this, as well as the anon (ephemeral) port range. This is my go to that topic now: https://vincent.bernat.ch/en/blog/2014-tcp-time-wait-state-l... "The solution is more quadruplets" is for me one those things that's blindingly obvious once pointed out. See als…
Comment linking /en/blog/2014-tcp-time-wait-state-linux
on “How to stop running out of ephemeral ports and love long-lived connections”Submitted Hacking the Go compiler to efficiently map IPv4 to IPv6 as a story · 6 points
HN discussionIf you like radix trees, you may also find this article interesting and useful: https://vincent.bernat.ch/en/blog/2017-ipv4-route-lookup-lin...
Comment linking /en/blog/2017-ipv4-route-lookup-linux
on “Relaxed Radix Balanced Trees (2024)”Submitted Hacking the Go compiler to efficiently map IPv4 to IPv6 as a story · 6 points
HN discussionIt is rarely an issue in practice. There are workarounds to minimize connection resets. Using ECMP hashing on routers and a tiered load balancing topology are important. https://vincent.bernat.ch/en/blog/2018-multi-tier-loadbalanc... https://blog.cloudflare.com/high-availability-load-balancers... https://engineering.linkedin.com/network-performance/tcp-ove...
Comment linking /en/blog/2018-multi-tier-loadbalancer
on “Pentagon retakes control of IP addresses it moved in last minutes of presidency”Submitted Akvorado release 2.0: collects network flows with IPFIX and sFlow as a story · 6 points
HN discussionVincent Bernat has one of my favorite blogs about networking. https://vincent.bernat.ch/en/blog#tag-linux
Comment linking /en/blog
on “Understanding modern Linux routing (and wg-quick)”Submitted Bot-free self-hosted analytics with GoatCounter on NixOS as a story · 5 points
HN discussionAlso, it is possible for most settings to be dynamic, which is useful on a laptop where you can plug screens, with XSETTINGS. That's what Gnome and XFCE are using. With Awesome WM, I am using a script [1] to update XSETTINGS (through xsettingsd configuration file). I explain more on my blog [2]. [1] https://github.com/vincentbernat/awesome-configuration/blob/... [2] https://vincent.bernat.ch/en/blog/2018-4k-hidpi-du…
Comment linking /en/blog/2018-4k-hidpi-dual-screen-linux
on “A few HiDPI tricks for Linux”Submitted Hacking the Go compiler to efficiently map IPv4 to IPv6 as a story · 4 points
HN discussion