About Me
My name is Steve and I am a learn-a-holic.
(all together now: “Hi, Steve!”)
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 presently employed in the New York offices of Microdesk, a Value-Added-Reseller of Autodesk, ESRI, Google, and other software products. A significant and growing part of our business is in the area of custom software integration solutions for large AEC and manufacturing clients, often focused on CAD automation and GIS 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.






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,
July 25th, 2008 at 11:47 amMarc
@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 ).
July 25th, 2008 at 2:30 pmI 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
August 9th, 2008 at 3:11 pm@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.
August 10th, 2008 at 7:41 amJust want like to say thank you for sharing your knowledge.
August 27th, 2008 at 12:39 pmYou 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 [...]
September 5th, 2008 at 4:29 amThank you so much for the first session.
October 23rd, 2008 at 7:28 pmEven 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.
November 23rd, 2008 at 5:49 pmYour screencasts are excellent!
I would love to hear your thoughts about Linq vs NHibernate.
[...] Stephen A. Bohlen (вчера, кстати, он стал членом команды NHibernate) записал [...]
December 4th, 2008 at 12:00 pmThis is what the community needs. Thank you for promoting good values.
December 14th, 2008 at 4:51 am@Sean:
Thanks for the feedback (and the donation
) Every bit helps, no matter the size.
December 14th, 2008 at 8:57 amI 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?
January 26th, 2009 at 9:42 amThanks 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~!
January 27th, 2009 at 10:16 pmHi 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.
January 31st, 2009 at 10:46 amHi 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,
April 17th, 2009 at 12:17 pmPaul 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?)
April 18th, 2009 at 6:41 am[...] 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 [...]
May 15th, 2009 at 10:45 amKudos 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.
July 9th, 2009 at 9:08 pm@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.
July 10th, 2009 at 4:09 am[...] 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
July 17th, 2009 at 8:41 amHi 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,
August 31st, 2009 at 3:15 pmLuis
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.
September 2nd, 2009 at 11:03 amHi 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,
November 18th, 2009 at 5:36 pmKeaton.
@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.
November 19th, 2009 at 9:28 amHi 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.
November 23rd, 2009 at 11:28 amAshwin
@Ashwin:
Thanks for the positive feedback; I’m glad you enjoyed the series!
More to come soon (promise!).
-Steve B.
November 23rd, 2009 at 9:21 pmHi 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
November 29th, 2009 at 3:28 pm@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.
November 29th, 2009 at 3:36 pmHi 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
January 2nd, 2010 at 5:13 pmSteve,
Are you planning to post some more videos on Nhibernate ?
Thanks,
January 11th, 2010 at 4:07 pmAshwin
@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.
January 11th, 2010 at 6:51 pmHi 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,
February 23rd, 2010 at 10:47 pmMocte
@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.
February 24th, 2010 at 4:49 pmOMG ! 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,
February 24th, 2010 at 8:13 pmMocte
Mocte:
No problem; glad you found it.
-Steve B.
March 1st, 2010 at 10:10 amHi 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
March 10th, 2010 at 9:30 pmSantosh