# Thursday, January 8, 2009

Today was the first "official" day of CodeMash and I spent most of it learning from experts.  Below is a quick summary of the sessions I attended.

Introducing Prototype and Scriptaculous
Leon Gersing made a splash Wednesday night during a .Net Rocks panel discussion by passionately arguing that JavaScript should be included in any discussion of rich internet applications and that JavaScript methods are unit testable dammit!  He continued that passion Thursday morning in this session, showing the prototype JavaScript library and

Developing for Microsoft Surface
I've seen people talk about Microsoft Surface, but this was by far the most comprehensive hands-on demo I've seen.  Jennifer Marsman (Microsoft) and Joe Engalan (VectorForm) showed applications built for the Surface and built an application on the fly.  They tools are very similar to WPF.  They even brought a Surface with them and attendees were allowed to play with it throughout the conference.

Mary Poppendieck is a noted author on Agile development methodologies.  In this session, she spoke about the things that cause "thrashing" - or decreased productivity - and ways to avoid this.  She emphasized the need to maintain a level workflow, so that developers can establish a cadence and more easily manage their project.  One way to accomplish this is to eliminate long backlog of features - many of which will never get implemented.

Managed Extensibility Framework
Drew Robbins
MEF is an upcoming framework from Microsoft that will allow you to build applications as composable parts that can be assembled at runtime.  Drew spoke conceptually about MEF and stepped through some sample code.  I've given talks on MEF in the past yet I still learned from Drew's talk.

Thursday, January 8, 2009 10:37:37 PM (GMT Standard Time, UTC+00:00)

At this CodeMash, I resolved to get outside my comfort zone and learn something new.  Today, that new thing was Ruby. 

I have literally minutes of experience thinking about reading about developing applications in Ruby.

In other words, I'm a Ruby virgin.

Joe O'Brien and Jim Weirich hosted a learning session on Ruby at the CodeMash Precompiler Day (sort of an optional Day 0 for the conference).  I wouldn't call it a class or a seminar.  Joe and Jim spent only a few minutes at the front of the room introducing the topic.  But they did provide about25 hands-on labs for us novices to work through.  And they walked around providing help and answering questions for us novices struggling through it.

For me, it was perfect.  I had a chance to get some hands-on experience with Ruby for the first time.  I learned many of the basics of Ruby - testing, arrays, method calls, testing, blocks, iterations and testing.  Did I mention that testing is important to Ruby developers?  Because of Ruby's "duck typing" (variable types are not declared in the code but are inferred by the values assigned to those variables), the compiler will not catch as many errors as the C# compiler.  This forces Ruby developers to write many unit tests to verify their code behaves as expected. 

Appropriately, most of the labs revolved around writing unit tests.

I am now looking at the schedule for the next two days to see if I can learn more about Ruby while at CodeMash.

I don't yet know if I can use this knowledge to benefit my day job, but this exposure will enhance my coding perspective in the long run.

Thursday, January 8, 2009 4:08:04 AM (GMT Standard Time, UTC+00:00)
# Tuesday, January 6, 2009

Tomorrow is the first day to the annual CodeMash conference in Sandusky, OH.  Billed as the finest software conference in an indoor water park, CodeMash is a great way to learn about .Net, Java, Ruby, Python and a host of other technologies.

For me, however, CodeMash marks the beginning of a year of community involvement.

In January 2008, I had recently changed jobs.  After almost a decade with the same company, I left to reduce travel and spend more time with my family.  My prior employer was a good company, but it was difficult for me to get involved in the development community because

  1. Constant travel kept me from attending local user groups.
  2. Constant travel made it difficult to meet developers near my home.
  3. The company had a culture with a strong internal community, so most employees didn't need to seek that from the outside.
  4. I didn't know what I was missing.
  5. I didn't know how to get involved in the community.

As it turned out, my new employer was (and is) very active in the software development community - a major reason I was drawn to them.  Several of them were on the board at CodeMash and many spoke at the conference; In fact, employees of my new overlords frequently spoke at, ran and organized conferences and user groups across the Midwest. 

I ended up meeting a lot of my new co-workers for the first time at CodeMash.

I also met a lot of other folks in the development community - many of them from Michigan.  It was a great experience because I had a chance to exchange ideas with a lot of smart people and to see how they share their knowledge.  I'm still humbled by the lengths to which some of these people go to contribute to the community.

