Oren Eini

aka Ayende Rahien

Oren Eini

CEO of RavenDB

a NoSQL Open Source Document Database

Get in touch with me:

oren@ravendb.net +972 52-548-6969

Posts: 7,575
|
Comments: 51,188

Copyright ©️ Ayende Rahien 2004 — 2025

Privacy Policy · Terms
filter by tags archive
stack view grid view
  • architecture (606) rss
  • bugs (450) rss
  • challanges (123) rss
  • community (377) rss
  • databases (481) rss
  • design (893) rss
  • development (640) rss
  • hibernating-practices (71) rss
  • miscellaneous (592) rss
  • performance (397) rss
  • programming (1085) rss
  • raven (1442) rss
  • ravendb.net (526) rss
  • reviews (184) rss
  • 2025
    • May (7)
    • April (10)
    • March (10)
    • February (7)
    • January (12)
  • 2024
    • December (3)
    • November (2)
    • October (1)
    • September (3)
    • August (5)
    • July (10)
    • June (4)
    • May (6)
    • April (2)
    • March (8)
    • February (2)
    • January (14)
  • 2023
    • December (4)
    • October (4)
    • September (6)
    • August (12)
    • July (5)
    • June (15)
    • May (3)
    • April (11)
    • March (5)
    • February (5)
    • January (8)
  • 2022
    • December (5)
    • November (7)
    • October (7)
    • September (9)
    • August (10)
    • July (15)
    • June (12)
    • May (9)
    • April (14)
    • March (15)
    • February (13)
    • January (16)
  • 2021
    • December (23)
    • November (20)
    • October (16)
    • September (6)
    • August (16)
    • July (11)
    • June (16)
    • May (4)
    • April (10)
    • March (11)
    • February (15)
    • January (14)
  • 2020
    • December (10)
    • November (13)
    • October (15)
    • September (6)
    • August (9)
    • July (9)
    • June (17)
    • May (15)
    • April (14)
    • March (21)
    • February (16)
    • January (13)
  • 2019
    • December (17)
    • November (14)
    • October (16)
    • September (10)
    • August (8)
    • July (16)
    • June (11)
    • May (13)
    • April (18)
    • March (12)
    • February (19)
    • January (23)
  • 2018
    • December (15)
    • November (14)
    • October (19)
    • September (18)
    • August (23)
    • July (20)
    • June (20)
    • May (23)
    • April (15)
    • March (23)
    • February (19)
    • January (23)
  • 2017
    • December (21)
    • November (24)
    • October (22)
    • September (21)
    • August (23)
    • July (21)
    • June (24)
    • May (21)
    • April (21)
    • March (23)
    • February (20)
    • January (23)
  • 2016
    • December (17)
    • November (18)
    • October (22)
    • September (18)
    • August (23)
    • July (22)
    • June (17)
    • May (24)
    • April (16)
    • March (16)
    • February (21)
    • January (21)
  • 2015
    • December (5)
    • November (10)
    • October (9)
    • September (17)
    • August (20)
    • July (17)
    • June (4)
    • May (12)
    • April (9)
    • March (8)
    • February (25)
    • January (17)
  • 2014
    • December (22)
    • November (19)
    • October (21)
    • September (37)
    • August (24)
    • July (23)
    • June (13)
    • May (19)
    • April (24)
    • March (23)
    • February (21)
    • January (24)
  • 2013
    • December (23)
    • November (29)
    • October (27)
    • September (26)
    • August (24)
    • July (24)
    • June (23)
    • May (25)
    • April (26)
    • March (24)
    • February (24)
    • January (21)
  • 2012
    • December (19)
    • November (22)
    • October (27)
    • September (24)
    • August (30)
    • July (23)
    • June (25)
    • May (23)
    • April (25)
    • March (25)
    • February (28)
    • January (24)
  • 2011
    • December (17)
    • November (14)
    • October (24)
    • September (28)
    • August (27)
    • July (30)
    • June (19)
    • May (16)
    • April (30)
    • March (23)
    • February (11)
    • January (26)
  • 2010
    • December (29)
    • November (28)
    • October (35)
    • September (33)
    • August (44)
    • July (17)
    • June (20)
    • May (53)
    • April (29)
    • March (35)
    • February (33)
    • January (36)
  • 2009
    • December (37)
    • November (35)
    • October (53)
    • September (60)
    • August (66)
    • July (29)
    • June (24)
    • May (52)
    • April (63)
    • March (35)
    • February (53)
    • January (50)
  • 2008
    • December (58)
    • November (65)
    • October (46)
    • September (48)
    • August (96)
    • July (87)
    • June (45)
    • May (51)
    • April (52)
    • March (70)
    • February (43)
    • January (49)
  • 2007
    • December (100)
    • November (52)
    • October (109)
    • September (68)
    • August (80)
    • July (56)
    • June (150)
    • May (115)
    • April (73)
    • March (124)
    • February (102)
    • January (68)
  • 2006
    • December (95)
    • November (53)
    • October (120)
    • September (57)
    • August (88)
    • July (54)
    • June (103)
    • May (89)
    • April (84)
    • March (143)
    • February (78)
    • January (64)
  • 2005
    • December (70)
    • November (97)
    • October (91)
    • September (61)
    • August (74)
    • July (92)
    • June (100)
    • May (53)
    • April (42)
    • March (41)
    • February (84)
    • January (31)
  • 2004
    • December (49)
    • November (26)
    • October (26)
    • September (6)
    • April (10)
