<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Ayende @ Rahien</title><link>https://ayende.com/blog/</link><description>Ayende @ Rahien</description><copyright>Copyright (C) Ayende Rahien  2004 - 2017 (c) 2017</copyright><ttl>60</ttl><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ayende/coments" /><feedburner:info uri="ayende/coments" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Marcus Lager commented on Reviewing Resin: Part III</title><description>Multiple values for a field is something I've used very, very frequently in Lucene. It's a feature many aren't even aware of exists in Lucene. I think it's an awsome feature. I simplified the problem space just a tiny bit by excluding it from Resin. I regret that decision a little bit.

Going from a stream to a byte array and then back to a stream is just silly coding. It was written in a proof of concept state of mind. 

Even though I haven't taken the time for proper profiling in a while you can witness the amount of work GC has to put up withwhile writing just by watching task mgr's view of the CPU activity, which is a saw pattern going up and down, up and down. Lucene's CPU graph is smooth.

Many allocations hotspots are easily removed. In other places there is a need of a immutable structure, a char array. 

Very good good pointers again.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=O5n0yV8Uy5o:oA-O3nct9Do:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=O5n0yV8Uy5o:oA-O3nct9Do:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/O5n0yV8Uy5o" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/O5n0yV8Uy5o/reviewing-resin-part-iii</link><guid isPermaLink="false">https://ayende.com/blog/178947/reviewing-resin-part-iii#comment1</guid><pubDate>Fri, 14 Jul 2017 09:41:27 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178947/reviewing-resin-part-iii#comment1</feedburner:origLink></item><item><title>Oren Eini commented on Reviewing Resin: Part II</title><description>Marcus,
You might want to look at what it takes to handle time properly in the `Google TrueTime` paper.
It is _complex_ and hard.

Instead, you want to use something like `Snowflake` or `SequentialUuid` or something like that.

What we did was define a vector clock, so each node has its own incrementing value, and we tell them apart using node id.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=lNDIslmnRKs:kNyLf2q8E6c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=lNDIslmnRKs:kNyLf2q8E6c:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/lNDIslmnRKs" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/lNDIslmnRKs/reviewing-resin-part-ii</link><guid isPermaLink="false">https://ayende.com/blog/178946/reviewing-resin-part-ii#comment8</guid><pubDate>Wed, 12 Jul 2017 13:08:08 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178946/reviewing-resin-part-ii#comment8</feedburner:origLink></item><item><title>Oren Eini commented on Reviewing Resin: Part II</title><description>Marcus,
`Interlocked.Increment` is the way to go here.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=QATcwPyt0Lw:T_tDkYFHvpE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=QATcwPyt0Lw:T_tDkYFHvpE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/QATcwPyt0Lw" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/QATcwPyt0Lw/reviewing-resin-part-ii</link><guid isPermaLink="false">https://ayende.com/blog/178946/reviewing-resin-part-ii#comment7</guid><pubDate>Wed, 12 Jul 2017 13:04:34 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178946/reviewing-resin-part-ii#comment7</feedburner:origLink></item><item><title>Marcus Lager commented on Reviewing Resin: Part II</title><description>To resolve the Tick collision case one could use the same mechanisms as when resolving hash collisions. But then we are back to the other requirement, where Resin needs to be able to live in an abide by the rules of a distributed system.

To solve *that* one could synchronise the nodes' machine clocks with a time service. After that, is it still problematic in your view to use ticks as timestamps?&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=J1bJgLrRGRs:TTkNg_920pM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=J1bJgLrRGRs:TTkNg_920pM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/J1bJgLrRGRs" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/J1bJgLrRGRs/reviewing-resin-part-ii</link><guid isPermaLink="false">https://ayende.com/blog/178946/reviewing-resin-part-ii#comment6</guid><pubDate>Wed, 12 Jul 2017 12:58:58 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178946/reviewing-resin-part-ii#comment6</feedburner:origLink></item><item><title>Marcus Lager commented on Reviewing Resin: Part II</title><description>The popping of a number should be thread-safe is what I mean, to allow many write threads in parallel.

