All posts by joshholmes

Doing a Demo while Public Speaking

Juggling at nightAs I’ve started writing about public speaking, I have started getting great questions that lead to more blog posts – keep those coming! I was talking to a fellow speaker (who can identify himself in the comments if he so chooses) and they brought up the fact that it’s hard for them to prepare a demo. I can tell you that this is an art form that I still struggle with after 9 years speaking at conferences, user groups and training. Demos are hard because you’ve got two, sometimes competing, motivations behind every demo. First, you have to show someone how to accomplish a given technique and second you have to be able to show someone why that technique applies to them in a given circumstance.

There are two extremes that you can go to. You can either demo just a particular technique in isolation or you can demo a full application/solution.

Demo a technique in isolation
Sometimes this is the easiest thing to do. It requires a lot less code and it’s very easy to walk through. The issue here is that it’s like solving a numeric math problem on the chalkboard. It’s sometimes hard for the audience to connect the dots and place that technique in their own circumstances and leverage it to solve their own problems.

Demo an Application
This is tough. There are two major issues. First of all, you have to have a competed application to walk through. Secondly, and the bigger problem honestly, it’s very hard to walk through just the relevant parts of the application without getting bogged down in the full details of the application. The tendency is for people to spend a lot of time scrolling through code rather than focusing in on the code that’s relevant to the current discussion.

The right answer
The reality is that the answer is somewhere in between. It’s much better to have a well componentized application where people can see the technique in the context of a larger application but you can demo the technique without getting bogged down in the minutia of the application. I’ve not seen a lot of demos that actually do that, which is a shame because it works extraordinarily well when someone does do it.

Building the perfect demo application
At one point in time (many moons ago when I was doing a ton of ASP.NET talks at conferences), I had a built a relatively full featured ASP.NET 2.0 demo application that I used for all of my ASP.NET talks for about a year. It was based loosely on a portal application that I had built for a client. It used themes and skins, user profile information, a little AJAX, user controls, custom controls, login in controls, databinding and much more. But it was built in such as way that it could be demoed feature by feature.

The secret sauce was that I had just enough examples of each technique and it was broken out into many small and manageable projects and files. I could show each of these small files and projects in relative isolation but then show it running in the overall context. My user control demo, for example, was a very simple “Hello World” style button and label but it showed how to build user controls. My personalization demo stored 3 fields and used them in two places. Why two places? Because we needed to see what refresh was like and so on. Why three fields? One was set in a custom step in the login control (because I needed to demo that). The second was to show a technique around defaulting values. The third was used to show how to move a value from an anonymous profile to a full fledged one when someone registered and/or signed in.

This was not an easy demo application to build but it was a great one because it struck the right balance of isolation and in situ so it was easy to walk through and still showed the context of where and how to use it.

This is even harder when trying to build for a technology that you’re not comfortable with. In a previous post, Prepare Yourself To Give a Great Talk, I mentioned that people can stretch themselves and give a talk on a topic that they don’t have completely mastered. This is always going to be the case with emerging technologies (Such as technologies that are in CTP or early Beta), but it can even be true with existing technologies if you haven’t spent a lot of time with them. Actually, I think this is a great way to force yourself to learn a new topic.

Two examples of a stretch goal paying off
Jeff Hunsaker recently did a talk on Entity Framework at Central Ohio Day of .NET. He learned a ton about the topic and gave a good talk. He’s been very critical of himself since then, but all reports I have heard was that he was fantastic. That’s a technology that’s in CTP and there are VERY few people well versed in it at this point. It’s hard to even get help. I didn’t see his demo, so I can’t really comment on it but he did tell me that this was a tough thing to pull together.
When I got a speaking slot at eRubyCon, which I hope to see you all at this year, I was thrilled and panicked at the same time. I knew Silverlight, which is what my talk was going to be in, but I wanted do my talk with Silverlight running on Rails so I had to learn Ruby and Ruby on Rails and put together a talk. I set about writing a demo application to learn the technologies and that helped me write my talk. I wrote a simple motorcycle sales showroom application in Rails and front ended it with Silverlight. It was a fun demo to do and it showed just enough Rails and Silverlight integration that everyone knew that I hadn’t faked it. Little did they know that I had only been playing with Rails for about 2 weeks.