RavenDB Workshops - Deep dive into practical use of Document Data Modeling
  previous post next post  
Jun 08 2012

Why I LOVE ReSharper

time to read 1 min | 58 words

image

I mean, just look at this. This is magic.

More to the point, think about what this means to try to implement something like that. I wouldn’t know where to even start.

Tweet Share Share 17 comments
Tags:
  • development

  previous post next post  

Comments

Palesz
08 Jun 2012
09:23 AM
Palesz

You just need to run a search query for concdi in case-insensitive mode, thats all.

nick
08 Jun 2012
09:29 AM
nick

I don't think it would be too difficult. You could possibly do the search in about 5 lines of powershell using the $dte object in the package manager console.

Something like this in powershell http://stackoverflow.com/questions/3560823/how-can-i-get-only-classes-defined-in-the-current-project-in-envdte although I'm not sure how to get at files in the BCL.

ReSharper is an awesome tool though. Perfect if not for the performance decrease and lock ups.

Valeriob
08 Jun 2012
09:32 AM
Valeriob

Brute force: waste of resources (memory, cpu), not much value added, and visual studio gets slower.

Simon Skov Boisen
08 Jun 2012
09:36 AM
Simon Skov Boisen

Palesz, what search query though? A contains? That won't find anything in this case.

My guess is they split each symbol on capital letter and then do a largest common substring (or maybe levenshtein distance) search on each symbol-part. Then take all those symbols which has a match length of more than 0 in all of the capital-parts in the symbol. That way you get the symbols which contains atleast one character from the searchstring in each of the symbol-parts.

monnster
08 Jun 2012
10:03 AM
monnster

They call it "fuzzy search", and it also works in Go to... commands. Yes, it's awesome!

Steve W
08 Jun 2012
10:20 AM
Steve W

Resharper is both a great tool and an impressive piece of software in it's own right - I'd be a bit lost without it these days :)

Noel Kennedy
08 Jun 2012
10:57 AM
Noel Kennedy

You can use a trie. When what the user has typed diverges from the entries in the trie you stop navigating the trie, take all the remaining nodes in the true and calculate the Levenshtein distance between them and what the user has typed. Should be pretty quick as long as you restrict it from happening high up the trie (say a minimum of n characters before this is done).

Aaron
08 Jun 2012
11:05 AM
Aaron

If you'd instead typed, CD or CDE, Visual Studio without extensions would have provided similar suggestions, in case you weren't aware.

Juan Lopes
08 Jun 2012
11:29 AM
Juan Lopes

Longest Common Subsequence.

http://en.wikipedia.org/wiki/Longest_common_subsequence_problem

Rather trivial, C++ impl:

https://github.com/juanplopes/valladolid/blob/master/src/10066.cpp

tobi
08 Jun 2012
12:27 PM
tobi

This feature is called "match on camelhumps". It matches on character case. It is awesome and I use it all the time. 4 letters are often enough to find any class unambiguously.

I don't know how to program without intellisense. I really don't. Who can remember all these names (and the compiler requires you to remember them without any mistake at all).

This leads me to the question: How do people program in dynamic languages? Are the heuristics their IDEs use good enough?

João P. Bragança
08 Jun 2012
18:30 PM
João P. Bragança

A good dynamic language will take a different approach. As of 3.5 .net has 11,000 classes (http://blogs.msdn.com/b/brada/archive/2008/03/17/number-of-types-in-the-net-framework.aspx). I doubt ruby has that many in the core. OTOH a bad dynamic language like PHP has hundreds of functions in the global namespace, with no convention on argument order, making it impossible to use without a good IDE.

Roman D. Boiko
08 Jun 2012
21:42 PM
Roman D. Boiko

http://en.wikipedia.org/wiki/Suffix_tree

Roman D. Boiko
08 Jun 2012
21:43 PM
Roman D. Boiko

http://en.wikipedia.org/wiki/Suffix_tree

Roman D. Boiko
08 Jun 2012
22:07 PM
Roman D. Boiko

It's pretty difficult to post on your blog: confirmation appears each time regardless whether CAPTCHA is correct or not, URI is not translated into a hyperlink, and paired underscores inside URI are interpreted as markup for italics. Let's try with double underscore on each side :)

