June 2009 - Posts

Reflections on Executive Briefing: Natural User Interface and Social Media

Once again, we brought together a small group to discuss two more upcoming topics for the software industry. This time it was Natural User Interfaces and Social Media.

The most interesting observation is that there is a bigger gap between the future-oriented Natural User Interfaces and the closer-to-the-mainstream Social Media topic. That colors this post: In this group we had much more discussion on Social Media than we did on Natural User Interfaces. That's a function of the group, and the relative adoption of both topics.

Natural User Interfaces

Natural User Interfaces are a rather nascent topic in our industry. However, I do think that over the next decade, it will become more and more important. The mouse and keyboard metaphor is more than 30 years old. Gaming has clearly gone way beyond mouse and keyboard.  (How long would you play rock band or guitar hero using a mouse and keyboard? Flight Simulators, racing games, and more use custom controllers that are supposedly more natural than the mouse and keyboard metaphor we’re forced to use in our regular line of business applications.

We’re starting to see some more forward looking computing devices.  iPhone, iPods, Zune, Surface and Windows 7 multi-touch are all examples of a more natural user interface. In all cases, we’re using more natural motions to directly work with the device.

The conversation lagged somewhat. We didn’t have many of the devices at our disposal that day. Also, it was a bit harder to create a dynamic discussion because it was harder to get conversations about how to these new devices might map to what we do.

Social Media

Social Media was completely different. This was very lively, and it’s clear how we can all make use of social media for our business and personal endeavors.

The clearest point here is that the twitter model has won. It’s more interesting than Facebook, LinkedIn, or any other social media platform today.

The reason is that it provides the best way to reach an authentic audience from an authentic perspective.

Andy Seidl (@faseidl) has described twitter as ‘a world wide cocktail party’. That’s a very apt description. You can wade in at any time, you can choose to behave like a professional, or be that person in the corner with the lampshade on his head. You can leave conversations that aren’t interesting. But most importantly, you can engage in real conversations with those people with whom you interact.

That’s the most interesting part: Social Media must be personal in order to be useful. You can only create an audience by engaging in real conversations. Once you engage in real conversations, you can get real results.

Social Media also allows you to get around the major barriers to efficiency today.  Our corporate structure exists to allow specialization, which builds walls and silos around different areas, business units, and disciplines. With a twitter presence, I’ve found it easier to reach elected officials, vendors, customers, and collaborators. I haven’t used anything else that has made it easier to reach as many people in as many ways.

Bud Gibson (@Innovators) has made significant investments in many areas of social media. He’s also claiming that twitter is a better investment than any other social media. In fact, he’s finding that twitter is better than ‘pay for click’ advertising to reach new prospective customers.  It gets back to Andy’s cocktail party analogy: It’s all about the conversation.

The bulk of this was about Twitter, although we did discuss other media as well. However, most of the other social media create more walls around different communities. They are ways to interact with people you already know. Facebook and LinkedIN are platforms to talk with people you know. Twitter starts a conversation, and as part of the platform, allows anyone to join and participate.

Was there a call to action?

There was less of a call to action here. NUI seems a bit farther in the future. The call to action was to ‘keep an eye on it’. It likely will be important, but not immediately for broad reach applications.

For social media, the call to action was to develop a strategy about how to participate. Your customers are participating. Your competitors likely are too. That means you need to participate, and you need to differentiate yourself with your content.

Oh, and you can follow my updates on twitter as well: @billwagner

Reflections on Executive Briefing Event: Cloud & RIA

Last Tuesday, we hosted our first executive briefing on upcoming technology trends.  The first two topics were Cloud Computing and Rich Internet Applications (RIA). We chose those topics because examples of RIA applications are already around, and cloud computing is on the horizon. It was a great mix of present and future discussion.

Nerd Note: My regular readers that are looking for core technology content won’t find it here. Our discussions were on the business issues around these technologies. No code samples here, but there were fantastic architecture and design discussions.

Cloud Computing

I’ll start by saying that I’m personally excited about Cloud Computing. I’m spending time building applications on Azure and Live Framework.

The opening discussion centered around separating the buzzword “Cloud Computing” from the substantive advantages of using a cloud platform. The ‘Cloud Computing’ buzzword has been attached to many different activities: Google Docs can be considered cloud computing.  So can LiveMail, GMail, or zune marketplace.  LiveMesh is clearly a cloud based application. However, for most of us in the Software Development community, we think of cloud computing as having our own applications running in the cloud.  That means Windows Azure, Amazon’s Elastic Computing Platform, or the Google App Engine. Even those this was an executive type of briefing, we are all in the software industry. We build things, so we look at tools in terms of what we can build.

From there, we discussed the risks to moving toward cloud computing. There are many.

Current Investments: A lot of the large enterprises already have significant investment in their own DataCenters. This will change the economics of moving to the cloud.  Should an enterprise retire its datacenter? If so, at what cost? Having already spent all the money to build a data center, cloud computing will take much longer to generate ROI.

Sensitive Data:  Others have discussed this as well,but the main concern here is fear.  Many companies have entered into a trust relationship with their customers that involves how the vendor handles the customers’ data. Most vendors are concerned with offloading that trust relationship to a 3rd party. Regardless of how much trust they may place in that 3rd part already, they still have concerns. Cloud platforms increase this concern because not only is the data offsite, the data is somewhere unknown.  You know, ‘it’s in the cloud’.

Spotty Connectivity:  We developers tend to locate where we have great connectivity.  It’s almost a prerequisite for where we choose to live and work. However, the same isn’t true for all our customers. Some of them still must live in locations where connectivity is not a given. Or, even if there is great connectivity, it may not have high enough uptimes.

But of course, we are excited about building software for the cloud, so what are the drivers to build software there? We are we excited about cloud computing?

Once again, there are a lot of great business drivers for cloud computing.  However, almost all of them turn into one statement:

Cloud Computing is Elastic.

That implies several drivers for moving applications into the cloud. Economics is the greatest force: Under current models, your data center must be built to handle your peak load. You’ll pay for the infrastructure at all times, even at the minimum load for your application. For applications with seasonal implications (retail, tax applications, Olympics, etc) that can be a huge savings.

There are other drivers as well.  Scale is a big one.  We work with some researchers that generate terabytes of data every month. That’s an incredible expense, and cloud based computing can lower the storage costs.

After discussing some of the positives, we did a little comparing on the major announced cloud platforms.  Our index-card sized comparison is this:

  • Amazon’s Elastic Computing is the most immediate on-ramp to the cloud.
  • Google App Engine is a great platform for scripted web applications.
  • Windows Azure is a new OS optimized for cloud computing.

Here’s why we came to that conclusion:  Amazon’s platform is based on the concept of renting a virtual machine image (either Linux or Windows Server). That makes it the smallest distance from any current application architecture. Google App Engine is optimized for scripting web applications. It’s simple to create web apps there. Windows Azure is setup a bit differently, and enables you to think of an app running ‘in the cloud’ as opposed to running ‘on N servers in the cloud’. That makes it a bit more work to take advantage of the capabilities, but could be a bigger win once there.

We finished with an interesting question from one of our customers: “Are we recommending cloud computing, and if so, whose cloud?”

We all weighed in with positive comments.  My own view was that if there weren’t overwhelming negatives (such as resistance to data location), I’ve been recommending cloud based solutions almost exclusively.  Which cloud is trickier. I believe in the Azure vision, because even though you can leverage much of your existing skills, it does make you think about running in a cloud. Therefore, for customers invested in .NET, or open to moving there, it’s my choice. However, it’s not a good idea to recommend porting a large codebase from other platforms (java, php) just to move to Azure.  I know there are some strategies for running those applications in Azure, but I don’t have enough experience there to place big bets on it. And, too many customers with Java or PHP apps have a dependency on MySQL, which doesn’t run in Azure.  When those barriers are in place, Amazon’s Elastic Computing platform makes more sense.

There’s also a lot of interest from larger companies about running the Azure stack in their own data centers. Interestingly, while I understand some of the justification, I think it’s a short term concern.  Why would you run your own version of the Azure stack instead of pushing your application into the immense scale of a world-wide scale cloud?

Rich Internet Applications

One great thing about conducting small seminars is that we can set the agenda and veer off that agenda as energy takes us in different directions. 

On Tuesday we spent more than 3/4 of our time on cloud computing, and finished with a brief look at Rich Internet Applications.

Or rather, we talked about RunKeeper. (www.runkeeper.com) If you run, and you have an iPhone, this is incredibly cool. Take your iPhone on your run, and it maps the distance, and all elevation changes.  We were discussing things like having it monitor your heartbeat, and monitor your speed (which it may do, I forget which features it does, and which we wished it did).

This one was a bit less ‘game changing’ than cloud computing.  The overall consensus was that computer users want more. Better interaction, data from any device, and not constrained by the classic browser / forms metaphor.  That means we may be entering a time when browser based applications will be considered ‘legacy applications’ unless they make use of Ajax, Silverlight, Flex or similar tools. It’s fun to develop applications that have different capabilities.

Closing

This was a wonderful experience. It was fantastic to spend a morning with a tremendous set of brain power, all participating in thoughtful discussions about emerging technologies and how to leverage them to bring more value and more capabilities to our customers.  The best part is that some problems which were considered ‘out of scope’ are suddenly in view.  That’s cool.

Reflections on our Software Development Jam

Yesterday, we hosted a Software Development Jam at Automation Alley in Troy, MI (North suburbs of Detroit, MI for those readers not in the Michigan area).

We billed the event as a way for developers to learn something about those software techniques that we are convinced are the important areas of growth in the future. Those areas were modern software engineering techniques (TDD, Continuous Integration, distributed version control), modern .NET (WPF, Silverlight), and modern Java platform tools (Scala, Jython, JRuby). We spent the morning going over some general software techniques, discussing what kinds of apps we’d want to build, what folks wanted to learn, and why. We spent the afternoon building samples and learning from each other.

The folks that attended were an interesting mix. We had people  with years of mainframe experience, people that had been teaching C++, and folks in the process of transitioning from IT Pro to developer track careers.

This was the kind of event that wouldn’t have been possible only a few years in the past. The availability of tools, frameworks, and trial editions helped.  Jay Wren setup an SVN server in the meeting room on a spare laptop. Then, he helped everyone get access to it. He also setup a CC.NET server so that all the samples were building throughout the day.  That was a fantastic way to show all the attendees the power of these tools.  If anyone got stuck on a sample later, they could do an SVN update and see a working sample. Others could ask them to checkin their failing build and get help from someone that wasn’t stuck at the time.  And the best part was that everyone could do an "SVN update” and get all the samples before leaving. Of course, everyone could see if anyone made mistakes by monitoring the CC.NET homepage on the internal LAN.

Mike Woelmer led a WPF tutorial in the afternoon. He also gave an overview of the differences between WPF and Silverlight. That helped folks understand when to pick one or the other for a new project. I was coding in Mike’s group, helping folks that got stuck.  I also modified the sample so that much of the middle-tier logic used LINQ style syntax rather than the classic imperative style. Later, Mike and I collaborated on an update to a Windows Forms applications that was multithreaded to give folks an idea on how to use multi-threaded concepts in WPF.

Meanwhile, Dianne Marsh was working with a different group building some of the Code Kata problems in Scala.

All in all, we all learned quite a bit about how to apply skills used in one environment to another.  Many of the attendees were stretched to apply what they know to new environments. We were all stretched to explain these new environments in a way that would resonate with people coming from a very different perspective.

We’ll definitely do more of these in the future.  It was a great way to get information in front of a group of developers and understand the challenges many developers face in adopting new technologies in their current environment. That makes in incumbent upon all of us to do a better job of explaining the value proposition of the latest advances in software development.

Azure May CTP is out

And, it’s got support for VS2010 Beta 1.

This is amazingly cool.  I downloaded and installed the Azure May CTP (both the SDK and the Visual Studio Tools (link here).

Being that ‘let’s see if we can break this’ kind of person, I ran the same sample in VS2008 and VS2010 on the fabric on my box.  Both ran concurrently without problems.  The developer fabric kept each copy in its own sandbox.

After you get the Azure toolkit, you can get the samples (separate download for both VS2010 and VS2008) here.

Search

Go

Blog Group Links

Nascar style badges