I’m working on building that comprehensive of a demo for Silverlight 2, WPF, WCF, Entity Framework, ADO.NET Data Services, ASP.NET MVC Framework and more. Already you can see part of the issue. There’s too many technologies to demo so we end up trying to isolate each of the technologies in a small demo so that we can explain it easier. The issue there is that people lose sight of the integration and the workflow of the different technologies.

I’m not going to lie and say that this is ever going to be cake, but I will say that it becomes easier as time goes on. Creating decks, demos, preparing, movement on stage, delivery and all the aspects of becoming a great speaker take work and practice. Like the guy juggling, the more you practice, the easier it becomes. However, this is juxtaposed with the desire to do harder hitting, meatier talks and demos.

Technorati Tags:

Riapalooza

I love community! This weekend I have the pleasure to participate in a very unique event called RIAPalooza.

From the web site:
“Join your fellow RIA professionals for RIApalooza, a invaluable two day event aimed at exploring and promoting the development of Rich Internet Applications.

RIApalooza promises a platform agnostic and “PowerPoint-Free” zone, which means we are going to forgo the boring marketing pitches in favor of talking technology. RIApalooza is about creating Rich Internet Applications; how to go about building them and what is being built.

For more information, visit the event website.”

I wanted to go to RubyConf but this was too good to pass up. This two day mini-conference is being organized jointly by community folk from both the Microsoft and the Adobe communities – in fact, if you check out the site you’ll see that both Microsoft and Adobe are sponsors. That’s almost unheard of for a community event as the communities have not historically collaborated on this type of event.

Things kick off on Friday night with Dave Meeker, a user experience strategist, talking about the state of RIA. Saturday starts off with Tim Heuer and Corrina Barber, from Microsoft, talking about creating differentiated user experience and designer/developer collaboration. Then there’s a smattering of talks from a number of different community folk on Flex, Silverlight, RIA in general, design and more.

At some point, I’m not sure when it’s scheduled for, Michael Labriola (who happens to be listed on the Adobe Experts site) and I will be giving a joint session on best practices in building a Rich Internet Application (RIA). I’ve not actually met Michael in person but we’ve talked on the phone and collaborated about the talk over email. Thanks to Larry Clarkin, Dave Bost and James Ward for hooking that up.

Personally, I’m just looking forward to seeing what the community and the industry thinks of the state of RIA, especially as I’m betting my career here at Microsoft on it as the RIA Architect Evangelist for Central Region.

So, if you can’t make it – I’ll be blogging as much of it as possible. You can also follow RIApalooza on Twitter for up-to-date information!

Prepare Yourself To Give a Great Talk

Curt, Greg, and the longest play I've ever seenPreparation is key in giving a great presentation. Apollo Ideas has a great blog post about the speech spectrum. There are basically 4 ways that you can give a talk.

*Warning – gross generalizations ahead*

1. Completely written out word for word and read of the script. For this, you can think about your basic graduation speech.
2. Just outlined but not rehearsed. I see these too often. This is where someone has had an idea for a talk but is not able to prepare properly. Or someone got a deck from someone else and presents it cold without really making their own. In this category, there are a lot of sales decks and user group talks done. It’s a shame because they could be so much better.
3. Outlined and well rehearsed. This is where the majority of the good conference talks lie.
4. Completely written out and well rehearsed. In this category, you can put the better political speeches or talks from really high end conferences such as TED. Think JFK’s Inaugural Address, Reagan’s “Evil Empire” speech or any other political speech that motivated a nation.