http://en.wikipedia.org/wiki/Approximate__string__matching

Rodrigo Dumont
10 Jun 2012
14:17 PM
Rodrigo Dumont

I love it because sometimes I can just memorize a short word for some common types in an application. And sometimes that short word can be really funny. haha

Leyu Sisay
11 Jun 2012
10:10 AM
Leyu Sisay

A variant of this problem was on the final exam for the online course "CS212-Design of Computer Programs"

http://www.udacity.com/view#Course/cs212/CourseRev/apr2012/Unit/496001/Nugget/515001

Janus007
12 Jun 2012
22:27 PM
Janus007

Why didn't I learn something new by all the comments?

Comment preview

Comments have been closed on this topic.

Markdown formatting

ESC to close

Markdown turns plain text formatting into fancy HTML formatting.

Phrase Emphasis

*italic*   **bold**
_italic_   __bold__

Links

Inline:

An [example](http://url.com/ "Title")

Reference-style labels (titles are optional):

An [example][id]. Then, anywhere
else in the doc, define the link:
  [id]: http://example.com/  "Title"

Images

Inline (titles are optional):

![alt text](/path/img.jpg "Title")

Reference-style:

![alt text][id]
[id]: /url/to/img.jpg "Title"

Headers

Setext-style:

Header 1
========
Header 2
--------

atx-style (closing #'s are optional):

# Header 1 #
## Header 2 ##
###### Header 6

Lists

Ordered, without paragraphs:

1.  Foo
2.  Bar

Unordered, with paragraphs:

*   A list item.
    With multiple paragraphs.
*   Bar

You can nest them:

*   Abacus
    * answer
*   Bubbles
    1.  bunk
    2.  bupkis
        * BELITTLER
    3. burper
*   Cunning

Blockquotes

> Email-style angle brackets
> are used for blockquotes.
> > And, they can be nested.
> #### Headers in blockquotes
> 
> * You can quote a list.
> * Etc.

Horizontal Rules

Three or more dashes or asterisks:

---
* * *
- - - - 

Manual Line Breaks

End a line with two or more spaces:

Roses are red,   
Violets are blue.

Fenced Code Blocks

Code blocks delimited by 3 or more backticks or tildas:

```
This is a preformatted
code block
```

Header IDs

Set the id of headings with {#<id>} at end of heading line:

## My Heading {#myheading}

Tables

Fruit    |Color
---------|----------
Apples   |Red
Pears	 |Green
Bananas  |Yellow

Definition Lists

Term 1
: Definition 1
Term 2
: Definition 2

Footnotes

Body text with a footnote [^1]
[^1]: Footnote text here

Abbreviations

MDD <- will have title
*[MDD]: MarkdownDeep

 

FUTURE POSTS

  1. NOT Sharding RavenDB Vector Search - 3 hours from now
  2. Optimizing the cost of clearing a set - 3 days from now
  3. Scaling HNSW in RavenDB: Optimizing for inadequate hardware - 5 days from now

There are posts all the way to May 14, 2025

RECENT SERIES

  1. RavenDB News (2):
    02 May 2025 - May 2025
  2. Recording (15):
    30 Apr 2025 - Practical AI Integration with RavenDB
  3. Production Postmortem (52):
    07 Apr 2025 - The race condition in the interlock
  4. RavenDB (13):
    02 Apr 2025 - .NET Aspire integration
  5. RavenDB 7.1 (6):
    18 Mar 2025 - One IO Ring to rule them all
View all series

RECENT COMMENTS

  • But in case you have nullability checks enabled (i.e. `<Nullable>enable</Nullable>`), then you'll have a compiler warning on ...
    By Samyon Ristov on The null check that didn't check for nulls
  • Grok wasn't *wrong*. It only said that `_items` can't be null for the condition to evaluate to `true`, but didn't say anythi...
    By Johannes Egger on The null check that didn't check for nulls
  • When I started enabling NRT, I remember I was initially confused when all variables (for reference types) declared with `var`...
    By riccardo on The null check that didn't check for nulls
  • That is surprising - I think of var as a shorthand that does not affect the final result of the compilation. I wouldn't expec...
    By Chris B on The null check that didn't check for nulls
  • "It is also about as friendly as a monkey with a sore tooth and an alcohol addiction." And I have to clean my monitor.
    By Tim on When racing the Heisenbug, code quality goes out the Windows

Syndication

Main feed Feed Stats
Comments feed   Comments Feed Stats
}