﻿<?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>Kris-I commented on NH Prof is in public beta</title><description>The download is down again.
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment51</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment51</guid><pubDate>Thu, 08 Jan 2009 12:55:30 GMT</pubDate></item><item><title>Mr_Protection commented on NH Prof is in public beta</title><description>@Frans Bouma
  
  
Mr_P&gt;Also, use at least 2 reputable protection products and the crackers will move on to something else in no time because it's too much trouble to crack your product.
  
  
FB&gt;It's still available because I gave up on adjusting the copy protection every week.
  
  
Thanks for validating my exact point to liviu.
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment50</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment50</guid><pubDate>Tue, 06 Jan 2009 15:17:27 GMT</pubDate></item><item><title>Krzysztof Kozmic commented on NH Prof is in public beta</title><description>so... get a new one. You know, in a suit with a tie, and with happy but serious CEO-style smile.
  
  
  
  
I kid, I kid.
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment49</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment49</guid><pubDate>Tue, 06 Jan 2009 13:17:55 GMT</pubDate></item><item><title>Ayende Rahien commented on NH Prof is in public beta</title><description>There is one problem with that, it is 4 years old
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment48</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment48</guid><pubDate>Tue, 06 Jan 2009 12:14:05 GMT</pubDate></item><item><title>alwin commented on NH Prof is in public beta</title><description>"The screen shots are now PNG.
  
And I don't have a current photo that I am happy with. I need to make one :-) "
  
  
Screen shots look very cool, and I like the lightbox as well.
  
