Friday, September 28, 2012

Conference Survival Guide

The fine folks running Bar Camp Nashville asked me to write a short guide to help attendees get the most out of their un-conference experience.

General Tips
  • Plan Your Schedule - Note which sessions you want to attend in advance. Choose backup sessions in case your first choice gets rescheduled or canceled.
  • Dress Comfortably - It's hard to concentrate on the speaker if your feet are hurting.
  • Bring a Bag - The conference might provide one, but then it's going to look just like everyone else's and you run the risk of losing it.
  • Take Breaks - All those sessions can get overwhelming. Don't be afraid to take a break to digest and discuss what you've heard with others.
  • Don't Be a Loner - Meals are great networking opportunities and you can usually find at least one other person who is hungry and would enjoy the company.
  • Be a Loner - Don't spend the whole conference around the same people, especially coworkers or friends who you see regularly. By striking out on your own you may meet people you otherwise wouldn't.
  • Eat Left Handed - There's no telling what kind of germs you've accumulated by shaking hands, not to mention all the door knobs and railings. Wash your hands regularly, use sanitizer and try not to touch your face or handle food with your dominant hand.
  • Use Twitter - Even if you never post a single tweet, Twitter is a great way to find out what's going on and connect with people. Search for the conference name, hash tag or influencers to see what people are up to.
  • Write on Business Cards - When handing out or receiving a business card, flip it over and write a short note on the back to help later with recalling what was being discussed.
  • Follow Up with Contacts - Don't just throw all those business cards in a drawer when you get home. Take a moment to write follow-up emails and enter their contact information into your address book.
Session Tips
  • Taking Notes - Write down reminders for yourself when you hear/see something you want to look at more closely later. Ask if the presenter will be posting their slides. If not, use your phone's camera to take snapshots of important slides. If so, then there's no need to copy them down and you can focus on what the presenter is saying.
  • Ask Questions - Unless the presenter has asked to hold questions until then end, don't be afraid to speak up. Chances are, someone else in that room has the same question and is afraid to ask.
  • Use the Two Foot Rule - If you're not getting something out of the presentation, don't be afraid to use your two feet and walk out to try another session or just socialize.
  • Following Up - Most presenters will share their email address or twitter handle as a way of contacting them with questions. Take advantage of their offer to start a dialog.
  • Do Something - Find a way to use what you've learned in the session. Teaching it to others is a great way to be sure you understand and will retain your new-found knowledge.

Monday, September 24, 2012

Memphis .NET User Group (MNUG)

Last week I mentioned that I'll be speaking at the NE Arkansas .NET User Group on the 27th. Since then, we've arranged for that presentation to be broadcast via Live Meeting and the Memphis .NET User Group will be joining us live. Someone local will monitor the meeting chat room and relay any questions or comments from the online participants.

If you attended this talk and would like to provide feedback, you can do so at

Thursday, September 20, 2012

New Talk - Going Solo

I'm working on a new talk for Bar Camp Nashville and have never had so much fun putting together a presentation. The title of my talk is, "Going Solo - How to Train Your Wookiee" and am going with a Star Wars theme. Here's what I've got so far:

Description: When you started you were but the learner, now you are the master. You can make the Kessel Run in less than twelve parsecs, but you're getting tired of Greedo and Jabba demanding a cut. If you dream of being your own man, join us in discussing how to choose and outfit your ship to embark on the quest for freedom.

  • Opening Introduction - "I'm Gaines Kergosien, I'm here to rescue you."
  • Getting Rich - “Wealth...more than you can imagine.”, “I don’t know. I can imagine quite a bit.”
  • Possible Pitfalls - "I've got a bad feeling about this."
  • You Can Do It - "I find your lack of faith disturbing."
  • Marketing Yourself - "The Force is strong with this one."
  • Creating a Company - "Aren't you a little short for a stormtrooper?"
  • Contractor Agreements - "Let’s just say we’d like to avoid any imperial entanglements."
  • Managing Finances - "Into the garbage chute, flyboy!"
  • Paying Taxes - "The Phantom Menace"
  • Tax Deductions - "These aren't the taxes you're looking for."
  • Working Remotely - "You're all clear, kid! Now lets blow this thing and go home!"
  • Subcontractors - "Help me Obi-Wan Kenobi. You’re my only hope."

Special thanks to Scott Walters and Philip Wilson for helping brainstorm ideas for the talk.

The schedule has been finalized and we'll be in the Cadillac Ranch Poker room at 3:45pm on October 20th.

Here's a quick preview of a few title slides from the presentation:

We'll be streaming live at

Tuesday, September 18, 2012

.NET Testing Frameworks

Most of my testing experience has been with MSTest, NUnit and Selenium and I feel this is an area I need to explore in more depth, so I thought I'd put the question to my colleagues and readers: What testing frameworks do you prefer and why? Below are a few lists of some .NET oriented frameworks with some notes on what sets each of them apart from others. I welcome comments confirming, challenging or correcting these notes as well as suggestions of others I may have missed.

Unit Testing
  • MSUnit - Included with VS, Easy to implement
  • NUnit - Most common third party framework
  • xUnit - Extensible, lends itself to TDD/BDD
  • MbUnit - RowTest for parameterized testing

Acceptance Testing (web)
  • Selenium - Relies on CSS ID and class selectors
  • WatiN - Works best with IE



Monday, September 17, 2012

NE Arkansas .NET User Group

I'm scheduled to speak at the Northeast Arkansas .NET User Group on September 27, 2012. The topic of this talk will be Testing the Untestable with Microsoft Visual Studio 2012 Fakes. I've given this same talk several times at regional conferences and user groups and an overview can be found on my blog, however one great thing about speaking at local groups like this is that the audience helps direct the session and we often end up focusing on areas that are most useful to that particular group.

While anyone is welcome to show up, the group leader has requested that attendees RSVP so they have an idea of how many to expect. See you there!

If you attended this talk and would like to provide feedback, you can do so at

Tuesday, September 11, 2012

Great MVVM, WPF, SOA and EF4 Articles

I was asked to put together some links to articles that would help our IT department ramp up on some of the patterns and technologies we're using. By the time I was done with the email, I realized it might be of use to others outside our organization so part three of my MVVM with WPF series was born. There are many approaches and I highly recommend researching beyond this handful of articles, but for anyone not yet familiar with these concepts I hope they help.

The Model-View-ViewModel (MVVM) pattern helps to cleanly separate the business and presentation logic of an application from its user interface (UI). This separation is key for testability, maintenance and scalability.

Here’s an introduction to MVVM which illustrates how it leverages WPF data binding and commands.

The main difference between what we’re proposing and how they define MVVM in the previous articles is, by using a convention-based framework such as Caliburn.Micro and events/commands to wire up the View and ViewModel, they are completely decoupled allowing for better testability and future scalability. The Caliburn.Micro wiki has a good introduction to the functionality it provides.

This article gives a good introduction to Attribute Based Validation which allows us to keep validation logic down in the business layer and entities where it can then bubble up and be reflected in the UI.

If there’s interest in going deeper, here’s an article on using a Service Oriented Architecture (SOA) to decouple service providers from consumers allowing for greater reuse and insulating the application from core business logic.

Finally, a  series of articles outlining the use of a Generic Repository with Entity Framework 4 (EF4) to reduce the amount of plumbing that must be written and maintained for data access.

See also:
MVVM with WPF Series Part 1. Disconnected WPF Applications
MVVM with WPF Series Part 2. WPF MVVM with WinForms Controls