D

Damien Katz

damienkatz.net · Personal blog · on HN since 2007

Damien Katz, creator of CouchDB, writes about Erlang, error handling, C, Rust, and his experience building databases and search engines.

What HN saysHN commenters call his Erlang critique accurate, recommend his error-handling article, and link his Lotus Notes formula engine rewrite as a good read.
71HN people shared it
29linked it in comments
60stories submitted
2.3Kstory points
6 years agolast shared
2007people per year2026

Most-shared posts

  1. 1
    What Sucks About Erlang (2008)
    10 people · 220 points · first shared 2008 · 103 comments on HN
  2. 2
    Damien Katz: Lotus Notes Formula Engine Rewrite
    8 people · 41 points · first shared 2007 · discussion on HN
  3. 3
  4. 4
    How not to Pitch To Y Combinator (2006)
    5 people · 112 points · first shared 2008 · 22 comments on HN
  5. 5
    The Future of CouchDB
    4 people · 247 points · first shared 2012 · 91 comments on HN
  6. 6
    The Unreasonable Effectiveness of C
    3 people · 716 points · first shared 2013 · 384 comments on HN
  7. 7
    Damien Katz: New Gig
    3 people · 12 points · first shared 2008 · 2 comments on HN
  8. 8
  9. 9
    Dynamo Systems Work Too Hard
    2 people · 78 points · first shared 2013 · 27 comments on HN
  10. 10
    Signs You're a Crappy Programmer (and don't know it)
    2 people · 44 points · first shared 2007 · 65 comments on HN
  11. 11
    Human, After All
    2 people · 10 points · first shared 2013 · discussion on HN
  12. 12
    "You're a Woz. You need a Jobs."
    2 people · 8 points · first shared 2007 · 9 comments on HN
  13. 13
    Damien Katz is starting to get pissed at Erlang
    2 people · 3 points · first shared 2007 · discussion on HN
  14. 14
    Tank Man
    2 people · 1 points · first shared 2014 · discussion on HN
  15. 15
    Follow up to "The Unreasonable Effectiveness of C"
    1 people · 201 points · first shared 2013 · 150 comments on HN

What HN people wrote when they linked it

jasim · 2016-06-08
These are attributes that everyone can, on honest personal judgement, can mistake to possessing themselves to varying degrees. But it might be a useful list to read through when stuck at a problem that is simply not giving way. Unless we have the chance to learn from and be coached directly by a master, what would be helpful is narratives on how they think and solve problems. The best I have so far come across in a book is "Coders At Work". https://github.com/aosabook/500lines promises to be another. Rich Hickey did great service by talking pragmatically about the meta aspects of programming through Hammock Driven Development and Simple is not Easy. Dijkstra's and Alan Perlis' writing that has been gaining a resurgence in popularity is also of a similar ilk. http://damienkatz.net/2005/01/formula-engine-rewrite.html also is an intriguing story.
omh · 2012-12-05
Somewhat related: Damien Katz has a brilliant blog post describing his experiences rewriting the Lotus Notes formula engine, and dealing with the "bugs". http://damienkatz.net/2005/01/formula-engine-rewrite.html
barrym · 2011-08-21
I write Erlang every day and love it, but I have to agree with most of the points raised by http://damienkatz.net/2008/03/what_sucks_abou.html
acangiano · 2009-03-02
Damien jokes about this, but he wrote a great article about error handling: http://damienkatz.net/2006/04/error_code_vs_e.html
freax · 2008-04-14
> But how many days must later be spent debugging issues like this? Will this time spent debugging be counted against your productivity gains you attribute to Lisp? This is exactly the sort of problem Erlang has nailed down. http://damienkatz.net/2007/12/erlang_vm_crash.html : "So the Erlang VM died suddenly with a failed memory allocation. This is actually quite okay [...] However, the Erlang VM didn't restart automatically. Apparently we need to configure something for that to happen, only we can't figure out how to make it work. The documentation is either wrong, confusing or the feature is buggy. This is the kind of stuff we keep hitting in Erlang. It's fantastically productive for many tasks, but using some of the built-in libraries and features can be a huge time sink. (inets and xmerl immediately spring to mind)."
kkowalczyk · 2014-04-28
I write it fully acknowledging that programming language flamewars are pointless, but this article just shows that you don't even have to try hard to create a biased comparison. Here's the essential difference between Go and Erlang: Go gets most of the things right, Erlang gets way too much wrong. So what does Go gets right but Erlang doesn't: * Go is fast. Erlang isn't * Go has a non-surprising, mainstream syntax. You can pick it up in hours. Erlang - not so much. * Go has a great, consistent, modern, bug-free standard library. Erlang - not so much. * Go is good at strings. Erlang - not so much. * Go has the obvious data structures: structs and hash tables. Erlang - no. * Go is a general purpose language. Erlang was designed for a specific notion of fault tolerance - one that isn't actually needed or useful for 90% of the software but every program has to pay the costs * Go has shared memory. Yes, that's a feature. It allows things to go fast. Purity of not sharing state between threads sounds good in theory until you need concurrency and get bitten by the cost of awkwardness of having to copy values between concurrent processes So sure, if you ignore all the major faults of Erlang (http://damienkatz.net/2008/03/what_sucks_abou.html, http://www.unlimitednovelty.com/2011/07/trouble-with-erlang-or-erlang-… http://ferd.ca/an-open-letter-to-the-erlang-beginner-or-onlooker.html, http://sacharya.com/tag/erlang-sucks/) it compares very favorably to Go. You…
wallflower · 2009-07-01
In his personal, excellent talk (as the 1st commenter on Damien Katz's blog post wisely notes), Damien Katz shares and talks about quitting to do a startup when you are not young and single but older and responsible but still have that startup urge on simmer/low. Laura (his wife) and Damien's share their differing responses/perspectives on what the personal/family risks were in the comments on his blog post below: http://damienkatz.net/2009/02/couchdb_and_me.html#comments In the beginning... "Sell our house, live off the savings and build cool stuff... There were a lot of reasons not just money... The first was just educational - I had interests in a lot of areas. The first was, distributed systems. I wanted to know more about them. I wanted to know how to build them... It seems crazy but if you're going to go off and pursue a Master's degree - you're going to quit your job, you're going to have to pay your tuition - and there's no income - and the end of it you have a degree. An Education... It was about more family time. I had a beautiful one-year old and I didn't want to spend all my time at the office, working on somebody else's crap... I wanted to see what I could do... And this is the reason why my wife was interested. It would be an interesting story... No wants to be wrapped up in this consumerist lifestyle, where if you have money you spend it...It was a good thing it forced us to downsize... I wish I had sort of a vision... It wasn't like that - it was…
jchrisa · 2017-09-06
Dynamo is not exactly a performant or efficient model. It's the equivalent of pulling all the distributed systems guts out and handing them to the user to deal with. And the resulting toll is quantifiable: http://damienkatz.net/2013/05/dynamo_sure_works_hard.html
NoahTheDuke · 2017-05-29
His blog post about Noise, [Notes on Building Noise][0], was posted to /r/rust, and I found it to be well-written and entertaining. [0]: http://damienkatz.net/2017/05/23/notes-on-building-noise-a-json-search…
dahjelle · 2016-07-25
Perhaps you are thinking of when Damien Katz (the original author of CouchDB) left the CouchDB project for CouchBase [1] (from which he has also since moved on [2])? [1] http://damienkatz.net/2012/01/the_future_of_couchdb.html [2] http://damienkatz.net/2013/09/human_after_all.html
maxerickson · 2016-03-05
Damien Katz was rejected: http://damienkatz.net/2006/11/how_not_to_pitc.html Whether that counts for Couchbase is another question. (I guess it probably does)
616c · 2015-04-01
Maybe I am mistaken, but was Couchbase not forked by one of the original CouchDB developers, with hot paths of code rewritten in C and employing memcache to increase the speed? http://www.couchbase.com/couchbase-vs-couchdb http://damienkatz.net/2012/01/the_future_of_couchdb.html (An announcement from one of the CouchDB -> Couchbase developers) EDIT: I think I confused blog posts. That is a guy involved in Couchbase, no? I forget who but one of the other CouchDB only devs who worked with him was pissed and wrote a rantish piece. Too tired to find it now.
Agathos · 2015-01-02
It works! (n=1) "I used to go to the gym and pretend in my head I had already died, and it was 100 years into the future, and I was dreaming of some guy who wrote a database. I didn't know how the story ended yet, I hadn't gotten that far." -- Damien Katz, http://damienkatz.net/2014/10/tank_man.html
m_mueller · 2014-02-25
Counterexample: Damian Katz and how he did a rewrite on the Lotus compute engine[1]. I guess it depends. For 30k lines of code it should be possible for any good engineer. A browser is of course in another ballpark, but if you have a really good core team it should still be manageable. It also depends on whether you're willing to break things (Apple with OSX). [1]http://damienkatz.net/2005/01/formula-engine-rewrite.html
stan_rogers · 2013-09-01
The discussion around that time was interesting (though distributed around the blogosphere); Ned Batchelder had recently argued the opposite (and updated the argument specifically to take Joel's article into account)[0][1]. It was at about that same time that Damien Katz was becoming firmly convinced that Erlang and crash-only behaviour would be the way to go in designing CouchDB[2][3]. (Both Damien and Ned were at Iris/Lotus working on Notes and Domino, and I was a Domino dev at the time.) [0] http://nedbatchelder.com/blog/200310/joel_on_exceptions.html [1] http://nedbatchelder.com/text/exceptions-vs-status.html [2] http://damienkatz.net/2004/08/crash-only-software.html [3] http://damienkatz.net/2004/09/crash-only-software-revisited.html
troels · 2011-05-30
That was boring. I like Damien Katz' [epic piece about errors and exceptions](http://damienkatz.net/2006/04/error_code_vs_e.html) much better.
drstrangevibes · 2011-02-10
besides it being functional and process orientated, theres lots about erlang syntax, that is just cumbersome, unwieldy and unnecessary, the interested reader is refferred to http://damienkatz.net/2008/03/what_sucks_abou.html. To claim that stability is a facet of the syntax , is questionable given as it would imply that languages like reia http://reia-lang.org/ are less stable, which i would very much doubt. Also in terms of stability ive yet to hear of a jvm based project with 99.999% uptime. You seem to suggest that this is because all of the java programs out there are not written to the same standard, this clearly cant be true. Finally, I wait anxiously for the day that a single jvm can handle as many concurrent processes as a single erlang execution environment. This is all my opinion, but what you say doesnt really make sense to me.
bhickey · 2011-01-15
Is it Erlang’s semantics that really rub people the wrong way? ... after seeing O’Caml, Haskell, and Clojure before, Erlang feels a bit easier to get the hang of. Erlang’s semantics indeed throw people off, especially those who know a C-style language. I write in Haskell, I knew OCaml, Racket is a friend of mine. Erlang is no Clojure. The problem with Erlang is not one of semantics, it's one of syntax. I find the syntax of Erlang jarringly bad. Try this for a longer rant: http://damienkatz.net/2008/03/what_sucks_abou.html
moe · 2010-12-15
I'll stick with Damien Katz on this: Erlang is based originally on Prolog, a logic programming language that was briefly hot in the 80's. Surely you've seen other languages based on Prolog, right? No? Why not? Because Prolog sucks ass for building entire applications. But that hasn't deterred Erlang from stealing it's dynamite syntax. cf. http://damienkatz.net/2008/03/what_sucks_abou.html
chunkbot · 2010-11-11
Syntax is never really a problem. We do a lot of work in Erlang... Erlang is based originally on Prolog, a logic programming language that was briefly hot in the 80's. Surely you've seen other languages based on Prolog, right? No? Why not? Because Prolog sucks ass for building entire applications. But that hasn't deterred Erlang from stealing it's dynamite syntax. [source: http://damienkatz.net/2008/03/what_sucks_abou.html What Sucks About Erlang] In reality, syntax just fades away after ~5 minutes of real world usage. As Steve Jobs would say, it's not that big of a deal.
DanielRibeiro · 2010-10-23
They did. It is said on this very blog: http://damienkatz.net/2009/12/relaxed_inc.html : I, Jan, and Chris are building a startup around Apache CouchDB and Redpoint Ventures has invested $2 million. Pretty cool huh?
rms · 2009-12-11
Congrats Damien. For those keeping score at home, this may make Damien the most successful entrepreneur to be rejected from Y Combinator at the interview stage. http://damienkatz.net/2006/11/how_not_to_pitc.html
iheartmemcache · 2009-06-19
I'm writing some Django middleware that auto-appends this exact thing onto all 'non-local' URLs. Keep on the lookout! Also [url=http://damienkatz.net/2005/03/clicky_instantl_1.html] Damien Katz [/url] did a PoC (that works really well actually, albeit semi-dated) in 2005 of this concept.
vegashacker · 2008-04-22
Here's one that was successful, though not in the traditional sense: Damien Katz applied to YC with his Couch DB idea and got rejected (http://damienkatz.net/2006/11/how_not_to_pitc.html), but now he works for IBM and gets to do CouchDB full-time (http://damienkatz.net/2008/01/new_gig.html).
plinkplonk · 2008-04-22
" Damien Katz applied to YC with his Couch DB idea and got rejected (http://damienkatz.net/2006/11/how_not_to_pitc.html), " His blog entry on the YC rejection is dated 11th January 2006. The one on the IBM job is dated 1st january 2008. So Damien essentially took the rejection in his stride, didn't bother whining, and kept on hacking. Very impressive.
aston · 2008-02-12
Pretty old news. http://damienkatz.net/2008/01/new_gig.html, January 1st.
rdtsc · 2018-05-21
It's a 10 year old blog post from the creator of CouchDB who then later declared the project dead despite it already having a vibrant open source community with multiple users and contributors. Then went on to create another project that had a similar name but was a merge of a bunch of other technologies which lead to endless confusion years on after the fact. http://damienkatz.net/2012/01/the_future_of_couchdb.html Yes, of course the argument should stand on its own despite the author's other claims or blog posts, so let's review some claims: > Because Prolog sucks ass for building entire applications. There have been entire applications written in Prolog. Attacking syntax is is just silly. Had Prolog used statements and not expressions or ; instead of . I doubt we'd would have a seen a lot more or less applications in Prolog. > But that hasn't deterred Erlang from stealing it's dynamite syntax. The syntax is consistent. That's the point. It has relatively few syntax and semantic rules. It has strong types and behaves consistently, comparing say, with "this" in Javascript. js has semicolons but it behave inconsistently sometimes. You'd have to explain why {} + [] = 0 for example. Picking on js here since the author used js as an example of a "good" language. > editing code is much harder than conventional languages. Have not found this to be true. It is a bit harder. But not much harder and not a show stopper. You can't randomly copy and paste code and reorder…
kragen · 2011-03-30
I use the comma-first style in everything (in languages that have this problem) now that I know about it. I was also interested to see it with semicolons in Simon PJ's chapter in Beautiful Code. I just wish the character was something other than a comma! It looks so wrong in that position. BTW, your second example should be var variable , anotherVariable // preceding comma , thirdVariable ; Perl and Python don't have the trailing-comma problem in most contexts, but they do have a similar problem with some other infix operators. For example, I'm still not sure whether I should use it for strings: var myString = "This string is a bit too long to fit " + "comfortably on a single line, so I " + "have split it across three lines." ; The problem with this is that the first line looks like a standalone JS statement. Python requires you to wrap the whole thing in parens, which solves that problem: readMyString = ( "This string is a bit too long to fit " + "comfortably on a single line, so I " + "have split it across three lines." ); The other language besides JavaScript where I find it useful is SQL: create table text_editors ( name varchar , latest_version varchar , list_of_stupid_flaws blob ); I suspect that this approach would fix most of…

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close