All posts by joshholmes

Blogging by the Campfire

There’s something surreal about blogging by the campfire watching the sun rise. I’m out with my boys on a guys day out. Ok, I didn’t post this from the campfire but I could have since I had cell signal and can tether my phone… But I resisted the urge. What you’ve got here is what I happened to jot down while my boys were sleeping.

It’s been a while since I really went camping. I did it once last year but before that it had been at least 10 years. I grew up camping every summer. It’s been a goal of mine to get back to camping more often. This week, I promised my boys that we’d get out and do a guys night out. We packed up the tent and hit the grocery store to pick up hot dogs, marshmallows and all the essential camping supplies.

We learned two lessons that I thought I’d share. I’m sure that at some point, these stories and lessons will make it into a talk but for now, they will have to stand on their own.

Smores
One of the fantastic lessons that we learned on this trip is that even a bad smore is really good. I mean it really doesn’t matter if it’s neat or messy, if it has too much chocolate (as if there is such a state), the marshmallow is burnt or just lukewarm or anything other variation. There are really only two ways to screw up a smore. You can burn yourself and you can obsess about creating the perfect smore but if you relax and just let things flow, you really can’t screw it up.

This was especially evident as my 10 year old was war dancing around the fire singing – “I like mine crunchy crunchy… I like mine crunchy crunchy…” carrying his mighty marshmallow torch burning his black as the night while my 12 year old was searching for that perfect golden brown. The really good news was that when my 12 year old accidentally set his on fire – he wasn’t upset because it meant that he got to eat his smore quicker…

The lesson here is to stop trying for perfection. There are many different things in life where the only real way to screw it up is to obsess over it.

Second Fire
The second thing that we learned is that the second fire is a lot easier to start than the first. I remember as a kid around the age of 12 that I would get up before my parents and get the morning fire started. I thought I was so brilliant because it wouldn’t take long for me to get a nice little fire going. I would contrast that to the night before where my father had spent the better part of an hour getting the fire going, building up from newspaper to leaves to small twigs to medium sized sticks to real logs at some point, carefully coaxing the embers all along and creating a great bed for the fire.

I’ve created a number of fires since then and have come to understand the rituals that my father taught me when I was young. I was reminded, once again, last night that it’s not as easy as I thought as a kid to get that first fire going. The tough part is building up the strong base of solid and consistent heat from the bed of embers. Once that’s going, the fire will provide a wonderful glowing heat late into the night. As my father did, I buried the bed of embers in ashes.

When I got up this morning, well before the sunrise with a wonderful dew covering the ground, I went about the task of starting a fire to cook breakfast on. As when I was a kid, I scraped back the ashes and laid down a piece of the newspaper on the coals and before I could get the matches, it caught fire. I found myself scrambling to get twigs before it went out. Those caught fire instantly which set fire to the larger sticks and the logs. In a matter of 5 minutes or so, I was ready to cook breakfast. That was fantastic!

The lesson here is that if something is really easy, it’s often because the path has already been paved. Don’t compare your success with those that did it the first time.

Just Some Observations
Man I’ve gotten soft. Muscles that I had forgotten about are sore and I slept on an air mattress. How was my father not this sore? He took all of us camping and slept on the rocks in a sleeping bag. Honestly, as I get older and am trying to raise my children, I’m getting more and more impressed with my father.

Camping has gotten modern. There’s electricity, modern plumbing and costs $24 a night. For those playing the home game, that’s $168 a week or $672 a month. I could rent an apartment around here for that. I need to find some place more “rustic” and cheaper if we’re going to do this a lot more often.

Inspired By: Nathan Blevins and Wonderpuzzle

logo I thought long and hard about how to write this post. There are a ton of people that have inspired me throughout my life.

I was inspired by Jeff Blankenburg‘s Contribupendence Day. I was inspired by the original GiveCamp thrown by Toi Wright and Chris Koenig and the latest one hosted by John Hopkins and Jennifer Marsman. I was inspired by Joe O’Brien‘s passion for Ruby. I was inspired by more people than I can possibly name. I am the person that I am today because of the people that have inspired me through out my life.

