All posts by joshholmes

David Chappell – coming to Southfield, MI

clip_image001

Topic: Principles of Software + Services: Design, Development and Deployment

Abstract: The move to service-orientation is well underway, both inside enterprises, ISV’s and on the Internet. What role does traditional software play in a world of on-line services? In particular, how is Microsoft approaching the combination of software plus services? This presentation provides an overview of this area, giving an introduction to and a perspective on this emerging combination.

Bio: David Chappell is Principal of Chappell & Associates (www.davidchappell.com) in San Francisco, California. David has been the keynote speaker for dozens of conferences and events in the U.S., Europe, Asia, Latin America, and Australia. His popular seminars have been attended by tens of thousands of developers, architects, and decision makers in forty countries. David’s books have been translated into ten languages and used regularly in courses at MIT, ETH Zurich, and many other universities. In his consulting practice, he has helped clients such as Hewlett-Packard, IBM, Microsoft, Stanford University, and Target Corporation adopt new technologies, market new products, train their sales staffs, and create business plans.

Who Should Attend?

Anyone responsible for application architecture, software design,  setting technology direction or those responsible for testing and implementing SaaS systems.   

Southfield, MI

May 13, 2008 1:00 p.m. – 4:00 p.m.

Microsoft Corporation
1000 Town Center, Suite 1930
Southfield, MI 48075

Register

Open Source Project of the week – Witty Twitter

Witty is a free, open source Twitter client for Windows Vista and XP powered by the Windows Presentation Foundation (WPF).
Project Name: Witty
Project site: http://code.google.com/p/wittytwitter/
Language(s): C#, WPF
License: New BSD License
Source Host: Google code
Documentation: FAQ
Discussion Group: WittyTwitter
Owner: Alan Le

I have a stated and known addition to Twitter. And I’ve tried a LOT of different clients for it. Check out http://twitter.pbwiki.com/Apps for a huge list of apps that are out there. I started out using SMS but that became overwhelming pretty quickly. I have used Twadget, TeleTwitter, TwittIt, Twitter-Sync (Yahoo Messenger client), Twhirl and Snitter.

Witty, however, has been one that have kept my eye on for quite a while. It’s an open source project being worked on by Alan Le, Jon Galloway, Scott Koon, Keith Elder and a couple of other good guys.

It’s written in C# and WPF. It’s been a pleasure to watch it going from fairly rough to slick, stable and usable. The guys have gone back through the original and done a ton of refactoring and error handling to get it to the point that it is now.

Witty includes the following functionality: (from the project site)

  • View recent Twitter statuses from the people you follow (auto-refreshing)
  • View recent replies to you
  • View a specific user’s timeline
  • Update your twitter status
  • View and respond to Direct Messages
  • Links will open in the user’s default browser

Keith Elder hosts a ClickOnce installer that will keep you up to date as they continue to make updates and improvements. This is my preferred way to install it because it ensures that I’m up to date and it’s usually a very stable build. Unfortunately, the extra skins that are supposed to come with it don’t ship in the ClickOnce installer. There’s a bug in the skinning and they don’t load right. Alan Le is working on it and is refactoring the skinning to load the URI (uniform resource indicator) from an embedded resource file rather than individual files. Good advice from this article – http://msdn.microsoft.com/en-us/library/aa970069.aspx.

Licensed under the New BSD License, you are allowed to take the source and/or binaries and redistribute as long as you retain the copyright.

Feel free to jump in and discuss on the google group or

Witty Twitter 0.1.8.3 Published

Words as Filler when Public Speaking

Public SpeakingMel Grubb read my post on Public Speaking and Movement onstage and inspired me to write this post with his comments.

“I think a good background in stagecraft could benefit a lot of public speakers. Simple things like basic blocking, “cheating” your face toward the audience, finding and eliminating your particular “tics” or problem words, etc. Speakers who say “basically” more than once every five minutes drive me up a wall.  ‘Essentially’ is even worse.” – Mel Grubb in comments and email.

He struck another of my nerves. I was on a conference call just yesterday with people that will go unnamed partly because I don’t want to call out anyone (don’t worry it’s no one local) and partly because I can’t remember who was talking or what they were talking about because I was so distracted. I IMed with Larry Clarkin about it and this is a snip of the conversation.

