Browsing Posts in Courses

DevTeach.com Another year, another DevTeach. A big thank you to everyone involved. To the organizers, Jean-Rene Roy and Maryse Dubois, thank you for continuing to support and encourage the Canadian developer community. To my fellow Tech Chairs, for helping select an awesome array of both local and international talent to present. To my fellow speakers, for giving some fantastic talks. To all the attendees, for their eager participation, helpful comments, and continued encouragement. To old friends and new whom I spent catching up with in the unofficial speakers lounge, at dinner, and around drinks. There is always something new and fun at DevTeach and this year was no exception. Here are the slides decks and code for those interested:

Convention-over-Configuration in a Web World (pptx | code)

Convention-over-Configuration in an Agile World (pptx | code)

Agile Development with IoC and ORM (pptx | code)

If anyone has any questions, comments, or issues with the slidedecks or code, don’t hestitate to leave me a comment.

DevTeachDevTeach is heading back to Toronto in a few weeks (March 8-12, 2010)and you’ll get a bigger dose of awesome than ever before. We’ve got a fantastic line-up of top-notch, internationally renowned speakers. 6 tracks covering Agile, Web, Windows, Silverlight, Architecture, and SharePoint. A metric ton of sessions. (I’m both the Agile and Web Track Chairs and am really excited about the speakers and sessions for each.)

ee402630.VisualStudio_lgMicrosoft Canada is a platinum sponsor and every attendee receives a full copy of Visual Studio Professional with MSDN Premium. (N.B. Conference registration costs less than this subscription alone!)

imageAnd if you can’t get enough of that Sugar Crisp James Kovacs,  I’ll be there in full force with two sessions and a one-day post-con on agile development.

Convention-over-Configuration in an Agile World

As developers, we spend an inordinate amount of time writing “glue code”. We write code to transform database rows to domain objects… domain objects to view-models or DTOs… We write code to configure inversion of control containers and wire dependencies together. We write code to style our UIs and respond to UI events. Wouldn’t it be nice if this could happen automagically for us? This session will look at using convention-based approaches using Fluent NHibernate and Castle Windsor to reduce the amount of repetitive code and accelerate application development.

Convention-over-Configuration in a Web World

As developers, we spend an inordinate amount of time writing “glue code”. We write code to transform database rows to domain objects… domain objects to view-models or DTOs… We write code to configure inversion of control containers and wire dependencies together. We write code to style our UIs and respond to UI events. Wouldn’t it be nice if this could happen automagically for us? This session will look at using convention-based approaches using AutoMapper and jQuery to reduce the amount of repetitive code and accelerate application development.

Agile Development with IoC and ORM (Post-Con)

As developers we now have powerful tools in our toolbox, such inversion of control containers and object-relational mappers. But how can we use these tools to rapidly build maintainable and flexible applications? In this pre-con, we will look at advanced techniques such as convention-over-configuration in IoC containers and automapping ORMs to quickly build applications that can evolve over time. We will use test-driven development (TDD) to design and evolve a complete working application with supporting infrastructure during this one-day workshop.

Hope to see you in Toronto!

DevTeach.com DevTeach is my favourite conference of the year and it’s happening again in Vancouver on June 8-12, 2009. No, it’s not my favourite conference because I’m one of the Tech Chairs. It’s the other way around. I’m a Tech Chair because DevTeach is my favourite conference. For the curious, Tech Chairs do not receive an honorarium or other compensation. We do it because we love DevTeach and the community it brings together. Here are my Top 10 Reasons to attend DevTeach Vancouver.

  1. It’s got a dedicated Agile Track, baby! 18 sessions of agile goodness.
  2. The Agile Track has more TLAs than any other track, including TDD, BDD, DDD, ORM, IoC, and DSL!
  3. Internationally renowned speakers, including Oren Eini (aka Ayende Rahien), David Laribee, Michael Stiefel, Greg Young, Eric Renaud, Francois Tanguay, Claudio Lassala, Hamilton Verissimo, Owen Rogers, Donald Belcham, and me. And that’s just the Agile Track!
  4. More IoC than you can shake a stick at with sessions by Oren Eini (current maintainer of Castle Windsor), Hamilton Verissimo (creator of Castle Windsor and Microsoft PM on MEF), and me. (I feel so outclassed in that line-up.)
  5. 1-day pre-conference session on Agile Development with IoC and ORM with James Kovacs and Oren Eini. Register now! ($399 CAD) Spend an intense day of coding with Oren and me learning about how to build applications with Fluent NHibernate, Windsor, AutoMapper, and other agile-friendly technologies.
  6. ALT.NET Canada happening June 12-14, 2009 at the same hotel. Register now! (FREE!) (DevTeach is a major sponsor of ALT.NET Canada. Thank you, JR!)
  7. .NET Rocks will be in the house again! Carl and Richard always provide lively discussion and entertainment. DevTeach Vancouver will be no different with a .NET Rocks-hosted Visual Studio 2010 Beta 1 InstallFest.
  8. At DevTeach, speakers don’t hide in the Speakers Lounge. You get to meet them face-to-face and ask them questions.
  9. DevTeach Education Stimulus Package! In difficult times, DevTeach trying to help out by providing three registrations for the price of two. You can find details on the Registration page.
  10. DevTeach is a conference where speakers go to learn. Unlike other conferences, speakers actually go to each other’s sessions and participate. This results in lively discussions that are fun for speakers and attendees alike.