I’ve heard the argument that you don’t want to sound “too rehearsed”. However, the real danger is coming off as unprepared or reading from the script. Either of these are monumentally bad compared to over-preparing. Really the “too rehearsed” script is the one that you’re not willing to deviate from when there’s a good question or unexpected audience reaction. I’m striving for that right blend of well prepared and rehearsed contrasted with the ability and willingness to improvise.

You can also equate these with musical performances. Singing in church, while often beautiful, is often far from a professional band. But if you look at Big Bad Voodoo Daddy, Great Big Sea, Harry Connick, Jr. or any number of other groups that put on an amazing show. That show is completely scripted and rehearsed until people are ready to drop to prepare for getting on stage. Yet, nobody complains that they are “too rehearsed”.

I know that I’ve gotten lazy in the past and have neglected this preparation in the past.

How to Prepare

Know your subject. First and foremost, you have to know what you’re talking about. Or at least know what you don’t know. Honestly, one of my favorite talks was at the first Day of .NET. I was on a call with Jason Follas who was coordinating speakers and he asked me what I was talking on and I said “Something cool and ASP.NET”. So that became the talk. I had no slides, no code, no preparation. I just got on stage and asked the audience to ask me questions. I loosely organized that into an outline and started talking. It was great but I could only get away with it because I knew my topic, ASP.NET, as well as I did. I had been doing leading 5 day training sessions on ASP.NET for several years so I knew the ins and outs of the technology extraordinarily well.

On the other hand, I’ve seen speakers get up and say that they are an enthusiast verses an expert (nod to Alan Stevens and Michael Eaton) and I think that’s awesome. They are stepping up and stretching themselves. But, they are not getting up blind and pretending to be an expert. They state very clearly what they know and don’t know. 

Know your audience. I tell very different jokes and even use a different cadence depending on who is in my audience. If I’m talking to 100% technical people, I can tell jokes about management or process or self deprecating humor about geeks. If I’m talking to people in the south, I relate to the cooking, fishing, hunting and other cultural things that I grew up with in Arkansas. If I’m in Ohio, I don’t mention Michigan if I can help it and vice versa. 🙂 Know the team rivalries, local economy and other hot buttons. For example, in Michigan, I don’t mention unions. In Houston, I don’t even pretend to know anything about aeronautics or say anything about gas prices.

How receptive will your audience be to your message?
Are they “ready for action”? If so, they just need to be motivated into action. You can bring out the big brass marching band and getting everyone singing the fight song and stomping their feet. It’s a lot of fun to give these speeches.
Are they supportive? If so, then you need to clearly lay out the arguments and call to action.
Are they neutral? If so, then you need to persuade them to your side. This is accomplished through solid information and personalizing the message to the audience in front of you.
Are they hostile? Here you need to understand the FUD (Fear, Uncertainty and Doubt). This is a tough thing to do because the balance of dispelling the FUD and not attacking is a fine line.

As a Microsoft Evangelist, I’m VERY often in the situation where I’m speaking to a non-Microsoft friendly crowd. It’s not often overly hostile, just not friendly.

Give your talk out loud. Two weeks ago, in preparation for the West Michigan Day of .NET, I was writing a new talk. I knew roughly what I was going to say. I had the deck pretty close to finished and was just polishing things up. But I had dinner with Dan Hibbits and decided on a lark to run through my deck once with him. He didn’t even have to say anything but as I went through my pitch I realized that major parts of the talk didn’t work. I immediately restructured the talk and gave a much better talk the next day. I would have realized that about 15 minutes into my talk if I had not practiced it out loud with Dan the night before. Practice in front of the mirror, or run through your talk in your head as you’re on the airplane or in the car on the way to the venue.

The call to action here is simple. Set yourself up for success by preparing to give a great talk. The better prepared you are, the better the chances are that you’ll get your message across and really knock it out of the park.

* Update – Thanks to Bill Wagner for pointing out a clerical error or two on my part… Fixed now *

Technorati Tags:

PDC2008 Professional Developers Conference October 27-30, 2008