At first, I couldn’t decide that I should profile anyone person because there are so many and I’d be doing a disservice to all those that I wasn’t profiling and I didn’t want to leave anyone out. Then I realized how stupid that was because I was leaving everyone out by not starting somewhere.

So, I decided to start with Nathan because he’s the most recent on my mind and has touched my life directly…

Who has inspired you and how?

When Nathan Blevins heard about the Ann Arbor GiveCamp he could have, like a lot of people, decide that it was too far away and not to come and left it alone. Instead, he decide to organize an offsite group and pulled in 4 more people to help. He hosted them at his house and they worked 9-5 each day. In the early going, he called and called, making sure that we hadn’t forgotten about him until we threw them a lot of work.

By doing so, he affected 2 different projects.

One was the Ann Arbor Hands on Museum (done in PHP so that it could fit in with the rest of their already existing web site). One of the guys, Dylan, that he hosted was a PHP savant and did a lot of the heavy lifting on that project. 

The second was a charity called Wonderpuzzle. It’s a charity run by my wife for children who have medical problems with no diagnosis. The parents of these children feel like their on an island because if their child’s condition had a name, they could join that community. As it is, they are bumping through the night with no one to turn to for help or even empathy as they fight against the insurance companies who won’t pay because they don’t have a name for some paper somewhere or the schools because the legislation only forces them to work with a small slice of named conditions like autism. Wonderpuzzle is an online community with discussion forums, articles and much more that address these issues.

I was very touched and privileged to get to demo the finished version of their site. Check it out:

What have they inspired you to do?

The next time that I look at something that’s the right thing to do but there are constraints in the way of my participation – I’m going to ideate on different ways to engage. I’m going to stop letting my “lame excuses” (all props to Michael Eaton for calling a number of people out on that) get in the way of my participation in a number of things that I’ve wanted to do.

Who else have they inspired?

The other people that came in to help Nathan out with the Knoxville GiveCamp satellite need mention too:

  • Ben Farmer – Ben worked w/ Joe to make sure the site was completely ported over to sitefinity, replicated its functionality, and made sure the data was moved over as well.
  • Jenny Farmer – Jenny was the mastermind behind the new design.  She spoke directly with Phoebe to make sure she got exactly what she wanted and made it so in photoshop. After that, she worked w/ me as Nathan made her ‘idea’ into HTML / .Net code. She, unfortunately, was not able to come in the second day due to not feeling well.
  • Joe Simpson – Joe worked with Ben to make sure the site was completely ported over to sitefinity, replicated its functionality, and made sure the data was moved over as well.  Joe was actually a real trooper as he was usually the first one at Nathan’s house and the last to leave.
  • Dylan Wolf – Dylan worked mainly on a separate PHP project.  However, any time he had down time he would jump on Wonderpuzzle and start taking small tasks on. He was a great asset to both projects and did an excellent job multitasking.

Call to Action

My challenge to you is to write an “Inspired By” post and profile another community hero.

In fact, I’m going to call out 5 people and because I want to know who inspires them. The fun part is that I could have started with any of these 5 people because they all inspire me.

Carry Payette (who did a very similar satellite group in Columbus)

Michael Eaton (who worked tirelessly at GiveCamp to make sure that everyone there had whatever they needed)

Martin Shoemaker (who brings design, best practices and humor everywhere he goes)

John Hopkins (who doesn’t want people to say thank you but rather – what can I do?)

Sam Henry (doesn’t blog much but when Sam sees a problem he goes after if head first. He, his wife and some of their friends, have started the Red Letters Campaign – Living Faith to End Poverty)

Ann Arbor GiveCamp 2008

GiveCampThis past weekend was the Ann Arbor GiveCamp 2008. The idea is Geeks Giving Back. The GiveCamp organized a number of charities(15) and a number of developers (over a hundred signed up and 90ish showed – I don’t have exact numbers). We showed up on Friday night at 5:00 and started work. At 3:00 on Sunday afternoon, we showed what we had accomplished. In many cases, the charities just needed a web site or a better web site. In some cases, they needed real programming work done.

