Solid Error Messages

Writing good error messages is an art form. It’s important though because the error messages are often the only communication with the user in an already frustrating situation for said user.

I was on Plaxo earlier and got this error message.

There seems to be a problem. I'll tell you what... let us fix it and this can be our little secret. Please wait 30 seconds and try again.

At first, I was a little annoyed that there was an error. But as I read the message, I was amused. The situation was completely defused and I tried again in 30 seconds. Guess what, it worked.

I’m not “keeping the secret” but I started thinking about it and realized how brilliant it is. Your user doesn’t care what the error was because they are not typically (yes we are anomalies because we, as techies, care) interested in if you are not able to connect to SQL Server, or a service that you’re depending on is down or anything else. They want to know that you didn’t just forget about them and that you’re aware of and working on the issue.

errorMethod '~' of object '~' failed They definitely don’t want you to speak techno-babble with them. One of the all-time failures is the “errorMethod ‘~’ of object ‘~’ failed” error message from VB6.

This not only spoke techno-babble at the user, but it gave no useful information or distinguishing information. And it popped up all the time. This error message told me that the developer had not done the appropriate error handling.

I guess that reminds me that the first thing that you need to do error handling in the first place. There are a lot of really good strategies for this. Personally, I really like to have belts and suspenders type methodology here. I use a combination of solid defensive programming (such as checking nulls) as well as global error handling and local error handling in every path. Down to the routine level is probably not the right choice in every case, but the path level is.

Keys to writing a solid error message

Inform. Let the user know that there was an error and you are aware of it. This is especially true with online or connected applications. It’s important for the user to know that the error didn’t just go into the bit bucket but is actually logged and will be looked at. This is, of course, assuming that it’s a true statement.

Apologize. It’s your fault for allowing the error to happen. I, and your user, don’t care that it was an outside service that caused the failure. I was accessing it from your application and you should have planned for this.

Give directions. Now that the usual flow has been upset, what should the user do next? Should they call someone for help? Should they write a letter? Should they just try it again?

Collect additional information if needed. I like the error collection routines that ask me what I was trying to do. This gives me a chance to talk about the other things that might or might not have contributed. This is not always going to be useful but occasionally this will surprise you.

Think. Very often, the error messages are an afterthought or written by the same devs that are writing the rest of the code. This is only appropriate when the dev has a background in linguistics and communications. You should check and double check every error message.

Ranting and Raving or Getting Results?

*Ranting ahead*

yelling

I’ve been at Microsoft a little over a year and a half. I’m very excited about a number of the new technologies that are here and on the coming roadmap. Microsoft is at a point where it’s more open than it’s ever been. The level of community involvement in projects like the ASP.NET MVC framework, IronRuby and much more has been historic.

I get that it could always be better.

I get that many people in the community want to be contributing source back to some of these projects.
I get that many people want to be more involved and want their specific feedback in every product.
I get that many people are frustrated by the rate of change even if they recognize that there is change.
I get that many people are angry about this feature or that feature in some product.
I get that.

I FEEL THE SAME WAY! I’m trying to get into some of the TAPs (Technology Adoption Program) so that I can get closer to the product teams and give them all of my feedback in a more direct fashion. I’m shouting internally about all of my feedback on the various products and technologies. I’m shouting internally about all of my feedback on the messaging, direction and overall strategies.

As many of the ALT.NET leadership know – I’m firmly in their camp. I want the best practices of agile software development and the best tools that can be brought to the table to lead in the industry and shape the future. I’m first in line to say that the drag and drop/voodoo/snippet driven demos that show a product rather than train the audience are crap and need to go. I’m trying desperately to change that and raise the bar on all presentations done at Microsoft.

What I don’t get is that just because someone fits into one of the frustrations or rants above, that they feel that they can say that all of Microsoft sucks or that a particular product sucks just because it doesn’t fit their exact need or hasn’t incorporated their exact feedback.

What brought on this rant is the Vote of No Confidence on the Entity Framework. That’s the nuclear option. It’s not perfect so kill it. This is in a long line of bombastic statements that I’ve been on the receiving end of. It’s not a new thing. I’ve got a tough skin. But it’s getting old.

I’m reminded of one of my kids when they wanted something and I asked them what the magic word was and they said “NOW”. I put them in a corner and they didn’t get the thing that they were asking for.