And IMO there's nothing wrong with this photo: 
[http://ayende.com/about-me.aspx](http://ayende.com/about-me.aspx)  
  
Keep up the good work!
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment47</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment47</guid><pubDate>Tue, 06 Jan 2009 12:10:47 GMT</pubDate></item><item><title>Frans Bouma commented on NH Prof is in public beta</title><description>"Actuallu LLBLGEN is already available in the hacker's zone "with a patch".
  
Just because it is overpriced."
  
It's still available because I gave up on adjusting the copy protection every week. Though the available version is an old one. time on tweaking copy protection for people who don't want to pay for software even though they likely charge their client for a lot of money even if they save a lot of time using the tool is better spend on adding new features. 
  
  
And overpriced? It's 5 manyear of work. 
  
  
"I do not use it though because i think it stinks. It is not even integrated in the VS ide. Good Lord. "
  
Then don't use it. 
  
  
Is 200 euro per seat too much for a profiler? Not sure. If it saves you a lot of time and you get a happy customer, why whine about 200 euro you have to invest once. You apparently want to spend more time whining on blogs about how expensive it all is, instead of looking at the bottom line: what will it gain you? If a 10K euro diagramming library saves me a month of work, it's a bargain, as I consider 1 month of my time more valuable than 10K euro. (the average ASP.NET consultant makes more if he charges for billable hours). 
  
  
So 200 euro for a profiler which makes your app much better is a bargain. But I guess you aren't interested in buying a license anyway, as you seem to be more interested in using pirated copies. 
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment46</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment46</guid><pubDate>Mon, 05 Jan 2009 14:45:43 GMT</pubDate></item><item><title>Ayende Rahien commented on NH Prof is in public beta</title><description>ionel,
  
NH Prof will work with AR as well.
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment45</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment45</guid><pubDate>Mon, 05 Jan 2009 05:19:38 GMT</pubDate></item><item><title>Ionel commented on NH Prof is in public beta</title><description>Ayende,
  
Can you also develop recomandation for application improvements when using ActiveRecord, in respect to the particular aspects of ActiveRecord?
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment44</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment44</guid><pubDate>Sun, 04 Jan 2009 23:23:49 GMT</pubDate></item><item><title>Ayende Rahien commented on NH Prof is in public beta</title><description>Steve,
  
I am glad that you like it. 
  
About your scenario. What you describe is usually an entity that doesn't respect aggregate root boundaries, from the design perspective.
  
  
From the technical / nhibernate perspective, however.
  
RecentExpenses shouldn't generate a Select N+1, unless you where clause is the one that is access another association on each expense.
  
NH does generate the query that you mentioned. It is a single query to load all items in the collection.
  
I am guessing that you have additional processing in the where clause.
  
You can generate a offline profiling session and send it to me, I'll take a look at that.
  
  
I am afraid that it is not really possible to have a total disconnect between the data model and the domain model.
  
If you have very deep domain model, you are going to hit issues with that. This is the time where you want to consider changing the data model to optimize it, or changing the way you access the data.
  
  
About many queries vs. one big query, I have talked in the past about how you can use self optimizing queries by making use of NH's multi query.
  
I'll make sure to add my extensions to NH, so it would be easier to use, instead of as a side project
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment43</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment43</guid><pubDate>Sun, 04 Jan 2009 15:01:03 GMT</pubDate></item><item><title>Steve commented on NH Prof is in public beta</title><description>I must say, I don't like the price (I'm  cheap ass anyway),  I have to buy everything I use for the most part (I'm not in a big company, just small contracting firm), although I will push them for this.
  
  
BUT
  
  
Within two days of using this - WOW, I love it.  It gives me eyes into what the application is doing, tracking the database calls, etc...
  
  
Basically you have addicted me to it already.  This is going to cause me to be very anal about how many database calls I'm making etc...
  
  
Speaking of... 
  
  
Many 'small calls' vs. 'one big call'
  
  
I'm assuming since you advocate MultiQuery, you, for the most part - I under context is huge here - but you would advocate a call to get 5-10 items in one call vs. 5 calls 
  
  
What I'm encountering is actually that each of my 'views' is 'self-sufficient' - but if a 'page' loads 3 'views' - I end up with 3 separate calls.  But that was to be modular.
  
  
Now I'm not sure if I should make one call - coupling the views together to have one multi-query type call.
  
  
Secondly, and this one is a big eye opener for me, that I'm struggling with:
  
  
I use my domain objects - my nhibernate object.  ie.  Employee 
  
I setup properties on Employee to handle domain specific rules.  My domain object doesn't know anything about the database.
  
  
ie. 
  
let's say I'm always calculating something like 'expenses' in a collection, but then the customer says, 'we want to show expense for the last 6 months.
  
  
So, I have a IList
&lt;expense Expenses - not a problem.
  
  
Then I create a new property:
  
  
public double RecentExpenses
  
{
  
   get{
  
         return Expenses.Where(.....some linq query that iterates through and gets the amount....).Sum(e =&gt; e.Amount)....
  
  }
  
}
  
  
But this creates the Select N + 1 - since I'm looping through expenses.  So I'm forced to know override my 'GetById' Repository call for Employee - and now when I get employees, I force the join on Expenses.
  
  
I don't want to have my data layer doing this work, I like the encapsulation of these type of rules in my domain object - at the same time , my data layer has to be smarter by looking at how the domain object is making such calculates and eager loading, or joining these in one larger call.
  
  
Sorry for the long response - but there is alot of thinking going on after seeing under the covers.
  
  
I do 'wish' that NHibernate had something to help on lazy collections.  ie.  if I do a Expenses.ToList() &lt;--- it would nice if that would do a 'select all expenses where employee = 1' .  
  
If I leave it as a IList - not calling 'ToList' - it would do each call separate in a loop.
  
  
The reason I say that is because I don't want to have my domain object tied to my data that closely - with many 'filter' calls - vs filtering these lists and calculations in the domain object.
  
  
Tell me if I'm wrong - I certainly am learning a ton here.
  
  
Thanks for the good software - now I just need to start putting more money in my piggy bank.  :)
&gt;</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment42</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment42</guid><pubDate>Sun, 04 Jan 2009 14:49:05 GMT</pubDate></item><item><title>Ayende Rahien commented on NH Prof is in public beta</title><description>Alwin,
  
The screen shots are now PNG.
  
And I don't have a current photo that I am happy with. I need to make one :-)
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment41</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment41</guid><pubDate>Sun, 04 Jan 2009 01:32:45 GMT</pubDate></item><item><title>Ayende Rahien commented on NH Prof is in public beta</title><description>Steve,
  
Select N+1 is detected by looking at multiple identical select statements.
  
There is some limit for that, 4 if I recall correctly.
  
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment40</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment40</guid><pubDate>Sat, 03 Jan 2009 20:38:05 GMT</pubDate></item><item><title>Ayende Rahien commented on NH Prof is in public beta</title><description>Anders,
  
