Live data from Hacker News

D. J. Bernstein

aaronsw.com

61–70 of 121 posts

Re: D. J. Bernstein

#61
post #54

DJB's code is a lot of things, but when someone says "beautiful" is one of them, I start thinking about how I might quiz them to get them to prove that they've actually read it. Smarter coders than me have sat in rooms for nightlong studies of qmail and come to the conclusion that, while clever, the C code in qmail and djbdns has clearly been compiled down from some higher level language[1]. If that code is anything,…

Having so clear a vision of how your architecture should behave that you human-compile it into idiosyncratic code that looks generated seems to be a very good definition of beautiful code, no? Maybe he hasn't had time to write a book about the "code patterns" which he's using, but that's hardly something to hold a grudge about.

Re: D. J. Bernstein

#62
post #51
post #15

(read this message with a background of "arguing about the best programmer is anyway silly") djb is in no way the best programmer of the world, but he is a very smart programmer, and probably an even better mathematician. And now, my arguments about why he is not the best programmer. 1) djb software is not the most elegant software around at all. Actually trying to write high performance and bug free software his sty…

I question #3. Why is it admirable to play a role in the languages world? Shouldn't languages be a means to an end? If the end is good applications, DJB showed that you can produce good applications in C. It seems like a lot of the energy around languages is frivolous. It's more fun to play with language features than to attack a real-world problem like writing a mail server. As for #4, why does criticality matter? A…

#3: sure, in general terms. Not true in my opinion for the best programmer of the world. Naturally he is "the one" that can master programming so well that it must be able to drive even programming language designers into more expressive / productive languages. djb can never be the one as in his code is very rare to find high level abstractions.

as for #4 it's very admirable to write real world software, but the best programmers in the world, like Joy or RMS tend to write big systems that can be used by the other hackers in the world, because to write a new operating system, a C compiler that live for decades contributing even to the development of new operating systems (It's hard to imagine Linux without GCC in some way), or world class text editors (vi, emacs) is not something everybody can do, but only the best programmers in the world.

Re: D. J. Bernstein

#63
post #15

(read this message with a background of "arguing about the best programmer is anyway silly") djb is in no way the best programmer of the world, but he is a very smart programmer, and probably an even better mathematician. And now, my arguments about why he is not the best programmer. 1) djb software is not the most elegant software around at all. Actually trying to write high performance and bug free software his sty…

your points 2 and 3 directly conflict with each other. his software is "difficult" to configure because he does it in a non-standard way. individual files for options, installing everything in its own root directory, using /service for daemontools, etc.

he had these new ideas for software development, installation, and maintenance, so he implemented them and because they are different, people equate that with being difficult. he didn't like a lot of standard libraries, so a lot of his software uses his own routines (which has been extracted as libdjb - http://www.fefe.de/djb/) which is partially the reason for his impressive security record. i think you underestimate his impact on the unix software development community.

your fourth point is just wrong. a lot of ISPs rely on qmail and djbdns and to say that they wouldn't care if they just disappeared is just silly. sure there are alternatives, but so are there to linux and gcc.

Re: D. J. Bernstein

#64
post #61
post #54

DJB's code is a lot of things, but when someone says "beautiful" is one of them, I start thinking about how I might quiz them to get them to prove that they've actually read it. Smarter coders than me have sat in rooms for nightlong studies of qmail and come to the conclusion that, while clever, the C code in qmail and djbdns has clearly been compiled down from some higher level language[1]. If that code is anything,…

Having so clear a vision of how your architecture should behave that you human-compile it into idiosyncratic code that looks generated seems to be a very good definition of beautiful code, no? Maybe he hasn't had time to write a book about the "code patterns" which he's using, but that's hardly something to hold a grudge about.

If you write code that looks like it was generated with e.g. yacc, then you probably would have been better off writing it in yacc and bundling that as the source. There's nothing glamorous in being a human compiler. Other people will have to touch the code at some point.

I haven't read the qmail source (just some design docs about how the whole system fits together, which I found rather impressive), so I'm not talking specifically about that.

NB: Qmail's license wasn't public domain until 2007. (Also, damn, tptacek, you're fast! I deleted that part, since I'm talking about auto-generated code in general.)

Re: D. J. Bernstein

#66
post #61
post #54

DJB's code is a lot of things, but when someone says "beautiful" is one of them, I start thinking about how I might quiz them to get them to prove that they've actually read it. Smarter coders than me have sat in rooms for nightlong studies of qmail and come to the conclusion that, while clever, the C code in qmail and djbdns has clearly been compiled down from some higher level language[1]. If that code is anything,…

Having so clear a vision of how your architecture should behave that you human-compile it into idiosyncratic code that looks generated seems to be a very good definition of beautiful code, no? Maybe he hasn't had time to write a book about the "code patterns" which he's using, but that's hardly something to hold a grudge about.

Especially if you're a security person, I think it's uncontroversial to say that the design is beautiful. It's not only an elegant design, but it is the first major piece of systems code to take that design approach. To put it differently: most of major systems programs that have been proven secure in the last 10 years owe their design to qmail.

But that has nothing to do with the code, which is not only epsilon from assembly (Bernstein fully embraces the notion of writing code in high-level assembly), but also clever and concise almost to a fault.

As someone who ran qmail since it was originally released in beta, I also remember vividly Bernstein's original idea about configuration, which is that "configuring" your mail server with C code was more reasonable than learning another programming language (Sendmail "cf"). Which implies that a lot of the code in the interesting parts of qmail are less about design, and more about encoding mail routing policy as C code.

Re: D. J. Bernstein

#67
post #61

Earlier quoted context omitted.

Having so clear a vision of how your architecture should behave that you human-compile it into idiosyncratic code that looks generated seems to be a very good definition of beautiful code, no? Maybe he hasn't had time to write a book about the "code patterns" which he's using, but that's hardly something to hold a grudge about.

If you write code that looks like it was generated with e.g. yacc, then you probably would have been better off writing it in yacc and bundling that as the source. There's nothing glamorous in being a human compiler. Other people will have to touch the code at some point. I haven't read the qmail source (just some design docs about how the whole system fits together, which I found rather impressive), so I'm not talki…

Which he doesn't; qmail is public domain.

(I'm in 100% full-on maximum overdrive procrastination mode today, since what I need to get done is to script and record a screencast of my app, and I'm frozen up about where to start with it. Sorry for being so fast to respond).

Re: D. J. Bernstein

#68
post #57

Earlier quoted context omitted.

As someone who has hacked mail servers, written DNS servers, and come within 100 miles of typesetting, I'm going to throw in my vote that TeX addresses a much harder problem than qmail.

No contest there, but qmail is far from 'trivial'. If you're going to compare qmail to something else though I think it should be compared to sendmail (or postfix for that matter), not to TeX. Personally I think djb is a great coder, but there are quite a few of those around. Programming is not a single-valued enterprise anyway, so best is a very hard to measure quantity, as good as meaningless. But I know 'bad' when…

The algorithms and pure theoretical CS in qmail actually is trivial. From what I remember, pretty much the only genuinely interesting thing in it is how he implemented his hash table.

From a systems programming perspective, qmail is not only nontrivial, but actually groundbreaking. His allocator design, the way he architected his libc replacement, the extent to which he takes advantage of bare-metal Unix programming (look at his queue notification mechanism), it's all really cool stuff.

But there's a big difference between theoretical CS and systems programming, and the parent commenter is right to point out that TeX is more complicated from a CS perspective than qmail is.

Re: D. J. Bernstein

#69
post #28

Bill Gates

I think you're being a little unfairly downvoted. I don't think anyone would claim Gates should win prizes for minimal or beautiful code.

But he certainly did a lot of good programming.

In any hall of fame where we mention Linus, Guido and Bernstein we probably do need to mention Gates as well.

Re: D. J. Bernstein

#70
post #46

Earlier quoted context omitted.

> I've done it many times before manually and it takes around ten hours to do it. This is exactly why I've been using Postfix (or, preferably, get Google or someone else to handle it for me). Easy to install is a feature, and a pretty close cousin of the "shipping" feature. DJBs software is interesting mostly from an academic perspective. In the real world, it's hard to justify using something else, when apt-get gets…

I haven't used qmail, but I use djbdns. The complete installation, possibly including a few patches, is less work than figuring out how to set up BIND's configuration. It's available in Debian from apt-get. It's good that it's so easy to figure out how to use, because I touch it less than once a year, so I've completely forgotten about it. That's great software.

It is hard to imagine the serious, rational, objective argument that could exist for running BIND instead of djbdns, if those are your two choices. There are viable alternatives to qmail (Postfix and Exchange), but there aren't really viable alternatives for djbdns, and djbdns is less opinionated than qmail is.
Post reply on HN