I’m reminded of another of my kids whose favorite lunch meat is Louis Rich Turkey Cotto Salami and he won’t eat ANY other lunch meat. He’ll go hungry rather than eat normal Cotto Salami or even another brand of Turkey Cotto Salami.

I can say un-abashedly (and I’m positive that the product team would agree with me) that the Entity Framework is not perfect. Neither is any software out there in the world. It was created by humans therefore it’s not perfect. Additionally, even if it’s an exact fit in a given context, it’s not going to work for someone else in a different context. That’s why there’s a ton of unit testing frameworks, ORMs, scaffolding frameworks, AJAX frameworks, CSS frameworks, text editors and the like. It’s not that any one of them suck – they are all good in some form or fashion. Each of them was created to work a given context. There are some that are broader than others. But that doesn’t make one better than the others. That just means that they are more generalized and kinda fit more situations.

All of that being put out there, I actually agree with most of the points in that the vote of no confidence brings up – so does the product team! You can read their response here. I’m also fine with a petition. It’s a solid way to point out that there are a group of people that are united.

What I disagree with is the way in which it’s presented. The language of “Vote of No Confidence” is intended to start a fight and is long hand for “You suck”. That’s very disheartening to anyone who hears it regardless of how thick their skin is.

I’m not upset that people are giving feedback. I want them to give feedback. But here’s the deal – do it in a grown up way. My way or the highway doesn’t sit well with anyone on the receiving end. There’s a WIDE path between being constructively critical and downright offensive.

The product team has to be more politically correct than I have been here but damn it – give them some credit. They are smart guys weighing a lot of different variables, concerns, customers, other product teams and a ton more. No, they are not perfect. But give them some credit. Every decision and feature represents a lot of time in dev, testing, translations and compromising timelines and other features.

It took me a while to realize, the “vote of no confidence” style tactics are the reason that it’s so hard for Microsoft to release anything. Every tiny crappy little utility that would take you a week to crack out in your basement that Microsoft releases has to be available in 88 languages, completely accessible by anyone with any disability, bullet proof, hacker proof and walk on water or it’s going to leveraged as a way to say that Microsoft sucks. There is no other software in the world that is held to this standard.

So what’s the solution? I’m definitely not saying to lower the bar. But I’m saying let’s look at some realities through the possible solutions.

Don’t do Entity Framework because we haven’t gotten those 5 things right?
If we don’t, Microsoft is not providing a full framework and will get dinged for that.

Wait until we get those 5 things right?
If we do, Microsoft is taking too long to get something out and we get dinged for that and 5 more things will pop up. This design by committee idea is a lose-lose because there are too many compromises. That’s how we ended up with XML Schemas, SOAP and WS-* (or WS-Death* as some call it) which are also things that the same people rail against.

Adopt one of the other open source projects as official?
Even if we could by legal means, we’d pick the wrong one according to someone regardless of which one we chose. And we would be cast as not being innovative and dinged twice.

Release it as is?
Well – we are obviously already under attack as it is so why not since no other solution is going to make everyone happy anyway?

heaven under constructionMicrosoft will provide a robust and quality solution. It might or might not be close enough for you on your particular project to use. But it will satisfy a wide swath of the projects that are out there. It’s already something that other projects are starting to build on top of very successfully. It’s a huge step forward from ADO.NET Datasets which, while some don’t agree, better than the previous generations and so on and so forth.

ALT.NET is about having alternatives in .NET – right? This is a choice. It’s a good one in most respects. The fact that it’s not perfect does not mean that it’s crap. It means that there’s room for improvement. Notice the difference in the vocabulary there? The fact that it’s not perfect means that you should point out what’s right and what’s not right about it and move on.

< p>Just do so in a constructive manner.

My Daily TED

image A few weeks back John Hopkins forwarded me a video from TED. Specifically he sent me a talk by imageClifford Stoll called “18 minutes with an agile mind” that he thought reminded him of me. Not because of the brilliance that he showed but because of the ADD nature of the speaker. I was blown away. One of many great quotes from the session was “The first time that you do something, it’s science. The second time, it’s engineering. The third time, its just being a technician. I’m a scientist. Once I do something, I want to do something else…” Wow! I want to be a scientist! Or maybe an engineer helping others perfect it. Like a baby introduced to sugar, I was hooked.