The license include updates within a point release. I fully intend to continue evolving this product, but I don't expect to have a v2.0 for a long while.
  
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment39</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment39</guid><pubDate>Sat, 03 Jan 2009 20:33:25 GMT</pubDate></item><item><title>Steve commented on NH Prof is in public beta</title><description>I'm confused about how your Select N + 1 is reporting.
  
  
I have a simple senario that uses lazyload.
  
  
ie. I have an Order with Orderlines.  
  
  
I make a call to get Order by Id.  Then I access the Orderlines collection and loop through them on the display.
  
  
It's reporting the lazyload call as being a Select N + 1  ?
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment38</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment38</guid><pubDate>Sat, 03 Jan 2009 20:30:57 GMT</pubDate></item><item><title>Anders Lybecker commented on NH Prof is in public beta</title><description>Does the license include lifetime upgrades? It doesn’t say anywhere on the site.
  
  
I expect community feedback to evolve the product beyond the current functionality.
  
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment37</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment37</guid><pubDate>Sat, 03 Jan 2009 15:47:48 GMT</pubDate></item><item><title>andy commented on NH Prof is in public beta</title><description>even if you _only_ have to spend half a day, the 140 - 200 should save that day, else you may not have a decent hourly rate, which implies that you force the market value down of our all work
  
  
in addition oren saves a lot of people so much time with all his os contributions that 200 are anyway justfied
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment36</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment36</guid><pubDate>Sat, 03 Jan 2009 13:41:51 GMT</pubDate></item><item><title>Ayende Rahien commented on NH Prof is in public beta</title><description>&gt; But let's see. How easy is to put a hook exactly before NHibernate runs any command. Just "log" the call stack and the statement.
  
  
That is... not quite as easy as you imagine it to be.
  
  
&gt; You can get also the rowcount returned buy just selecting @@rowcount for example (Sql server assumed). Do you need something more?
  
  
Why assume SQL Server? I know people using this with Oracle and Access, and I got bug reports from people using MySQL.
  
That is leaving aside the fact that you don't really get to execute @@rowcount.
  
  
&gt; Do you need a tool to tell you what to do?
  
  
Liviu,
  
You can get a lot of information from NHibernate just by setting show_sql = true.
  
If that is enough for you. Great.
  
  
&gt; just build a small addin for visual studio = half a day.
  
  
I think that you are significantly underestimating the amount of time that it would take.
  
  
That said, I am not aware of any compulsion used to make you use the profiler. If you feel that the price is not a match for the value you get out of this, then you may proceed by doing the simplest thin to express that opinion, don't buy the product.
  
  
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment35</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment35</guid><pubDate>Sat, 03 Jan 2009 13:00:36 GMT</pubDate></item><item><title>liviu commented on NH Prof is in public beta</title><description>Mr_Protection. I agree that having a niche product implies that you must be very careful to be paid for each copy. But does anyone imagine selling NHProf with a HASP? 
  
  
But let's see. How easy is to put a hook exactly before NHibernate runs any command. Just "log" the call stack and the statement. 
  
If not possible to use a clean way, just modify the source code and make your own NHIbernate "branch".
  
You can get also the rowcount returned buy just selecting @@rowcount for example (Sql server assumed). Do you need something more?
  
Do you need a tool to tell you what to do?
  
I agree it's cool to have a tool, but you can build a decent gui on top of this information in half a day.
  
You want to get to the source code?
  
just build a small addin for visual studio = half a day.
  
So in one day you get yourself a decent tool.
  
  
Hm... am i dreaming?
  