I'm going for Resin to either have support directly in the API for a distributed scenario or for it to be treated as a local DB in the way Elasticsearch uses a local db (Lucene) on all of its nodes.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=93YspI_EX6s:vFYLyNqsuYY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=93YspI_EX6s:vFYLyNqsuYY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/93YspI_EX6s" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/93YspI_EX6s/reviewing-resin-part-ii</link><guid isPermaLink="false">https://ayende.com/blog/178946/reviewing-resin-part-ii#comment5</guid><pubDate>Wed, 12 Jul 2017 12:43:33 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178946/reviewing-resin-part-ii#comment5</feedburner:origLink></item><item><title>Stephen Ward commented on Reviewing Resin: Part II</title><description>@Marcus

only thread-safe? is the db only supposed to be a single-node db?&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=UoBy3yKFt6Q:-zZOt2U21AI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=UoBy3yKFt6Q:-zZOt2U21AI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/UoBy3yKFt6Q" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/UoBy3yKFt6Q/reviewing-resin-part-ii</link><guid isPermaLink="false">https://ayende.com/blog/178946/reviewing-resin-part-ii#comment3</guid><pubDate>Wed, 12 Jul 2017 12:21:44 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178946/reviewing-resin-part-ii#comment3</feedburner:origLink></item><item><title>Marcus Lager commented on Reviewing Resin: Part II</title><description>The current scheme around Util.GetNextChronologicalFileId is indeed a big fat hack that will not do at all once pressure is on nor when in a distributed environment.

What I want is to pop a number from a monotonically increasing number series in a lock free but thread safe manner. The Ticks has played it's part as a stand-in. What's a really solid alternative?&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=-1sRim-4rN4:bVPWVvoIWVU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=-1sRim-4rN4:bVPWVvoIWVU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/-1sRim-4rN4" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/-1sRim-4rN4/reviewing-resin-part-ii</link><guid isPermaLink="false">https://ayende.com/blog/178946/reviewing-resin-part-ii#comment2</guid><pubDate>Wed, 12 Jul 2017 12:12:16 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178946/reviewing-resin-part-ii#comment2</feedburner:origLink></item><item><title>Marcus Lager commented on Reviewing Resin: Part II</title><description>Last time I profiled Lucene ~seven years ago there was nothing but string allocations. That and exceptions. When I was prototyping Resin I therefore figured I could afford to care little about those. Lambda's were a great way to move forward fast, to resolve  complicated matters swiftly.

I figure now it's time to zoom in on the algorithms and of course also the memory management.

Very good pointers.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=EU3BMN8yBpM:75IBlQsSJWQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=EU3BMN8yBpM:75IBlQsSJWQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/EU3BMN8yBpM" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/EU3BMN8yBpM/reviewing-resin-part-ii</link><guid isPermaLink="false">https://ayende.com/blog/178946/reviewing-resin-part-ii#comment1</guid><pubDate>Wed, 12 Jul 2017 10:38:04 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178946/reviewing-resin-part-ii#comment1</feedburner:origLink></item><item><title>Oren Eini commented on Reviewing Resin: Part I</title><description>Svick,
I haven't had the time to play properly with spans. The stack only nature is one of their advantages, but it does complicate things.
Might be something like: `bool MoveNext(string data, ref Span&lt;string&gt; token);`

And the idea is that you send an empty span the first time, then we use the token span as the state to know where to start on the next call.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=AAFXN48o5dg:iY2CIVArCNA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=AAFXN48o5dg:iY2CIVArCNA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/AAFXN48o5dg" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/AAFXN48o5dg/reviewing-resin-part-i</link><guid isPermaLink="false">https://ayende.com/blog/178945/reviewing-resin-part-i#comment7</guid><pubDate>Wed, 12 Jul 2017 05:58:13 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178945/reviewing-resin-part-i#comment7</feedburner:origLink></item><item><title>Marcus Lager commented on Reviewing Resin: Part I</title><description>That compare API call you make, I hadn't seen it before. I think I understand now why you would prefer to work with char buffers.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=m6hjggdzUC4:QnKMvqlvJE4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=m6hjggdzUC4:QnKMvqlvJE4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/m6hjggdzUC4" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/m6hjggdzUC4/reviewing-resin-part-i</link><guid isPermaLink="false">https://ayende.com/blog/178945/reviewing-resin-part-i#comment6</guid><pubDate>Wed, 12 Jul 2017 05:27:02 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178945/reviewing-resin-part-i#comment6</feedburner:origLink></item><item><title>Svick commented on Reviewing Resin: Part I</title><description>&gt; Until .NET Core 2.0 is out, I’m going to skip spans and just use direct tokens