Josh Holmes‎‎:
I’m really hoping that he’ll really use the word really to really make a really good point soon.

‎‎Larry Clarkin‎‎:
really?

‎‎Josh Holmes‎‎:
Really really…

My wife actually reminded me of a story from a class that she took where the professor used Um and Ah non-stop. There was at least one lecture where they focused on counting the number of Um and Ah’s that he used rather than listening to the presentation.

The primary reason that speakers fall back on these type of words is that they are used to fill the air while the speaker is constructing the next sentence in their head. Even though most speakers are terrified of it, Silence is still ok. Some call it Golden. There’s a huge difference between dead air and silence. Dead air is when nobody is saying or thinking anything. Silence is when it’s quiet.

In addition to my background in theatre, I was a member of a ToastMasters International for 4 years. imageIn fact, I was president of my chapter for a year. As an organization, they have a great curriculum for teaching people the basics of speaking. While we, including me, have been obsessed with the format of the slide deck, they have been continuing to educate great speakers by focusing on delivery and real speech writing. There’s a series of talks that you have to give. Some of these are using props. Some are very serious and dramatic. Others are humorous speeches. Side note – I actually took second in a regional humorous speech competition with a speech about the plight of the thumbless in America.

One of the components of a Toastmaster meeting is an “Ah Counter”. This is a person who sits in the back of the room and listens for filler or crutch words. When they hear these, they take a note and they ring a bell. It’s the most aggravating thing in the world! The first talk that I did there, despite my background in theatre, sounded like a parade.

Um, ah, so it’s like, um, well, you know a thing that you, ah, might basically find in, um, your, ah, backyard” – Josh Holmes in one of his first public speeches.

You might think I’m joking but you’ve done it too! There were more filler words in my talk than content. When I realized that it was astounding. After a while, you start consciously weeding out those filler words. You will be at lunch somewhere and be ringing that bell yourself inside your head. At some point later, you have eliminated most of them from your vocabulary. Unfortunately, I’ve slipped in the 9 years that I’ve been away from ToastMasters International. I’ve started noticing that I’ll start repeating words in my speech pattern. I’ve started answering questions with “Sooo, the answer to that question is…”. I have got to stop! It’s annoying me. I can’t imagine what it’s doing to you listening to me.

I hope that you’ll take this to heart and start listening to yourself speak. First, look for a ToastMasters’ club near you with their handy meeting locator. There are 10 clubs within 20 miles of my house and I live in the sticks. If you can’t get to ToastMasters, or really even if you can, you should tape your sessions and review them. Watch for movement, speech and more. Make notes and practice with those notes in hand.

This will help you be a better speaker. Even if it’s not obvious to you, two things will happen. First, you’ll be able to say more in less time and second, people will focus on your message rather than your quirks.

Public speaking and movement onstage

Playing God - fight sceneMovement when speaking is very important.

“Acting is, therefore, the process of illustrating the dramatic action – through activity. Activity is the how; action is the what” – Play Directing by Frances Hodges

For those of you who don’t know, I was a theatre major in college. Specifically, I studied directing. I was a decent actor but directing was what I really enjoyed from light design to directing actors and the full blown play. For a ton of reasons, I ended up with an English degree with a minor in Drama and a minor in Communications.

Recently, I was asked to critique a talk by a friend of mine. One of the pieces of feedback that I gave him was that he wanders while speaking. I expressed it as it drove me nuts, but I didn’t really go into detail so I’m going to do that here.

I chose the word wanders for a reason. I started thinking about how I would have directed the talk if it were a play and I was directing him. The blocking (movement that the director lays out for the actor) is very important as it emphasizes the meaning of what’s being said (or not said) at the moment. One of the many exercises that actors and directors go through when preparing with a script is to tear apart the script line by line, sentence by sentence and assign verbs to those lines. Every line in the script has a verb and action.

“If you can sense the action, the verb will come easily to you” – Play Directing by Frances Hodges

