Thursday, May 24, 2012

Bookreview: Mastering LOB Development for Silverlight 5: A Case Study in Action

Excellent Reference for Professional Silverlight Development (4 stars)

Over all the book is great. it comes all the key areas, has lots of samples and is a great reference. I liked the fact that it spent time going over things that are neglected such as MVVM and general architecture. On the down side I felt that some of the reference examples were overly complex. I guess this is sort of a mixed bag in that the examples were good and real world but for digesting things like MVVM for the first time the example is not a simple as it could be. For the professional developer though this really is comprehensive and well done. The case study term usage in the title might shy some one away but after reviewing the book it is well worth the cost and a excellent resources.

Friday, April 27, 2012

Managing Data and Media in Silverlight

As a Silverlight MVP (Microsoft Most Valuable Professional) and book lover I tend to have a lot of Silverlight books if not all of them that were ever published. that being said I'd say that this is one that will last a while on my self before it gets archived to the main library. I think the main reason is that it pulls good material from some of the other titles and puts it all into a more relevant reference material. Where before I would have used only parts of any one of those books virtually the entire book as good material in it that is good to have as a reference. No matter if you are doing Silverlight or Windows Phone or even WPF this book is a great reference and is good to have on the shelf. I know a couple of the PACKT books I've been less pleased about due to editing issues more then anything else but this really is probably the best one yet. or on amazon

Wednesday, April 11, 2012

Windows Phone Unleashed

All Day of Hands on Programming, B.Y.O. Laptop!

Windows Phone 7 is HOT! Come check out Windows Phone 7 Unleashed for everything you need to know to develop for WP7. Whether you're a seasoned veteran or you're just starting with .NET development, there's something in it for you. The first half of this deep dive event is lecture and hands on lab. At the half point mark of the day, you'll have a solid foundation for building WP7 applications. The second half of the day is going straight to code. (there maybe some phones given away too)

Build an app and win from $800 in prizes

  • 1st Place: $500 Gift Card
  • 2nd Place: $200 Gift Card
  • 3rd Place: $100 Gift Card

Free Marketplace Tokens

A limited amount of complimentary tokens are available for those submitting their application to the Windows Phone Marketplace. Organizers of each event will collect names of those interested.

Limited Seating

In order to deliver the best possible experience for attendees, seating at these events is VERY limited. Register NOW!

Seattle, WA - April 20th - Apps at Microsoft Westlake/Terry offices
Portland, OR - April 27th - Games at Microsoft Portland Office
Boise, ID - May 18th - Games - Microsoft Boise Office
Bellevue, WA - June 1st - Games - Bellevue Civica Office

LINE OF BUSINESS APPS (Just April 20th Session)

Introduction to Windows Phone 7 Programming

In this session, we start with a discussion of windows phone, the architecture changes made from 6.5 to 7.0, the hardware specifications and then move into the beginnings of building a WP7 application including...

  • 1.Application life cycle
  • 2.Hardware Foundation
  • 3.Files associated with project template
  • 4.Splash screen and the importance of 1 second / 19 second loading
  • 5.Application Bar
  • 6.Panorama and Pivot controls
  • 7.MVVM
  • 8.Marketplace

Connecting to Services

In this session, we will discuss how Cloud Services help to bring power to the phone. We will be binding to a rest based services and show how to search and display the information received. In this session we will also talk about Navigation, passing information between screens, while working with List and detail information.

  • 1.Navigation
  • 2.Location
  • 3.JSON Deserialization
  • 4.Bing Maps
  • 5.Isolated Storage
  • 6.Binding Sample Data
  • 7.Navigation

Recording Data

In this session we will be adding to our knowledge and learn the importance of live tiles. We will show you how to set up a periodic agent and how to set up and read and write to a SQL Database on Windows Phone.

  • 1. Live Tiles
  • 2. SQL CE
  • 3. Background Processes and Periodic Agents
  • 4. Launchers and Choosers


Introduction to XNA

XNA Game Basics

  • 1. What is XNA
  • 2. Game Development Tools
  • 3. XNA Game Projects
  • 4. XNA Game Loop
  • 5. Debugging

Games Working with Images, Sounds and Text

  • 1. Working with Textures
  • 2. Playing Songs and Sound Effects
  • 3. Drawing text with SpriteFonts

Getting User Input

  • 1. Getting input on the phone
  • 2. Using the Accelerometer
  • 3. Using Touch Game State Management

Managing Game Play

  • 1. Keeping Score
  • 2. Tracking Health and Lives
  • 3. Adding Levels

Managing Screens

  • 1. Creating Multi-Screen games
  • 2. Loading content in the background
  • 3. How to pause the game

Managing State

  • 1. Phone Application Lifecycle
  • 2. Supporting Fast Application Switching
  • 3. Persisting and Restoring State

Silverlight and XNA Integration

  • 1. Introduction to Silverlight
  • 2. Silverlight and XNA Integration
  • 3. Creating a Silverlignt and XNA Game

Advanced XNA Games

Marketplace and Advertisements

  • 1. Understanding the Windows Phone Marketplace
  • 2. Submitting your Game to the Marketplace
  • 3. Adding Advertisements to your game

3D Games

  • 1. 3D Support in XNA
  • 2. Creating a simple 3D Game

Multi-Platform Games

  • 1. Building Games for Phone, PC and XBOX
  • 2. Other Multi-Platform options

Cloud Integration

  • 1. Using Windows Azure
  • 2. Social Gaming Toolkit

for more information

Thursday, March 29, 2012

Windows Phone 7 Development Using Visual Studio 2010

with David Kelley and AppDev

Windows Phone 7 is a new step for Microsoft for the mobile platform. This course will introduce the mobile OS and how easy it is to use the.NET knowledge to create applications. The course will cover many introductory aspects of developing applications for the Windows Phone 7. For instance how XAML is used for applications and GUI designs. Also the course will cover many other aspects including controls, user input and forms, working with data, layout and Metro Controls. The course will also cover phone resources such as the Camera, GPS and many other items. To wrap up the course, the publishing the application to the marketplace and hosting of advertisements are covered.

In this course, you will learn:

* How to debug a phone application using an emulator
* About the PhoneApplicationPage and the PhoneApplicationFrame
* How layout controls are used including Grid, Canvas and Stackpanel
* Metro Basics and Phone Metro Controls
* About TextBlock, TextBox and other Form Controls
* What is touch eventing and working with events
* How MVVM (Model-View-ViewModel) works and learn how to use an asynchronous service in MVVM
* About lifecycle/tombstoning events including launching, deactivated and others
* Using media (Sound and Video) with the MediaElements and XNA Sound API's
* How to work with Bing Map Controls and Geolocation (GPS) Services

learn more at:

Tuesday, February 21, 2012

The Last Silverlight Post – Coming Out of the Closet