How would you design the signature of the method with spans, considering their stack-only limitations?&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=K-eEjzJuuIM:Q2YmGrezH-c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=K-eEjzJuuIM:Q2YmGrezH-c:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/K-eEjzJuuIM" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/K-eEjzJuuIM/reviewing-resin-part-i</link><guid isPermaLink="false">https://ayende.com/blog/178945/reviewing-resin-part-i#comment5</guid><pubDate>Tue, 11 Jul 2017 21:34:27 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178945/reviewing-resin-part-i#comment5</feedburner:origLink></item><item><title>Oren Eini commented on Reviewing Resin: Part I</title><description>Remi,
The first version of RavenDB did a LOT of things in a highly unoptimized manner.
I was focused on getting things sort of working, I didn't even know what I'm supposed to look at compare to what I'm seeing today.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=XSEbouC5AaY:b3fZSAa_x6E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=XSEbouC5AaY:b3fZSAa_x6E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/XSEbouC5AaY" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/XSEbouC5AaY/reviewing-resin-part-i</link><guid isPermaLink="false">https://ayende.com/blog/178945/reviewing-resin-part-i#comment4</guid><pubDate>Tue, 11 Jul 2017 12:35:46 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178945/reviewing-resin-part-i#comment4</feedburner:origLink></item><item><title>Oren Eini commented on Reviewing Resin: Part I</title><description>Marcus,
Here you go:

```
List&lt;string&gt; stopWords = new List&lt;string&gt;();

public bool IsStopWord(string value, int offset, int len)
{
    foreach (var word in stopWords)
    {
        if (word.Length != len)
            continue;
        var cmp = string.Compare(value, offset, word, 0, len, StringComparison.OrdinalIgnoreCase);
        if (cmp == 0)
            return true;
    }
    return false;
}
```&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=4TDQjIwA7xU:kzaGyvUSRPs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=4TDQjIwA7xU:kzaGyvUSRPs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/4TDQjIwA7xU" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/4TDQjIwA7xU/reviewing-resin-part-i</link><guid isPermaLink="false">https://ayende.com/blog/178945/reviewing-resin-part-i#comment3</guid><pubDate>Tue, 11 Jul 2017 12:34:51 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178945/reviewing-resin-part-i#comment3</feedburner:origLink></item><item><title>Rémi BOURGAREL commented on Reviewing Resin: Part I</title><description>Did you think about this kind of optimizations when you first build RavenDB (even did you have all the knowledge for seing it) or you just applied the "premature optimization is a root of all devil" and optimized your codebase with the time ?&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=yyTM1v_r0mU:P3cby3ZeSCY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=yyTM1v_r0mU:P3cby3ZeSCY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/yyTM1v_r0mU" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/yyTM1v_r0mU/reviewing-resin-part-i</link><guid isPermaLink="false">https://ayende.com/blog/178945/reviewing-resin-part-i#comment2</guid><pubDate>Tue, 11 Jul 2017 11:39:20 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178945/reviewing-resin-part-i#comment2</feedburner:origLink></item><item><title>Marcus Lager commented on Reviewing Resin: Part I</title><description>*We have the IsStopword method that is now more complex, because it needs to do the check without allocating a string and while being efficient about it.*

Given the following restrictions:  
- a method with the signature bool IsStopWord(string value, int offset, int len)  
- a list of stopwords as a IEnumerable of string  
- new string alloc not allowed  
  
... I see no clear path towards a solid equals method

If stopwords were a IEnumerable of char arrays we could do SequenceEqual.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=nTwA40C8STA:kGEH8VFQ4EQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=nTwA40C8STA:kGEH8VFQ4EQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/nTwA40C8STA" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/nTwA40C8STA/reviewing-resin-part-i</link><guid isPermaLink="false">https://ayende.com/blog/178945/reviewing-resin-part-i#comment1</guid><pubDate>Tue, 11 Jul 2017 11:30:21 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178945/reviewing-resin-part-i#comment1</feedburner:origLink></item><item><title>Oren Eini commented on RavenDB 4.0: Securing the keys to the kingdom</title><description>Pop,
There are a few ways to do that. If you care about security, then you register the certificate in the store, apply permissions on who can get it, etc.
If you don't care, you just add the certificate to the application.