Thinking about the first quote – if the action is the what, the action is what you are trying to get the other person (in public speaking this is the audience) to do or feel. The activity (movement) is how you conveying that to the audience. When you are giving a talk, you are typically trying to convince the audience of your ideas and thoughts around the given topic. To do that, you have to be careful about how you convey your thoughts on stage. Think carefully about each thing that you are saying and what you are trying to get the audience to do or feel with that and what verb and activity should go with that. Are you going to threaten the audience? Retreat from the audience? Are you going to ignore, shame, beg, torment, entrance, lead, relax, motivate, berate the audience? These are verbs and you should think about everything that you say in a talk as conveying some verb. Once you understand the Action and Verb, the Activity, read walking or gesture or other visible motion, that you make on stage will become obvious. Each and every activity is there to illustrate the verb to the audience. It’s extraordinarily difficult to motivate an audience while sitting. On the other hand, if you are leaning back against the front of the table, it becomes easier to relax the audience.

The reality is that it’s the same in public speaking. It kills me to see someone walking backwards or sideways or heading back to the podium when they are making a big point. What this says (yells, screams…) to the audience is that they don’t believe in this point because they are retreating from the audience. As this poor soul gets to the podium and finish the point as they get there – right when they put a large obstacle between themselves and the audience. These are not things that the typical audience member will consciously pick up on, but they will on a subconscious level. If they didn’t, directors could go home and actors would wonder aimlessly all over the set. When someone is pacing aimlessly back and forth on stage, they are wandering or lost in thought and pontificating so the audience will automatically start to wander in their thought train as well.

The solution is to block out your session. In other words, choreograph your talk so that your movements match the verbs that you’re trying to convey. I’m not going to pretend that this is easy. Especially since many talks have a decent amount of improvisation in them. The trick is to figure out what your big points are and make sure that you nail those.

One way to get started is to pick two spots that you are allowed to be at in the room. Call them home and away. Home will be placed somewhere in the middle of the stage with easy access to your laptop and your water. Away will be closer to the audience and slightly to the right or left of center of the stage. While you are at home – pretend that you a playing basketball and you have to keep one foot planted. You can move your upper body all that you want to but the lower body has to stay still. Only after you have decided to really make a point will you start moving and it will always be movement the the away spot and it’s the build up to a point. While making your point, plant on the away spot with both feet square to the audience, shoulders back and speak clearly in a loud firm voice. Hold that position for as long as you need to for the point to really sink in. I’ll often make a point and then wait 10 or more seconds for it to sink in. Maybe I’ll even wander back to “home” and take a drink while letting it sink in. And then you slide back home to reset before your next point.

As you get comfortable with that you can start getting fancier and start doing more and more.

Technorati Tags: ,

Domain Specific Languages (DSL)

image I’ve been spending a lot of time recently looking at DSLs. That’s not on purpose, it’s just happened that way as I’ve been to a number of different conferences, such as Central Ohio Day of .NET where Jay Wren was talking about Boo and DSLs. I’ve also been in on a lot of discussions with Joe O’Brien and others about them.

From Martin Fowler – “The basic idea of a domain specific language (DSL) is a computer language that’s targeted to a particular kind of problem, rather than a general purpose language that’s aimed at any kind of software problem.”

There are a number of DSLs that we use every day. One of them that Joe likes to reference is:

Quad
venti
no whip
2 pump
white mocha

Obviously (hopefully), this is Starbucks’ DSL that they use. This is a very efficient way for the Starbucks employees to communicate. The cashier starts by taking the order and transmitting that order to the person working the espresso machine who fulfills the order and passes it on to the customer. I usually understand it when they hand it back to me even though it sounds little to nothing like what I said to the cashier in the first place.

Domain – Every Domain has a their own vocabulary and dialect. Think about the medical field, banking, real estate, investments, mathematics, zoology, chemistry, grocery stores and on and on. Everyone of these has a way of communicating that the outside world has to understand to understand them.

Specific – these vocabularies and dialects are specific to the domain that they are in. In fact, the various terms don’t transfer from domain to domain. As an example, if I’m say Prime to an investor vs. Prime to a butcher, they are going to have completely different ideas as to what I’m talking about.

Language – this specific vocabulary in each of these domains is about communication quickly and efficiently. It’s a language all unto itself. Now, the majority of these are created from within the languages that we speak on an every day basis – such as English or French. Some of them have a touch of Latin thrown in but for the most part, they are local centric.

