Thoughts on #RichCC

A couple weekends ago, I attended Richmond Code Camp and had a great time. This was different than the last code camp I went to, in the fact that I spent most of the day presenting, not watching others.

I have coded in front of co-workers before. I have given presentations to strangers before. But I had never coded in front of strangers before. There were a lot of things I learned. Here is a summary of just a few.

Know your audience

One of the two talks I gave was on Powershell. In this talk, I didn’t understand the audience that would be in attendance. I am a coder, not a system administrator. Powershell was designed for both, but a large percentage of attendees were sysadmins, not straight up developers. This assumption caused most of my examples to be irrelevant. Instead of showing how to create a Runspace and call Powershell from within C#, I should have focused more on things like interacting with a database, remoting, and common sysadmin type tasks.

Maybe next time my abstract should be a little more well-defined so that the audience and I are on the same page.

Code very little

In my NHibernate talk, I had about 25 test cases I worked through. Each of those tests started off failing, and required one or two additional lines to make them pass. I would go through each test case, explain what it was doing, why it was failing, and type a couple lines to make it pass. This strategy worked WONDERS!

In my Powershell talk, I tried to code a script from scratch that queried the Twitter API. Bomb. I got so flustered I just copy and pasted from my helper file and made it work. I had to code too much during this demo. Here is my new mantra:

The more critics, the exponentially higher chance of a typo.

(NOTE: Please don’t think I am saying use PowerPoint. Just make it hard for you to screw up the code you have to write)

Figure out how to get some interaction

If you haven’t guessed, I think my NHibernate talk went a lot better than the Powershell talk. One reason I think this is I had almost no audience interaction in Powershell. When I did, they were asking a question that I couldn’t easily answer during my talk. NHibernate had a ton more interaction, and I felt everyone left the room with more info than when they came in.

Wow factor

The wow factor is crucial. Something that is going to make the audience remember your talk.

For NHibernate, the last thing I did was switch my config from MySQL to MSSQL (just the config, no code) and all the tests still passed. Definitely caught peoples attention.

For Powershell, I data bound a WPF app with Powershell scripts. I don’t think it achieved the wow I wanted, but I think its pretty damn cool.

NHibernate CodeCamp Talk – Source Code

I have published the source of my Code Camp talk here. Check it out and post any questions.

Thanks to everyone who showed up for the NHibernate talk. It went really well and everyone had tons of great questions. Feel free to post feedback here, both positive and negative, so the next time I give this talk, it will be even better.

For those of you that just want a little more guidance on NHibernate, here are some good links:

Also, thanks to the coordinators of Richmond CC. I had a great time.

Speaking at Richmond Code Camp on NHibernate

On October 3rd, I encourage anyone who wants to learn about NHibernate to come to Richmond Code Camp. I will be giving a 100 level talk describing how to get started using it, and what it really is.

My initial idea is to create a fairly simple ASP.NET MVC application without persistence (use in memory Lists). And, in an hour, make it 100% persisted with transactions, lazy loading, etc. I am a little concerned it will be hard to teach NHibernate and get it done in an hour, but I am going to go for it. My goal is to touch on session factories, sessions, simple XML mapping, attribute mapping, inheritance relationships, associative relationships, criteria queries, HQL queries, and lazy loading. If I get through all that, I’ll throw in some custom types and maybe some fluent NHibernate since I have never used it but have wanted a reason to.

Any suggestions on things to show or things not to show?

Re: Roanoke Code Camp

I attended my first Code Camp this past weekend. Overall, it was a great experience, although for a few reasons you might not expect. I learned a little about new .NET features, but the biggest benefit for me was the networking. My code community, for the most part, revolves around Mailtrust. Through Code Camp, blogging, and Twitter (I will blog on this later, since you might remember my last Twitter post) I have joined a community of developers much larger than Mailtrust’s.

This is a good thing.

With that being said, I did really enjoy learning a few things.

  • WPF is pretty wild, especially with Blend. Let designers design interfaces directly, and developers just make it work. This isn’t the first time this concept has been tried out, but it works pretty damn well from what I saw.
  • .NET 4.0 – Oh ya. I loved that stuff. Learning about dynamic, DLR, and language enhancements is my crack.
  • PEX and Code Contracts – Good concepts (but some things I didn’t like)

What could be improved on?

  • Don’t shun open source. NHibernate and NUnit are great tools, and we shouldn’t ignore them because Microsoft is competing with them ( Entity Framework and Unit Testing Framework).
  • More code. Powerpoint should be banned.
  • Don’t trivialize the importance of good testing. Pex is really an amazing concept, that can complement testing, not supplement (Yes, I love trig).

It was a great experience though. I am looking forward to more RVNUG involvement, as well as my next Code Camp.