Jobs
What I Did in 2018
This is a more personal post than I usually write, and it was prompted by several people asking what I had been up to lately. It turns out that it is somewhat of a story. It is a long story too.
Since the beginning of 2018 day to day management of PowerDNS is now truly in the hands of professionals. I’m very proud to report that PowerDNS has not only survived the transition to Open-Xchange but is actually thriving & has achieved sufficient revenues & talented staff that we’ve solved the famous open source “what if Bert gets hit by a bus” problem.
Liveblog: a Mars landing watch party with school kids
Yesterday, NASA landed its InSight mission on Mars, and it all worked! The landing happened between 8 and 9PM local time, but I wanted to share the excitement with my kids’ classmates from school (aged between around 9 and 10), so I needed something that worked remotely.
NASA provided a wonderful webcast in English, and although many children here in The Netherlands can follow that, I expected the stream to need more narration for the kids to truly experience the excitement of landing on another planet.
A Philosophy of Software Design
John Ousterhout, of TCL fame, has written a book that is as small (literally) as it is important. Weighing in at 178 none too big pages, it takes us on an inspired trip through what John has learned over the decades.
There is no shortage of thought on programming. There is also no shortage of people doing programming. What is rare however is a compendium of mature insights from someone that clearly still is into programming.
On Linus Torvalds, technical & corporate communications
Linus Torvalds has long been one of my heroes. The invention of Linux & the subsequent development of Git were technical and organizational miracles. You could fill a book simply by quoting examples of Linus dissecting technical problems to their components and making it obvious what should happen.
However, over the past decade, Linus’ communication style has degraded from ‘Finnish style robust’ to needlessly hurtful screeds, tearing into people who did not deserve that.
Modern C++ for C Programmers: Part 6
In part 5 we discussed smart pointers, placement new and the powerful move constructor. As you may have gathered by now, parts 1 through 5 were a pitch to sell modern C++ to existing C specialists. To do so, I tried to show the best and most immediately useful parts of C++.
Note: part 1 is here.
As noted earlier, no language is perfect, and not all features of C++ are as good or as spectacular.
Should C Programmers learn C++, Go or Rust?
I recently wrote a series of posts called ‘Modern C++ for C Programmers’. I mentioned in the introduction: “I hope to convince C programmers to give ‘2017 era C++’ (which is entirely unlike 2003 C++) another good look. (…) My goal is that when you go look for a new language to learn (say, Go or Rust), you will hopefully consider modern C++ as well.”
Over the weeks as I posted new parts, I was blown away by the interest.
Modern C++ for C Programmers: introduction
2018 is an exciting time to be a programmer, with so many good “full service” programming languages to choose from: C, C++ 2017, Go, Python, Rust and who knows Swift too. Programming languages are complicated beasts - even the simplest languages have specifications that run (or would run) in the hundreds of pages, and once you include everything, no serious language is likely to clock in under a thousand.
With this comes the fact that every programming language has good parts, and frequently even more bad parts.
Modern C++ for C Programmers: Part 5
Welcome back! In part 4 we went over the nitty-gritty of lambdas and how to store them, we explored the relation between the various C++ algorithms and containers, plus we took a stroll through some non-standard containers with exceptional capabilities.
Note: part 1 is here.
In this probably final part 5, we’ll be going over some of the most powerful stuff in modern C++: “perfect” reference counting and the concept of std::move.
Modern C++ for C Programmers: Part 4
Welcome back! In part 3 I discussed classes, polymorphism, references and templates, and finally built a source indexer out of basic containers that achieves 60MB/s indexing speed.
In this part we continue with further C++ features that you can use to spice up your code ’line by line’, without immediately having to use all 1400 pages of ‘The C++ Programming Language’. There is frequent reference to the indexing example from part 3 so you may want to make sure you know what that is about.
Werving nieuwe collega's: niet zo moeilijk, toch gaat het fout
Welkom! Veel bedrijven en scholen in mijn omgeving worstelen op dit moment met het vinden van personeel. Sinds 1999 neem ik mensen aan en help ik bij werving, voor mijn eigen bedrijf & dat van anderen, maar ook voor scholen en instellingen. En als ik eerlijk ben, ik ben er inmiddels best goed in. In ieder geval ben ik onvoorstelbaar trots op de uitstekende mensen die ik heb kunnen overtuigen bij me te werken!
Modern C++ for C Programmers: Part 3
Welcome back! In part 2 I discussed basic classes, threading, atomic operations, smart pointers, resource acquisition and (very briefly) namespaces.
In this part we continue with further C++ features that you can use to spice up your code ’line by line’, without immediately having to use all 1400 pages of ‘The C++ Programming Language’.
Various code samples discussed here can be found on GitHub.
If you have any favorite things you’d like to see discussed or questions, please hit me up on @bert_hu_bert or bert@hubertnet.
Modern C++ for C programmers: part 2
Welcome back! In part 1 I discussed how std::string and std::vector interoperate with C, including with the C standard library qsort call. We also discovered that the C++ std::sort is 40% faster than C qsort because C++ is able to inline the comparison function.
In this part we continue with further C++ features that you can use to spice up your code ’line by line’, without immediately having to use all 1400 pages of ‘The C++ Programming Language’.
Modern C++ for C Programmers: part 1
Welcome to part 1 of Modern C++ for C Programmers, please see the introduction for the goals and context of this series.
In this part we start with C++ features that you can use to spice up your code ’line by line’, without immediately having to use all 1400 pages of ‘The C++ Programming Language’.
Various code samples discussed here can be found on GitHub.
Relation between C and C++ C and C++ are actually very close relatives, to the point that many compilers have unified infrastructure for both languages.
Under-prepared Meetings
Ahhh.. meetings. The one old school company thing that survives in this agile, open-office, ‘remote first’, nomadic worker world. And it is easy to see why: the ‘meeting’ is the last guaranteed way to get everyone to pay attention for an hour, or at least, pretend to. It still is rare for people to fake attending two meetings at the same time in any case.
The late great Andrew S. Grove, long time CEO of Intel and overall hero engineer, wrote the massively important book High Output Management.
Spectre & Meltdown: tapping into the CPU's subconscious thoughts
Comments are very welcome on bert@hubertnet.nl or @bert_hu_bert. Update: several constructive remarks have been used to improve this text. Thanks!
In this post I will attempt to fully explain the Spectre and Meltdown vulnerabilities in an accessible way. I decided to write it up after I realised it took me more than a day to figure it out, even though I’ve been doing security related stuff on CPUs for 20 years.
Kolmo
Welcome to Kolmo There are three avenues to learn about Kolmo (GitHub). There are two Youtube videos, one from the most excellent NLNOG 2017, the other from the equally excellent UKNOF 38. These videos explain a lot of the the history and the ‘why’ behind Kolmo.
There is also the kolmo.org website, which is ‘self-hosted’ by the ws Kolmo-powered webserver.
Finally, there is this post, in which I focus on what Kolmo actually does, without spending much time on the ‘why’ or the history.
Some brief notes on making ethernet cables
Some brief notes on making ethernet cables With thanks to the most excellent NLNOG for a lot of mostly correct advice!
Friends will tell you “crimping” ethernet cables is easy. Most of your friends either have overly rosy memories, or have practiced on 200 cables before telling you it is now easy. It is not easy.
This page is for if you have a few extra euros/dollars/coins to spare, and don’t want to spend rare hours of concentrated effort to crimp an ethernet cable using unfamiliar equipment and supplies.
Bol Com Vacature
Onlangs vond ik via LinkedIn een advertentie voor de vacature ‘Senior Category Manager Domestic Appliances’ bij bol.com. Hierin stond zoveel wartaal dat ik het de moeite vond een ‘best of’ selectie te delen op Facebook. Daar vond men het ook erg grappig.
Desondanks is het de moeite waard de vacature te decoderen: wat staat hier nou eigenlijk? Of exacter, wat bedoelen deze mensen. Komt ie.
Update: Inhoudelijke reactie van bol.com in De Telegraaf
Dna the Code of Life
DNA: The Code of Life At the most magical SHA2017 gathering I gave two presentations, “DNA: The Code of Life” and the followup, “DNA: More greatest hits” (slides). The first presentation was recorded by the wonderful CCC C3VOC streaming crew, the second one by my friend Bart Smit (who is also wonderful). Without making this post too long, I want to thank everyone who helped me do this presentation — a lot of people contributed time, advice, recording abilities, great questions and enthusiasm.
Talking to Technical People
(Don’t) drop the hint: communicating with technical people This post is a subset of the presentation “Escaping the data center — tales from a recovering manager”. Video, slides.
When we communicate at the office, we frequently do not directly say what we mean. A common conversation might go like this “Hey John, we did a survey and it turns out people can’t find what they are looking for on our website”.