The intended audience of the book 'Hacking Silverlight' was primarily the seasoned professional Silverlight developer who has one or more Web 2.0 projects under their belt. Designed to help that developer connect with the larger Silverlight community and get access to all the knowledge and resources available to you. If that is you, this article can help you take your ‘understanding’ of Silverlight skills to the next level and not in what you can do but in what happened to Silverlight. If you need to learn Silverlight you need to start somewhere else. My blog was never meant for the beginner and often just a way for me to vent when I ran into this problem or the other. With that in mind this article is about what I wanted in a Silverlight to be and is designed then to help me deal what happened and maybe where things are going.

As Microsoft describes it, "Microsoft® Silverlight™ is a cross-browser, cross-platform and cross-device browser plug-in that helps companies design, develop and deliver applications and experiences on the Web. A free download that installs in seconds, Silverlight enables a new class of rich, secure and scalable cross-platform experiences. Silverlight offers a flexible programming model that supports AJAX, VB, C#, Python, and Ruby, and integrates with existing Web applications."

At the time of writing, the combination of browsers and OS's and devices that support either Silverlight or its open source counterpart Moonlight, was at one point expanding month-by month, so any list I published here would have quickly gone stale. For current information, see the Wikipedia "Microsoft Silverlight" entry for a current and comprehensive matrix. What excited me about the Silverlight story though is not the broad reach, or all the incremental improvements over older technologies or even the awesome job the Silverlight Dev team did building it; what I want you to get is where Silverlight really shines, in the collaboration story provided by the underlying architecture that allows designers and developers to come together to get more done, more quickly, as a tightly integrated team. (Feel the designer/developer love!) Let's acknowledge it: Integrating development and design teams has in the past been hard work. So Silverlight ushers in a new day, and it is my pleasure to share with you some of the good things I've discovered about designer/developer collaboration in this new day.

In many ways this cycle is still with us, certainly Silverlight is still around, WPF is still around and further Windows 8 with its winRT is coming down the track like a steam engine but more about that later.

Now if this were a beginner Silverlight article we'd do what all beginner texts have done since Brian Kernighan did it for the C Programming Language; we'd present "Hello World" in Silverlight. But we aren't beginners here and this isn’t about learning Silverlight…so how about a slice of real life instead…about Silverlight MVVM… this is really where Silverlight shined in it’s ability that even now going head to head with HTML5 out does HTML5 in every area save Microsoft is trying to kill it.

Once upon a time I went to a meeting (true story), and the subject of that meeting was a new project, and the coolness that we were going to use Silverlight ok at the time it was still WPF/e. We were so excited! Discussions broke out between pockets of participants; over this design, or that design and the comps we were getting from a partner on how the design ought to be…
And then the bomb dropped.

PM: "We have eight days to deliver the product."

[Dead Silence.]

Someone asks: "Do we have to use Silverlight?"

PM: "Um…Yes."

[Long Cold Silence.]

Someone Else (with a hint of desperation): "Really?"

PM: "Um… that would be yes."

[Another Really Long Silence.]

Another Someone Else: "So you realize that Silverlight is not even RTM and we only have three resources that have a clue about Silverlight?"

Lead: "We don't even have a solid design, and we are not sure we can even do all this fancy work. This would take months in [heretofore un-named technology that still is better in then HTML5 in its UX goodness] and we actually have experience doing that."

PM: "Yes, we know, but they are offering $$$ [and he named a Really Big Number] if we do, and if we don't we lose lots of business."

Lead: "Really? $$$? [And he questioned the Really Big Number.]"

[Short silence as everyone looked around at each other.]

There was a sudden recognition that we might be able to pull this off if we could work together…nicely.

Fast forward eight days: The office has the feel of a tomb. The aroma of unwashed bodies and stale pizza permeates the air. The exhausted bodies of spent team members are strewn over assorted pieces of office furniture, while others that could double for the living dead stroked keyboards under pale monitors. The silence is broken only by the soft staccato of key strokes. But for half-grown beards, time seems to have stood still.

[A knock breaks the silence.]

"Hello, anyone home? TV crew here…We're ready to do interviews for the launch today. Hello!"

[More knocking…]

Dazed faces turn to look at each other, realization slowly dawning that, eight days later, we are still here.

Someone: Is anyone gonna to let 'em in?

[blank expressions…]

Someone Else: "Who's gonna do the demo?"

A few hours later…

THE CROWD GOES WILD! *insert cheering and roaring of the crowd*

Granted the team was composed of very senior developers and designers, but as I recall it the team accomplished in eight days what previously would have had taken that team up to six months, and for the most part, the team learned the new toolset from scratch during the project. Granted this story has grown some in the telling, but the central point remains, the Silverlight toolset created conditions that made delivering to an otherwise impossible schedule, possible.

For me, this was the dawn of a 'new' way for designers and developers to work together. Generally, the user centric cross discipline approach worked and we have implemented it across the business at the time. Moreover, the team of designers and developers lived happily ever after in perfect harmony, broken only by the occasional keyboard hurled over the cubicle wall and a whisper of a mild profanity muttered under the breath.

That was part of the Silverlight 1 launch.

… It has been a long road since then, blogging, article writing, pod casts, writing books, public speaking and even some TV, I’ve loved it and really Silverlight helped me come into my own as a UX professional. So what changed and why is Silverlight going away? Really it’s a lot about Market perception stuff. Silverlight is still around and it’s still the best cross platform method for building desktop apps and high end experiences but when it comes down to it Microsoft pulled the rug out from under this technology before it even hit its peak. This isn’t even a new story either, many times companies have killed tech before it could come into its own and in this case I think a bit un necessary but as sad in what Microsoft did to Silverlight by its PR and support changes the best parts of Silverlight are still with us.

I can’t say that what happened was planned but it played out all very well. Microsoft used to have this cool developer conference called PDC; it was the “bomb” if you were a professional dev. They screwed it up one year due to a location issue and had it in Seattle on the Microsoft campus and generally killed the conference (now it’s called BUILD and it’s all better because it has a new name?!).

So what happened on or around the last PDC before it was called BUILD that killed Silverlight? It is not that this one thing did it but it started here, basically there was a top Microsoft executive that said that the company was going to focus on HTML5 and native app development for the future of windows meaning Windows 8 and it snow balled. Now already there was a huge group of Silverlight haters out there and this started a firestorm of Silverlight negativity. Customers were scared, social media was all a buzz and Microsoft tried to turn it around with the Silverlight 5 fire starter but it was too little too late. Over a year later Silverlight 5 finally has been released and I know there was talk of Silverlight 6 but nothing has come of it to my knowledge. Even though Microsoft tried to turn it around the course of the past year again and again they just kept also re-affirmed the abandonment of this technology except in Windows Phone. We in the industry even stopped calling it Silverlight in hopes of giving it more life. Microsoft fueled the flam in the fact that Microsoft broke most of the team up and announced no plugin support for Windows 8 Metro IE10 and went to far as to even move execs’ around like the gu which instead of being over tools, visual studio and Silverlight is not off in cloud land...
Revenge of the C++ programmer? Maybe,