Meeting so many bright people who were anxious to share ideas was an inspiration to me.  IN the months following CodeMash, I became far more involved in two local user groups; I developed and delivered talks to a variety of audiences, including 3 different user groups, a conference and a couple Microsoft events; I created an account on Twitter and used this medium to exchange ideas and pleasantries with a number of people; I used LinkedIn to connect with people and, inspired by Jeff Blankenburg's Contribupendence Day, I recommendations with bright people I know.

At this year's CodeMash, I expect to meet more bright people and I expect to be inspired by them.  But I also expect to meet up with those who inspired me last year.

Tuesday, January 6, 2009 9:54:09 PM (GMT Standard Time, UTC+00:00)
# Sunday, November 30, 2008

I often meet people who tell me they wish they could speak in front of a crowd, but they fear doing it because they know they are poor at public speaking.  These people are both right and wrong.

Ten years ago, it would have been unthinkable for me to stand in front of a group of professionals and speak to them about how to do their job better.  But these days, this is a frequent occurrence for me.

Thinking back on those days, I recall that the main thing keeping from even attempting public speaking was the sheer terror of being alone in front of a group.  I knew this at the time, but I also recognized that public speaking was a deficiency in my skill set. 

So I set out to address this deficiency. 

I found opportunities to speak publicly - safe opportunities where the risk of failure was low.  My children were in elementary school, so I volunteered to read aloud to their class.  I volunteered to read aloud at church service.  I put together technical presentations and delivered them at work. 

As my confidence grew, I began to speak at local user groups. 

Eventually, I was comfortable enough to take a job as a trainer, where I had to stand in front of a classroom full of strangers and pretend to be an expert on various topics.

Today, I seize every opportunity to speak to a technical group.  In the past year, I’ve spoken at Day of .Net, DevCares, ArcReady, three different user groups, and at a number of different companies.  I love the rush that comes with delivering a good presentation.  I love when a talk is well received and people tell me so.

Along the way, I learned a few things.

The hardest part of public speaking is overcoming the fear of public speaking.  But much of that fear is unfounded.  We are afraid because we know that our presentation will be less than perfect.  We're right about the imperfection but we're wrong about the importance of perfection. 

Most audiences don't demand perfection.  I've been on both sides of the stage and I think I understand what most people expect from the speaker.

  1. They expect the speaker to be familiar with the material he is presenting.  He should do more than just read PowerPoint slides.
  2. They expect the speaker to communicate the main points of the presentation.
  3. They expect the speaker to be enthusiastic about his topic and convey that enthusiasm to the audience.

If a speaker does those three things, most people will be satisfied.  Notice that perfection is not on the list.  A speaker may have many flaws.  If he uses poor grammar or stumbles over some points and needs to repeat them or shows that he is nervous, the audience will forgive him as long as he delivers some information enthusiastically.

I'm not suggesting that public speakers should ignore any flaws in their presentation style.  If you present a lot, I recommend that you record yourself, critique your performance and strive to improve each time.  But these things aren't catastrophic and shouldn't paralyze us into avoiding speaking.

If you want to get started in public speaking, start with something small and safe, such as a presentation to a group of co-workers.  Choose a topic that you are passionate about.  Allow yourself to make mistakes, but focus on the three main points above.  Record at least the audio of your presentation and listen to it to determine how you can improve it. 

Many technical user groups offer members the opportunity to speak for 5-10 minutes on a topic before or after their meeting.  Check if your local group does this or is interested in starting.  It's a good way to practice presenting in front of strangers.

As you gain more confidence, seek out larger groups to present to.  Your initial nervousness should lessen and you can focus on improving other parts of the presentation.

Good luck.

Sunday, November 30, 2008 2:27:35 PM (GMT Standard Time, UTC+00:00)
# Wednesday, November 26, 2008

Below are the slides from my Organizational Dynamcs presentation at the November 25 Microsoft ArcReady event.

Organizational Dynamics
View SlideShare presentation or Upload your own.
Wednesday, November 26, 2008 3:55:37 PM (GMT Standard Time, UTC+00:00)
# Monday, November 24, 2008

This Tuesday, November 25, I will speak at the ArcReady event at the Microsoft office in Southfield, MI.  My topic is Organizational Dynamics.