In very much the same way, DSLs in the software world are created, typically, from a language that already exists. There are languages, such as BOO, where the point of the language is to make it easy to create DSLs. There are other languages, such as Ruby, that make it very easy to create DSLs (see Joe’s talk on referenced at the end of this post). This is one of many reasons that I’m geeked about IronRuby.

image It’s always a good thing when the programmers and the users are speaking the in the same languages. This makes sure that you’re in lock step on the requirements and what the application is supposed to do. I’ve seen time and time again where an application does exactly what the programmer intended for it to do but communications issues mean that they had no idea what the user actually wanted or needed.

The first time I was introduced to the topic was when I was writing banking software. We went through a lot of hoops to make sure that we were speaking in banking terms when talking to the business analysts (BA). This was a struggle for a lot of the compsci majors just out of college that were amazing programmers but couldn’t understand the business rules. Part of the problem was that the languages that we were writing in, while we had class and method names that mapped, was still the computer science language verses something that we could show the BA. I always wanted to make it a requirement that the programmers had to work as a teller for a week every couple of years so that they could understand the business. You think I’m joking, but Anheuser Busch makes all of it’s employees, from brewers to architects to executives go to brewing school. Dominoes Pizza makes everyone go through the line training to learn how the pizzas are made. There are a lot of these examples, but not nearly enough all at the same time.

We are getting the tools, however, at this point where the language that we write in can start to become the interface with the BAs and the users because we can write it in such a a way that they can understand it.

To get a fantastic primer on DSLs and see them created in Ruby, go watch Joe O’Brien‘s talk that he did at Mountain West Ruby Conf called Domain Specific Languages: Molding Ruby.

Other things to check out:

Martin Fowler on domain-specific languages
Creating Domain-Specific Languages

Central Ohio Day of .NET 2008 by Andy Erickson

I love it when the community steps up and really shows me something new. This past weekend I attended Central Ohio Day of .NET. This was one of the first events in a while that I’ve been to where I was just a participant. It was refreshing. As always, they did a fantastic job putting on the event and pulling together top notch speakers and content to really put together a solid show. Most of the day I was really torn between at least 2 if not 3 talks that I wanted to see. I was not surprised by that – that’s become the norm. Jim Holmes started the community conferences here in MI/OH/KY/TN (AKA Heartland District). That was picked up by Columbus and Ann Arbor who created the branding Day of .NET. That’s inspired a lot of other conferences around the district including Memphis, Grand Rapids, Cleveland and so on. Each of these have between 150 and 300 attendees. Those are anchored by the two huge community conferences, DevLink in the fall in Nashville at around 400-500 attendees and CodeMash which is a completely different animal.

image What I hadn’t seen before was what Andy Erickson put together. He put together a 5 minute video of the Central Ohio Day of .NET conference and really captured the event. Visit Central Ohio Day of .NET 2008 to see the video. He obviously put in some real work on this video. He even started a little bit of buzz about the event by interviewing some of the conference organizers such as Mike Wood. Listen to Mike Wood and Day of .NET ’08 for more on that. I really hope that more people will do this in the future. Even though I was there, there was a ton that I missed – like the fact that Michael Neel was there. Michael drove all the way up from Knoxville to Ohio to speak on the “Church of Agile“. It’s a fun and bizarre talk where he breaks out the Jedi garb and everything.

So, hats off to the organizers Jim Holmes, Mike Wood, Bob Sledge, Carey Payette and Justin Kohnen – they did an amazing job and I hope that they will continue to do so in the future.

West Michigan Day of .NET 2008Cleveland 2008Now I’m looking forward to speaking at the second annual West Michigan Day of .NET on May 10th, 2008. I’ll be speaking on Architecting a Rich Internet Application. Jay Wren is going to be doing his Boo and DSL talk. Wally McClure is coming all the way from Knoxville to do his deep dive into the ASP.NET AJAX panel. Michael Eaton is going to be speaking on LightReader, a Silverlight feed reader. Really, there are two many great sessions to list them all. Hope to see you there!

If you miss that one (or really, even if you don’t), you should try to make it to Cleveland Day of .NET! Again, they’ve got an amazing set of speakers and content. This is their first time but they’re coming out swinging. Unfortunately, I won’t be able to make that one personally but I’m hoping that someone will pull an Andy and catch me up on what I missed. 🙂

Definition of a Mashup