clip_image001This is a conference that I’m not going to miss this year. At MIX08, Ray Ozzie laid out early glimpses of what we’re going to see the rest of the year leading up to PDC. Not long after, the Live Mesh Community Technical Preview was released. It’s the beginnings of the realization of Ray’s S+S vision and the future direction of Microsoft.

But that’s just the tip of the iceberg as far as what’s coming down the road. Far more of this roadmap will be revealed in October.

Who Should Attend (or. The PDC is for YOU)

The PDC is designed for leading-edge developers and software architects. If you’re interested in the future of the Microsoft platform, you’re responsible for the technical strategy in your organization, or you’re a highly skilled developer who likes to delve deep into the heart of the platform, then the PDC is for you!

PDC2008 Professional Developers Conference October 27-30, 2008

ALT.NET Geek Code Generator

Get Microsoft Silverlight

 

Last year (December, 2007) I had the honor and privilege of being invited to participate in the ALT.NET Leadership council in NY. I blogged about that here. This generated a large number of comments and a ton of conversations.

I was unfortunately, due to health reasons, not able to attend last month’s ALT.NET conference in Seattle. Some of my friends in DPE, like Peter Laudauti from New York. He’s posted a picture of the session board at http://blogs.msdn.com/peterlau/archive/2008/04/19/alt-net-open-space-seattle-schedule-grid.aspx. There were talks on IronRuby, DSLs, Mocking, Scaling Agile Teams, Test Driving Silverlight, Diversity, Pairing, F#, Funding Open Source Projects and many more great topics. I really wish I could have been there.

So, what is this ALT.NET thing. Really, it’s about about alternatives in .NET. It’s about listening to a multitude of sources of information and making an informed decision about the way that you’re going to do development. The guys that are at the ahead of this movement are heavy on Agile practices. Most of them are proponents of BDD (BDD for the TDD head), Refactoring, ORM (Object Relational Modelers) and so on. They lead with process and then find tools that help them get their jobs done. Sometimes that’s a different language, like Ruby, or a different IDE plugin, or a different source control system. But none of these tools, platforms, etc. should get in the way. They should lead to better process.

Are we talking about throwing out the current spiritual leaders in the .NET world? No… Jeremy Miller wrote a great article on CodeBetter.com called “We need ALT.NET To supplement the traditional .Net Leadership” that addressed the reasons behind it all.

Honestly, I don’t care what you call it. I agree with the fundamental principle that we should investigate many different ways of getting things done and make informed decisions. So, with that in mind, look for coming announcements about the Agile Summer Camp (hint, we’re actually going to go camping… 🙂 ).

And if you like, check out Hanselman.com for his ALT.NET Geek Code Generator

West Michigan Day of .NET

I was an honored to speak at the West Michigan Day of .NET (WMDoDN) last weekend. I did two new talks, even though only one of them was scheduled. Brian Prince had been doing a great “Soft Skills, Not Just for Humans” talk for a lot of different user groups and Day of .NETs. It’s a talk that’s been met with great success and acclaim. It’s point is to help the attendees grow in their careers as much as they do in their technology space. It’s a great session and I wish that I had thought of it first. Brian, very unfortunately, got sick at the last minute and couldn’t make it so I pitched in and gave his talk. It was a lot of fun. As Dan Rigsby points out in his blog post, I wasn’t as polished as Brian was but I did a decent job. I really need to hire Dan to come take notes in all of my presentations – check out the notes he took in mine and then go read the rest of his posts, like the ArcReady post and so on.

