Frank's World Online Since 1995


Last Ten Blog Entries

O’Reilly Cloud Computing WebCast
7/2/2009 1:42:00 PM

I saw this invite for a free webcast on Cloud Computing and thought I’d pass it along.

 

webcast lead graphic

 

Join us for this free, live webcast

The current financial crisis has raised enterprise interest in two technology trends: open source and cloud computing. In this presentation, Bernard Golden, CEO of HyperStratus will discuss how the two trends reinforce one another, and why cloud computing is a significant driver of enterprise open source adoption. Key issues he will touch upon are open source's role in application scalability, software licensing, and cloud infrastructures, along with open source product and platforms heavily used in cloud computing.

Attendance is limited, so register now. We'll send you a reminder before the webcast. And please feel free to share this invitation with others.

Date: Thursday, July 9th at 10 am PT
Price: Free
Duration: Approximately 60 minutes
To register: oreilly.com/go/cloudcomputing
Questions? Please send email to webcast@oreilly.com

Register now and we'll send you a reminder!
Meeting link: oreilly.com/go/cloudcomputing
About Bernard Golden
Bernard Golden is considered one of the true thought leaders in cloud computing. He is CEO of HyperStratus, a Silicon Valley-based consulting firm that helps its clients plan, design, and implement their cloud computing systems. He has over twenty years experience in the technology field, having worked in global consultancies, enterprise software companies, and large IT organizations.
Bernard is the author of Virtualization for Dummies, the most popular book on the subject ever published. He serves as the Virtualization and Cloud Computing Advisor for CIO Magazine, which publishes his highly popular blog examining the benefits and challenges of cloud computing. Bernard is a popular speaker, appearing at many conferences like CloudWorld, OSCON, and EDUCAUSE.

 

Atari 2600s and the Real Cost of Poor Usability
7/2/2009 11:14:00 AM

John Berman of ABCNews offers up his Atari 2600 as a replacement for the company’s expense reporting system in this humorous video.

The video is clearly a rant with a tongue-in-cheek twist, but during the course of the video he does mention some metrics.

And you know how we love metrics.

Given Mr. Berman’s assertion that 1 receipt takes 3 minutes and his average business trip has 10-20 receipts, he can spend one to two hours entering receipts.

That’s at least one hour of lost productivity per business trip per employee.

Since we all know that time equates to money, entering an expense is an expense over and above the travel costs employees are entering into the system.

In other words, it’s money down the drain.

It Doesn’t Have to Be This Way

Sadly, ABC is not alone.

Generally, the bar for usability design in internal applications is much lower than external applications.

It’s easy to understand why. Out on the internet, your site has to compete with others and external users have no problems critiquing your site with honest (aka harsh) feedback.

On the intranet, it’s a different story. You have a captive audience and employees will hold back their criticisms either out of politeness or fear of reprisals.

Plus, external customers bring in money, internal users cost the company money.

Since we all love to get money, users are lined up accordingly.

I would say that businesses ignore their internal user base at their own peril.

It’s Still a Usability Crime Even If You Don’t Get Caught

Companies pay their employees to get work done. Unless you work in an hourglass factory, staring at hourglasses all day probably isn’t in the job description.

Productivity lost is money lost and, make no mistake, having a behind-the-firewall application that’s frustrating to use will cost you money.

Just because the world can’t see your app, doesn’t mean you get a free pass on usability concerns.

I’m not suggesting that internal applications have dancing logos, rounded “Web 2.0” buttons, or all the other trappings of the “big budget” web sites.

Most users want to get their work done, not admire your artwork or “mad skillz” at technologies they don’t know or care to know about.

Always remember that users use your application as a means to an end and your job as developers is make your application as seamless as possible.

 

SlideShare Add-In for PowerPoint 2007
6/30/2009 11:08:00 PM

Here's a really great add-in for PowerPoint if you use SlideShare a lot.

Technorati Tags: ,

Fun With Speech Recognition in WPF
6/30/2009 8:02:00 AM

At last week’s CapArea.NET meeting, I demonstrated using the built in speech recognition of Windows Vista with a demo compass application. [source code]

I spoke the direction I wanted the needle to point and the computer would recognize the command and point the arrow. After a few commands, the computer tells me to “stop bossing it around.”