It was an amazing experience. I was involved in the first one in Dallas. I worked remote and contributed to the St. Vincent DePaul Society volunteer scheduling application with J Sawyer and Chris Koenig. I don’t remember how many charities and developers contributed to that one but it was a huge way to begin. Since then there was one in Kansas City and now Ann Arbor.

While at the event, I, like a ton of other people, wore many hats. I was assigned to a charity (Center Stage Drama – separate post on them coming at some point soon). I also was helping with some of the organization, running the break room for a couple of shifts, technical helper for many of the groups, photographer, videographer, errand boy and anything else that could be done.

One of my favorite things was that I tossed the ideas around of doing a short standup 2-4 times a day and I got to run those. It was fantastic to get all 80+ devs in a circle and be able to run through all of the groups and do a 1 minute status to find out how the project was going and what blocking issues where up. More than once we got a resolution or found the person that had the immediate answer to follow up right after the standup. On Sunday we did 3 quick standups about 2 hours apart. Those really helped everyone quickly find resolutions and gave everyone a sense that we were going to finish on time. All good stuff.

The last hat that I wore was a little surprising, even to me. On Friday night, we started chatting and realized that we have 5 remote developers down in Knoxville, TN headed up by Nathan Blevins. As I’m tying this – I’m realizing that I really need to just do a separate post for that group. Briefly, it was Ben Farmer, Dylan Wolf, Jenny Farmer, Joe Simpson, and Nathan Blevins. They did great work for several of our charities and even took on one completely. That’s my next post about Wonder Puzzle.

The only issue with GiveCamp is that we can’t realistically do it in a geography more than once a year because of the massive time commitment, organizational efforts and sleep depravation. I’ve got some more sustainable ideas floating around that I’ll surface when they’re a little more baked. Let me know if you want to be in on those early and we’ll start some conversations.

The reality here is that I can’t even come close to doing the whole experience justice. The best I can hope for is to inspire you to come next time…

*update* Carey Payette called me out – there were two satellite groups, Columbus, OH and Knoxville, TN. Sorry that I didn’t mention the Columbus crew in the original post. 

Welcome to the Team – DJ Fury is rockin DPE

Entry Media

This has been a little while coming but one of our recently additions to the DPE Academic team is Devaris Brown.

Devaris is not only a passionate (and talented) developer, but he carries that passion over to all aspects of his life.

By day he’s an Evangelist, by night he’s DJ Fury aka the Furious One with a Sirius Satellite radio show on Friday and Saturday nights.  In fact, some might say his job is DJ first and Microsoftie second…

He was asked to DJ the events at the Imagine Cup in Paris. You can see a touch of that and some of how he’s using tech to make his shows rock on Channel 8 (The academic version of Channel 9). He even went on to explain he uses tools like PopFly to showcase what he’s played from certain nights right on his website or his myspace.

It’s easy to be proud of the team when we’ve got passionate and amazing guys like DJ Fury on board!

Imagine Cup 2008: DJ Fury… a Microsoftie?!? | Posts | Channel 8

Public Speaking – Great Beginnings

The Starting LineI’m giving a talk next week at the Microsoft Worldwide Partner Conference (WPC). I happen to be in the fun position where I’m directly following the keynote. I’ve sat in on content reviews and keynote writing sessions so I know the messaging from that talk and the overlap that there will be with my session.

One of the services that they offer to their speakers is a speech coach. It’s the first time that I’ve worked with one one on one. I sat through a class offered by a different conference a number of years back. It was fairly useless so I didn’t have high hopes for another speaker coach. Boy was I wrong.

I met with Cathy Banks of Communication Power, Inc. I cockily told her that I have spoken at hundreds of conferences and typically get 8s or better on my evals. Turns out I’m not the only speaker out there that’s had Cathy change the way that they speak – here’s a post by Lee Lefever talking about his 10 lessons learned from his speaking coach.

I talked to her about the fact that it often takes me 3-4 times to really nail the ending on a talk. It’s been a constant problem that I’ve had on how to end a talk. I often run over time because I’m rambling trying to figure out how to finish a session.