6 hours later, I was able to get up and away from my computer mostly because the forces of nature (battery died on my laptop) were forcing me to move. I sent John a reply questioning his lineage (something about you BAS****, you burnt my whole day) and thanking him at the same time. I decided that rather than spending 6 hours a day watching Ted videos, I needed to get a cadence and figure out a routine that would let me get my “fix” in every day.

Every morning during the week I get up, I get the kids ready for school, ship them off to the bus and then it’s my own little 30 minutes where I cook breakfast and watch a couple of videos. Some of them are 5 minutes, some are 20. That usually affords me time to watch 2.

This morning, for example, I watched a short interview with William Kamkwamba called “How I built my family a windmill” and Stefan Sagmeister talking about “Yes, design can make you happy“. Indulge me for a few moments as I walk you through these sessions.

Building a Windmill
image image William is a young man (19 in the interview) who at the age of 14, living in rural Africa in a small agricultural town, designed and built a 2 volt windmill for his family. It powers 4 lights and two radios. He built it out of bicycles, plastic piping and pulleys. He found and read a book called “Using Energy” (which I would love to get my hands on but can’t find) at the library. In some immortal words “I get information about building windmill and I try and I make”. Not only that, but he modified the design in the book to include 4 blades instead of 3.

He had come to the conference in hope to get some help building out a 20 volt windmill to supply irrigation for his entire village. He’s hoping to spend his life in the pursuit of green energy.

I’m truly humbled by that ingenuity and ambition.

Design and Happiness

Stefan is a designer from Austria with a passion for making people happy.

Early in the talk, Stefan made a list of the moments in his life that he could think back on as really happy moments. I wonder if I could make that comprehensive of a list. I need to do that at some point. Or at least make a list of things that do make me happy.

image He said “the visualization (of happiness), that’s a really easy thing to do …. much more difficult is where designs evoke happiness”. At that point, I almost burnt my eggs as I listened enrapt for the rest of the talk. The point was made in reference to the Mori Museum in Tokyo. It has an exhibit called “Happiness” broken out into 4 sections called Arcadia, Nirvana, Desire and Harmony. It was a very nice exhibit but Stefan realized that it was all about the visualization of happiness, not about happiness itself. That’s easy. The hard part is creating the happiness in the first place.

image There are three projects that he pointed out. The first one was the project where an artist named “True” redesigned all of the subway safety posters in NY. One of these posters is pictured to the left. No, he wasn’t hired by the city to do it. He just did it. He organized 20 of his friends and, without a lot of fanfare and definitely no announcements, placed these on all the subways in NY. They fit into the surroundings and people don’t really notice them until they start staring off into space and all of the sudden it hits them what these are. That’s fun and I’m thinking about what that would look like on planes. There’s also the amazing point here that he knows that he’s making people happy but he doesn’t have to be there to watch them. He doesn’t have to take credit. What a wonderful sense of humor. Personally, I’d have to ride the subway all day everyday and subtly (or as subtly as I can muster which, as you know, is not all that subtle) point it out to everyone.

Sky PesherThe second project that he talked about is a room called Sky Pecher by James Turrell. It has benches around the sides and a retractable roof. That’s it. But when you’re sitting it in, you don’t see the horizon or anything else around, just the sky. The clouds rolling by, the blues of the sky, birds flying over… It alters the way that you look at the sky and all of your surroundings. Also, very importantly, it’s not visualizing happiness, it’s just letting people focus on the sky without all of the other things that go into life that clutter and overshadow much of our happiness.

I was reminded of when I was a kid and would take the center of 2 paper
towel roles and use them as binoculars. It wasn’t that it actually zoomed in that mattered. It was the tunneling of my vision to that which I was looking at.

Try it. Spend an hour looking through paper towel roles at an object. The grass in your front yard, an ant hill, a soccer field or follow in James Turrell’s footsteps and stare at the sky (not the sun, the sky). It will change the way that you look at life around you. It’s such a simple project but an important one to think about.

image The third project is the Bubble Project. An artist named Ji Lee printed up 30,000 speech bubbles and placed them on ads and signs all over NY. He didn’t write in them. He just posted them. Other people came along and filled them in. There’s some amazingly good writing in some of them. Very witty thoughts. There’s also the normal bashing or ranting of this that or the other, but some are outstanding. Look at the one on the left here. “Yo”. It’s very simple but really captures that person’s view of what’s happening in the painting.

