Visual Storytelling

I've always been obsessed with user experience; the way an 'experience' is crafted through software communicating to the user via their senses, and thus user interface design. It's something that's always intrigued me - we find certain experiences beautiful and immersive, and others clunky and ugly. It's a striking challenge: how do we present to the user something that will immerse and enamour?

A friend of mine asked me an interesting question after taking a look at my resume. At the top, I had described myself as a visual storyteller. I'm a software developer. What does visual storytelling have to do with software? Isn't that like... making movies?

Tom Cruise doing what he does best

Well... sort of.

Storytelling is one of the most interesting parts of human existence - a huge part of everyone's life involves storytelling. It's universal, and it's ancient. It's not just making movies. It's communicating.

If you want to communicate effectively and intimately, you need to know how to tell a story. This statement holds true whether you're talking about writing a book, shooting a movie, pitching an idea, writing effective software - anything. And what's more exciting than hearing a great story? Even moreso, experiencing a great story?

Story time.

Let me give an example... a very run of the mill story.

Julia wants to use her calendar on her computer or mobile device to mark down her plans to see a movie with her friends later.

You might think instantly of Google calendar, or whatever calendar app you might have on your phone. What's the story presented to you there? Well, there's a visualization of your schedule - you can see what you're going to be doing throughout the day, and hopefully, depending on the quality of the application, you can change and update the event listings to fit your schedule.

This isn't a very rich story, but there are many ways to craft it into one that is.

Calendar software today is very run of the mill

Imagine Julia creates an event: "Movie with Alex and Katie". Usually you might set a date and time and call it done. But software is smarter now, it has more resources - why can't it dig deeper and tell a more detailed story? Julia's calendar knows Alex and Katie - they talk all the time on Facebook. They both keep their calendars online, so Julia can be presented with times that work for everyone. Clearly this event is about seeing a movie - where are the theaters that are most convenient for everyone? What sort of movies are Alex and Katie most interested in? Suddenly this is more of a story about a trip to the theater with friends than it is an event entry on a calendar. Which do you think is more compelling?

All of the information that I described above is available or can be made available. But how do we present it and use it to tell this story? It's not as simple as it might sound - It's easy to overload the user with information. How do we give them just what they want exactly when they need it, even if they might not know they want it? That's the challenge of telling a good story.

The time has come.

Here's the best part - with today's technology, we not only can deliver a story - we can deliver an entire experience. We have the ability to deliver almost any kind of content we want to almost all of your senses. We can render any sort of visual experience we can think of. We can generate the sound. We can change the environment around you.

And what do the very best stories do? They understand you. They create an experience around you. Again, technology is unlocking this world - projects like Kinect can track your body and voice in real-time, gauge your emotions, and understand your language. The proliferation of open APIs grant access to a wealth of information - information about people, things, ideas: the world. As in the calendar example above, this enables us to tell more detailed stories about anyone and anything. Combine all of these elements, and it's hard to find limits on what can be done.

That is why I am a storyteller.

To be continued...

Some Things I Noticed in Windows Phone 8.1

Windows Phone 8.1 was recently made available for Developers. The set of changes it includes are staggering, some of the most notable being the Cortana assistant, Action Center, 'Shape Writing' (okay, it's Swype) keyboard, and so much more.

One of the more interesting parts from a developer perspective is the new convergence with the Windows Runtime. Whereas Windows Phone 8 used the Silverlight runtime to power its app experiences, Windows 8 apps made use of an entirely separate platform, WinRT (or Windows Runtime). Now Windows Phone developers are free to use the universal WinRT platform, and maintain a level of compatibility with Windows, and in the future, the Xbox.

Silverlight is still an option, but it's expected that WinRT will become the preferred development platform in the future due to its universal nature. Silverlight is likely still provided purely for backwards compatibility and familiarity.

As a developer (albiet a fairly new one to the Microsoft world), I dove right in to see what was new, and start developing. A note; having a universal framework for apps on all platforms is all sorts of awesome. The development story at Microsoft is just getting better and better and better. Unfortunately, though, my first experiences with WinRT coming from Silverlight were a bit irksome. Perhaps this is something that's just missing the polish that comes with age.

Here are some of the first things I noticed that bothered me a tad. A lot of these complaints are merely coming from a UI design perspective - I love Windows Phone for the focus it puts on a fast, fluid, and authentically digital user interface. This is something I think has stemmed from Zune, the first majorly Metro device from Microsoft, and carried itself through from Windows Phone 7 beyond.

(Fair warning: if your browser doesn't support HTML5 video (or H264) you won't be able to see the video demos below. Sorry about that.)

Here's the old Panorama control from Windows Phone 8. One of my favorites! In my opinion, this control is part of what makes up the identity of Windows Phone. The easy-access portal to at-a-glance information. Look at how beautiful and responsive it is without even showcasing any real data!

And here's the new "Hub" control meant to replace the Panorama for Windows Phone 8.1.

Notice anything different (besides the lack of color and smaller font)? The way the title slides across when panning across to the beginning... zero easing with an abrubt stop, not following the movement of the rest of the content at all. You'll also notice that at certain points the control stops responding to touch entirely until I lift my finger and touch again. Why?!

Now, in fairness, this only seems to happen when crossing the border from the end of the Hub to the beginning. But still... why did this control become so much worse?

Here's another thing I noticed throughout the rest of the phone. The Tilt effect has gone weird! Yet another favorite of mine from the Windows Phone UI - elements that can be interacted with "tilt" when tapped in three dimensions, appearing to actually be pushed into the screen by the user.

Check out this tilt effect demo from a classic Silverlight app.

Now check out the tilting in the new Cortana app.

Why is it so weird? The behavior is inconsistent, and ugly if you pay close attention.

There are other things I've noticed about WP8.1 that lack some of the polish I've come to expect from the OS. Things like the notification bar just instantly appearing at the top of the screen when you pull down instead of animating into the viewport.
Parts of the screen instantly turning white instead of smoothly transitioning when moving from the list to the message detail in the mail app.
The OS 'pausing' for a second before initiating the page transition animation when hitting the search key or backing out of a twitter status update in People (isn't the whole point of the transition animation to distract the user while you're loading?).
Requiring a splash screen for the first launch of all apps... this is something that's always bothered me. Why put an additional barrier between the user and their app? Apps should be light enough to load in the time it takes to play the transition animation anyway (see the original people, calendar, mail, etc.) and if they can't, I'm sure they'll gladly include their own loading screen. I'm guessing this is yet another requirement from WinRT.

There are some other things that I'm still unable to find solutions to as well. Things like automatically scrolling a ListView. It took me a day to figure out how to get a reference in code to a list that's in the default Hub template. This never happened to me when I was beginning with the old Silverlight framework.

Once again, this is all part of a broader effort by Microsoft to merge the development stories into one Universal WinRT - and perhaps these are just bumps in the road. But Windows Phone has always had a shining user experience, and I'd hate to see this new framework undermine the polish and attention to detail that makes the OS so unique.

I <3 Windows Phone.