arrow app north east by you.

It was simple but it illustrated several points. One, speech can add value to you applications. Two, it’s easy to add. Three, it’s free. 

Best of all, it’s fun.

First, you’ll need to add a reference to the System.Speech library. This is where all the speech recognition and speech synthesis classes live.

arrow references by you.

Once your project has the references, add the following using statements to your code behind.

   1: using System.Speech.Recognition;
   2: using System.Speech.Synthesis;
The Recognition namespace contains all the code needed to recognize speech and the Synthesis namespace handles the code to turn text to speech. Input and output, respectively.
 
With all the references to the speech DLLs in place, we can now instantiate the speech related objects.
 
   1: this._speechSynthesizer = new SpeechSynthesizer();
   2: this._speechRecognizer = new SpeechRecognizer();
   3:  
   4: this._speechRecognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(_speechRecognizer_SpeechRecognized);
   5: this._speechRecognizer.Enabled = true;
 
When speech gets recognized, the SpeechRecognizer fires an event, appropriately named “Speech Recognized.”
   1: private void _speechRecognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
   2: {
   3:     string directionResult = e.Result.Text;
   4:  
   5:     // Set Window Title
   6:     this.Title = directionResult;
   7:  
   8:     Storyboard directionStoryboard = this.Resources[directionResult] as Storyboard;
   9:  
  10:     if (directionStoryboard != null)
  11:     {
  12:         directionStoryboard.Begin();
  13:     }
  14:     else
  15:     {
  16:         this.Title = "Not a storyboard";
  17:     }
  18: }

It’s in that event that we get passed the results of the recognition inside the SpeecRecognizedEventArgs and you’ll see I drop that into a string and set the Window’s Title property to display what the system interpreted the speech to be.

On line 8, I use the recognized string to get the appropriate Storyboard. I saved myself some time by cleverly naming them. ;)

   1: <Storyboard x:Key="South">
   2:     <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="pthArrow" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)">
   3:         <SplineDoubleKeyFrame KeyTime="00:00:00.7000000" Value="179.048"/>
   4:     </DoubleAnimationUsingKeyFrames>
   5: </Storyboard>
   6: <Storyboard x:Key="West">
   7:     <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="pthArrow" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)">
   8:         <SplineDoubleKeyFrame KeyTime="00:00:00.7000000" Value="-89.818"/>
   9:     </DoubleAnimationUsingKeyFrames>
  10: </Storyboard>

Don’t worry if the Storyboard syntax doesn’t make sense to you, I could talk about Silverlight and WPF animation all day, but here the focus is on Speech, not XAML.

When you run the application, you may get the Speech Setup Tutorial if you’ve never run speech recognition before.

You don’t have to run through the tutorial, but I recommend you do as it will demonstrate the power of the engine built right in to the OS.

The system also uses the tutorial to set up your microphone, adjust your settings and start learning your voice.

Once you get past the tutorial (it takes bout 10 minutes), you’ll notice the speech recognition tool bar on your desktop.

Stop! Grammar Time

In order to increase the reliability of the sample app, I added a grammar to limit the number of possibilities the speech recognizer had.

You want to do this to narrow down the potential results from millions of words to dozens. Narrowing the recognition pool increases the accuracy.

Grammars can get quite complex and there even is a W3C standard (SRGS) for defining them.

However, since we’re dealing with a compass, we really only need eight points: the four directions (North, West, South, East) and the four in between points.

   1: private Choices GetChoices()
   2: {
   3:     Choices choices = new Choices();
   4:  
   5:     choices.Add("North");
   6:     choices.Add("West");
   7:     choices.Add("East");
   8:     choices.Add("South");
   9:  
  10:     choices.Add("NorthWest");
  11:     choices.Add("SouthWest");
  12:     choices.Add("NorthEast");
  13:     choices.Add("SouthEast");
  14:  
  15:     return choices;
  16: }

I use the following code to load the grammar into my recognizer.

   1: Choices choices = GetChoices();
   2:  
   3: GrammarBuilder grammarBuilder = new GrammarBuilder(choices);
   4: Grammar grammarDirections = new Grammar(grammarBuilder);
   5:  
   6: this._speechRecognizer.LoadGrammar(grammarDirections);

Talk to Me

The code to make the computer speak is actually much easier.

In fact, it can come down to one line of code (two if you count the call to the constructor):

this._speechSynthesizer.Speak("Stop bossing me around!");

I wrote a blog post a little while back just on speech synthesis and it’s own demo app.

Now, you know that it’s actually quite easy to add a little bit of NUI (Natural User Interface) to your applications.

 


UX Team of One
6/29/2009 5:53:00 PM

Leah Budley talks about being a UX team of one, a role that many "Devigners" find themselves in.

Video and  slides from her SXSW presentation are below:

 

Technorati Tags: ,,,

Musings About Project Natal
6/29/2009 5:27:00 PM

I've been fascinated by Project Natal since I first saw the videos from E3 and as a card carrying geek, I've been combing through the videos looking for clues on how the system  works.

The marketing videos make a lot of promises: facial recognition, speech recognition, image scanning, object scanning, motion capture, and a slew of other "out there" technologies.

It's easy to stage a demo where you can control a lot of factors such as lighting and even wardrobe, but how would this work in consumers' hands in the real world?

Based on my experiments with the Touchless SDK, the Project Natal had their work cut out for them.

It's not just what the Project Natal device can do, but where it will be expected to do it.

From dimly lit dorm rooms to bright and cheery family rooms, consumers are going to expect the technology to "just work."

As Seen on TV

Right now, it's very hard to separate fact from fiction, hype from FUD about how ready the technology is to come to market, let alone for people to start guessing a release date.

There's a lot of debate on how well the technology works. Project Natal even landed a guest spot on Late Night with Jimmy Fallon, where the technology showed some cracks.

jimmy fallon natal by you.

First off, what's with the red jumpsuits? I take it that's not the normal attire for appearing on Jimmy Fallon.

Based on my own experiments with the Touchless SDK, this was probably done to increase the contrast of the person against the background.

This raises some interesting questions (aside from the obvious "how ready is this?")

For one, if you can't control lighting conditions to set up the ideal environment in a TV studio, where the heck can you? Secondly, will the Project Natal documentation recommend you wear something bright and paint your room a nice neutral earthtone?

Sean Malsrom points out a less obvious oddity:

It is clear it doesn’t yet work properly. I have yet to see a Burnout video where people are not driving 50 mph when they should be driving 200 mph, and they’re still crashing into walls all the time.

He has a good point and if you follow the player's movements, sometimes they match up, sometimes they don't.

Sean also has a lot of other commentary and analysis on the buzz around Project Natal.

Now wonder then, that the "breakout demo" has been making the rounds, it's easiest to capture the location of four limbs pointing out in different directions.

natal by you.

So, the real question is now what?

When will this be out? How much will this cost? Will it connect to the XBOX 360 by USB?

If so, could you plug it into your PC can capture the data from it? Where's the SDK? Will there be integration with XNA Game Studio?

There are a lot more questions than answers and I suspect it will be like that for a time to come.

 

Technorati Tags: ,

Just Google It With Bing
6/29/2009 2:12:00 PM

Bing is an immense improvement over Live Search, but to overtake Google, it's going to take a lot to de-throne Google from the public consciousness.

 

[found via Shawn Wildermuth's Twitter feed via CNET]

Technorati Tags: ,,

Don't Microwave This Book!
6/29/2009 12:19:00 PM

I recently saw an odd description on the "Expression Design Step by Step" book.

It's a good read, but please don't microwave this book and be sure to only wash it by hand, not in a dishwasher.

 

Windows 7 in Pictures: 10 Cool Desktop Features
6/29/2009 12:06:00 PM

Network World has a slide show on 10 Cool Desktop Features in Windows 7.

Even if you've been playing around with Win7 since the early betas, there may even be a thing or two you haven't seen yet.

 

Technorati Tags: ,,

Slides, Links and Code from Poor Man's Project Natal
6/26/2009 11:45:00 AM

Thank to everyone who came out on Tuesday to CapArea.NET for my "Poor Man's Project Natal" talk.

 

Footer

All images, HTML, Java, Flash, Silverlight, and JavaScript Code on this page
© 1995-2009 Frank La Vigne
All Rights Reserved
Send questions, comments, and inquiries to frank [at] franksworld [dot] com