I had an amazing time last night at the Inland Empire .NET user group run by Founder and President James Johnson (@latringo). The celebration marked the 3rd annual Most Valuable Member awards ceremony. Thanks to Mr. Johnson this user group meeting went far beyond what you think of when you consider a typical meeting. There was catered food, three presentations, an endless stream of giveaways and a true sense of community!
The night began with James welcoming the group of 50 or so members and guests with a quick recap of the last year. Here are some of the highlights:
- A steady stream of accomplished presenters
- Two 10-week weekend study programs featuring in-depth training on ASP.NET MVC and SQL Server
- A thriving book review program featuring over a dozen reviews and $450 in review awards given back to members
- Status on the support for the a sister group, the Zambian Developer’s User Group
After thanking sponsors and prepping the crowd for the first presentation, the food arrived. When was the last time you saw something like this at a user group meeting?
More pictures here.
The second act of the night were three short, yet dense presentations on a wide array of topics.
Tales from Access 2007 in the Wild
I don’t remember the title of Davis DeBard’s talk off the top of my head, but he quickly plunged the audience into a series of Access gotchas with strategies of how to deal with each problem. One of the points that sticks out the most is his mention of “phantom breakpoints” that cause an Access application to hang even when it’s not being run in debug mode. Davis rolled out a number of these types of tips and tricks that made for an interesting talk even for someone who doesn’t live in the Access world.
The Worst of Legacy Code – Forensic Development
The next talk given by Llewellen Falco (@isidore_us) and Jason Kerney (@bagheer) entitled “The Worst of Legacy Code – Forensic Development”. This was not only my favorite talk of the night, but perhaps one of best technical presentations I’ve ever seen. Their talk began with an engaging introduction where Llewellyn introduced Jason and then Jason returning the favor. There was stage presence to the format and and they had my undivided attention from the moment they began.
This talk had it all, they told a story, they were funny and even worked a few skits into the talk. The tag-team approach of Llewellyn and Jason complimented the material as they seamlessly transitioned from one principle to the next.
Okay enough gushing about the delivery – the content was superb as well :)
The premise of the talk lies in imagining you are a developer whose job is simply to maintain code. You are a maintenance programmer who must work with code that you probably did not write and certainly were not in charge of up-front design. What if you are this developer at at 4:30pm on Friday the pointy-haired boss tells you that that bug #54 must be fixed before you leave for the weekend. How do you go about finding the bug? How do you know if the bug is really fixed?
One of the first things they did was pass out a sheet of paper with some of the code to debug during the talk. Look close… what do you see?
Debugging code you are unfamiliar with is bad enough, but they endeavored to teach you to debug code that is in Russian no less!
The concepts are simple yet powerful:
- Run the code: Try to simply run the code as-is. Try to ignore database connections and any other environmental dependencies
- Peel off hindrances: Should a database connection or access to the file system stop you from running, “peel” this code off in to a separate method and attempt to move into working code by bypassing the dependencies
- Slice out embedded errors: If there are some errors deep in the code, “slice” them out of the method by using mock objects
The metaphor they used was how you might approach eating a mango:
In the end, the audience was given tools to use the very next day on debugging existing applications.
There was a lot to take away, but some of my favorite quotes from the presentation are:
Don’t think if you don’t have to...
This means let the compiler tell you where the problems are. Systematically peel and slice at the code until you get to the core problem.
Don’t be creative if you don’t have to...
When you create new methods to support the extracted maintenance code don’t try to design an API. If you are working on CreateLoans and you extract some logic to a new method, a name like CreateLoans2 is perfect.
Forensic development indeed!
The final presentation of the night delivered by Lynn Langit (@llangit) is noteworthy for a completely different reason. Lynn shared her experience working with Zambian developers to create SmartCare. The SmartCare system is an electronic health record system that, among other things, uses smart card technology to store patient medical records. Lynn’s involvement with the projects has spanned a number of years and her dedication and passion for the people of Zambia were paramount to her talk.
To learn more about the SmartCare system, watch Lynn’s interview with Mwansa Lumpa during the 2009 TechEd Africa.
Most Valuable Member Award
The final act unfolded when James began to describe the Most Valuable Member program to the audience. The origins of the program come from James’ 8 year helm of the user group and his desire to see members more involved. The incentive program of Most Valuable Member came to life when James began awarding points for members to:
- Help with meeting setup and tear down
- Write technical blog posts
- Conduct book reviews
- Help facilitate meetings
Silence fell across the room when James announced that as he began to work with sponsors, the prize packages valued at $20,000 for the two runners-up and a whopping $25,000 for the final Most Valuable Member winner!
2009 – 2010 Inland Empire .NET User Group Winners
Other Notable People in Attendance
My employer, Infragistics is a sponsor of the Inland Empire .NET User Group and provided sponsorship for the MVM event. I also think James Johnson is one of the nicest guys you’ll ever come across ;)