In this way, we are either exactly the same as passwords / api key (which you'll have to get to your app anyway) or more secure.

The idea here is that we leave the policy on how to manage it at the hands of the user.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=QnTBTGbySyo:dxT7SZzm884:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=QnTBTGbySyo:dxT7SZzm884:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/QnTBTGbySyo" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/QnTBTGbySyo/ravendb-4-0-securing-the-keys-to-the-kingdom</link><guid isPermaLink="false">https://ayende.com/blog/178977/ravendb-4-0-securing-the-keys-to-the-kingdom#comment7</guid><pubDate>Tue, 11 Jul 2017 07:51:43 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178977/ravendb-4-0-securing-the-keys-to-the-kingdom#comment7</feedburner:origLink></item><item><title>Pop Catalin commented on RavenDB 4.0: Securing the keys to the kingdom</title><description>@Stuart Bale, it's more complicated because you have to manage the certificate. 
The proper way is to install int in the store, then give access to the private key to the right account then retrieve it in the client and use it. 
If you simply bundle it with your client that's less security not more, it's a self authenticating client.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=W6dFR_5QuPA:GCfvwJ1tB50:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=W6dFR_5QuPA:GCfvwJ1tB50:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/W6dFR_5QuPA" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/W6dFR_5QuPA/ravendb-4-0-securing-the-keys-to-the-kingdom</link><guid isPermaLink="false">https://ayende.com/blog/178977/ravendb-4-0-securing-the-keys-to-the-kingdom#comment6</guid><pubDate>Tue, 11 Jul 2017 06:21:59 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178977/ravendb-4-0-securing-the-keys-to-the-kingdom#comment6</feedburner:origLink></item><item><title>Pop Catalin commented on RavenDB 4.0: Securing the keys to the kingdom</title><description>[note: this was accidentally removed by admin, reposting it]

1) Easy of use: Highly annoying. Creating a client cert, storing in the client somewhere, updating it, etc ... But then you'll want multiple clients with it's own cert and multiple environments, even more annoying.

2) Acceptability: Good for cluster management but for client users. I don't want to manage client certs ... ever. I've done it personally, but had enough of it, it's counter productive. You actually want users in your system not a list of certificates, if you have a list of certificates you'll need to map them to users somewhere else, and nobody will do it, people will start sharing and using the same certificate.

3) Security: Very high in principle, for clients depends on how good the client stores it's secret. It can be better than TLS + passwords if the users don't share the certificates too much.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=gDEi_O18NC8:GeSmAb1VYVI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=gDEi_O18NC8:GeSmAb1VYVI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/gDEi_O18NC8" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/gDEi_O18NC8/ravendb-4-0-securing-the-keys-to-the-kingdom</link><guid isPermaLink="false">https://ayende.com/blog/178977/ravendb-4-0-securing-the-keys-to-the-kingdom#comment5</guid><pubDate>Tue, 11 Jul 2017 06:04:23 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178977/ravendb-4-0-securing-the-keys-to-the-kingdom#comment5</feedburner:origLink></item><item><title>Oren Eini commented on RavenDB 4.0: Securing the keys to the kingdom</title><description>Pop,
1) Given that the admin can generate the certificate right there in the studio, and that the rest just becomes how to send it to the client app, I'm not seeing the difference.
Below is a cert, which you can treat as just a very long password.
I'm not sure that I'm following the reasoning here.

2) You generate a certificate per user. You don't need to go to a CA to do that, it is possible to do that in RavenDB directly. We also don't manage just the certificate. We identify the cert using its thumbprint, sure, but we are also giving a human readable name to it and apply permissions on that. So it should be convenient. 

3) Yeah, but password management it pretty much out of our hands on the client side.