Cathy, to my surprise, insisted that we start on the opening. I’m not usually concerned about the opening. I have a fairly casual style that sets the audience at ease and gets their attention.

It was brutal. She had me do the opening, asked me how I thought it went. I was relatively pleased. Then asked me what the point of the talk was because she obviously didn’t get it from my opening. I ran through the highlights of the talk and pointed out the top level message that I was targeting.

All of the sudden, I saw the issue with the opening that she was pointing out. I was rambling through the opening without clearly framing the overall message for the talk. My opening was entertaining, but really didn’t succinctly tell the audience what they needed to get out of this session. That’s the hook that gets the audience to listen for the rest of the session.

Then she asked me what I knew about the crowd. I felt good about this because I knew the target demographics pretty well and was able to talk to that. It’s mostly going to be business level folk in the room. These are management, business-development folk, business owners and so on at this conference. But then she turns it on me asking how my overall message related to this crowd. My message was far to technical and this audience really doesn’t care. I need to give them the couple of technical sound bytes but really hit on how they are going to make money from all of this.

With all of that in mind, I tried my opening again. It felt better but was still a little off.

She took a crack at an opening off the top of her head. And nailed it. As I parsed out what she had just said, I thought through my version of the opening. It was funny but was not nearly crisp enough. It wasn’t well defined as an opening. It was talked to the crowd now but still didn’t hit the 2-3 high level points that I was going to dive deep in for the rest of the session.

I tried it again. And again. And again. Somewhere in here, she started goading me on saying, “Come on Josh! How’d you get through those hundreds of conferences? Tell me that story. I know you’re a story teller so tell me the story!”. Yes it stung, but wow it worked.

Things started to crisp up. I started off my opening with a continuation of a story from the previous talk. I carry over some of the language from the keynote as well. This will help with continuity and really draw the connection between the keynote and my session. I hit the two points that I wanted to hit, gave a solid hook, did all that in a humorous manner and in less than a minute. WOW! I was thrilled. 

Now that I had my opening down, Cathy asked me to jump to the closing. The first one was a little rough. Then she asked me to run through the opening again and jump immediately to the closing. That was killer. I got a fairly solid closing on the second try. Two more refinement rounds and I was set. I carried the language through from the opening, tied off the ends on the two points that I wanted to get across in the session and had a solid call to action.

As Cathly pointed out to me VERY clearly, the reason that I couldn’t close a session crisply was that I didn’t have a good opening. With a good opening comes a good closing.

All that’s left is the stuffing in the middle.

Keys to a good opening

Understand the audience. This helps you target the content at the right level.

Understand the message. I put this second because there are a lot of messages that don’t apply to all audiences. But this is a critical part of the talk. Many talks that I see don’t really have a “message”. They just want to demo a technique or something. The best talks had a solid call to action and are trying to motivate people to do something.

Set up the language for the rest of the talk.

Write it out. Apollo Ideas has a post called Prepare yourself that discusses the different levels of preparation you can have for a great presentation. I talked about it a little in my post Prepare Yourself To Give a Great Talk. This is especially true for the opening and closing of your session. These are the times that you are in the most control of your session.

Don’t worry about establishing credibility. Because you’re onstage, you already have the credibility that you need. The conference has given you that. It’s your credibility to lose, not gain. Nobody cares how smart you think you are. They care what you’re going to be talking about and the points that you’re goign to be making. Chris Bernard usually does his whole opening and then gives people his contact information. I’m going to steal this idea.

Have fun. If you’re not having fun, the audience won’t either.

More reading

  • Kathy Sierra: Better Beginnings: How to Start a Presentation, Book, Article
  • John Kinde: Winning Your Speech At the Starting Line

  • *Update*
    I forgot to put this in the original post. Cathy did all of this over live meeting from a conference room in Seattle on a speaker phone. The mics for the speaker phone were actually in the ceiling so at some points of the hour long session, Cathy was standing on top of the table so that I could hear her better. It was awesome.

    Technorati Tags: ,

    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: