﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Ayende @ Rahien</title><link>http://ayende.com</link><description>Ayende @ Rahien</description><copyright>Copyright (C) Ayende Rahien  2004 - 2021 (c) 2026</copyright><ttl>60</ttl><item><title>Ayende Rahien commented on Reviewing NChord: A codebase that makes me twitch</title><description>Cali,
  
Yes, you are right.
  
Different requirements, different rules.
</description><link>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment16</link><guid>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment16</guid><pubDate>Mon, 13 Apr 2009 15:05:31 GMT</pubDate></item><item><title>CaliCoder commented on Reviewing NChord: A codebase that makes me twitch</title><description>Ayende, I'm not sure about the NChord project but the original Chord project objectives is to actually distribute the data and the keys.  O(1) is not an objective of Chord based lookup because it's not an objective of DHT.  I think, and correct me if I'm wrong, O(1) would require each node to know about all of the other node in the system... therefore requiring each node to contact every other node during a change of membership.  Chord limits the updates to something like a dozen RPCs for nodes entering and exiting the network.
</description><link>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment15</link><guid>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment15</guid><pubDate>Mon, 13 Apr 2009 06:53:48 GMT</pubDate></item><item><title>Ayende Rahien commented on Reviewing NChord: A codebase that makes me twitch</title><description>Observer,
  
O(X) is _really_ important when you are talking about distributed apps. Any call is _expensive_.
</description><link>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment14</link><guid>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment14</guid><pubDate>Wed, 08 Apr 2009 16:29:40 GMT</pubDate></item><item><title>Observer commented on Reviewing NChord: A codebase that makes me twitch</title><description>I prefer O(N) simply because it provides an orthogonal consistence approach to signatures. The consuming method can always just pull top and it makes looping constructs easier.
  
  
That said I'm not hardcore about it and will provide O(1) overloads for specific business rule uses.  Generic collections are memory efficient and the nominal allocation is more than made up for by predictable code that can be maintained by a wide range of skillsets.
  
  
BTW I'm not making an argument for using this codebase. Just responding to the general philosophy.
  
</description><link>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment13</link><guid>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment13</guid><pubDate>Wed, 08 Apr 2009 16:23:03 GMT</pubDate></item><item><title>Ayende Rahien commented on Reviewing NChord: A codebase that makes me twitch</title><description>Gavin,
  
I mean that given a key, I know which server to go to.
  
That can be done if I store the topology of the network on the client side.
</description><link>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment12</link><guid>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment12</guid><pubDate>Wed, 08 Apr 2009 16:22:49 GMT</pubDate></item><item><title>Gavin commented on Reviewing NChord: A codebase that makes me twitch</title><description>Hi, could you clarify what you mean when you say you want O(1)? Is this to do with the finding of a key's data or the lookup for a node in the DHT or is it a combination of both? I am still not clear on how this could always be O(1)?
</description><link>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment11</link><guid>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment11</guid><pubDate>Wed, 08 Apr 2009 09:36:10 GMT</pubDate></item><item><title>Ayende Rahien commented on Reviewing NChord: A codebase that makes me twitch</title><description>Andy,
  
I read the article with great interest. It is interesting, absolutely, but it has two problems that I don't like:
  
1) it is O(log N), whereas I want O(1) in most scenarios
  
2) there is no real handling for actually moving data between nodes as they come up and down, which is the most problematic scenario from my view point
</description><link>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment10</link><guid>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment10</guid><pubDate>Tue, 07 Apr 2009 13:25:18 GMT</pubDate></item><item><title>Ayende Rahien commented on Reviewing NChord: A codebase that makes me twitch</title><description>Arielr,
  
For NChord:
  
1) no unit tests
  
2) no other users that I know of.
  
3) I don't have confidence in the codebase, when I can find pretty severe bugs in cursory examination, it isn't going to cut it.
</description><link>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment9</link><guid>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment9</guid><pubDate>Tue, 07 Apr 2009 13:23:11 GMT</pubDate></item><item><title>Ayende Rahien commented on Reviewing NChord: A codebase that makes me twitch</title><description>@Rafal,
  
If I can't trust the code, I am not going to use it
</description><link>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment8</link><guid>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment8</guid><pubDate>Tue, 07 Apr 2009 13:18:26 GMT</pubDate></item><item><title>James McKay commented on Reviewing NChord: A codebase that makes me twitch</title><description>@Arielr: Unit tests don't necessarily guarantee that your code is bug free -- especially not when you're writing things like "catch (Exception ex)" -- which translates into English as "I don't care if this code doesn't do what it's supposed to do" or into unit-test-ese as [IgnoreAttribute].
</description><link>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment7</link><guid>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment7</guid><pubDate>Tue, 07 Apr 2009 12:10:30 GMT</pubDate></item><item><title>Andy Pook commented on Reviewing NChord: A codebase that makes me twitch</title><description>Disappointing that the code has "issues". So often the case with c# projects that are ported from other languages.
  
  
Still, my intent in pointing you at NChord was that Chord itself (
[http://pdos.csail.mit.edu/chord/](http://pdos.csail.mit.edu/chord/)) seems to have put a lot of thought into what you were trying to discover in your previous post on designing Rhino DHT. Namely how to deal with a DHT on a dynamic cluster (scaling, balancing, node failure etc)
  
See the paper at 
[http://pdos.csail.mit.edu/papers/chord:sigcomm01/](http://pdos.csail.mit.edu/papers/chord:sigcomm01/)</description><link>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment6</link><guid>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment6</guid><pubDate>Tue, 07 Apr 2009 11:38:21 GMT</pubDate></item><item><title>Arielr commented on Reviewing NChord: A codebase that makes me twitch</title><description>Yes, yes, but are there are other ways to cover yourself.
  
Are there unit tests which cover a large amount of hte code (or branches)?
  
Are there testimonials of other users?
  
Have you tried using it to see if it fits?
  
  
Oren, I agree, and I wouldn't write software like that, but basically - so what? This, in my mind, is another manifastation of the NIH syndrom, just with another set of more technical excuses.
</description><link>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment5</link><guid>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment5</guid><pubDate>Tue, 07 Apr 2009 10:53:42 GMT</pubDate></item><item><title>Stephen commented on Reviewing NChord: A codebase that makes me twitch</title><description>I think its pretty important to understand the software structure, things like above examples will make me worry about:
  
  
a) maintainability, is this going to be really tricky when I go 'out of the norm'?
  
b) reliability, are these design quirks going to cause me hard to track / remedy bugs?
</description><link>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment4</link><guid>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment4</guid><pubDate>Tue, 07 Apr 2009 08:46:19 GMT</pubDate></item><item><title>James McKay commented on Reviewing NChord: A codebase that makes me twitch</title><description>@Rafal: This is a third party library for highly scalable systems that we are talking about, not a personal to-do list. It's the kind of thing where the code base needs to meet a high standard, otherwise you're in for all sorts of problems.
  
  
That exception handling code looks particularly painful. When somebody's catching System.Exception without a clear and detailed explanation of why they are doing so, it shows that they are either sloppy coders or else pretty clueless.
</description><link>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment3</link><guid>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment3</guid><pubDate>Tue, 07 Apr 2009 08:36:41 GMT</pubDate></item><item><title>Rafal commented on Reviewing NChord: A codebase that makes me twitch</title><description>No matter if the code is beautiful or not as long as software works ok and you are interested in its usability and reliability, not internal structure. Remember this is someone's work given to you for free so if  it does its job even partially, dont complain. Remember, a bird in the hand is better than two in the bush.
</description><link>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment2</link><guid>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment2</guid><pubDate>Tue, 07 Apr 2009 07:43:34 GMT</pubDate></item><item><title>Thomas Eyde commented on Reviewing NChord: A codebase that makes me twitch</title><description>I had a similar experience with a popular, I think, open source cms. I couldn't even get the trunk version to compile, and that was all that were provided. I am donating my time to a non-profit in this case, and I don't want to waste it on getting this thing runable. That's a shame, really. The docs and samples are good, the codebase looks decent, and building a site on this also looks easy.
  
  
But not when the thing won't compile.
</description><link>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment1</link><guid>http://ayende.com/3935/reviewing-nchord-a-codebase-that-makes-me-twitch#comment1</guid><pubDate>Tue, 07 Apr 2009 07:25:11 GMT</pubDate></item></channel></rss>