In any case with those announcements at PDC and then BUILD 2011 being so poorly dealt with it virtually killed all new Silverlight work and even most of the user groups. Only one Silverlight group I know of still meats and we will see how that goes. Most of the professionals have distanced themselves from it. Even me where instead of saying I’m a Silverlight MVP, I’m not a ‘Microsoft MVP’

So where has all the Silverlight goodness gone? And what was so good about it? Well then XAML team was broken up and mostly part of blend and visual studio and windows and windows phone. There is still a small Silverlight team working on shipping Silverlight 5 which is in public beta. Now the whole cool story about designer developer relationship is still there with Windows 8 metro which in many ways promises to be cool and the next darling those tools are being pushed towards HTML5 tooling with in truth is sorely needed.

So truth be told, yes, Silverlight was not able to achieve its dream due to Apple blocking plug-ins on iPad and iPhone but it did compete and in any ways was better the flash in terms of tooling and time to market ROI stuff with the same UI. And Yes Silverlight is not dead as it is the basis for Windows Phone 7 and further the whole XAML story is part of the winRT or Metro for Windows 8 so in a way you might say ‘Silverlight is Dead’ but long live XAML. We will see I’m excited for Windows 8 but much less trusting of Microsoft then I was before. With that I will continue to support Silverlight everywhere for coolness sake (and you never know maybe I’m wrong and it will be the next big thing…) and it is still a great solution for things like lob apps but you’ll see my blogging going on moving forward save short posts pointing back to or {Interact} Seattle.

~Love, the last Silverlight mvp…

Monday, December 12, 2011

Turning XAML into an image (jpg) in WP7 isolated storage and to the Phone Media Library

So one thing that has been kind a trick since the old avalon then wpf days was to be able to can a snap shot of part of the visual tree and make that an image so that you can clean up the visual tree from some xaml complexity and replace it with a plain image. I ended up trying todo with with my princess paper dolls app and found that its not as straight forward as wpf used to be but this works well enough with only a few lines of code. To start with you need to covert the UIElement root you want to turn into an image or rather a bitmap like this:

WriteableBitmap bitmap = new WriteableBitmap(480, 800);
bitmap.Render(master_03_14_2011, null);

So in this case 'master_03_14_2011' is the name of my canvas that holds the 'princess' in the app 'princess paper dolls'. Next I need to create a file name and convert the bitmap and store it to isolated storage

String FileName = String.Format("PrincessPaperDoll_{0:yyyy-MM-dd_hh-mm-ss-tt}.jpg", DateTime.Now);

var myStore = IsolatedStorageFile.GetUserStoreForApplication();
if (myStore.FileExists(FileName))
IsolatedStorageFileStream MyFileStream = myStore.CreateFile(FileName);

StreamResourceInfo sri = null;
Uri uri = new Uri("Princess;component/" + FileName, UriKind.Relative);
sri = Application.GetResourceStream(uri);
bitmap.SaveJpeg(MyFileStream, int.Parse(master_03_14_2011.Width.ToString()), int.Parse(master_03_14_2011.Height.ToString()), 0, 85);

ok so also we checked to see if the file exists before we try to write it and delete the old version. granted given how I'm creating the name its still kind of scares me to risk it. Next we do some clean up:


Yes that was easy but now we need to use that stream again to get the image into the media library. First we create a stream again from the file in isolated storage.

MyFileStream = myStore.OpenFile(FileName, FileMode.Open, FileAccess.Read);

Now we can save it to the media library either to saved pictures or to the camera roll.

MediaLibrary library = new MediaLibrary();
Picture pic = library.SavePicture(FileName, MyFileStream);
//Picture pic = library.SavePictureToCameraRoll(FileName, MyFileStream);

and some clean up and your good. unfortunately as of late there is no way to open up to the image in the media library.

Tuesday, December 6, 2011

So You Want To Build Apps?

If you want to build apps for any number of mobile devices we thought we would provide those resources to you. The emerging mobile application space has exploded in recent years with developers even ametures making lots of money on the side with little marketing or other resources you would normally think of as having been done by a full company. From hobbiest to students and professionals ever one is building apps. Start by picking your poison (the platform you are interested in)

Android (Phone and Tablets)
Dominating the marketing but in a very fragmented way. Certainly the potential to really be the best platform if the carriers every can get out of the way.

iOS (iPhone/iPad)
The platform that started it all and arguable the best industrial design for mobile platforms... iOS.

Cross platform Native(ish)
more or less a .NET environment like Java for mobile ...

Read the rest at:

Thursday, November 10, 2011

Those Darn Gray Box's

(if you just need the hack er I mean 'solution' skip to the end)

ok so I was talking or rather tweeting with @ColinEberhardt about this issue with the gray box in IE on #wp7 (see his post at: I've been working on my own HTMLApplicationHost Framework for doing HTML based WP7 apps and post this on codeplex: since what march I think. I've gotten 3 such apps in the Windows Phone 7 market place and one in Android that are HTML based. Here are a few links to some of those.

SMART Spending Habits: Windows Phone 7 (Deeplink, Paid version):

SMART Spending Habits: Android 2.2 Version:

I'm not sure I'm an expert at HTML phone apps yet but I do strongly believe that just about anything is possible and that there must be a solution to this gray box issue on phone 7 (wp7). So I took on the task of seeing what I could do. I started with creating a new phone 7 app that used my HTML Application Host framework etc (blah blah blah setting up stuff etc) so I got to the point of having my index.html page and started my tests in #wp7.

So the first test looked like this:

function test1() {
test1Location.innerHTML = "test 1 complete";

<div id="test1Location"><a onclick="test1();" href="">test1</a></div>

running this clearly made the gray box... so I tried this:

<div id="test2Location"><a href="javascript:test2();">test 2

function test2() {
test2Location.innerHTML = "test 2 complete";

and as expected this made a nice gray box as well. So I tried this hoping it would work better:

function test3() {
test3Location.innerHTML = "test 3 complete";

<div onclick="test3();" id="test3Location"><u>test 3</u></div>

but alas this made a nice gray box too... *grr* so at this point I went back to Colin's post and watched the video and read a few other related posts then knowing that I didn't have a solution I had to try this:

function test4() {
test4Location.innerHTML = "test 4 complete";

<div id="test4Location"><a onclick="test4();" href="">test4 (will break)</a></div>

and yes this created a gray box AND blew up when the control tried to navigate to no where... and finally I thought I would try something else... yes this time a bit of a hack and messy, not very clean as such but lets take a look:

function test5() {
test5Location.innerHTML = "test 5 complete";

<div id="test5Location"><img onclick="test5();" src="" width="99" height="99" /></div>

Amazingly enough, no gray box in the emulator on my machine. Now this is kind of a hack isn't real as it only works sometimes in the emulator under certain conditions but really its still there just it can't be seen due to the speed of the hardware. If you lucky enough to not see it you still will on the phone hardware. Until the windows phone team can manage a real fix for this annoying bug... but wait I'm not willing to give up yet.

so how do we make it go away in the mean time? the real hack is to just not let the events fire. This means really thinking abit out of hte box and doing some native C# stuff to fix the problem well sort of. The solution I'm not going to give you all the code (its a bit messy and a bit much and very custom) now but I'll explain how it works.

So how about we put a native but invisable touch panel over the top of the web browser control that hosts our app. This means that all events show up on that panel then you expose on your web browser control some interface and you process the events in C# to determine what is going on. then you pipe those events into the javascript context of the webbrowser control. This also means you have to have some javascript events to handle all the events you want to call or do something with. This is very specific to phone 7 and very customized around each action or event but it does in fact work. :) problem solved albiet an extremely painful hack until they fix this bug maybe in tango or apollo...

Friday, November 4, 2011

APPortunties for Mango WP7 App's

So there is a group of Silverlight/Phone 7 insiders helping with this contest to win some samsung slates running windows 8 and some free advertising for an app of your choice. There was a contest like this a few months back and certainly the free advertising helped me with my zillion apps so I'm hoping to win my self so you better get to it or I'll win (not that this would be bad ). Basically gets some Mango (also known as Windows Phone 7.5 apps into the market place, and no this doesn't count apps already in the market place and then go the link on this image blow and enter the super secret code: DKELL

Thursday, October 27, 2011

HTMLApplicationHost Framework Posted to Codeplex

One of my projects has been building an HTML Application framework for phone 7. Basically so I can build HTML5 based applications using HTML, JavaScript and CSS for mobile devices in particular Windows Phone but then being able to use that application on other platforms. Today I uploaded version 4 onto codeplex ( which adds HTML Host Application back stack integration with the Phone's application navigation stack. On wp7 that means that when you hit the back button it doesn't just navigate out of the app but just to the last view in HTML making really applications easy to do that will get past the marketplace and into the hands of the public but even more important setting the stage for apps on iPhone and android using similar HTML5 based application frameworks.

The first app using this framework was the JavaScript application but now that test app is in the marketplace I've been working on a new real app called 'SMART Spending Habits', its a simple budgeting application designed to priority and sort your purchases automatically. Its a great little tool and it should be in the market place next week or so.

download the HTMLApplicationHost Framework Source code here:

Wednesday, October 12, 2011

The Metro Design Aesthetic and Windows 8 and the new Gesture Language

In next months Seattle Interactive Conference check out David Kelley’s session on “Metro Design Aesthetic and Windows 8 and the new Gesture Language.”

Abstract: Building off the Metro Aesthetic designed for touch and mobile devices the new Windows 8 application model is wrapped around encouraging apps designed around the Metro Aesthetic. This session is about designing for metro, the use of touch and gesture in interaction design and implementation along with thinking around the new gesture types, and how the experience in the win8 Metro environment can be integrated into other experiences on the slate.

The Seattle Interactive Conference
When: November 2nd – 3rd
Where: The Conference Center at the Washington State Convention Center

The first-annual Seattle Interactive Conference is a two-day...

read the rest at:

Wednesday, October 5, 2011

The Crazy Ones, One More Thing and Apple

I found out today that Steve Jobs has died today. I know over the years I've had a love hate relationship with Apple, some of you know me for my work as a Silverlight MVP drinking the kooliade but in 1996 or so I was sporting my Powerbook 150 and doing some ANSI C in code warrior and waiting for the next edition of Mac Addict in the mail while I would fight with the Mac Toolbox. I still keep that power book on my shelf to remind me of where I started.

Steve Jobs was a visionary, no one was perfect and like most shining stars they were not always fun to work with but Steve Jobs vision for industrial design and out of the box thinking has really changed the world. In my industry with so many smart people coming up with cool stuff all the time, Job's has been in many ways our guiding light, raising the bar and moving civilization forward. Steve knew that it wasn't about what we could do as much as how we can do it with style. His life's work is littered with revolutionary work that has fundamentally broken us out of the box. Even at the big Microsoft Conference BUILD a few weeks ago looking at all the new hardware coming out next year... really it was all inspired by Jobs. He has made us all better and his loss no matter what side of the kooliade your are drinking is lose to us all. He inspired us, he changed us and his mark will forever be felt in the human family. It truly is a sad day when one of our brightest stars passe's and to all those in the community, at Apple and his family. Our thoughts and prayers are with you and we all morn his loss.

Monday, September 19, 2011

Windows 8 and what it means for Silverlight and the coming Slate Wars

What does Windows 8 mean to the Silverlight world?

To be honest the past year has been kind of a let down with some certain ms employee's saying this that or the other thing that really effectively killed most Silverlight work and its made me somewhat bitter about the whole thing. That being said I was trying hard to have a good attitude going into BUILD last week.

BUILD was really a lot of drinking from the firehose albeit I must say that I was right on most accounts. I knew about some improvements, I may have had access to a hacked version of windows 8 that some one might have let me play with so I knew some. Certainly new about XAML and C++ and HTML5 but really so much has changed. Last week reframed Windows in so many new ways.

First lets start with the basic's, Windows 8 cold boots in 4 seconds... I've tried it allot just so I can believe it... my Windows 7 dev box takes 30 seconds at least... unbelievable in a good way. The memory profile is something like cut in half and really Windows has been rebuilt from the ground up for all intents and purposes. That being the case on the windows front things are good architecturally speaking but everything isn't a bed of roses.

So what is wrong with Windows 8? In all fairness its only a developer preview so I'm not going to harp on things that are likely to be addressed as Windows 8 approaches public release. That being said I break my issues into 4 things and one is even not really Windows 8 but will affect Windows 8 adoption.

Starting with plug-in architecture... plug-in's work on the desktop side of windows 8, this is good however the problem is that plug-in's DONT work on the metro side. What this means is that grandma is going to click the ie icon and go to youtube or whatever and find it doesn't work for her and she is not going to understand and who is microsoft to dictate which sites we can go to. One ms employee told me that they didn't want their users to experience a non metro UI and everyone should upgrade to HTML5. HTML5 might be the direction of where things are going but users are not going to understand why they current stuff doesn't work and are just going to get frustrated. having to go into the desktop side of windows 8 is not going to work from a users stand point. its expecting a higher level of understand then should be expecting from users and its not Microsoft's place to say which web sites we can go to? really is ms going to act all self righteous like Apple?

Speaking of Apple, it seems that the manufactures got a clue about industrial design but more on that later.

Back to my issues, the second issue is XNA, ok xna doens't work. no xbox games on windows 8 and now fancy direct x... but wait that isn't exactly true. there is a whole NEW set of Direct X api's and though the old code is out certainly there is a good direction going forward and further some guy that will remain unnamed managed to get XNA running in a wrapper... still though if xBox games would run natively it opens the door to a whole new level of Windows Awesomeness that is going to be lacking.

My third issue is more of the awesomeness that could have been where Windows 8 pulls an Apple where even Apple doesn't pull one (good job Apple by the way). Case in point with Apple my iPhone apps run on iPad just fine. But Windows Phone Apps do NOT run on Windows 8. From Microsoft standpoint I know that Windows Phone 7 is not the same architecture as wp7 but really this is something consumers will expect I think. And if win8 supported wp7 apps then ms could say they have 30,000+ apps and its only a dev build. Not to mention I don't want to rewrite all 43 of my apps... maye only a few of them but not all of them...

Now my last issue isn't really Windows but actually a change to Microsoft's Gold partner program. Take our ([wire] stone) company, we are currently a Gold Partner and our work is used by Microsoft frequently to show the power of the Microsoft platform (2 of Ballmers keynotes in the past year). To be frank, Microsoft is making Gold Partnership tied directly to the sale of Microsoft sku's which means companies that just build the most awesome Windows based solutions have to pay a huge amount more in developer licensing then we did before. This gets back to the fact that we are an design/interactive agency that is primarily an adobe design shop that only delivers microsoft solutions as they help us delivery faster time to market solutions and lower dev costs, our work includes things like the Nike Touch Wall, the Microsoft Retail Software Kiosk, the Boeing 737 experience or the Jordan marketing campaign last year where people uploaded shoes and it was composed in azure into this huge Mosaic of Jordan. If Microsoft wants us to deliver stuff on the ms platform they need us to be Gold platforms or it is less cost effective to build ms solutions. After talking to many of my friends at other agencies it seems we are not the only ones that face this issue.

On the whole though it seems that the ipad finally awoke the sleeping giant, it was heart warming for MS to preach 4 hours of UX design to its core developer community. This was just awesome. Windows 8 is generations ahead of windows 7 and designed around touch. But also at BUILD we got a look at the new generation of hardware that seems to finally have taken a clue from Apple's awesome industrial design. Looking at the new hardware its no longer variations on a theme in black plastic. From brushed aluminum anodized in purple with embedded fiber optics to something vaguely like a Mac book air but the screen flips around and turns into a slate. Baring my issues above this level of hardware competition and Windows 8 will spark real competition in the market between all the devices and it all can only be good for the consumer.

Wednesday, August 31, 2011

David J Kelley Named Phone 7 Developer Hero of the Week

Microsoft Names David Kelley Windows Phone 7 Developer of the Week Hero:

"David Kelley’s background in UX and as a Silverlight MVP set him up to be a great mobile app developer, which lets him pursue these passions as well as a third – speaking! You can catch David presenting about Windows Phone 7 at local events and some larger ones, like DevConnections.

If David could choose a superpower, it would be immortality … so he could finally have time to check off everything in his Outlook to-do list! And the man certainly is busy; he’s created tons of apps and is still going.

The app that’s closest to his heart is Princess Paper Dolls, with the animation & live tile modeling and voiceovers done by his 4-year-old daughter, Hanna. He watched her play a tablet-based app and decided to make something better for Windows Phone 7. David built the AllRecipes app Dinner Spinner with his team where he works, and created Tools for Phone 7, a.k.a. the “Swiss Army knife” of apps, to put all those handy apps in one place (duct tape not included).

David’s working on a few new apps including a framework for building Windows Phone 7 apps in HTML and JavaScript, so keep watching, developers—more great things to come from this developer hero! "

See the rest at:

Tuesday, August 30, 2011

29 Ways to make your wp7 app killer and make money

So you want a make a killer phone 7 app? make it into the top 100? well I've managed to have 3 of my apps in the top 100 and here is what I learned. Free Apps (1) are the only way to go. As a developer the best chance of success is to build a free app but further an app that is not specialized (2). That means a mass consumer focused app, such as Simon Said the game or Tools for phone 7 or Allrecipes. There are mass market consumer apps. Now an xbox title would be good but if you don't work for a game studio then you out of luck.

Now that you are building a free app that is for the mass consumer market how will you make money? Advertising (3) Advertising is the best way to make money from a free app. you add value and customer get the app for free and only a small amount of visual noise and your golden. Next you need an ad service. I recommend Microsoft AdCenter (4). Now when using the adcenter control you want to optimize its use as much as possible to not only help the adcenter target ads but mainly to get your eCPM value up which means more money. How do you do that? Once in your app ideally in OnNavigateTo do something akin to this:

(5) AdControl.TestMode = false;
(6) AdControl.Gender = Gender.Male;
(7) AdControl.PostalCode = "98104";

now you can't just set the zip code but if you have a way of extropalting that or just using Bing outright to get the zip from the geo-coordinates (8) then you can set the postal code. Also things like gender should be set ONLY if you can say your demographic is female or you KNOW they are female. Part of this is to actually get targeted ads which increases the likelihood of some one clicking an add which means higher eCPM values and further more money. In the XAML also set this value:

(9) RotationEnabled="True"

now lastly if the adservice is down then to still get some advantage put an ad behind the ad control to one of your other apps (10) or something like that. Further you can rotate those ads to more then one app (11) and then deeplink or market place link them to those apps.

One more thing about ad's is to make sure that the ad channel your using is as close to your demographic as possible. An example of this targeting would be if you app is primarily for fishermen then maybe ad's related to fishing? for example.

Now lets get back to the design, nothing is better then good UX. At the very least make sure you have some of the people you might now that are part of your target demographic and get them to use your app (12). and further 'pay attention' make it easy, make it discoverable, and use the metro aesthetic (13). So much has been done to help make that easy and using it gives you discover-ability for free. when doing metro also think simple. simple is always better for users...

Next think about analytics (14), albeit you need to do this in the end AFTER you have built your application but Microsoft covers the the cost of using an enterprise solution specifically Preemptive (the makes of Dotfuscator) to magically instrument your project. This allows you to see what users do most in your and helps you focus on further development.

Next look at a paid upgrade (15). This way if users get sick of your adds they have a place to go AND you get money. for the most part this seems to be the only reason for paid apps and that I can tell.

Next lets talk about updates. Update your application often. Each time you update your app it shows up on the latest panel in the market place which gets you more visibility (16).

Along the way a few other things might be helpful such as using live tile (17) that actually update for something related to the app. Apps with live tiles are just cooler.

Use touch and gestures, along side metro. Implementing things like 'list' with scroll and touch w/o interfering kind of thing (18). I see a lot of apps that have buttons or other 'click' or mouse like metaphors in a list box and that is not what I mean. Really this is about not using that kind of metaphor, but a touch metaphor where the list is the button based on the touch behavior, even if its just implemented using click and mouse events this can be done fairly well and users will enjoy the clean and reactive experience.

Now here is another brilliant idea... share your app and the deep link (19)... *gasp* I know it seems obvious but frequently people don't do it and I'm not sure why... what is social media for if your not going to post a few links now and then.

Also contests, enter them all (21) there are a lot of phone 7 contests and anything that gives you more exposure or better yet gives you app more exposure is bonus.

next consider your target market a bit and do some internationalization (22). For example if your dealing with formats like dates or even doubles consider the regional settings and test in them and deal with it. A case in point with floats for example is the difference between 11,5 and 11.5 which means you need to do something like this potentially:

_CurrentValue = _CurrentValue + Double.Parse(Results.Text, CultureInfo.InvariantCulture);

Another fun thing you can do that users tend to find interesting is if there is a fun easter egg in the app, a hidden feature etc (23) something fun that might even be mentioned in the app description so users know about it. Most of my apps have easter egg's.

Then there is tactile feedback (24), while there are some users that want to be able to turn this off in an application I have found that most users find it easier to know when they have done something if you use this feature. Tactile feedback can be as much as a 35 millisecond burst from the vibration motor on the phone. this might look like this:

// class or view members
private VibrateController _Vibration = VibrateController.Default;
private TimeSpan _ThisTime = new TimeSpan(0, 0, 0, 0, 30);
private Boolean TactileFeedback = true;

// called in any touch event
private void PresentTactileFeedback()
if (TactileFeedback)

Ratings are also key to going higher in the market (25). Try putting a rate my app button or icon in the application to encourage users to 'rate' your app. In the event handler for this you might use code like this:

MarketplaceDetailTask Details = new MarketplaceDetailTask();
Details.ContentIdentifier = "29c27356-7862-e011-81d2-78e7d1fa76f8";

Lastly get others that are your friends to rate the app (26) the more they rate the app the more your app shows up higher on search's based on the keywords (27) that you lovingly set in the app hub when you submitted your app. Oh yes and while your in the app hub, upload as many pictures as the market place hub will although including the background image if you ever want to be featured (28). With that happy app building. (and if you need ratings, rate mine and I'll rate yours 5 stars (29), assuming they are free or trail apps)

Monday, August 29, 2011

Parchment Apps Blog

I've got something like 40 apps in the market place. mostly due to hacking up the tools app for Mary so we would get a zillion apps in the market to win this contest some time back but still there is like 13 serious apps and each one of those has a free version and a paid version or at least mostly. I think totally I'm up to almost 400,000 downloads and 8 million impressions and a total of 3 apps that were in the top 100. In any case, to manage the documentation of all the apps I finally decided to just use a blog... namely this:

Monday, August 15, 2011

CloudPlumbing - Podcast/Interview

David Kelley (that's me), Principal User Experience Architect at Wirestone, talks about how UX should be a concern of everyone on the team and not just fluffy designer stuff. David has described his role as being the glue between designers and developers. He makes a strong case for both designers and developers to learn more about the other discipline for the sake of better communication and better products.

check it out here:

Sunday, August 14, 2011

Book Review: Microsoft SharePoint 2010 Enterprise Applications on Windows Phone 7

One of the most important developer space's on the Microsoft stack is the still emerging LOB app space for phone 7. This particular book is focused on SharePoint 2010 applications on Phone 7 which is an increasingly important sector of the increasingly important Phone 7 developer segment... yes I know a bit repetitive but still...

The thing in this book that really made it for me a "must have" for LOB wp7 folks is the fact that it separates the basic's skills need on each related platform (wp7 and sharepoint) and then includes the cross over elements of working with both platforms as well. Although narrowly focused this as I pointed out an increasingly important segment that this book is targeted towards and as an LOB developer sometimes myself its an important part of my collection.

The downside of this book would be the lack of depth for phone 7 and sharepoint specific information but that really is beyond the scope of the premise of the book so I can't fault that on the book but that also means that to make the most of this particular book you should probably look into something on sharepoint and another book on windows phone7.

remore about the book here: packtpub book site

Check out the book on Amazon at:

Wednesday, June 29, 2011

What is User Experience Design (UX Design) ?

An article I wrote for Media Magazine:

Many people including you probably have no idea who I am and frankly sometimes I don’t know who I am but sufficeth to say my name is David Kelley and I’m a UX professional. Am I a graphic designer? Well no not really. Am I programmer of some kind? Not exactly but I can write some code. My title is ‘Principal UX Architect’ and typically I don’t even find myself dictating ‘architecture’ of any kind albeit I’m passionate about that too. My job when it comes down to it is communication, to bring people together and more or less be the chief Kool-Aid drinker.

What? Now you’re more confused than when we started?

Ok let’s dial back a bit then. My job is to help my team design an experience that fills a need and tells a story. To understand what that meant you really need to understand ‘User eXperience Design’ commonly called UX Design. If you look up what UX Design...

read the rest here:

Wednesday, June 15, 2011

Using HTML App Host Tasks from the ECMA Script Context

Using the task framework ( and the taskprocessor are pretty easy. Basically it needs to look like this:

window.external.notify(" from JavaScriptFWP7");

the format for calls are:

window.external.notify(" Task Name : Paramter1 : Parameter2 : etc ");

the current supported tasks include:

Email : To Email : Subject
SystemTray : Boolean Value
EnableFrameRateCounter : Boolean Value
alert : message value : message box title
play : sound uri path
vibrate : hours : minutes : seconds
MarketplaceSearchTask : app id
Analytics : Parmeters * n
MarketplaceDetailTask : app id
WebBrowserTask : URL String

There is also a custom event on the AppHostShell called ScriptNotify that allows you to extend what you can do with tasks for example in the code base the sample app does this extension from the custom event:

private void webBrowser1_ScriptNotify(object sender, NotifyEventArgs e)
switch (e.Value.ToString())
case "task1":
EmailComposeTask emailComposeTask = new EmailComposeTask();
emailComposeTask.To = "";
emailComposeTask.Body = "";
emailComposeTask.Subject = "Email from JSWP7";
case "task2":
NavigationService.Navigate(new Uri("/About.xaml", UriKind.Relative));


this gets around a limition with calling the navigation service that I'm currently working on.

Tuesday, June 14, 2011

Increasing App sales with Analytics: Free apps versus trials

Since Sebastian quotes me I and supports the supposition that free w/ premium upgrade in great detail which has been more or less my mantra for several months I thought I would point everyone at his post(s):

Increasing App sales with Analytic's: Free apps versus trials:

and also

Implementing Customer Feedback Forms AND fine tuning try/buy strategies with Runtime Intelligence:

Tuesday, June 7, 2011

Building an HTML/HTML5... Based Application for Phone 7

So you want to build an HTML based application for phone 7, but wait there is not a way or at least a 'supported' way of doing that for phone 7. Why would you want to? For for starters wouldn't it be cool to have the same app/code base run on android and iphone. I realize a good portion of the 3 readers on my blog are probably aghast that I use the term 'iphone' (oops there it goes again) but in all honesty as an app developer it would be sooo cool to be able todo that. Let iterate some of the benefits: less time developing for multiple platforms, larger reach to my target demographic, really its not about the technology or the platform but reaching my target demographic.).

The obvious solution is to have a shell like a web browser control or web browser runtime using a local html file structure. But wait that is easy todo and I found that I can do that in Silverlight easy enough creating a HTML App Host Framework for phone 7. I got it working on the phone and couldn't think of a reason they would not let it go through. So I submitted a test app that was all HTML and JavaScript and what surprised me is it was accepted! (here is a deeplink if you don't believe me: )

So from here I decided to create a simple framework around this and post it on codeplex so others can build apps that are HTML/JavaScript based on this framework and have them deployed to the marketplace. To download the framework (dll) you can go to this link:

Here is how to use it:

Using the HTML App Host Framework

the HTML App Host Framework current consist's of 3 critical parts. 1, the app host shell, 2, the html loader and 3 the task processor. For an HTML application developer you don't really need to worry about most of it but in the following context. To start you need to create an empty Silverlight application in visual studio and then reference the HTML App Host dll. Then you need to create a directory called HTML and add your HTML application to this. The HTML application can include html files, resources, images, css, script files etc and folder structure or whatever you need. On the downside you need to create a 'manifest.xml' file at the root of the html folder that maps all the files. This allows the HTMLAppHostFramework to consume your application and run it on the phone. Here is a typical manifest.xml file:

<?xml version="1.0" encoding="utf-8" ?>



<File Name="index.html" />

<File Name="about.html" />



<Directory Name="inc">


<File Name="script1.js"/>

<File Name="script2.js"/>





Basic a simple index of your html application. the trick here is that html assets can't be referenced directly from a xap to say a webbrowser control so the apphost used class called 'IsolatedStorageResourceHelper' to copy everything from the xap based on the manifest.xml file into isolated storage where it can be referenced and executed directly.

The next step is to edit your main page in your app to reference the AppHostShell and your html. The AppHostShell is used much like a webbrowser control but it extends the control to deal with the IsolatedStoargeResourceHelper' class and to expose Phone 7 API's to the script environment so that the script can call out to those API's through 'tasks' using the 'TaskProcessor' class. Also the AppHostShell exposes an event called 'ScriptNotify' so you can extend what is dealt with if there are special cases you want to handle in your own code.

After the HTML app is created, then added to the HTML directory AND you have finished the manifest.xml file, the next step is to add the namespace reference in the XAML of your start XAML page. I like to rename the default 'MainPage' to 'Shell.xaml' but if you do this you have to edit the master app manifest under properties to point at the new name or your app won't work. But you can leave it as 'MainPage'.

In any case, in this page the namespace reference should be in the rootnode and look something like this:


then you can add the control to the xaml surface generally you can just rip out everything in the page and replace even the root grid with this:

<Grid x:Name="LayoutRoot" Background="Transparent">

<HTMLAppHost:AppHostShell Source="/index.html" />



You'll note that now when you run the app your app on the phone will be entirely your app, well save the system tray and I like to turn that property off in the root node but you can do that in your javascript too using the task api that is created by the HTMLAppHost control.

If all of your app is HTML based you're done but if you need to call out to phone 7 api's from your javascript you can make calls like this:

window.external.notify(" from JavaScriptFWP7");

Basically the syntax of the string is "[task name]:[param]*n" currently I've only added a few tasks like email but that I'll be adding much more in the coming weeks. Ping me if you use the framework for your app's, I'll give your app some social media love.

Wednesday, June 1, 2011

Tethering Windows Phone 7 - Hack

One of the features people frenquently complain about with phone 7 is the tethering or lack thereof support. But alas there are a number of hacks out there for doing it. If you have an LG phone you could try this (at your own discretion, you of course should not try it...):

if you have a Samsung phone try this:

again, if you try this and something goes wrong, its your fault. Please don't try this at home...

Friday, May 13, 2011

Monetizing Phone 7 Application Methods and Approaches

The past 6 months have been a bit of a wild ride with Phone 7 going live and all the apps I’ve been working on. I guess I really started preparing for phone 7 the end of 09 heading into MIX 10 where I started building apps for the upcoming release. Going from 0 to making money with WP7 apps was kind of a long journey and this is my story, the story of Simon Said and my phone 7 obsession…

For several years there was this thing in the Silverlight Insiders (Super Secret Kabal of Silverlight Universe) about the upcoming new version of the MS phone/mobile platform and many of us knew about the two device directions and in fact knew people on the teams including the super secret design stuff going on in downtown Seattle. This kind of cloak and dagger thing drew our attention but most of what we had to work with for the longest time was conjecture, rumors and half truths. Thank goodness I wasn't a mobile 6.x MVP as I feel they really got the short end of the stick but the Silverlight MVP's had an awesome deal. Coming into MIX10 we had mostly all jumped on board and were building apps albeit for the longest time there were two few prototypes phones we could get our hands on that were weak and most of us were stuck with emulator which was horribly weak as well. (Currently we are still eagerly waiting for Mango, which is promising to be more awesomeness.)

Don't get my wrong, the Silverlight/WP7 team was working over time to get the new phone platform to market so the fact we got an emulator at all was great. Of course it wasn't long before this was hacked and we started getting our fingers into the OS and post the excitement of MIX11 the Dev community started to pick up momentum around the phone and building phone 7 apps. But the question in every bodies mind was will it actually make us money? and how could we be successful?

For the longest time no one wanted to talk about this aspect of the phone much, info was few and far between and hardly anyone knew anything or would tell you anything. Now that the market is open and we have been able to see some of the dynamics in action and some of us have made some money I'm hoping to help bring at least some of my experience to others. Let's start with understanding the basic revenue models that you can do on the phone.

Model 1: The Paid App

The paid application is the most basic model for making money. 'Free App's' do not constitute a revenue model by themselves w/o a more complex model. The idea of buying something, using the existing structure put in place, in a onetime fee sort of way becomes the most basic structure. On the good side this model is the most simple, you need only have a developer account ($99 typically albeit there are MS rebates if you get 2 apps into the market place), the tools which are free and an application. Issues with getting things approved aside, it’s just not hard to do but most of the people I know have not made money at this (at least not a significant amount). For the most part given the current market conditions and the expectation of free apps that developers have themselves propagated by educating the target demographic about the evils of paid apps has made this model difficult to use. The success that I’m aware of with this model have come with primarily with strong 'existing' brands and lots of marketing (any Xbox Live game as an example).

Model 2: Paid w/ Trial

The paid with trial model for making money is really just a variation on a theme from the first model and is only marginally more successful. For the most part all the examples I refer to about Paid apps is basically this model. So unless you have a good Xbox Live company you work for… its not likely you will be successful. Now that certainly can change as the market changes which will happen as the Windows Phone market becomes increasingly viable but not yet.

Ok so how I can Make money with phone 7 apps?

Model 3: Free w/ Advertising

The idea here is that an application is free to the user but you basically sell ad impressions to an ad service such as Microsoft AdCenter and show the ad’s in your application. Companies pay firms for the said advertising. The best part of this model is that it works. A good, well designed application that is targeted to a general demographic will work great. There are problems and complexities to this model but it is achievable to the average developers... When you are talking about AdCenter it really comes down to targeted ad’s. The better you can target your app’s ads the better your 'ecpm' value is which translates into more money. 'Ecpm' basically standards for how much a 1000 impressions of an ad are worth in your application. I’ve tested this and certainly the more you can tell the AdCenter control about your user and the more your ad’s are something that would interest your users the more money you make.

Model 4: Free w/ Paid Version

This model is basically a way of driving sales to a paid application. I’ve seen this one tried but with little success so far. I suspect this might become more viable as market dynamics/conditions change allowing more sales of apps to take place as a larger market share is formed around Windows Phone 7.

Model 5: Free w/ Advert w/ Paid Version

A forth model is a variation of the third. This model really doesn’t make a lot more then model 3 but I think it is well positioned to take advantage of how the market dynamics will change over the next couple years. What this model is, is two applications like model 4 but focused on advertising in the short term as revenue stream. In this model you have an application that is free with advertising that is also driving sales of a paid version. In most cases where I’m seeing success is when the free version is very popular with a built out feature set and not handicapped but at the same time the paid version looses ad’s but also might ad some premium feature. A simple example is that I have a morse code application in the market place that is free with a rich feature set from saving code blocks, sending and transmitting code etc. The paid version of course is w/o ads but also has a complex sound transcoding feature but for the most part the feature set is the same short the one. Then the free version doesn’t expire, is a good free app but also passively drives paid sales. Have a free app tends to drive many, many more eye balls and downloads.

Model 6: In App Purchasing/Purchase Upgrades

Ok here is a six model that can be used with the others and that is in app purchases. There is no market place support for this but if you have the ability to roll your own certainly it can be done. What this means is that in your app either paid or purchased the users has the ability to pay for additional elements, features or other purchases as defined by the application. Basically if you want to write the code you can do this but there is no current support for it however there is a nifty hack I learned about primarily it looks like this… You have this app, and then you have other apps in the market place are packs or expansions for the first app. These ‘pack’s give you a code or other set value that allows you to ad more elements to the first app, maybe some under the covers sync etc. A cool idea but really a bit of a hack and could be cryptic for users.

Case Study: Of a free app?

I have this one application in the market called 'Simon Said' that is now in the top 100 most downloads apps. This started off some years back with a demo project called 'Silverlight Simon' to show how to build composite WPF/Silverlight assets and controls. 'Silverlight Simon' being the case in point. Over the course of several years and 2 mvps 'Silverlight Simon' was in Silverlight, WPF, Surface, Azure, OOB and then the phone came along so I took the existing Simon game control and put it into a Phone 7 application shell and submitted it to the market place just to see that it could be done. At the time I didn’t really think it would be big but I did add the AdCenter control as I was trying all the basic models I could think of. ~3.9 million impression’s later and ~150,000+ downloads I’ve learned a lot about phone 7.

At first people would download the app and get upset that the animations lagged or the timing was slow but I was just focused on testing so Ignored this as the app description talked about this only being for testing and demo purposes but I kept getting issues and less than stellar ratings. I finally realized that there were tens of thousands of people downloading the app so I finally capitulated to building a new version optimized for the phone.

Now the Simon Says is basically a picture of Simon, 4 paths and a text box plus an app bar and the ad control and some code. The highly complex XAML that made of Simon needed to go and that turned out to be 90% of the problem. Most of the other features are implemented as separate views and a combination of a good design, well built app, a degree of familiarity and the AdCenter Ad control and the app being free has continued to drive the apps popularity as one of the top apps in the market place. Of course some guerrilla marketing helps too, a few blog posts, videos etc and its all good but as of late, if you’re a one man or women shop, free with advertising is the way to go.

Thursday, May 12, 2011

A Letter to Some Listing to Silverlight Haters...


I guess up front this topic is one of my hot buttons but I’ll try to be as even as possible in my explanation. But in fairness I do have a vested interest in Silverlight as a Silverlight MVP for the past two years, a published author and professional speaker as well as being one of the Silverlight insiders at Microsoft… besides having a vested interest it also puts me in the know as it were.

First WPF or ‘Windows Presentation Foundation’ to say is dead would be on par as saying Windows is dead as WPF is the primary method for building native applications on Windows. VSTS is in WPF, most other ms products are written in either WPF now or are C++ written in VSTS which is in WPF. That notwithstanding, there hasn’t been as much excitement about WPF as most of the industry talk has moved on to other things, even the last version of WPF was more or less a support release. Where all the talk in the ms world is as of late around Kinect (oh but all of these apps are WPF or C++), Phone 7 (which is XNA/Silverlight) or HTML5 (which the browser is written in WPF on windows) etc. WPF is therefore for native Windows Only applications. WPF primarily consists of XAML markup and C# code.

Silverlight which is also XAML markup and C# code, is a cross-platform lite version of WPF (Silverlight was first called WPF/e), it is cleaner with lighter overhead and runs on Mac, Linux, phone7, Symbian, CE, windows etc.

Last year ms decided that the HTML standard moving to 5 was a good thing and that they would support it for cross browser applications but that was never what Silverlight was about. During PDC last year (MS Professional Developer Conference) a former ms employee that at the time was senior vice president… Bob ‘what’s his name’ was interviewed on TV and made some less then well thought out comments about Silverlight which started this silly-ness about Silverlight being dead and ms has been doing damage control ever since. In Dec they announced the feature set for Silverlight 5 coming out later this year and demo’d features like pinvoke, native 3d and hardware acceleration even on the mac and XNA support built in. Silverlight is also the primary method for building apps for Phone 7 which ms is basically bet the company on. They will make it work which means supporting Silverlight for the foreseeable future. Silverlight is for building immersive cross platform user experiences and high end video, LOB apps that are cross platform etc. Developing Silverlight is for the most part the same as WPF, if you learn one, you can do the other easily.

One last point is that I work for an interactive design agency of almost 200 and we are primarily an Adobe shop. We do things like the Nike Touch wall or the Jordan retail kiosk, or the Microsoft Software Kiosk in the new MS Retail Store’s etc. Our clients don’t care about technology and projects should generally never be about the technology but the best way to deliver the Best Possible User Experience to the target demographic. I believe in this more than anything and is also way I helped start ‘Interact Seattle’ – designer developer interaction group. We meaning ‘[wire] stone’ deliver most of our work in WPF or Silverlight as our time to market is double our competition over say Flash which used to be our primary delivery model for interactive designs. Silverlight allows us our dev teams to build almost directly against illustrator files so that we are able to not have a design team or a dev team but a single team working together. In short as mentioned it cuts time to market in half once the dev’s and designers learn to work together and the designers can continue to use their tools they are used to. Therefore for business reasons we continue to use Silverlight…

I hope that helps :) please feel free to ask any questions and if you are in Seattle feel free to come by our office.


David J Kelley
Principal UX Architect, MVP
[wire]stone | Blog/Site | {Interact} | SeattleSlug
twit: @DavidJKelley