NH Prof is in public beta
Surprisingly, the hardest part in getting here wasn't writing the actual software, but all the other activities around it. Setting a web site, integrating a payment provider, getting content for said web site, etc.
But, we are now there, and NH Prof is in public beta, hooray!
You can go to the NHibernate Profiler web site and download a 30 days trail right now.
A few important points:
- It is still in beta. There are several issues that we are aware of in the current version that will be fixed before we ship v1.0.
- The reason it is in beta is to fix those issues and gather more input from the actual users. The private beta group was wonderful, but it is time for a bigger test group.
- During the beta period, the web site is hooked to the continuous integration server. Whenever you download a version from the site, you get the latest bits.
- I am also looking for feedback on the site and the content that you wish to see there. Like the actual application, the site is also in a beta period, and I plan on creating more content (help, samples, web casts) soon.
Oh, and as a precursor for a blog series about social engineering in software development, I am offering a reduced price for the profiler for the duration of the beta period.
That is all I have to say right now.
Do tell me what you think...
Comments
Congrats on shipping (even if beta) Ayende :-)
Initial feedback, more about the site than the product - drop some more screen shots on the site. You'd be surprised how much people base decisions on how things look. Since you've already invested in creating a very attractive UI it makes sense to show it off as much as possible.
I hope that helps.
Working on that :-)
Should be out tomorrow
Congrats.
How much time did it take to put up the web site and integrating a payment provider, excluding getting the content?
congrats on the public release :)
i was lucky enough to be one of the private beta testers, so i already know how great this tool is. I think it will help a lot of people with how to properly use an ORM :)
I tried it but it ate all the cpu/memory on my machine and I couldn't do anything. core 2 duo with 4gb ram.
Hm,
Can you send me some more information about what was going on there?
What exactly did you do?
Were you able to see the first window and start using the profiler?
Looking good Oren,
Although there are a couple of issues with it I noticed on first launch, do you have an issue database we could post to?
i.e. The contrast of dark-grey and black font for the file menus make the text nearly illegible on my computer.
also the only help link to:
http://nhprof.com/docs/SelectNPlusOne.ashx
Is throwing a runtime error.
Demis,
Both are known problems, and will be taken care of shortly.
Support is handled via a mailing list you can subscribe to from the site.
Wow,
Looks great, easy to configure and obvious to use. Stack trace linking is awesome.
Web site looks good too, minor gripe is with the checked background which i find just makes things hard to read.
Great work
Screen shots are now available
I reviewed the website before posting this, so perhaps I just missed it:
What is the update policy? I mean if I purchase the Beta I know I get the discount etc., but how long do I get updates before I have to send more money?
BTW - Just for your target market tracking, I'm a NH newbie who will be using the tool to learn NH because your tool will be the cheapest route for me to learn NH properly.
The help issue is now fixed :)
Can't download trial. Site sends me to s3.amazonaws.com/.../...nate.Profiler-Build-97.zip
which I think is wrong address.
Same as Pavel Samokha. - Can't download.
Same here, I get an "AccessDenied" error when trying to get build #99.
Also can't download, an issue with amazonaws not liking the https redirect perhaps??
Mr_Question,
If you get the beta license, it is valid for the v1.0 version and will be valid until I release the v2.0 version.
Sorry about the problem with the downloads, working on that now.
I'm the first one to add "NH Prof" web site in Delicious (free license ?) ;-)
Same problem than the others guys, impossible to download (I just pressed the download button without any information in the form)
The download problem is fixed.
What do you mean, free license?
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 ....
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....
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! ;)
Liviu,
I don't believe that I have ever set any expectation that the price would be in the 20$ - 50% range.
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..
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.
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.
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)
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.
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#.
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!
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
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
There's no picture of you!
Good luck!
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...:)
That is... not quite as easy as you imagine it to be.
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.
Liviu,
You can get a lot of information from NHibernate just by setting show_sql = true.
If that is enough for you. Great.
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.
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
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.
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 ?
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.
Steve,
Select N+1 is detected by looking at multiple identical select statements.
There is some limit for that, 4 if I recall correctly.
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 :-)
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 <expense Expenses - not a problem.
Then I create a new property:
public double RecentExpenses
{
get{
}
}
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() <--- 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. :)
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
Ayende,
Can you also develop recomandation for application improvements when using ActiveRecord, in respect to the particular aspects of ActiveRecord?
ionel,
NH Prof will work with AR as well.
"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.
"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
Keep up the good work!
There is one problem with that, it is 4 years old
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.
@Frans Bouma
Mr_P>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>It's still available because I gave up on adjusting the copy protection every week.
Thanks for validating my exact point to liviu.
The download is down again.
Comment preview