You can actually print your own if you want – he’s got the bubble template here.

It’s an interesting thing though – just by adding the caption bubble, Ji Lee has opened up the door for others to express their thoughts and mentality, sharing that with the world. This is a fun project because it changed the way that I’m looking at a lot of the art and ads around me. Rather than just looking at the ad and figuring out what they are trying to convey, I’m starting to look at ads and projecting my own thoughts on it. It’s the “Saturday TV Fun House” idea where I can take something completely out of its intended context and have fun with it.

Back to TED

I’m really impressed with TED partly because it’s so different from any of the conferences that I go to. I always end up at technology conferences where the the majority of the talks are tips and tricks versus visionary talks. What do I mean by visionary? These talks are designed to change the way that you think. It has for me. Every video that I’ve watched has altered the way that I think about something. Life, technology, work and so on. I have only shared the two that I watched today and I’ve been watching at least 2 a day for close to a month now.

3 Calls to Action

1. Watch a TED video every day. It will change your life.

2. Let’s put together a TED style conference. Aimed at technologists but aimed at visionary talks. Let’s change the way that we think about life, technology, work… Anybody interested?

3. Tell me what you’re favorite TED video is.

Software Development Meme

Jeff Blankenburg called me out with his Software Development Meme. It’s actually a funny thing that he did because I have a much different background than much of the industry. My undergrad is actually English with a minor in Drama and a minor in Communications. When others are talking about programming outside of the box, I ask the really simple question of “What box? – nobody told me about a box…”

How old were you when you started programming?

21. Yeah – you read that right – 21. Honestly, I couldn’t type until my junior year in college. Somehow I made it through high school without the “required” typing class.

How did you get started in programming?

There are two stories there. The first is my first bit of play/consulting and the second is my first job out of college.

In ’96 – when I was in my senior year of college, JavaScript was new and starting to be the hotness. Live everyone else, I got started creating a web sites. I tell you I wouldn’t have made it through without Stefan Koch. I’ve never met the guy but his Voodoo’s Introduction to JavaScript (which I can’t believe is still up), I wouldn’t have made it through. I actually did a few small consulting gigs with JavaScript including a web shopping cart. Lots of fun.

When I was approaching graduation, I was trying to figure out how I would support a family on an English degree so I got a job doing COBOL. It was while the banking industry was staring down the barrel or Y2K and they couldn’t hire enough people and non of the CS majors would dirty themselves with COBOL. They were looking for liberal arts majors that they could train in COBOL. I fit the bill and got the job. After about 6 months of that, I realized that I really enjoyed telling computers how to do what they do but I couldn’t put into words the loathing that I felt toward the main frame. When it would take me up to 6-8 hours to get an application change compiled and tested only to have to read a hexadecimal dump to debug the app – I about went nuts. It’s inhuman to subject people to that type of torture. Story continued below…

What was your first language?

As per above – HTML/JavaScript and COBOL.

What was the first real program you wrote?

As above, personal web sites, shopping carts and a checking account system.

What languages have you used since you started programming?

As above, I started with HTML/JavaScript. Then I moved to COBOL. Here’s where the story picks back up. I hated working on the main frame so I picked up a copy of Borland’s Delphi 2. I started doing little side projects and wrote a multi-player tic-tac-toe game and some other fun utilities. There wasn’t a problem that I couldn’t (and wouldn’t) throw my new hammer at.

After a year and a half in main frame hell and a year doing a Delphi on the side (Delphi 3 at this point), I heard that the Client/Server division was hiring. Not only were they hiring, they were putting the new college grads that they were hiring through a 6 month training course where they taught them VB, C++, NT, Unix, relational database design, Oracle, Tuxedo and all of the other tools/process/language/platforms that they used. The thinking behind it was that new hires direct from campus are typically 12+ months on the job before they are productive and they need to unlearn much of their CS degree anyway.

Desperately wanting out of the man frame division, I leveraged my English degree and picked up a book on C++ and read through it. I went over to my friend Tito Martinez (who I’ve since lost contact with and would really like to hear from hint hint) and he taught me what the critical things that I needed to know to get through an interview. I still wake up screaming in the middle of the night with the nightmares from that interview thanks to Denny Williford who was really tough on everyone that he interview. Somehow I made it though and got into the class.