The JournalSince Larry Clarkin and I wrote the Enterprise Mashups article in the Architecture Journal, I’ve been getting a ton of questions about mashups and what they are. To that end, I thought I’d put my neck out and lay down a public definition.

A mashup is an application that pulls together data from different sources and puts that with functionality that didn’t know about each other previously to provide a interesting graphical look at that data.

Often, a mashup is used to the end of making decisions based on a visualization of the data.

The canonical example is putting data on a map. For example, Wikipedia (at least as of when I wrote this) defines it as follows:

In technology, a mashup is a web application that combines data from more than one source into a single integrated tool; an example is the use of cartographic data from Google Maps to add location information to real-estate data from Craigslist, thereby creating a new and distinct web service that was not originally provided by either source.

Mashup (web application hybrid) – Wikipedia, the free encyclopedia

However, it doesn’t have to be a map. It could be a graph, chart, mind map or any number of different overlays.

Now, notice that I didn’t talk about any given UI technology in my description. It could be AJAX. It could be Silverlight or Flex/Flash. It could be Java Applets. I’m not concerned about the exact technologies involved – just the overall idea that you are pulling together data with functionality with a UI none of which knew about each other before your “glue” code put them in the same room and let them dance.

Granny wants to Mashup?Things that are not mashups

Composite applications are not mashups. This is actually a funny one. Mashups are, by and large, composite applications. You can equate it to inheritance. Mashups have an IsA relationship with Composite Applications. However, the composite application that simply pulls together a number of different widgets each completely independent of the others on the page is not a mashup. So, what I’m saying here is that CAB Smart Parts, Sharepoint web parts and Java Portlets are not mashups – they are simply part of an overall application that has been assembled.

Aggregations are not mashups. I’ve been asked several times if aggregating 2+ RSS feeds or simply combining different data sources is a mashup. The reality is that it’s not.

If, on the other hand, you were pulling in 1+ RSS feeds and/or data sources and laying those out on a timeline or some different view of the data than just an aggregated list – then we are probably talking about a mashup. The key part here is that we are doing something more with the data than adding it together. We are enabling decisions to be made based on that data.

Tools to build mashups

You don’t actually need tooling to build a mashup. You could create it from scratch with a little bit of Javascript and a chart control. The most common mashup, as stated in the canonical example above, is a map with geographical data laid on it. Both Google Maps and Live Maps have SDKs that you can build on top of. Actually, the Live Map SDK has a completely interactive documentation set as you can play with that will let you try different things and copy source code right into your own applications. In a lot of ways, you can look at these maps as not only applications but mashup platforms.

Popfly and Yahoo! Pipes

Then there are more complete frameworks and platforms that will help you build mashups such as Popfly and and Yahoo! Pipes. These platforms allow you to drag and drop different data sources and apply logic and ultimately run that through a front end visualization. My 12 year old son has played with Popfly and created mashups with ease. Denny Boynton wrote a great post entitled “Is the Future of Popfly in the Enterprise?“. I think that he’s got something there.

One of the interesting parts about Yahoo! Pipes is that it allows you to pull in your data, build out your functionality and then at the end you produce it and have a tabbed view with a different visualization on each tab. That’s cool! If your data is geo tagged, then it will give you a map view. If you have numeric data, it will show you charts and so on.

Where to get started

There are a couple of ways to get started playing with mashups. First, you can take a look at Popfly and the like. Or you could get started with one of the online mapping applications/mashup platforms. However, if you are serious about mashups in your own company and want to produce mashups with your own data – you need to start by taking a long and hard look at your SOA strategy.

Are all of your services written because you needed to move the client to a different machine? Often you can tell these because they start to resemble your table names and fall into Ron Jacob‘s CRUDy Web Service Anti-Pattern. Unfortunately, this is the vast majority of applications that I’ve seen in the world that use web services. It’s just using web services rather than truly service enabling your platform.

Or are they strategically built services that encapsulate business logic? Are you thinking about your authentication and authorization strategies? Are you thinking about SOAP verses REST? Can you produce either from your platform?

These are all decisions that need to be made before you decide on the UI technology.

Organizing A Conference like Day of .Net

John Hopkins (who needs to blog more) wrote a fantastic article on how to run a community based conference. John is speaking from experience as he’s successfully run the Day of .NET two years in a row and he’s been on the board at CodeMash. I was on the organizing committee for both of these as well and can tell you that what John speaks is gospel.