Hope to see you at DevTeach Vancouver! Don’t forget to register for the day-long Oren/James extravaganza of agile fun. Or ALT.NET Canada!

This is a friendly public service announcement that seats are still available for my Object-Relational Mapping with NHibernate course. The three-day course is being offered in Calgary running from Tuesday, August 26, 2008 to Thursday, August 28, 2008. You can find the full course announcement here with instructions on how to register. If you are a company or group of individuals, please contact me directly at jkovacs@post.harvard.edu about a group discount.

I am currently planning future public offerings of the course and would like your feedback on where, when, how much, … I would appreciate it if you could take a few minutes to complete a short survey. As a thank you for your time, I will randomly pick one respondent to receive a copy of JetBrains ReSharper 4.0 Personal Edition. (N.B. The survey is limited to the first 100 respondents.)


The survey is now closed. The winner of the JetBrains ReSharper license has been contacted. Thank you to everyone who participated.

Many people have asked over the past few months whether I will be offering a public course on NHibernate. The answer is now “Yes!” and it will be debuting in Calgary in August.

If you’re interested in OR/M with NHibernate and can’t come to Calgary, then maybe the course can come to you! Email me for more information on bringing the course to your city. I also offer this course privately if your company prefers that format. Once again, email me for more information.

If you’re interested, you can register for the Calgary course here (credit card). Please email me directly if you wish to pay via purchase order.

Object-Relational Mapping with NHibernate

Location The Westin Calgary
320 4th Avenue SW
Calgary, AB T2P 2S6
(map)
Dates Tuesday, August 26, 2008 to Thursday, August 28, 2008

Overview

Object-relational Mapping with NHibernate is an intensive 3-day course designed to introduce students to the core concepts of object-relational mapping (OR/M), such as querying and persisting objects to a relational database and mapping objects, collections, and inheritance relationships. The course will cover querying with the Hibernate Query Language (HQL) and the Criteria API. Students will learn how NHibernate encapsulates data access using the identity map and unit of work patterns, lazy loading, persistence by reachability, and automatic dirty checking. Advanced topics will be covered as student interest and time permit, including how and when to use the NHibernate’s 2nd level cache, building a persistence layer using the repository pattern, batching operations with multicriteria and multiqueries, and querying with LINQ to NHibernate.

Topics

  • Introduction to O/RM
  • Configuring NHibernate
  • Mapping Basics
    • Mapping primary keys
      • PK Types – Native, Identity, Guid, GuidComb, Sequence, HiLo
      • Composite Keys and why you shouldn’t use them
    • Mapping Fields and Properties
  • Querying Basics
    • ISession.Load/Get
    • hibernate.show_sql
  • Mapping Components
  • Schema generation
    • Using SchemaExport to create/update your database schema
    • Adding additional mapping attributes
  • The CUD in CRUD
    • Persistence by reachability
    • ITransaction
  • Mapping Relationships and Collections
    • One-to-one, one-to-many, and many-to-many
    • Handling cascades
    • Understanding Inverse=true
    • Lazy loading
    • Avoiding the N+1 SELECT problem
  • Mapping Inheritance hierarchies
    • Concrete table inheritance (table per concrete class with complete columns)
    • Single table inheritance (uses descriminator column and all possible columns)
    • Class table inheritance (aka table per class with diff of columns)
  • Advanced Querying
    • Querying with Hibernate Query Language (HQL)
    • Querying with the Criteria API
    • Projections
  • Optional Advanced Topics
    • Multicriteria and multiqueries
    • Future queries
    • Advanced querying with native SQL
    • NHibernate with sprocs
    • LINQ to NHibernate
    • Implementing a query govenor
    • Abstracting the persistence layer with unit of work
    • Optimizing database access with the level 2 cache

Requirements

  • Familiarity with C# and .NET Framework
  • Laptop with Visual Studio 2005 or 2008 and SQL Server 2005 Developer or Express installed

Included in the cost is:

  • 3-days of intensive training on NHibernate
  • Screencasts recorded during the course for easy review
  • NHibernate in Action by Kuate, et al. (ebook)
  • ReSharper 4.0 Personal License
  • All code examples created throughout the course