```
MIIKgQIBAzCCCj0GCSqGSIb3DQEHAaCCCi4EggoqMIIKJjCCBg8GCSqGSIb3
DQEHAaCCBgAEggX8MIIF+DCCBfQGCyqGSIb3DQEMCgECoIIE/jCCBPowHAYK
KoZIhvcNAQwBAzAOBAgdGv3rkgtJogICB9AEggTYdP9Bu+zaZGtxKnK/vlUP
DfdbIzQcmdNp8tokEBVgyVrtNZ8xjAGGrGWdMoadxQJH3WdANz9Pg7Ghico4
0veAmbiA+dXn3GF9tVN2ZkI+QY8LBLw2EKNy7Vlv+M\n1GsGWQeU3yztfcLt
HgfrN7nOoOv4HA3sYCswXa/R3Xliq53XdsxZWhXCjbpTx2zE+an9Acr2smwW
18M66uIIxHEUKJZwUaZiQmEOqf9K3vEkp7UMKyEIvD94b2oTioaq4Dk23h8d
UfPcVw5L8qiaSzeJVH4AJacN9F20Y8DjyIRYMoIyZ1gIcbe1MAvSsEoEsSgK
cgREckda9fP/nZEMIXfWIBgVE7JbnnVWzso7ZLqhTQ1gjT535UAolCYG7KuJ
yQmJjaFSb5vHNkvOx42q179v/s\nBaoUoeXpU6JTGJE9n8gtVTnFicn932B4
tPkaP984bXVcCVB+XjZq83AANbA7/SR46CCuggVZC+8+uzYviGXhINJx61Wk
Yx4v5PN6f3K3tyYsI1yUoxTkQFRDaL8v1yh2AYjucwc48HeM2Fg0sVR5gQfe
+BBtjB9aBHOcQ4mii6f+mKYjbsVm+r6bBuMbtPjG3zZwK0CadmPSiGOULFYi
wp3lRC0p3rpCtRoEx/tME9lOW2ulEWTUa0WpsNzKYF7kgep7wgJOhPsNLVHe
DQ10aqjeI2\nospB1korPSC2P34wrUBonQ60HTA6YBGx460hOh+4et/HkncV
yarZazvUYilOr4Wb52/evN78lTcBEvSdxUeUk1H4ccSnsfyjKsj+wBQSRdzC
2CIt7kp9jn/XnHLpaE6g5U7njFleZN6VfJoIpzWxWY9DIbPMXLeM8vdPuPqu
DY8MdDV61SOkn89w2p7zlhHBY7XJbzMXtaJUAQ87uz6pq8GMAb3jTbSXvVd3
x0gR0oe6VhDjKBl57fEyH+Ym+FsfbyKRtQFI7jxlizg6pngomMn8N9\n0EYY
NqhiZ9LJsz7iVhrcgB61IIIejqHWAlwDeEL6F9vqPhrhdlPH/MfrL+skDyUV
EkxjqNVKtEr2P35aFXDTGaSCUawfDAf3OqPbsjEqSoRyiJUJunJAACGwriVf
0uVkEoWzpcbba+MW08lQ8jL0gJmRcjt1hlS/4tQJGfiVIgzyf9GxITzeIAoW
M+xrQT5ispDrEBox+RA1GlXBQSGzMjqg7qI2lxUSWoz6V5Fdpyq7Zj/cHRo6
kvvPzfWl+q0hjQpRfgWfSm0YU8q9Yg2G9aEkUs\n9mV/r/Uzodvdtqb+q0iZ
dVdrOfBKRVqPiNbk+TJ1G4Eav4SwN9BExfU79HYD2QBDWqYl1cDwQO+4/+u7
PiuO7PCePVyZ/UfzB81Z2/vAGSF/Ky20nSMHASp5XIbq32q+jlxH1X30gitA
0FSz0NW+ZwzXsd3V5WUGQA7Ef89yaI918zX6haGNnniXoL2pqQ7ntDqKjgI6
BY00Ywmgx1Edu2XeMfLwy0dTZ2oJyePfAbKOtaqqahG9u1OU5FeH2yvrQfFN
FjLSqSbx7DMbHy9ionUn+Y\nGq1ipml2wK4VnkS9J4/f4XptPkESNszoYOQ5
1xoRNyz+qcYrgJULG/qM6iqzhZOh4jKotPm63SbveQ6x1WM7T68FB4MQoMY9
rw5M+B1fOOHgi8rv1lbv+TwVSDGB4jANBgkrBgEEAYI3EQIxADATBgkqhkiG
9w0BCRUxBgQEAQAAADBdBgkqhkiG9w0BCRQxUB5OAHQAZQAtADgAOABjAGMA
NgBmAGEAMgAtAGYANAA1ADUALQA0ADAAYgA4AC0AOABlAGIAYQAtAGYANAA0
ADAANQ\nBlADYAYgA0ADYAMgAyMF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcg
BvAHMAbwBmAHQAIABTAG8AZgB0AHcAYQByAGUAIABLAGUAeQAgAFMAdABvAH
IAYQBnAGUAIABQAHIAbwB2AGkAZABlAHIwggQPBgkqhkiG9w0BBwagggQAMI
ID/AIBADCCA/UGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEDMA4ECOz1VG/SfZ
TGAgIH0ICCA8hSm+FeFKjWp69qGA1dftd3X1x6HfSQjeTvGmce\nJbFE73Jz
BOKXZ5HS5CfV4Dt4eLKYRn4QvAdf0aNfYIafZ3LdMcTCShMEHf2j7bk9BsPF
mQVTbOsFR6vZvsZj4hwy+gwfGyUITYNY/sSojix0ykKOKSOsrOeWkPnJjLj4
EaUIBhzVB2njqkXy4XikcAGOpqLNTbt/85bCar97q4eF+JJZ7CIxna9/xfYT
QIUFzow3xYqRMgh5hP3P8mc44Xn2fL4ta+0v7CtbcLLDdU9iyjxAN87POYlZ
H56pv0bS7fj4xO+LFymrIi6grJFpCrRDnz\nVGhegqXlwDRBOiu3+qpngsha
xlWu1DYnHEZ2FfFspxbn/xhkMun/m2mJTsfVmDYG6PITkPpE2/kVdVBFSIqO
3dJZbHREXNXmvkdAktVJk6rS4I5scNFQr1s1PhxKfZy1C6n6UNH7rw3jhfas
HJ/GhQ3a4oBZs+77IE9aD78LXnEP2250Oc1T93T13UEdkcg0ZYfKm+bzbJEq
idW52+FtZcKRkodZoddpRCelifNZmKtS4KafgZete+jWzX9kQ13rCu62iTjp
jN/5h0+u4sF5q2+UVC\neb8c/ujczzJ7QpqQwUgLmqs8Ws4qoUrSEQyfcx71
eppLKhNIET9mXaDzKBVD1zth9SoofJtGHrjEcns+TVO1AxY8EyxvTxT2Ou58
yNL+uT/z+eL5kU5roX+2MLTBG/uP2fkOINlZWMyVQkRNLm8UXkELoGOEoFSA
fiDFLwBFn9zbolXGo24hICig+/KfkNvQ0TgBq2p54hVbSJI7uqQhAyrpkk8f
Og53eiMoG/R2xSRT6R9MalG0y0O08xhyCHVpgvLtq9KdZDKSlR7Wj9occu4r
MO\nEYZ2eWUb30z9yF2scUF1nAAO+3pjmrhUVCZiZmqiCu17LCGz7gu3aCHP
fTJDzHRIEU6ph71vECwsynV68F9/itVJ0oLoXFG6AP0/+rn2LE1hR1Y87J83
XHRtPt4g1b1Jw0oj0x/31iyboZa/AHd+zb3SoTWiRMkmOZ/reE6ynphaAeAe
dL59t9qkoi8/rmiiiYifPkbvElLBQBXVdEHh0Bkj+NT28MHQPDY11v+b0fea
TKU9ZumSwW2bZ5wsNPjqApXvM47YuI8uE6LkOZAe/FnYri\nSwFuHyLeI2XO
iKBXyAUZwEGCoYgWbofDHhT53roc/EdJQkmKQQbzykOjcpJlh/9fVmKzeypL
MHsvlntmFll7/e+jGszXqXvPevGEl6ujb+aDpq25jN3wHa9U2+UTzjA7MB8w
BwYFKw4DAhoEFMCxndBPhBe6PMJ1rORQCrjSdz0iBBS+hOAPbc+3+b/71t3C
5g/OlFZw6AICB9A=
```&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=TTJnSSLZfgE:lRgsUndGfr0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=TTJnSSLZfgE:lRgsUndGfr0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/TTJnSSLZfgE" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/TTJnSSLZfgE/ravendb-4-0-securing-the-keys-to-the-kingdom</link><guid isPermaLink="false">https://ayende.com/blog/178977/ravendb-4-0-securing-the-keys-to-the-kingdom#comment4</guid><pubDate>Tue, 11 Jul 2017 06:02:21 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178977/ravendb-4-0-securing-the-keys-to-the-kingdom#comment4</feedburner:origLink></item><item><title>Stuart Bale commented on RavenDB 4.0: Securing the keys to the kingdom</title><description>@Pop - how is creating a user account (with username &amp; password) any different to creating a client certificate? Essentially they both have the same management and distribution issues.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=BOW0gam5jOg:fvKP97EuvVk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=BOW0gam5jOg:fvKP97EuvVk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/BOW0gam5jOg" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/BOW0gam5jOg/ravendb-4-0-securing-the-keys-to-the-kingdom</link><guid isPermaLink="false">https://ayende.com/blog/178977/ravendb-4-0-securing-the-keys-to-the-kingdom#comment3</guid><pubDate>Mon, 10 Jul 2017 21:27:07 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178977/ravendb-4-0-securing-the-keys-to-the-kingdom#comment3</feedburner:origLink></item><item><title>Marcin Lewandowski commented on Bad bugs makes for self assigning issues</title><description>@Tobias Zürcher