In the CS University I learned Visual Basic 5, C++, relational database, Oracle, SQL, system design, UML, COM, UI design, NT, Unix and much more. It was a great class. It was during this class that I met Richard Hale Shaw – more on this later.

After class, I worked in the production environment building a teller system. The client was VB (VB6 by now) running on NT talking to C++/COM components talking via Tuxedo to the Unix server running C++, our own flavor of COM and Oracle as well as interfacing with the CICS regions on the main frame. Honestly, I’m terrified at how typical that was as I’ve talked to more and more companies that had almost that exact setup. During this time, we developed a VB6 based client framework that, on login, dynamically loaded up the components that this particular user in their role were allowed to load up. Later in life – CAB made complete sense as that’s basically what we had done.

While I was in the client/server division, I started speaking at conferences. At some point, I impressed someone well enough that they offered me a job doing Python dev, so I (in normal fashion for me) picked up a book and started playing around. It’s funny that I don’t remember that in normal conversations but I was playing with Python a little back in ’99/00 time frame.

At some point, they decided to train more main frame guys on the client/server technologies. And who better than a former main frame guy to do teach the class? I had 10 students for 6 months. That was intense! And it was my first shot at teaching so it was extra fun. I can tell you that I learned at least as much as the students did during that class. After the class, I joined the training department for a short time and then went independent.  

As an independent, I did a lot of training through the Richard Hale Shaw Group. I ended up writing all or part of and teaching the XML Bootcamp, C# Bootcamp (majority of this written by Richard or Martin Shoemaker), VB.NET Bootcamp, ASP.NET Bootcamp (C# most of which was written by Dominic Selly and VB.NET). I also did some side consulting. I could list XSLT, XML Schemas, VBScript and many other things that I used while teaching the classes but that’d be cheating as some people don’t consider them real languages.

I did do a little bit (and I mean a little bit) of Java. But I never really considered myself an expert by any stretch of the imagination. I got paid for it though so I’m counting it… 🙂

After that, I joined SRT Solutions for a year and a half or so. Then I joined Microsoft. While at Microsoft, I’ve played a little bit with Python again and fallen in love with Ruby.

What’s that make it (other than the wordiest answer to this questions you’ll find?) – HTML, JavaScript, Cobol, Delphi 2 and 3, VB5 and VB6, C++, COM, UML, SQL, XML, C#, VB.NET, Java, XML, XSLT, VBScript, Python and Ruby. That’s quite a few there on a single line but it’s nothing compared to some people like Jay Wren.

What was your first professional programming gig?

Answered above.

If you knew then what you know now, would you have started programming?

I’ll answer in true form and say that it depends. It really depends on the day sometimes. I love technology, learning new things and all the things that go along with this industry. These are the days that I look around the industry and see great companies that are literally changing the world (not going to get into which ones because that is a political rathole that I’d like to avoid in this post) through software. The fact that I’m part of that is really exciting. I can look back on my career and the companies that I’ve consulted for or taught at and see the results of my work internationally. That’s a good day and I’m proud to be in tech on those days.

However, there are the days when I get a call from some poor user/mother/company/* and hear about how technology has made their lives much more complicated and made things harder for everyone. That’s when I wish that I had started a motorcycle repair shop instead. I’m hoping that’s my retirement.

If there is one thing you learned along the way that you would tell new developers, what would it be?

It’s the non-technology skills that really separate the good from the great in this industry. I’ve known a lot of really smart programmers that could go 10x as deep as I can in a given technology. However, those skills have a half-life. The {} style languages reinvent themselves about every 10 years. The data access methodologies move at close to that speed. Networks have changed the way that we’ve thought about software and the internet stirred the pot that much more. I could go through and talk about all the ways that the industry has leapt forward in the short time that I’ve been in it but that would pale in comparison to the war stories that a Martin Fowler or Neal Ford could tell.

What’s the most fun you’ve ever had … programming?

I’ve had a lot of fun over the years but one that stands out recently is working with J Sawyer and Chris Koenig on the We Are Microsoft weekend on the St. Vincent DePaul Volunteer Portal. I heard that there via Twitter was a team that bailed and Chris was scrambling to find some help so I volunteered from Michigan. We spend the weekend working on the portal and it was a ton of fun.

Who am I Calling Out?

Jay Wren

Joe O’Brien

Dustin Campbell

Rich Weston 

Larry Clarkin

Scott Hanselman

Who’s next?

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: