9 ms·
D. J. Bernstein
- jacquesm 17y agoI think he would have my vote, but there are some other 'great' programmers out there. how about this for minimalism: http://cr.yp.to/ http://cr.yp.to/
- tzury 17y agoman, this is the man! http://cr.yp.to/djb.html http://cr.yp.to/djb.html
- owinebarger 17y agoDespite the purple prose, I generally agree with Aaron's sentiments about great programming ("the best", I can't say, but definitely "great"). He is, however, also very rude, at least in his online persona. Having "a forceful, uncompromising vision" is an orthogonal issue to how you choose to communicate.
- idlewords 17y agoI can't read anything Aaron writes without my mind flying back to his seminal essay on the unanticipated softness of the human breast: http://them.ws/post/1736/testing_something http://them.ws/post/1736/testing_something
- ErrantX 17y agoThanks for that. Not come across it before and I cant remember a blog post that actually touched me so deeply!
- niels 17y agoNot to forget daemontools.
- dustingetz 17y agoI was surprised and looked him up on wikipedia -- he did indeed write daemontools.
- randallsquared 17y agodaemontools and tinydns are far, far better examples of brilliance than qmail, in my opinion. Especially tinydns comes far closer to meeting modern needs than qmail, for its domain. I'll never go back to the horror of bind config files.
- bd 17y agoNot to be confused with Daemon Tools :) http://en.wikipedia.org/wiki/Daemontools http://en.wikipedia.org/wiki/Daemontools http://en.wikipedia.org/wiki/Daemon_Tools http://en.wikipedia.org/wiki/Daemon_Tools
- whirlycott1 17y agoI have dealt with qmail for ten years. It is a complete joy once you have it up and running. You literally can stop thinking about it because it always works. However, getting it up and running requires adding in antispam, antivirus, virtual mailboxes, some additional protective and administrative patches, some extra stuff for SMTP-AUTH, SSL/TLS, reporting, and perhaps a few more patches for fun. Patches, you say? Well, I'm glad you really like source code, because that's exactly what you'll be dealing with to get all of this up and running. I've done it many times before manually and it takes around ten hours to do it. While Aaron's point is that djb's code, vision and discipline are possibly unmatched (I concur on all counts), the software (principally qmail) is antiquated in the sense that nobody needs just that one part in order to run a semi-modern email system. So, as you start downloading the .tgz for qmail and begin studying it like good campers, remember that this wonderful code is, by itself, not up to the job that it purports to serve. -- Lots of love, Someone who currently runs two qmail systems and will never go to the trouble of setting one up again
- andreyf 17y agoIf code I write is hard to deploy to your system, I don't think my code can be to blame. Rather, it's the fault of the system/language in which we are working.
- astine 17y agoI hate this attitude. If your code targets my system, I should be able to install it without editing it.
- KirinDave 17y agoAmen. If no one can use your code, it doesn't matter how beautiful, well-thought-out, or well-written it is. Software exists for the purpose of being executed. If your project cannot be deployed with a reasonable amount of effort, it's worse than bad software, it's a waste of time.
- 17y ago
- wallflower 17y agoBill Joy "As a UC Berkeley graduate student, Joy worked for Fabry's Computer Systems Research Group CSRG in managing the BSD support and rollout where many claim he was largely responsible for managing the authorship of BSD UNIX, from which sprang many modern forms of UNIX, including FreeBSD, NetBSD, and OpenBSD. Apple Inc. has based much of the Mac OS X kernel and OS Services on the BSD technology. Some of his most notable contributions were the vi editor, NFS, and csh. Joy's prowess as a computer programmer is legendary, with an oft-told anecdote that he wrote the vi editor in a weekend. Joy denies this assertion.[2]" http://en.wikipedia.org/wiki/Bill_Joy http://en.wikipedia.org/wiki/Bill_Joy
- rit 17y agoExactly my thought when I read this. IIRC he wrote one of the early TCP/IP implementations as well, which a lot of OS' still use a derivative of. And dns and mail rely upon. The wikipedia article links specifically to a sadly abandoned project that Salon had years ago to document the free software revolution. http://dir.salon.com/story/tech/fsp/2000/05/16/chapter_2_part_one/index.html http://dir.salon.com/story/tech/fsp/2000/05/16/chapter_2_par... I've always remembered it and wished they'd finished but it sadly seems to have stopped getting new entries in '01: http://dir.salon.com/topics/free_software_project/ http://dir.salon.com/topics/free_software_project/
- nailer 17y agoI should add NetApp's internal OS is also BSD based - ironic since NetApp and Sun have been at each other's throats for years.
- tzury 17y agoLinus, RMS, Guido, and others. I can think of so many other names. You know what, even John Resig's jQuery software is served by millions of servers, running in billions of web pages every day. This all "THE BEST" thing, is somehow pointless IMO.
- mikegioia 17y agoI have to agree with you on JQuery. It runs on multiple browsers too and performs exceptionally well. It's gotta be one of my all time favorite pieces of software.
- chaosmachine 17y agoIt's hard to overstate how great jQuery is. I'm always surprised at how easy it makes things. I remember the bad old days, spending hours researching the different ways to reference dom objects, trying to find a method that worked in more than one browser. With jQuery, you really can just code it once, and it works everywhere.
- mpk 17y agoNo offense, but the same can be said of Dojo, Prototype, Mootools, etc. They all are rock solid cross-browser JS toolkits.
- davidw 17y agoIt really does seem a bit pointless. Why not just say "djb writes great, beautiful code - some of the best I have ever seen" and leave it at that?
- rortian 17y agoI agree, but aaronsw must come at an issue as a raging partisan. I know that in economics, philosophy, politics, and apparently best programmer ever!!!, he always comes at the issue with a deeply contentious point of view from an entrenched idealogical camp. It's kind of a shame because of the the advantages of being young is being able to approach a field without having to take sides. Meaningful dialog and inquiry void of motivated reasoning are beautiful things. Unfortunately, some people need an argument.
- pilif 17y agoThis is slightly off-topic as it's not about djb, but about qmail. Still: I have some experience with qmail. While I agree that it's generally very nice and certainly incredibly bug free, that quality comes at a price: Lack of features. The moment you start adding stuff: Server-side filtering (like sieve), LMTP, virus checking, spam filtering, virtual users - all that stuff you need to run a modern mail server - you will have to patch qmail. And by manually patching your installation, you are picking up responsibility: Now that you are not running stock qmail, but something you patched and installed yourself, you will no longer be able to rely on your distribution for security fixes and you'll have to keep updated and repatch yourself. And while qmail is beautiful and bugfree, the same can not always be said for the additional patches, so you WILL be patching. If you get all the patches for the functionality you need to actually play together that is. If qmail solves your issue and you are prepared for this, then go with qmail. If you need a ton of functionality built-into your mailserver, probably go Exim and if you need good compromise between featureset, architecture and security, then you'll probably take postfix.
- tptacek 17y agoPlease avoid Exim. Even if you can't stomach qmail, which is an acquired taste, you don't have to compromise on security. Smart people can disagree about whether Postfix is _as_ secure as qmail, but none of them disagree that it is at least _very_ secure.
- mhd 17y agoWhat is this, the Hill Valley International Programming Tournament? People have arguments like this all the time in the sports sector, and at least there you can come up with all kinds of statistics and recordings, but what do you have for programmers? If they produced Open Source, you might have the end result of their work, but that would exclude a large part of the work force. And even then, what are your points of measurements? Just the amount of bugs? Total? Per year? Per line? Meh. And as a final, somewhat unrelated note: Which I have nothing against Mr. Bernstein himself, I've got a pretty low opinion of most djb fanboys I've encountered in the past...
- antirez 17y ago(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 style is the most procedural possible, with very little abstractions layers. 2) his software is well known to be uneasy to configure. There are qmail hackers around. When there are <name of a unix deamon>-hackers around it's a bad sign about the quality of the interface between the program and the rest of the system and the system administrator itself. 3) Djb played no role at all in the programming languages world. AFAIK he never suggested some new idea for programming languages or new directions that are now considered important. You can't be the best without being influential in the field. 4) Djb newer wrote big systems that were crucial for the programming world. Qmail and djbdns can disappear tomorrow and everything will be up and running anyway. GCC or the Linux Kernel are a different matter. I can continue, but I think 1+2+3+4 are already enough to deny the argument aaronsw is trying to push in the article.
- alec 17y ago"You can't be the best without being influential in the field." I think an appropriate analogy is judging an architect on the hammers he has improved instead of the buildings he has designed.
- antirez 17y agoI disagree, the buildings designed by Wright or Le Corbusier improved the field in many ways. They created a new architectonic system, it's like inventing a new programming language in some way.
- access_denied 17y agoaguing about the best programmer is a smart move when seen as an exercise to find out what it is that makes a programmer good.
- 17y ago
- techiferous 17y ago"One bug — one bug! — was found in qmail." While this is certainly impressive, the number of bugs is not a good metric for measuring the effectiveness of a programmer. A programmer is only as good as the business problems she solves. One bug in a life-critical application could be catastrophic. On the other hand, a programmer that makes sure their code is completely bug-free would not do well in a domain where time-to-market is critical and quality of service is not.
- ErrantX 17y agoIt's a lovely tribute to djb and you cant really fault it. Except to say "best" is such a subjective thing as to make it useless. There are many programmers deserving of a "hall of fame" entry.
- l0stman 17y ago> No other programmer has this kind of track record. Donald Knuth probably comes closest, but his diary about writing TeX (printed in Literate Programming) shows how he kept finding bugs for years and never expected to be finished, only to get closer and closer (thus the odd version numbering scheme). I don't want to be dismissive but I think TeX is more complex and uses non trivial algorithms. So it's like comparing an apple to an orange.
- jacquesm 17y agoAnybody that says an email server is 'non trivial' hasn't looked at the guts of one yet.
- tptacek 17y agoAs 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.
- jacquesm 17y agoNo 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 I see it :)
- tptacek 17y agoThe 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.
- rv77ax 17y agoDennis MacAlistair Ritchie & Kenneth Lane Thompson. thread closed.
- known 17y agoBill Gates
- deleted 17y ago[deleted]
- ErrantX 17y agoI 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.
- viraptor 17y agoAnd where can we find any of his programs to look at?...
- ErrantX 17y agoanything in the first few years of MS. Altair.BASIC
- viraptor 17y agoOf course. But I meant the source for which he could "win prizes for minimal or beautiful code". AFAIK none of it is legally available to anyone.
- ErrantX 17y ago> I don't think anyone would claim Gates should win prizes for minimal or beautiful code
- gjm11 17y agoI don't know whether it's legal, but http://www.interact-sw.co.uk/altair/index2.html http://www.interact-sw.co.uk/altair/index2.html has an annotated disassembly of Altair BASIC. I haven't given it more than the briefest glance myself, but allegedly there's some very nice stuff there. (Of course it's from a different era and no one outside deeply-embedded-land writes that sort of code any more other than for a twisted kind of fun.)
- allan_ 17y agoThis article is pathologically sick. Couldn't read it any more, to painful. qmail gives you pain, too. It is completly useless without applying patches, which are mostly of poor quality. And it misleads you to do most unperformant things around it. Like writing shellscripts which fork() like hell for every mail there is to process.
- kilowatt 17y agoI was with Aaron until > What other field combines all these arts? Language, math, art, design, function. Programming is clearly in a class of its own. And, when it comes to programmers, who even competes with djb? Who else has worked to realize these amazing possibilities? Who else even knows they are there? Is this satire?
- unalone 17y agoYeah, only slightly obnoxious. Nothing worse than somebody so relatively new to a field that they still think it objectively is better/cooler/more fulfilling than every other field.
- ecq 17y agothe best programmer is the person who have made the biggest difference in people's lives. it's not measured by the no. of lines of code, bugs,etc.
- capablanca 17y agoSo, Bill Gates.
- gjm11 17y agoBiggest positive difference.
- c00p3r 17y agoThere are several less known project with really passionate coding, especially http://nginx.net/ http://nginx.net/. postfix, sqlite and many other projects could be compared with qmail.
- mgrouchy 17y agowho cares?
- csmajorfive 17y agoI love djb and his tools but, as someone who hacked djbdns extensively for a research project, I think the project misses empathy for other programmers. It's hard to follow, poorly documented, and too clever sometimes. That said, if we judge code only on performance, then yeah it's rock solid.
- aaronsw 17y agoI much preferred the old title. Can a moderator put it back?
- mikeryan 17y agoI have a feeling that a large portion of the best programmers work in absolute obscurity. I worked for a long time with guys that wrote embedded software. Absolutely brilliant guys that never get their due because no one knows how they were.
- tptacek 17y agoDJB'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, it is idiosyncratic. [1] Having asked this question directly to DJB in person, I can say that I am at least convinced he wrote this stuff in C.
- andreyf 17y agoHaving 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.
- silentbicycle 17y agoIf 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.)
- tptacek 17y agoWhich 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).
- tptacek 17y ago
- deleted 17y ago[deleted]
- shawnps 17y agoCould someone clarify this for me, please? On this page: http://cr.yp.to/djbdns/intro-dns.html http://cr.yp.to/djbdns/intro-dns.html under the "Multiple Servers" section, he says "To protect against computer failure, there are actually several root servers, several .to servers, and two yp.to servers." I don't understand, is he saying there are only two DNS servers in the world that you can contact to resolve yp.to?
- aaronsw 17y agoYes, that's true for most domains. All the other servers have to cache responses from those two servers. (For the record, the two yp.to servers are currently djb's machines dancer and forcewall.)
- shawnps 17y agoIs there a way to find out for any given domain how many actual servers hand out responses to other DNS servers to hold in their caches?
- wmf 17y agoYou can use WHOIS or dig, e.g. $ dig yp.to ns ; <<>> DiG 9.4.3-P3 <<>> yp.to ns ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63068 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;yp.to. IN NS ;; ANSWER SECTION: yp.to. 184700 IN NS b.ns.yp.to. yp.to. 184700 IN NS f.ns.yp.to.
- bayareaguy 17y agodjb is also the author of one of my favorite database libraries: http://cr.yp.to/cdb.html http://cr.yp.to/cdb.html
- innoncent 17y agodjb wrote the code that won the EngineYard SHA1 challenge. His code was processing 800 million sha1 hashes per second. He wrote CUDA and C implementations. His sha1 implementation was 12 times faster than OpenSSL.