Bert Hubert
๐ค SpeakerAppearances Over Time
Podcast Appearances
If you put an organizational barrier between dealing with the mess and writing the mess, then it maybe becomes a lot more attractive to try this new style of programming that is like impenetrable.
If you put an organizational barrier between dealing with the mess and writing the mess, then it maybe becomes a lot more attractive to try this new style of programming that is like impenetrable.
You never had the opportunity to find out.
You never had the opportunity to find out.
Yeah. And sometimes I write code that is so embarrassingly simple. And I'm like, it cannot possibly be enough. And then like five years later, you go like, well, apparently it was simple enough. Apparently it was good enough. And there's also this anticipatory thing.
Yeah. And sometimes I write code that is so embarrassingly simple. And I'm like, it cannot possibly be enough. And then like five years later, you go like, well, apparently it was simple enough. Apparently it was good enough. And there's also this anticipatory thing.
So for my parliamentary monitoring system, I have a very interesting situation that in parliament are like seven or eight different kinds of important entities. There are meetings, there are documents, there are appointments. And seven or eight is that the tricky thing about that is, can you write a useful abstraction that is useful even when you only have seven sort of different things?
So for my parliamentary monitoring system, I have a very interesting situation that in parliament are like seven or eight different kinds of important entities. There are meetings, there are documents, there are appointments. And seven or eight is that the tricky thing about that is, can you write a useful abstraction that is useful even when you only have seven sort of different things?
And you could write this lovely generic solution where you could have thousands of different kinds of entities in there. But it would be quite complicated. But because there are only seven or eight entities, it is not always necessary to build this sort of generic solution. But it does feel a little bit bad if you have a switch statement with eight kinds of categories in there.
And you could write this lovely generic solution where you could have thousands of different kinds of entities in there. But it would be quite complicated. But because there are only seven or eight entities, it is not always necessary to build this sort of generic solution. But it does feel a little bit bad if you have a switch statement with eight kinds of categories in there.
It feels a little bit like, no, I should have built an object and inherit from that and made it all generic. And that's also the one thing I see that people are sort of anticipating huge complexity later on, but that might never happen. You might never get to that point where you needed a generic customer service class handler factory.
It feels a little bit like, no, I should have built an object and inherit from that and made it all generic. And that's also the one thing I see that people are sort of anticipating huge complexity later on, but that might never happen. You might never get to that point where you needed a generic customer service class handler factory.
Yeah, so there's one sort of telling story. So I also wrote PowerDNS, which is a name server. And we started PowerDNS in 1999. And DNS evolved over time and it added cryptography to it in DNSSEC. And initially, PowerDNS started out like really simple. And then the world turned out to be complicated and we added more and more complexity to support this cryptography in there.
Yeah, so there's one sort of telling story. So I also wrote PowerDNS, which is a name server. And we started PowerDNS in 1999. And DNS evolved over time and it added cryptography to it in DNSSEC. And initially, PowerDNS started out like really simple. And then the world turned out to be complicated and we added more and more complexity to support this cryptography in there.
And it was very difficult because DNS itself, for example, is highly case insensitive. Case really doesn't matter until you start doing hashing and encryption because that sort of, yeah, it cares about case. And usually you sort of end up then, as you described, you end up with a situation that it's just a mess.
And it was very difficult because DNS itself, for example, is highly case insensitive. Case really doesn't matter until you start doing hashing and encryption because that sort of, yeah, it cares about case. And usually you sort of end up then, as you described, you end up with a situation that it's just a mess.
And it's very tricky as an organization to allow yourself to say, no, we're going to clean up the mess. So we're not going to do this big, hairy, we're not going to do version two syndrome where we say, no, we're going to make the best version ever that will be so generic that it deals with everything because it doesn't work.
And it's very tricky as an organization to allow yourself to say, no, we're going to clean up the mess. So we're not going to do this big, hairy, we're not going to do version two syndrome where we say, no, we're going to make the best version ever that will be so generic that it deals with everything because it doesn't work.
But what does work is actually sitting still and say, look, we're going from version two of the software to version three, and we're going to give ourselves a whole year to just do spring cleaning, house cleaning. And we're going to make the things that were too complicated, we're going to make them simple again.
But what does work is actually sitting still and say, look, we're going from version two of the software to version three, and we're going to give ourselves a whole year to just do spring cleaning, house cleaning. And we're going to make the things that were too complicated, we're going to make them simple again.