Microsoft Architect Evangelist Brian Prince will also be there, delivering a presentation on Mastering the Soft Skills

I'd love for you to attend.  The event runs from 9:00 - 11:45 AM.  It's free but you must register in advance.

You can read details of the event and regsister for it here

Monday, November 24, 2008 11:32:11 AM (GMT Standard Time, UTC+00:00)
# Monday, November 10, 2008

The slides for my MEF presentation are now available on Slideshare.  I have embedded it below.

I delivered this presentation at the ann arbor Day of .Net in October and at a Sogeti grok talk in November.

I just signed up for Slideshare and I like the concept but it doesn't seem to support any of the animations or transitions in my slides.  I may need to go to a video sharing service for more dynamic slideshows.

Managed Extensibility Framework
View SlideShare presentation or Upload your own. (tags: mef .net)

Monday, November 10, 2008 12:23:06 PM (GMT Standard Time, UTC+00:00)
# Thursday, October 23, 2008

Saturday I had the pleasure of speaking at the ann arbor Day of .Net

The event drew presenters and attendees from Michigan, Ohio and Indiana, demonstrating what an impressive software development community we have here in the Midwest.

My friend Nino drove up Friday night to stay at my place and we met other out-of-towners for dinner Friday night.

I delivered a presentation on Microsoft's Managed Extensibility Framework ("MEF").  The presentation was well-received.  The audience had many questions about the technology afterwards and I noticed a few people from the audience posting on Twitter about MEF in the days following the event.

A new job and a tight project deadline kept me from working on my presentation until a couple days prior to the event.  The good news is that I had presented on MEF three times in the past.  The bad news was that the API had changed radically since I developed my original presentation.  So I not only had to expand the presentation to fit the time allotted, I had to completely rewrite my demo to match the current API.  I was up most of Friday night and missed all the morning sessions of the conference to finish on time for my 1PM presentation.   Luckily I finished successfully and the demos went off without a hitch.  

I discovered a blog entry by Brad Abrams that helped immensely.  Brad wrote a set of samples using MEF that I loved for their simplicity.  Don't tell Brad, but I borrowed liberally from his samples to populate one of my demos.

After my presentation, I was able to settle in and enjoy the conference.  I attended two sessions, both in the same room which suited my tired body.  Jennifer Marsman showed a bunch of new features in .Net 3.5.  Next Brian Prince discussed the role of an architect on a project.  I've heard Jennifer and Brian speak many times in the past, so I knew they would be good and I was not disappointed.

I did have time to poke my head into a few presentations long enough to snap a photo or two.  If you heard a clicking coming from the doorway, that was me.

After the event, many of us met at a local watering hole for some food, drink and fellowship.  My new employer Sogeti was kind enough to spring for the food and drinks.  I was well worn down but it was great to reconnect with people who share many of my passions.

I actually volunteered to be something called a "Venue Coordinator" for this event.  But, as this was the fourth time the event was held, the folks at Washtenaw Community College knew everything that needed to be done and delivered to perfection.  I ended up doing no work for this role, so I may volunteer as venue coordinator next year as well.

I took some photos at the event, which you can see here.

I also put together a slideshow with a Warren Zevon soundtrack that you can see and hear below: 

Thursday, October 23, 2008 6:11:42 PM (GMT Daylight Time, UTC+01:00)
# Thursday, September 25, 2008

Saturday October 18 is the next ann arbor Day of .Net.

I'll be delivering a presentation on Microsoft Managed Extensibility Framework.  It should be quite different from the talk I gave last week on this subject because the API recently changed (which means I have some work ahead of me).

This makes the fifth Day of .Net I've attended and the second one at which I've presented.

The other speakers make up an impressive list so I'm excited to be part of this event. 

This event is free but typically fills up so you will need to register in advance if you plan to attend.

Click the image below to get more information and to register.

Day of .Net October 18, 2008 - Be there!

Thursday, September 25, 2008 2:40:28 AM (GMT Daylight Time, UTC+01:00)
# Monday, September 22, 2008

As promised, here are the slides for the presentations I delivered last week in Toledo, Southfield and East Lansing

Microsoft Distributed Cache (aka "Velocity")

Microsoft Managed Extensibility Framework


Monday, September 22, 2008 2:26:18 PM (GMT Daylight Time, UTC+01:00)