Posted by Dan Rigsby on 28th June 2008
This weekend I spoke at the first Lansing Day of Dot Net in Lansing, MI. This trip was a bit different as my wife joined me for the first time. She didn’t come for the Day of .Net, but afterwards we headed up to Mackinac Island for an anniversary trip. She did enjoy the event though and even got to attend my session.
We got up to Lansing on Friday night after dropping out daughter off at the in-laws in Fort Wayne, Indiana. We arrived around 6:30 pm and met up with Joe Kunk, Keith Elder, Jeff McWherter, Jeff’s wife, Vivek Joshi, Vijay Jagdale, and others at the local Kinko’s. Somehow my wife and I got tricked into helping fold pocket-mod event schedules while we were there. Afterwards, we went to a local Lansing event called the Festival of the Moon which as to commemorate summer nights. It was basically just a fenced in beer garden. We met up with Alan Stevens, his wife, and James Bender there. We didn’t stay too long as we got a bit bored with the drunken crowd and odd choices of music by the local band. We ended up heading across the street to a local pizza shop that offered Karaoke. Jeff, Alan, Keith, and myself all stepped up to the mic and performed our own renditions of various tunes. It ended being an early night since many of us had to speak in the morning. While in Lansing, my wife and I stayed with Vijay who graciously let us use a spare bedroom he had instead of paying for two nights in a hotel. Thanks for your hospitality Vijay!
On Saturday morning we headed to the event. I quickly met up with a number of old friends: Dave Redding, Chris Woodruff, Michael Wood, Carey Payette, Michael Eaton, Jason Follas, Patrick Foley, Josh Holmes, Jennifer Marsman, and Jay Wren. I also got to meet Len Smith and Sam Nasr and help forge some new friendships.
Distilling the Dynamic Language Runtime
Josh Holmes kicked off one of the first sessions with a talk on the DLR and the relevance of dynamic languages in today’s world. Josh is a Microsoft Evangelist and an amazing speaker. I was very surprised to see that there were only 10 attendees in his session. I can only attribute this to the fact that he held one of the first sessions of the morning. Originally the event was suppose to start at 9am, but a few days before, they moved the start time to 8:30. I surmise that many people hadn’t made it to the event yet.
Josh did a great job as usual. This session was very introductory, but it was still informative and put things into a perspective that I hadn’t quite thought of before. Here are my notes on his session:
More at machine level and programming against registers at a low level
Java and .Net allow us to write against a framework that talks to a machine.
Looking back over the history of languages, Smalltalk and LISP are dynamic languages. LISP is 50 years old. Why didn’t dynamic languages take off? Some say dynamic languages were infer. However as we get more powerful PCs a dynamic language becomes more viable
What is a Dynamic Language
- Analogy of taking everything with camping, like running shoes, and even canoe. Then as the trip changes, you can adjust. If you feel like hiking, then you have your shoes. Everything you could need is with you.
- Decisions limit options. Make a decision to go down a long road means there aren’t options to move.
- Agility = Options, Quarterbacks have options of different receiver they can use
- Dynamic languages emphasis runtime over compile time
Dynamic typing (or duck typing)
Type can change at runtime. “If it looks like a duck and talks like a duck, then its a duck”. Josh gave an example where at a banking company they used a 16 bit integer to store values, but as time went on, that was not enough. It would have been nice to use a dynamic language and allow the variable to expand and adjust as needed.
Open up the types at runtime which allow you to inject new properties to existing and running classes. Add the ability to dynamically add new properties to objects.
“Trade CPU cycles for productivity” Dynamic languages are slower, but its all about the trade of ideas.
About making your life easier, not the CPUs life easier. CPUs are getting faster, why not harness the ease for the developer and user.
Evidently, Ruby is now Josh’s favorite language. In Ruby, one of the goals is to reduce line noise (things such as variable declarations, casting, semicolons, etc is just noise). Strings in Ruby are mutable.
What is TDD?
Test Driven Development
Analogy of Car assembly: A car isn’t sculpted as one piece. A car is built out of many different components. Each part of a car is designed and independently tested before it is put in place. (However, they aren’t always tested well together). This is a lot like unit testing. Each unit of code should be defined and tested.
Yagni (You aint goina need it) – Don’t waste time building stuff you aren’t going to need. If you design your tests before you write your code, then you are building specifications for how the code should work. Anything that doesn’t have a test must be fluff.
Steps in TDD
- Write tests based off of requirements
- Run the tests to make sure they fails. If a test doesn’t fail, how can it be a good test?
- Write just enough code to pass the test.
- Go back and write more tests (step 1), and continue down the list
The tests become the documentation for how to write the code.
Dynamic Language Initiative in .Net
CLR –> Frameworks –> DLR –> Langauges
Python was originally written in C. Eventually there was a Java implementation of python called jython. When IronPython came along it ended up running twice as fast as standard editions of python.
Regular Expressions can be your Friend
Vijay ran a session on Regular Expressions and since he was hosting us for the weekend, I really wanted to make sure I attended his session. He did a great job of introducing regular expressions and what is possible with them. He event got into ways to help circumvent text based attacks. The only real suggestion I have on the presentation is to go over some of the differences in how regular expressions are implemented in different languages.
I was surprised at the number of people who attended and how much the audience got into the topic. This presentation contained a lot of code and demos which really fit well with the flow of the topic. I hope to see Vijay continue to speak at future events.
Manage Complexity with Agility
Alan Stevens gave this session which covered an Introduction to Agile and the MVC pattern. I have never gotten to attend one of Alan’s speeches before due to other conflicts, so I was glad to be able to attend this one. Alan did a great job. His explanation and examples of the basics of MVC and TDD were amazing. There is no way I could have given that good of an introduction. I went into session knowing this material, but it was great to see things in a new light, and you could see people in the audience get that little “ah ha” look. I look forward to catching some of his talks in the future.
My Session: Agile Project Management with Scrum
My session had a modest 30 or so attendees. I covered project management, what is “Agile”, and gave an overview of Scrum. The audience had a number of good questions and comments. This was the first speech of mine that my wife attended, she commented, “You did better than I expected, not that I expected you to be bad”. I am not sure how to take that, but I think it was meant as a complement. I do think that I get better each time I speak, but I have a long way to go to get as good as many speakers that I see. I had a number of people come up to me after the session to make comments and ask more about how they could apply Agile techniques at their own companies. Many people still seem to think that these techniques cant be applied to their environment. I hope that I can help change that perception over time. I have some ideas for some other Agile talks, hopefully they will see the light of day and be picked up at future events.
The materials from my session can be found here: http://www.danrigsby.com/files/Presentations/AgileMgmtWithScrum.zip
The Lansing guys did a fabulous job for their first day of .Net. I was amazed at all of the details they put into the event such as shirts for all attendees, commemorative cups for every speaker, a local camera crew to document the event, getting the mayor of Lansing to give closing remarks, etc. I will do my best to get on the speaker list again next year. I am sorry for those who didn’t make the trip up, this event was well worth the time and price of gas.
After the event, Jeff McWherter hosted an afterparty at his house which he claimed took more planning than the actual event itself. Jeff really organized a high quality afterparty. Most of the speakers and a lot of the event attendees made it out. There was a lot of food, even more alcohol, and most importantly many good conversations about .Net. Unfortunately, my wife and I left around 9pm. We still had to start our anniversary trip up to Mackinac Island in the morning.