I’m not going to rehash his whole article but to sum up a few points.

              • You can’t be too organized.
              • You can’t do it alone – you need as many volunteers as possible.
              • Venue is critical.

I will say that there are one or two tricks that you can employ that he didn’t think of. One of them is that there are a ton of registration services out there that run from a simple RSVP system to a full blown event engine. You really need some idea of how many people are coming so that you order the right amount of food, satisfy venders, stay safe on the fire codes and more. On the low end, you could just do a Upcoming, Facebook event or something like it with RSVPs. On the high end, you could go with an event company like EventBrite to do that for you. Or you could do what most of us morons do (And I’m including myself in this) and write your own registration engine for the show. This can come in handy if you actually include things like picking sessions that you’re interested in and the like.

He also didn’t talk about communications and such before the event. It was invaluable to have a collaboration site to stick notes, speaker abstracts, vendor contact and all that type of stuff. I’d recommend looking at BaseCampHQ and Sharepoint as possible collaboration implementations.

John’s advice has helped start and successfully run several conferences. It’s worth a read to go check out Organizing A Conference, especially if you’re planning to host a conference yourself.

340lbs Open Source BattleBot Malfunctions Nearly Maiming Microsoft…

I have been at MIX and SxSW the last two weeks. Or rather, I used SxSW as an excuse to come down for Whurley and Giavonni‘s BarcampAustin. It was amazing – I’ve never seen a barcamp done that well. Austin, the city,  declared the day BarCamp day. It was cool.

I did have a near death experience though and the guys at Viewzi.tv caught it all on film…

From Whurley

All went well save one small incident involving a 340lbs BattleBot malfunctioning and then taking off as fast as it could for the closet Microsoft employees. Thankfully no one was hurt or injured and they were amazingly good sports afterwards:

Many thanks to the folks at Viewzi.tv for the amazing editing job. And, yes we still love Brady and TeamDX! Good luck in the new season on ESPN guys!

Modern day bullfighting???

340lbs Open Source BattleBot Malfunctions Nearly Maiming Microsoft… — TalkBMC

MIX Day 1 Keynote Ray Ozzie

Ray OzzieRay Ozzie kicked off the MIX keynote by talking about the fantastic new things that have happened at Microsoft in the past year that are really re-engineering the DNA at Microsft from the acquisition of Aquantitive to the fantastic internal work with Silverlight 2.0 and IE8. As an employee in the trenches, it’s often hard to keep focus on that big picture and remember that the company is aggressively self critical and self correcting. Another great step we are trying to take, that Ray touched on a little bit, is acquiring Yahoo!. It’s interesting, but even in the field, I’ve seen that just the fact that we’ve made an offer has had a profound effect on a lot of people and is driving us into new and interesting directions. After that, he talk about the big picture and the directions that Microsoft is going with Services and Advertising and how that fits into the big picture of our S+S message. By Services, he’s talking about software services in the Cloud (internet/network) rather than consulting services.

The next huge point that he talked about is the idea of software above the level of a single device. Our users are starting to leverage intelligent devices of all types from phones to desktops to cars in every part of their lives. We need to look at how to really leverage the strengths of each of these devices and platforms.

There are 5 buckets that we can think about these services in the cloud.

  1. Connected Devices
    • The vision here is that we will have applications and services that span
  2. Connected Entertainment
    • The vision here is that we would only have to license our software and media once and be able to use that across all of our devices from our music player to our desktop or car. This is a great
  3. Connected Productivity
    • The vision here is that we will have a seemless experience from the desktop to the mobile device to the web with Office Desktop, Office Mobile and Office Live (web based).
  4. Connected Business
    • The start of the vision is a set of services from online CRM, financial services, hosted exchange, commutation services and even hosted SQL Server with an elastic type cloud supporting it. The long game is enabling utility computing in the enterprise where people will virtualize more and more of their infrastructure onsite and in the cloud.
  5. Connected Development
    • We have a ton of different scenarios that we can code to with the same skill set of .NET and XAML across many different platform. That’s exciting. 

Personally, I’m really excited to part of the company with an end to end vision that is as complete as the one that Ray was able to lay out today.

Technorati Tags: ,,,