Since it’s my presentation – I don’t feel bad pasting Dan’s notes here (The sub bullets are from me in this post):

  • Mentoring: Always have a mentor.  In fact get 3+. Josh attended the toastmaster’s club to find speaking mentors
    • I’ll add here that this is the #1 tip that you can take away.
  • Manage your Career: You are your business.  Your employer just happens to be the person paying you to do your job right now.
  • Creativity: Like myself Josh doesn’t have a CS degree and it does give us a creative edge because we think outside of the box.  This is true for everyone.  Stay creative and think in other ways.  Keep a log or use something like OneNote or a notepad.
    • I use personal WIKIs. Got that tip from Jim Holmes (no relation but I’d claim him if I could)
  • Brain Storming: Josh asked the question, “If you have an infinite supply of bricks, how would you raise money for your user group, school, or church”.  The audience threw out some of the standard responses, but
  • 3 Illegal Topics to Talk About: Sex, Politics, and Religion – don’t talk about these at work, just don’t do it, unless the setting is totally appropriate.
    • AMEN!
  • Don’t Assume all People Above you are Idiots: Sometimes they aren’t the smartest people, but there is a reason they have their position.  They are bringing something to the table and at the very least have power and control.
  • Communication Skills: Communicate like a human, not like an alien.  Know your audience: geek talk is ok only if all people are geeks.
  • Know when to say “I don’t know”: It’s ok not to know everything, and if you give wrong answers, you lose all respect.  Don’t be an encyclopedia, be the index.
  • Ask Open Ended Questions: If people just answer Yes/No you never really learn much
  • Don’t Take Reactions Personally: People don’t always mean what you think.  Especially in things like emails.  Some people come off more rigid than others as well.
  • Be an Active Listener: Don’t have distractions, ask smart questions, don’t multi-task in your head.  Take what a person says and rephrase it back to them, and if they can confirm that, then you can answer the question.  Also avoid filler words, enjoy the silence.
  • Take Notes: Notes don’t have to be a distraction, but write down things as much as you can.
  • Tape Yourself: learn to find the filler words in your presentations and how you can improve yourself.
  • Avoid Bad Language:  There is no need for it.
  • Integrity & Honesty:  always tell the truth and remember that its hard to get respect back.
  • Everything you know today will be obsolete in 2 years: which is true from a technology standpoint, but soft skills will always be with you.  So eat like a bird and poop like an elephant.

Again, thank’s Dan for those great notes.

After that, I did my Architecting for the RIA which morphed into a best practices talk. It was the first time that I’ve done that talk, but I really dig it so you should expect to see it more often. I’ll get the slides posted relatively soon.

Michael Eaton did a walk-through of LightReader which is a Silverlight RSS Aggregator that he and I are working on. To date I’ve given a lot of architectural advice, but I’m planning to spend some time digging in and helping build out the skinning and so on over the next couple of weeks. Feel free to pitch in.

It was great to see all the enthusiasm in the past couple of Day of .NETs that I’ve been to. I love this community and how it’s grown over the past 6 years that I’ve been active in it. (Wow, has it really been 6 years????)

32 Ways to Keep Your Blog from Sucking by Scott Hanselman Presentation

A while back I posted about Scott Hanselman‘s 32 Ways to Keep Your Blog from Sucking post. At some point later, I created a slide deck to tell the story. Since then, I’ve given the presentation a few places and Scott even borrowed the deck to do a presentation to a number of the Developer Evangelists in the US.

Anyway, here’s the deck that I created…

See the original post at 32 Ways to Keep Your Blog from Sucking by Scott Hanselman

Changing RSS Feeds

image Ok, that’s a lie – I already moved my feed a LONG (not quite a year ago) time ago.

My new feed is http://rss.joshholmes.com/joshholmes.

But in an effort not to disrupt everyone, I’ve left my old RSS feed in place. This is not hard to do but unfortunately, those that are still subscribed to the old feed make it difficult to leverage some of the reasons that I moved the feed in the first place.

I moved it for a number of reasons

  • Allows me to do a little bit better job of statistics and the like (it’s actually being hosted by another service that does that for me)
  • Allows me to change out my blog engine or host with relative transparency
  • Allows me to do some interesting things with caching or offloading to a separate server
  • And I’m sure that there are other good reasons as well

Do me a favor, if you get a chance and move your RSS subscription if you’re still subscribed to the old feed.

BTW – for those of you who are still subscribed to the old feed – Thanks for sticking with me this long!