I attended CodeMash this month and it was a blazing success (yet again). This has become a nationally recognized event, bringing in A+ keynote speakers from all over. The inaugural event back in 2006 brought out The Gu himself for crying out loud! Each year seems to out-do the year before, and this year was no different. I mean, last year, I played GuitarHero with Scott Hanselman!! This year was very laid back for me, and I'm already excited for next years event. I actually plan to continue my attendance to CodeMash each year until I get out of the computer business and move to Maui to become a full time surfer. (yeah right)
Ironically this was a very low-key year for me. I've been at every Codemash so far, and this was the first one that I attended as a .NET developer desperately wanting to learn something new. Usually I just go to see what I can learn, but with no real goals of getting my mind blown. I used to mainly get excited about going to meet up with all my geek friends. I've never really taken the sessions for granted before, but the last few years I'd always run around with my entourage and just kind of "be there". However this year it was just me, and I was set to learn a lot of stuff; I was on a mission to learn Ruby.
I woke up at 4am and packed my drumset into the car (more on this later) and headed up to Kalahari Resort for the 8:30 am check-in and a nice breakfast before the 9 am Precompiler sessions start.
Test Driven Development - Leon Gersing
For the Precompiler session this year, I attended Leon Gersing's - Test Driven Development session. This was a very (, very, very) cool session where Leon actually got requirements from Jim Holmes (The Codemash President) for a "session scoring system". It was Leon's job to lead a (large) group of willing developers to build this system from Concept to Completion in one day. It seemed impossible as the session started and Leon was very casual in getting everybody setup with the tools needed for the day.
I literally sat down in the 2nd row knowing zero about Ruby, Rails, Git, or GitHub.com... and what the hell is a Ruby Gem?! :) Leon used a rendition of Scrum, and that, I did know. I was on a team that implemented scrum at my last company, and it proved to be a very successful approach to managing epic projects.
Leon was awesome in his role as the Iteration Manager. He encouraged all of us to be "courageous" and just be real. If you didn't know something, speak up and let everybody know. There's no shame in not knowing something. I actually used it a few times in order to get all the tools installed on my machine. I felt as though everyone around me was leaps and bounds ahead of me as I struggled to understand simple concepts like installing gems and understanding the what Ruby was and what Rails was.
I sat through the morning part of the session, but decided to move onto another session after lunch (no hard feelings Leon). :) I was simply in over my head without knowing Ruby or Rails. The team I was in had good knowledge of these technologies and I felt like I was (1) slowing them down and (2) learning nothing as they pushed forward without keeping me in the loop. No blame, just the facts. I plan to learn Ruby on my own within the next few months. I've heard too many good things about it to not give it an honest effort.
Advanced Presentation Patterns - Jeremy D. Miller
At lunch I actually sat next to Jeremy D. Miller (Mr. Code Better, himself). I was sitting with some other people and he sat down next to me. I had no idea who he was so I (of course) introduced myself only to find out it was him shortly thereafter. I've read his blog in the past and have known his name for quite some time. It was cool to shot the breeze with him, if only for a minute or two. After I finished eating, I actually decided to attend his session after lunch on a whim. It was standing room only, so I stood in the back and watched as he discussed different concepts for building robust user interfaces that allowed full control over the hosting UI dialog in regards to adding buttons, menus, and mapping navigation between windows. It was pretty informative, and I took some intense notes as he showcased some pretty complex user interfaces concepts with simple enterprise architecture models.
After this session, I went upstairs and decided to take a little nap. Again, I woke up at 4 am, and it was now approaching 5:30. After a short 1-2 hour nap, I woke up and took an intense 4 mile run on the treadmill and then headed out for a quick bite of dinner. Precompiler day was over.
The keynote was awesome! Mary Poppendieck gave a great presentation outlining the 5 Habits of a Successful Lean Organization:
What Makes Ruby Different - Joe O'Brien, Mark Peabody, and Leon Gersing
After the keynote, I headed over to "What Makes Ruby Different" where the EdgeCase guys showcased various aspects to the Ruby language and concepts that let Ruby stand out from the other languages. It was very informative and I learned quite a bit. They showed how a few lines of Ruby code can go a long way, and showed the different approaches of the same concepts in other languages. While the other languages were purposefully "ceremonial" to drive home some key points, I did gain a lot of respect for the Ruby language.
After this session, I got a few things done and then sat with Josh Holmes at lunch while we watched Hank Janssen give a keynote about open source technologies that Microsoft is working on. It was very informative and I learned that Microsoft is actually giving a lot of attention to this area, even though they are known for avoiding it. The ecoustics were difficult at times and we had a hard time hearing at times, but the slides really painted the pictures pretty well.
Ruby and Rails for the .NET Developer - Matt Yoho
Following lunch, I attended the Ruby and Rails for the .NET Developer. It was a toss up between this session and Powershell: Ten Things You Need to Know - by Hester and Lerch. I was happy that I attended the Ruby session, for I learned even more great things about Ruby. For example in Ruby, when you connect to a database, the language itself is so descriptive that you can query data simply by calling it in "english" like method calls. For example if I'm querying a table and want to find a row by a certain column, I simply say:
(note: ignore my syntax ignorance)
def rowByUser = db.find_by_username();I don't have to actually create these methods to query the database by user name and by state. In .NET there is a lot of extra work that we (as .NET developers) have to do in order to make these two calls work. Not with Ruby! Rails does this automatically!! That is cool!
def rowsByState = db.find_by_state();
For the vendor session, I attended the Telerik Code Ninja session where they showed some cool little coding tricks.
Refactoring the Programmer - Joe O'Brien
This was an awesome session. I'd introduced myself to Joe earlier in the day during lunch break or something and he is a very humble person. I've seen him at Codemash in previous years and have attended sessions of his before. I have actually followed him on Twitter for sometime now and he is just an all around great guy. This session was about getting developers to stay on top of their game and keep their skills sharp. This is something that I have to keep reminding myself actually, for I tend to get comfortable in my current skill set and have to force myself to really explore new things around me.
Joe was hilarious, for his session was another one of those sessions that was standing room only. Best yet, he didn't have his projector adapter (ie. "dongle" (ie. my wife's favorite geek word)) and therefore was forced to do his presentation with no over head display. It was just him and his scotch (?) in front of ~100 geeks. He nailed it! He kept it humorous and interesting, and best of all he provided some great advise for everyone in the room. He left everybody with 4 great books to check out and read:
- Passionate Programmer - Chad Fowler
- Pragmatic Thinking and Learning - Andrew Hunt
- Pragmatic Programmer - Andrew Hunt
- Apprenticeship Patterns - Dave Hoover
After Joe's session, I walked around and talked to a lot of the vendors. I remember being there as a vendor myself, and recall how frustrating it was to see people walk by the booth all day long but never stop. I stopped at every single booth and gave them my undivided attention for as much time as they needed to really explain their product to me. Of course, I gathered some t-shirts and drink tickets too. ;)
Ruby and Rails for the .NET Developer - Matt Yoho
After walking around the vendor booths, I headed over to see some of the cool things that Ruby has to offer for me. Unfortunately I only had about 15 minutes to spare and (honestly) I was having a hard time keeping my eyes open at this point. :( It wasn't the information that was making me tired, it was my brain that was making me tired. I tried to focus, but found myself slipping in and out of consciousness here. Sorry Matt, I'm sure it was a great session; I came in late, but... never really showed up I guess.
Dinner and Jam
From here, I stumbled out into the hall and got some dinner. After dinner, I headed up to my room and gathered my drumset. Upon gathering everything, I quickly realized that I HAD NO CYMBALS!! I had packed everything except for my cymbal bag. This is what I get for rushing out of the house at 4am I guess. It sucks that I packed all the big / bulky stuff, but forgot the one consolidated peice of equipment in the basement. I couldn't believe it... I had brought a set of toms with a bass petal. :( Luckily Grag Malcolm had brought his drumsticks! Otherwise, we would have been playing hand drums (yeah, my drumsticks were in the cymbal bag).
Regardless, I set up the drums and decided to go mingle instead. I caught up with some fun friends and we all played euchre for the remainder of the night and drank a lot of booze. Fun was had by all! Unfortunately, I didn't get to see one second of Enter the Haggis. I'm kicking myself for that!! :(
Woke up at 7am sharp and then headed back up to my room to change and workout for the first round of sessions. After that, I went back to the sessions and got into some cool content.
An Introduction to Functional Programming with Scheme - Michael J Norton
This was a bit over my head. I tried to get into it, but I went in knowing very little and left knowing just as much. I'm sure had I known some of the functional concepts that were being discussed ahead of time, I would have been able to keep up. I left early and mingled. :(
It was about this time where I'm getting fuzzy without my updated schedule list; a lot changed in the schedule that I"m going off of..
I do recall the keynote by Andy Hunt, and he was AWESOME! I really do plan to get his books and catch up on all the great content I'm missing. He was a great keynote speaker as he really knew how to work the crowd and had everybody's undivided attention for his entire keynote. I took a lot of notes and really enjoyed the lunch break.
Analyze and Optimize your .NET Web Application - James Avery
I learned quite a lot in here. James demonstrated how to fine tune any ASP.NET application using a set of profiling tools. He started with the ever famous "Nerd Dinner" and found that it was calling the database countless times for simple lookups. He used tools like RedGate - Ants Profiler, SQL Profiler and some other tools to help him isolate the bottle necks. It was pretty interesting to say the least and I learned a thing or two. Great session James! :)
I didn't win anything... again. Four years in a row, nothing. Oh well, it was fun to sit and watch others win in a weird way. Plus the CodeMash crew always works the crowd pretty well with shenanigans and cool giveaways. Simply a great event, CodeMash organizers!
If I didn't provide enough content for you in this single post, please read more here: http://groups.google.com/group/codemash/web/codemash-2010-bloggers