Give me 200EUR...:)
  
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment34</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment34</guid><pubDate>Sat, 03 Jan 2009 12:42:06 GMT</pubDate></item><item><title>alwin commented on NH Prof is in public beta</title><description>If you think it's too expensive, don't use it. I just recalculate the price in hours saved :).
  
  
Some minor details about the website:
  
  
[http://nhprof.com/Learn/ScreenShots](http://nhprof.com/Learn/ScreenShots)  
The screen shots are very informative, but they are in JPG... PNG would be better and look even more professional, now it looks like I have to dust off my monitor.
  
  
[http://nhprof.com/About](http://nhprof.com/About)  
There's no picture of you!
  
  
Good luck!
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment33</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment33</guid><pubDate>Sat, 03 Jan 2009 01:29:46 GMT</pubDate></item><item><title>Mr_Protection commented on NH Prof is in public beta</title><description>I dont want to start a protection war here, but I have never sold a product that wasnt protected by a HASP dongle, CrypKey, or Microsoft SLPS.
  
  
Your customers may not like you, but you'll damn sure get paid for each copy and not have to worry about guys like liviu.
  
  
Also, use at least 2 reputable protection products and the crackers will move on to something else in no time because it's too much trouble to crack your product.
  
  
My stuff is black hat so the volume is low and I need to be paid for each copy.  Even though your stuff is white hat the market will still be somewhat small so make sure you get PAID!
  
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment32</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment32</guid><pubDate>Sat, 03 Jan 2009 01:18:30 GMT</pubDate></item><item><title>Jake commented on NH Prof is in public beta</title><description>I agree with liviu, the price for this is too high.
  
  
Its priced the same as R# and there is no way its ever going to be as valuable as R#.
  
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment31</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment31</guid><pubDate>Fri, 02 Jan 2009 19:18:50 GMT</pubDate></item><item><title>Ayende Rahien commented on NH Prof is in public beta</title><description>per seat means that 2 developers requires two licenses.
  
There is a reduced price for bulk purchases, and if you want more than that, contact me privately and we can discuss this.
  
  
Yes, if a developer uninstall the product, you can use the license for another developer.
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment30</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment30</guid><pubDate>Fri, 02 Jan 2009 15:29:49 GMT</pubDate></item><item><title>configurator commented on NH Prof is in public beta</title><description>Just a few quick questions:
  
200€ per seat means that if two developers use it on different machines, they need a license each, right?
  
Also, will there be any sort of group license, i.e. per-site or some such?
  
And last, if a developer uninstalls the product, can another developer then use the first guy's license? (I mean in cases of reformat, changing PCs, developers leaving, etc)
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment29</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment29</guid><pubDate>Fri, 02 Jan 2009 15:22:29 GMT</pubDate></item><item><title>Ayende Rahien commented on NH Prof is in public beta</title><description>Liviu,
  
I have no doubt that "hackers" will crack the profiler licensing.
  
There is nothing much I can do about it.
  
I expect most of the profiler customer to be companies, and they are generally good about not using pirated software.
  
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment28</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment28</guid><pubDate>Fri, 02 Jan 2009 14:26:58 GMT</pubDate></item><item><title>liviu commented on NH Prof is in public beta</title><description>Actuallu LLBLGEN is already available  in the hacker's zone "with a patch".
  
Just  because it is overpriced.
  
I do not use it though because i think it stinks. It is not even integrated in the VS ide. Good Lord. 
  
  
The same fate awaits the 200EUR profiler. 
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment27</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment27</guid><pubDate>Fri, 02 Jan 2009 14:19:08 GMT</pubDate></item><item><title>SteveF commented on NH Prof is in public beta</title><description>liviu, don't be such a cheapskate..  if the product is not worth 200EUR then people will not buy it, its that simple.  Moreover, if Ayende didn't think it was worth that much, he would not set the price at that level.
  
  
Other open source ORM tools are just as expensive, for instance LLBLGen costs 249EUR per seat.  Do you hear people complaining about its price?  
  
  
I own an LLBLGen license, and it has been worth the cost to me in time saved, by far..   Even though I use NHibernate primarily these days I still use LLBL on some projects because it is just faster and easier to get running if you have to use a legacy db, etc..
  
  
Will NHProf be worth 200EUR to me?  Absolutely, if it saves only a few hours of time it is worth that..
  
  
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment26</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment26</guid><pubDate>Fri, 02 Jan 2009 14:00:48 GMT</pubDate></item><item><title>Ayende Rahien commented on NH Prof is in public beta</title><description>Liviu,
  
I don't believe that I have ever set any expectation that the price would be in the 20$ - 50% range.
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment25</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment25</guid><pubDate>Fri, 02 Jan 2009 13:29:38 GMT</pubDate></item><item><title>liviu commented on NH Prof is in public beta</title><description>Another thought:
  
  
Of course nobody would get rich out of this profiler. 
  
  
The unjustified price is just a kick to the nhibernate community to produce a similar tool, maybe not so smart, but decent.
  
  
Happy first million dollars out of NHProf! ;)
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment24</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment24</guid><pubDate>Fri, 02 Jan 2009 13:04:17 GMT</pubDate></item><item><title>liviu commented on NH Prof is in public beta</title><description>I remember you said in your posts that the license would be affordable, somewhere around 20$-50$.
  
I think the price is excesive: 200EUR per seat ? My God. Windows is cheaper...common....
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment23</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment23</guid><pubDate>Fri, 02 Jan 2009 12:50:23 GMT</pubDate></item><item><title>Kris-I commented on NH Prof is in public beta</title><description>Free license means 100% discount, of course it was kidding ;-)
  
  
I published a very small presentation of your product on my blog in french ... more soon :)
  
  
Happy 2009 and enjoy "NH Prof" download ....
  
  
  
</description><link>http://ayende.com/3789/nh-prof-is-in-public-beta#comment22</link><guid>http://ayende.com/3789/nh-prof-is-in-public-beta#comment22</guid><pubDate>Fri, 02 Jan 2009 08:35:51 GMT</pubDate></item></channel></rss>