My name is Steve and I am a learn-a-holic; I believe strongly that any day that goes by in which I don’t increase my knowledge is a wasted day.
I am a practicing software architect and engineer (yes, they are two different skills and roles) whose formal training and education is in the building architecture field (I hold a B.S. in Architecture from The Ohio State University and practiced ‘real’ architecture for years before formally moving into the software field for good).
I came to the profession of software development because of an unrequited thirst to investigate why things work the way they do and to uncover for myself the dark underbelly of the world of software engineering. I have a strong interest in software development as a process and understanding software projects’ contribution to the overall business (whatever that means).
I am a born skeptic and tend to challenge most assumptions thrown my way; I find myself to be sympathetic to most of the Agile-leaning philosophies but feel that the zealousness with which they are often espoused at the expense of dealing with reality on the ground to be off-putting.
I am currently employed as a Principal Software Engineer for the Technology, Evangelism, and Development (TED) Team within Microsoft Corporation, where I spend my days assisting select Microsoft Partner organizations in their adoption of cutting-edge and pre-release Microsoft developer products and technologies
If you want to know more about the principles that guide my approach to the professional practice of software architecture and engineering, I would encourage you to take a look at this post. For a more comprehensive history, see my Official Bio page.
Hi Steve! Great stuff you created for the “Summer of NHibernate” ! Excellent learning videos – much needed, too!
Something else, though: being a big CodeRush fan myself, I was intrigued by your keypresses that seems to turn a method from private to public – is that a “out-of-the-box” CodeRush feature / key shortcut? Or is that a custom shortcut you dreamt up 🙂
Also, I really like the “let’s cleanup the class” where you moved all the private member variables into one spot and all public properties into another – again, I was wondering if that’s a CodeRush feature, and if so, what key shortcut it might be assigned to by default.
Cheers! And keep up the great tutorial work on NHibernate!
Greetings from Switzerland,
Marc
@marc:
Glad you’re enjoying the content. re: the CodeRush stuff, the transition from private to public on the method you’re in (or the var declaration your cursor is on, or the class you’re in, etc., etc.) that’s a standard CodeRush keystoke, you’ll be happy to know. If you hit ALT+up arrow or ALT+down arrow you will cycle thru either ‘increasing accessibility’ (the up-arrow) or decreasing accessibility (the down-arrow) for the member your cursor is in-scope on.
The little trick to this (that I’m using in the videos and all the time in my real work) is that if you’re already at ‘private’ (the most-limited accessibility value) and you hit ALT+down arrow the accessibility of the member will ‘loop back’ to the top of the accessibility list (which, of course, is ‘public’). This little ‘trick’ works in both directions, it turns out, so you can always use ALT+up arrrow to go from ‘public’ to ‘private’ and ALT+down arrow to go from ‘private’ direct to ‘public’. FYI, this is actually all in the CodeRush integrated HELP/docs window and I *strongly* recommend anyone using CodeRush take some time and actually READ the whole file — its COMPLETELY chock-full of all kinds of this stuff. The only reason I even discovered this capability was that I watched someone do something similar with Resharper and thought “there must be a way to do this with CodeRush too” and found it in the manual.
Re: the re-org of the class source, that’s a (freeware) DXcore addin called CR_ClassCleaner and I talk about it at length in this post:
http://unhandled-exceptions.com/blog/index.php/2008/07/16/confessions-of-a-developer-tool-hound/
…where I also point out some gotchas about what you need to do to get it working under the latest version of DXCore (that you will no-doubt have if you also have a current version of CodeRush/Refactor Pro! on your system).
Hope this helps (even if its a bit long for a comment reply ).
I really like the videos you have provided, it’s hard to find good technical videos and these are perfect! They are pitched at the perfect level.
Have you considered writing a book on NHibernate? I know there is one coming but giving the quality of these videos I would love to see you translate that into a book
@DJO:
Thanks for the positive feedback; I’m glad you’re finding value in the content.
Re: a book on NHibernate, with the info on the internet its not clear to me that there is all that much value in programming books any longer as sales (generally) continue to fall terribly and survey after survey suggests that developers these days don’t tend to use books as their primary (or even secondary) learning tool any more.
Even new versions of previously VERY well-selling books like ‘Professional C# Business Objects’ (CSLA.NET) are being released in new editions that are mostly if not entirely free PDF downloads rather than printed material for-fee.
That (the decline in programming book sales) is actually one of the reasons that I opted for the screencast medium for this info in the first place — I frankly felt more people would download and watch a screencast series than read a series of well-thought-out blog posts (or a book) on the same content.
That said, if a publisher wants to approach me and offer me a decent advance on my writing a book about this, I’d be glad to take that call from them but writing it and THEN humping it around to publishers hoping for a ‘bite’ is a losing battle in today’s age, I’m afraid.
I’m (personally) sad by the current environment for programming books as I think randomly-googled blog posts are probably one of the WORST ways to learn anything new (though it makes great lookup material for AFTER you have learned something), but that does seem to be the result here — the internet killed the programming book just like it killed the newspaper.
Just want like to say thank you for sharing your knowledge.
You have done a fantastic job in this techinical video.
It’s one of the best technical training I have in years.
I have learned a lot from it and it’s well complement with the material that I have read(NHibernate in action etc…..).
You did a very good job explaining such a complex framework like NHibernate. Concise and meaty content.
I would to love hear your thought on Entity framework vs NHibernate.
Which is the better framework as a developement platform moving forward.
Current I am using CSLA framework for my project and would like to leverage ORM framework to do the CRUD operations.
Any suggestion/gotcha/tips for CSLA and Nhibernate?
Keep up the good works!
[…] faut y consacrer vraiment beaucoup de temps pour l’apprivoiser et c’est là que Steve A. Bohlen entre en action. Depuis le début de notre super été 2008 […]
Thank you so much for the first session.
Even as a french speaking developer knowing nothing about NHibernate, I have been able to understand every steps clearly.
Please let me know if you publish other video training in the .Net field.
Now the following session …
Thank you for your very clear explanations.
Your screencasts are excellent!
I would love to hear your thoughts about Linq vs NHibernate.
[…] Stephen A. Bohlen (вчера, кстати, он стал членом команды NHibernate) записал […]
This is what the community needs. Thank you for promoting good values.
@Sean:
Thanks for the feedback (and the donation 😀 ) Every bit helps, no matter the size.
I love the videos you have provided for NHibernate, the vidoes are perfect. Best training vidoes I’ve ever seen. Will you consider making vidoes on WCF?
Thanks for all your hard work
@Sandra:
Thanks for the positive feedback — I’m glad you are finding value in the work. Re: WCF, my initial reaction to that is ‘no’ since I’m not really a WCF expert and one of the things I think is VERY important in teaching anything isn’t so much being an ‘expert’ but certainly its a need to have a good command of your subject matter.
However, I’ve just begun to dig into reworking the architecture of an existing project completed some years ago and presently the leading candidate for a significant component of the system is MSMQ coupled with WCF to interact with the MSMQ server so who knows –? Perhaps by the end of the project I will be enough of an expert in at least that part of WCF to do some screencasts 🙂
Stay tuned~!
Hi Steve,
I’m pretty much a learn-a-holic too. Thats what lead me to your excellent NHibernate videos and also the Agile videos you have planned. Looking forward to those.
I’m trying to learn ways to learn better. Got the idea from the book Pragmatic Thinking and Learning. Good book; plants a seed.
We never really learn how to learn, it’s something we just take for granted we can do, and obviously we can learn, but is there a better way? Thats a rhetorical question I’m using to just pass on an idea.
Take it easy.
Hi Steve –
Am a Solaris admin who recently discovered your web site. Have been enjoying it. Are you related to Donald Bohlen? He was my college advisor at SUNY-Fredonia.
Best Regards,
Paul Osterman
New Hartford, NY
@Paul:
As a matter of fact, yes, Donald Bohlen is my father.
Which sort of begs the question: how does a Solaris sysadmin end up with a Music Professor as his advisor…?
(or more importantly, how does a musician end up as a Solaris sysadm?) 🙂
[…] guess what, I am quite impressed after watched training videos on summerofnhibernate produced by Stephen A. Bohlen. Also using open source code generator called MyGeneration made my work easy. Now when ever […]
Kudos on your work, Steve. Although I’m discouraged you never really mention the true reasons for all your knowledge, i.e. your roommate for two years at OSU. 😉
@Ray Brandt:
Of course, I owe everything I know to you! 🙂 Dude, send me an e-mail at the ‘Contact Me’ link on the right-hand sidebar and let me know how to get in touch with you — would love to catch up!
-Steve B.
[…] opportunity that has a value in excess of $1,000. The guy who runs the site and gives the talks is Steve Bohlen. Steve is a C# MVP and does
Hi Stephen,
Kudos to you! You have managed to make dry and boring topics like NHibernate and Agile interesting and engaging. I really want to thank you for your efforts. I wanted to learn about NHibernate and your screen casts have been extremely helpful.
Thanks again,
Luis
Hi Stephen,
This is truly excellent! I have been struggling with nhibernate for quite some time. As an ex-JAVA developer your series is phenomenal. Your efforts in putting this together have helped me out.
Hi Stephen,
Both of your Summer of NHibernate and Autumn of Agile series are just awesome. The tutorials provide more information than any other blog or a website. It is most definitely the No.1 resource I would recommend to anyone who is starting on NHibernate.
Thanks for all the effort you put in to creating these screencasts.
Thanks,
Keaton.
@Keaton R:
Thanks for the positive feedback — I’m glad you are finding the content to be valuable!
Stay tuned b/c after nearly a year’s hiatus, Autumn of Agile will be resuming very soon~!
-Steve B.
Hi Stephen,
My heartfelt gratitude for posting this series on Nhibernate. I never seen such a comprehensive tutorial on anything. Way to go Stephen, you are the best.
Great Work, Keep it up.
Ashwin
@Ashwin:
Thanks for the positive feedback; I’m glad you enjoyed the series!
More to come soon (promise!).
-Steve B.
Hi Stephen,
Just finished watching the Autumn of Agile videos and I have to say they are absolutely brilliant. The series is easily best learning resource I have come across on the web (and I’ve seen alot recently!), the detail is fantastic.
I look forward to the resumption of the series.
I have the summer of nhibernate series to look forward to!
Keep up the great work.
Shahid
@Shahid:
Thanks for both your kind words and you donation to assist in helping me fund the bandwidth it takes to make these available.
Stay tuned for the series’ resumption before the end of the year~!
-Steve B.
Hi Steve,
You are an excellent teacher. Very good at explaining… I have owned the Nhibernate in Action book from 2007/08 but always struggled with self teaching. And now I found these videos and spent the entire holidays going thru them and also deveoped my own project.
Thanks…
Ravi, Brisbane Australia
Steve,
Are you planning to post some more videos on Nhibernate ?
Thanks,
Ashwin
@Ashwin:
Probably not on NHibernate (specifically) for the time being but I am using NHibernate in the Autiumn Of Agile series that I am in the process of re-starting recordings for so you will see NH indirectly used in that series.
Hi Steve,
I’m watching your “Summer of NHibernate” videos and I must admit they are amazing (little bit problems because I’m using an up to date version of mbUnit ) thank you for showing to us this great screencasts, but I’m on session 3 and I need the original test data, I mean on the first source code file (from session 1) you have the script to create the database _without_ the data, I was wondering if you have a script which includes the data used for unit testing.
BTW I have the NHibernate in Action book but the book and your screencasts should be included in the same package the book as a reference and your videos as the actual course 😉
Thanks,
Mocte
@Mocte:
I don’t think I bothered to include the data because its not really needed. You can either type it into SQL Server manually (there’s not much to it) or use NDbUnit to load the data into the DB from the persisted XML and XSD files that are (should be!) also included in either that or the later downloads.
Thanks for the positive comments on the screencasts; glad you’re finding value in them!
-Steve B.
OMG ! What a silly question I should have realized that the data was on an XML file on the source code archives before asking 😉
Thank you, I’m going back to NHibernate sessions.
Regards,
Mocte
Mocte:
No problem; glad you found it.
-Steve B.
Hi Steve,
What an amazing series this is. Its simply awesome. I discovered y’day and have been hooked up to it and have watched pretty much non-stop and just finished it. I never had good perception about ORMs but now I am sold.
Have a question related to session 10 (inheritance). In your GetCustomersWithFirstName test, you showed us that even if we are querying for Customer, it returns both Customer as well as PreferredCustomer. Suppose I don’t need to fetch PreferredCustomerSince and DiscountRate properties rather fetch ONLY Customer properties, is there a way to implement that. So basically, I still want the query to return 3 Customer objects, but ONLY return Customer objects, not 2 Customer and 1 PreferredCustomer as it does today.
Thanks & Regards
Santosh
I was waiting and searching such kind of NHibernate demonstration video for years.I saw the link from an answer for a question on stackoverflow.It is amazing and perfect.
Well done.Bravo.
Wonde
Hello Steve,
First of all I need to thank you for the excellent videos you have posted.
I am not sure if this is the right way to contact you, but I have listened to all the videos you posted on Nhibernate and loved it. It was while ago that I saw all the 15 videos. Now armed with that knowledge you provided, I set out to create a website for my colleague this month and now I am getting stuck with problems.
I started using NHibernateSessionPerConversationModule.cs and everytime there is a page request for some reason the Application_BeginRequest gets fired twice. And it ends up throwing the follwoing messages.
1) Object reference not set to an instance of an object.
When I dig deeper here is what i see in the follwoing error messages
base {System.NotSupportedException} = {“This operation requires IIS integrated pipeline mode.”}
CurrentNotification = ‘HttpContext.Current.CurrentNotification’ threw an exception of type ‘System.PlatformNotSupportedException’
Iam using Visual studio 2008 on my windows 7 laptop and IIS server ( Version 7.5.7600.16358 ) . Am not sure if I have to change any settings in the integrated webserver of VS 2008.
Apart from this, I have a few other simple questions
I have a Load table and a Customer Table and a Load Type table.
Now Load table has a foreign Key to both Customer table and Load Type table. So basically in the Load object that gets generated using Mygeneration tool, I get a properties of Customer object and LoadType object and in the Load.hbm.xml
we have the follwoing
Now when I insert, a new row into the Load table using Nhibernate, in order for the foreign keys ( customerId and loadTypeid ) to get populated ( with existing rows in the Customer and LoadTypetable ) should I always need to retrieve the existing cutomer object and existing Loadtype object and then add to the Load object and do a Save() on it ?
Is there any way I can just insert the CustomerId and LoadTypeID like
Load Ld = new Load();
Ld.Customer = 1;
Ld.LoadType = 2;
instead of
Load Ld = new Load();
Ld.Customer = CustomerDataProvider.GetById(1);
Ld.LoadType = LoadTypedataProvider(2);
Hoping for some help and thanks in advance.
Ashwin
Thank YOU!
Wonderful videos and great source of knowledge.
Question:
Have you evered considered making a video with Linq to Nhibernate?
Dear Steve,
What a great person you are because you are sharing knowledge and in a ways which so easy to digest. I loved your screen casts on Summer of NHibernate.
I would love to say Thank you very very much from my side and from every person who benefited from these videos. They are great pieces of work.
Yours Sincerely,
Ittar Waqas
Dear Steve,
things looks very intresting by seeing your blog and NHibernate videos .
am new to Spring.net and NHibernate, can you suggest me some videos on spring.net and NHibernate to take it ahead. it will be great help for engineers like us to start up with it.
awaiting for your replay asap
Warm regards
kiran
Steve, thank you so much, you’re just a wonderful teacher.
Lectures are excellent. By the way, why do they not publish on pluralsight.com? I think, a lot of people must to see it =)
@krogin:
Thanks for the kind thoughts — I’m glad you enjoy my style of teaching. You should suggest to the folks at Pluralsight that they come talk to me 🙂
Hi Steve, you video is really helpful, excellent instructor.
Thank you so much.
Greetings from Canada
Simon
Welcome to choose the Franklin & Marshall Polo T-shirts which is easygoing, comfortable and everyday-proof from our franklin marshall outlet online shop, you can get all kinds of 2012 newest style franklin marshall clothing in our online store.
hello. it’s a nice postl.replica Tag Heuer Watches thanks for sharing/.omega casino royal replica i hope we have a shance to disscue replica omega classic
HI steve i cant find enough words to thank you for your great agile courses you cant imagine how many searches i have done to reach to simple and easy way yet practical like the way you present it ,am sure i will be living in you website and blog for while ,actually long while :)) thank you keep the great work :))) we need more 😀 we are your hungry Minds :))
Hmm it appears like your wesbite ate my first comment (it was super long) so I guess I’ll just sum it up what I submitted and say, I’m thoroughly enjoying your blog. I as well am an aspiring blog blogger but I’m still new to the whole thing. Do you have any recommendations for beginner blog writers? I’d genuinely appreciate it.
Thanks for the informative writing. Would mind updating some good tips about it. I still wait your next place.
So well explained incredible article, any buddy can follow it, thanks and keep up the great work. All the contents you mentioned in post are too good and can be very useful, Thanks