We stick with knockout for few reasons:
- it was used in v3.X so there is no need to rewrite everything from scratch - it gives us time to provide better user experience, instead rewriting code (see https://pbs.twimg.com/media/Ce5nYp0W4AAxp5Z.jpg) 
- each framework has it own + &amp; - , we know knockout very well and it is great to feel comfortable when developing
- to be honest each js framework has its own advantages and disadvantages - sometimes rewriting application just to be able to use new fancy framework is just replacing one issues with another.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=bNeACDzcgvk:-HQ7w08kC94:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=bNeACDzcgvk:-HQ7w08kC94:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/bNeACDzcgvk" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/bNeACDzcgvk/bad-bugs-makes-for-self-assigning-issues</link><guid isPermaLink="false">https://ayende.com/blog/178882/bad-bugs-makes-for-self-assigning-issues#comment4</guid><pubDate>Mon, 10 Jul 2017 13:23:24 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178882/bad-bugs-makes-for-self-assigning-issues#comment4</feedburner:origLink></item><item><title>Pop Catalin commented on Bad bugs makes for self assigning issues</title><description>@Tobias Zürcher, I don't know Raven's Team members motivations, however Knockout is an actively developed technology, it's used for [Azure Portal](http://jbeckwith.com/2014/09/20/how-the-azure-portal-works/) and it greatly evolved because of it over the years.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=yksQt94meZQ:M6cjSUHtrvA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=yksQt94meZQ:M6cjSUHtrvA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/yksQt94meZQ" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/yksQt94meZQ/bad-bugs-makes-for-self-assigning-issues</link><guid isPermaLink="false">https://ayende.com/blog/178882/bad-bugs-makes-for-self-assigning-issues#comment3</guid><pubDate>Mon, 10 Jul 2017 08:23:27 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178882/bad-bugs-makes-for-self-assigning-issues#comment3</feedburner:origLink></item><item><title>Tobias Zürcher commented on Bad bugs makes for self assigning issues</title><description>Hey ayende,
offtopic but maybe worth a blog post: why did you stick to knockoutjs for the Raven Manageent Studio?&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=qRqwMwI5LtY:eJKKKOI8ki4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=qRqwMwI5LtY:eJKKKOI8ki4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/qRqwMwI5LtY" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/qRqwMwI5LtY/bad-bugs-makes-for-self-assigning-issues</link><guid isPermaLink="false">https://ayende.com/blog/178882/bad-bugs-makes-for-self-assigning-issues#comment1</guid><pubDate>Fri, 07 Jul 2017 19:21:10 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178882/bad-bugs-makes-for-self-assigning-issues#comment1</feedburner:origLink></item><item><title>eqr commented on RavenDB 4.0 on Mac OSX</title><description>This is very exiting, but using RavenDb in docker works well for development purposes.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=dpScAfdBeOA:knWyLtKEogY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=dpScAfdBeOA:knWyLtKEogY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/dpScAfdBeOA" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/dpScAfdBeOA/ravendb-4-0-on-mac-osx</link><guid isPermaLink="false">https://ayende.com/blog/178913/ravendb-4-0-on-mac-osx#comment1</guid><pubDate>Wed, 05 Jul 2017 09:26:11 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178913/ravendb-4-0-on-mac-osx#comment1</feedburner:origLink></item><item><title>Oren Eini commented on RavenDB 4.0: Unbounded results sets</title><description>Pure Krome,
Streaming gives you streaming access to the data, both on the server and the client. This is a much more efficient system for large requests.

You can ping the notification center endpoint for such things, but nothing in the code, and yes, you can set it globally.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=d9oIi7W4QFQ:Xkp-HUxKK5k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=d9oIi7W4QFQ:Xkp-HUxKK5k:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/d9oIi7W4QFQ" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/d9oIi7W4QFQ/ravendb-4-0-unbounded-results-sets</link><guid isPermaLink="false">https://ayende.com/blog/178823/ravendb-4-0-unbounded-results-sets#comment21</guid><pubDate>Fri, 07 Jul 2017 20:49:21 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178823/ravendb-4-0-unbounded-results-sets#comment21</feedburner:origLink></item><item><title>Jdan commented on RavenDB 4.0: Unbounded results sets</title><description>Hallelujah!&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=fPFLcGNqiE8:PmdARbfgr5E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=fPFLcGNqiE8:PmdARbfgr5E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/fPFLcGNqiE8" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/fPFLcGNqiE8/ravendb-4-0-unbounded-results-sets</link><guid isPermaLink="false">https://ayende.com/blog/178823/ravendb-4-0-unbounded-results-sets#comment20</guid><pubDate>Fri, 07 Jul 2017 15:27:39 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178823/ravendb-4-0-unbounded-results-sets#comment20</feedburner:origLink></item><item><title>Pure Krome commented on RavenDB 4.0: Unbounded results sets</title><description>Oren,

- what about the Query Streaming for unbounded results ref: https://ayende.com/blog/161249/ravendbs-querying-streaming-unbounded-results   Does this still exist? if so, what use is this now?
- I hardly use the studio. Are there any warnings via the code to make this programatic?
- How to set this globally?&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=XQGbHhM7NWs:hTX3OXDV25g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=XQGbHhM7NWs:hTX3OXDV25g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/XQGbHhM7NWs" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/XQGbHhM7NWs/ravendb-4-0-unbounded-results-sets</link><guid isPermaLink="false">https://ayende.com/blog/178823/ravendb-4-0-unbounded-results-sets#comment19</guid><pubDate>Fri, 07 Jul 2017 06:25:39 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178823/ravendb-4-0-unbounded-results-sets#comment19</feedburner:origLink></item><item><title>Oren Eini commented on RavenDB 4.0: Unbounded results sets</title><description>Tobias,
Yes, of course. Everything in RavenDB is exposed over REST. 
For example, see:
http://4.live-test.ravendb.net/databases/test2/notification-center/watch&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=9_4OcxLUajw:M3_2jaoLGCY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=9_4OcxLUajw:M3_2jaoLGCY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/9_4OcxLUajw" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/9_4OcxLUajw/ravendb-4-0-unbounded-results-sets</link><guid isPermaLink="false">https://ayende.com/blog/178823/ravendb-4-0-unbounded-results-sets#comment17</guid><pubDate>Wed, 05 Jul 2017 18:06:58 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178823/ravendb-4-0-unbounded-results-sets#comment17</feedburner:origLink></item><item><title>Tobias Zürcher commented on RavenDB 4.0: Unbounded results sets</title><description>Hi oren,
I probably didnt explain myself well enough.

If it's configured to just do warnings and allow unbound resultsets, is there a way to query the server to see if there are any warnings? (Not through the raven mgmt studio) This would allow to add the warnings into our custom health check dashboards/monitoring.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=87SrLHK0oc8:Fc_zhnK0f9E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=87SrLHK0oc8:Fc_zhnK0f9E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/87SrLHK0oc8" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/87SrLHK0oc8/ravendb-4-0-unbounded-results-sets</link><guid isPermaLink="false">https://ayende.com/blog/178823/ravendb-4-0-unbounded-results-sets#comment16</guid><pubDate>Wed, 05 Jul 2017 17:43:32 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178823/ravendb-4-0-unbounded-results-sets#comment16</feedburner:origLink></item><item><title>Oren Eini commented on RavenDB 4.0: Unbounded results sets</title><description>Ian,
Typically the size of the request matters a lot, yes. We also have created an issue to add the same warning for very large requests.
Note that the expected use case is that you'll either have this flag set for dev only or have it for all you queries.
Note that with this flag, you can say `.Take(int.MaxValue)`, which won't throw, but won't add a limit.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=5i4yFP6LsCs:J9uDZ-2zNhU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ayende/coments?a=5i4yFP6LsCs:J9uDZ-2zNhU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ayende/coments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ayende/coments/~4/5i4yFP6LsCs" height="1" width="1" alt=""/&gt;</description><link>http://feedproxy.google.com/~r/ayende/coments/~3/5i4yFP6LsCs/ravendb-4-0-unbounded-results-sets</link><guid isPermaLink="false">https://ayende.com/blog/178823/ravendb-4-0-unbounded-results-sets#comment15</guid><pubDate>Wed, 05 Jul 2017 12:56:52 GMT</pubDate><feedburner:origLink>https://ayende.com/blog/178823/ravendb-4-0-unbounded-results-sets#comment15</feedburner:origLink></item></channel></rss>
