Scott Hanselman

From Concept to Code in 6 hours: Shipping my first Windows Phone App

January 30, '12 Comments [49] Posted in Open Source | WinPhone
Sponsored By

A screenshot of my new app Lost Phone Screen for Windows Phone 7Warning, this is long. I'll be frank with you, as I always am. I have an iPhone, a number of iPads and I like them fine. I have a Windows Phone that I use occasionally. I know C# but I do not know Objective-C.

TL;DR Version

I made my first Phone Application. I've spent about 6 hours on it. It's called Lost Phone Screen and it makes nice wallpaper. It's over at http://lostphonescreen.com. It's a simple customizable Windows Phone 7 Lockscreen. It was way easier and more fun to make than I expected. If I make a million bucks with this thing I'm GONE. You'll never see me again. :)

Introduction

I wanted to see how quickly I could make a useful Windows Phone 7 application. I'm not talking about just dragging a button onto a Hello World template and adding "press to fart." I'm talking about an MVP - Minimally Viable Product. It might not be the greatest app in the world, but it will provide value. At least to me.

Disclaimer: I don't work for the Windows Phone Team and don't really know anyone over there. I did this on my own with my personal details, personal account, as an "on the side moonlighting thing." While I work for Microsoft, I work in the Web department, not in Phones.

I honestly hadn't given the Windows Phone too much thought until the "Mango" release, when things got really interesting.

So, last week I sat down and decided to see how quickly I could come up with an app, write it, market it (make a website) and get it in the Windows Phone Marketplace. I had never done any of this stuff and my machine didn't even have any Phone development tools so I was starting from literally Step, ahem, Zero.

The Concept

I am consistently surprised at at how often someone shows me their fancy new phone - no matter what kind of phone they have - and they're using some lame default wallpaper. Folks rarely lock their phones (bad idea) and when they do, there's nothing on the lock screen wallpaper to help them get their phone back if it's ever lost.

"But Scott! I can enable this new fangled GPS and track my phone globally!"

Really? That's lovely and I'm sure ever se helpful when your phone is left in a basement pub, office building, subway or any other GPS-friendly locations. But that's not the point. Why make it hard? If your email or alternate phone number was on your lock screen - maybe even with a reward - chances are you'll get your phone back quickly and easily. Why do I say that? Because I've lost my phone twice before and had a dude call me to pick it up twice before.

I'll make an application that stamps your contact information on custom wallpaper for the Windows Phone 7. My requirements are:

  • Must create lock screen wallpapers that match the Phone's style.
    • The resulting wallpapers must look like a built-in feature
  • Must look actually designed. Correct fonts, alignment, layout.
    • No garish VB3-on-a-phone-green-background-purple-buttons for me.

Cool. I will call it LostPhoneScreen and I pay $8 for the domain. Then I get to work.

Step 0 - Get the Tools

First I go and download the Phone Development Tools. They are free to download, which is cool. To publish an app costs $99 a year though, but I don't have to pay until I decide to publish the app. I can publish up to 100 apps for that $99 and unlimited apps if I pay per app.

If I pay (which I did) I make an account at http://create.msdn.com and put in my bank account information  for when the checks come rolling in.

OK, the Windows Phone SDK is installed so I start looking around for best practices. A development environment is only as good as its community and I don't want to write a bunch of stuff myself if someone has already done the work for me.

Step 1 - Get the Essential Open Source Libraries

My app  has some requirements and some specific technical requirements. I pick these ones because I'm always irritated when apps don't do these things.

  • Must support Mango multi-tasking/quick-resuming
  • Must look nice and layout like a built-in app
  • Must notify (email?) me if a crash happens
  • Must work with light and dark theme
  • Must have a nice About Screen with release notes
  • Must have a nice website to promote that app

I started with these requirements and found these open source libraries and projects to support each requirement.These things are so important that the should have been included in the Phone SDK by default.

LittleWatson

You know when a Windows app crashes and a crash report is sent? That's done by a system called Dr. Watson. Andy Pennell made a small Error Reporting library for Windows Phone 7 called "Little Watson" that was then extended by Bjorn Kuiper and packaged into Bjorn's excellent Northern Light's WP7 Toolkit. His toolkit includes a bunch of little conveniences for serialization, logging and error handling.

It was extremely important to me as a first time app developer (and frankly, it's just important) to get notifications of crashes. I could setup a web service to catch them via HTTP but for the first version, I'll notify the user and email the call stack to me using Little Watson.

MetroGridHelper

Edit screen with transparant grid behind itI found out very quickly when doing resource on phone apps that coding is only maybe 30% of the work. The rest is design. Then layout, then more design. Even for a "trivial" app.

I'm not a designer, but I can follow the basic "Metro design guide for developers" and I see over and over that alignment is king. You know those apps where you look at them and know something's wrong? But you can't see what? Turns out it's usually font size, layout or alignment just poking at the back of your brain.

Jeff Wilcox create a useful debugging assistant that you can just drop into your application with NuGet that will make a set of red squares that are offset 12px from each other with in a page padding of 24px. As you start doing Windows Phone work you'll find that 12px is a magic number and everything looks "right" if it aligns on these boundaries.

I just need to

Install-Package MetroGridHelper

We'll also turn on the FrameRateCounter and only do these things if we are actively debugging.

// Show graphics profiling information while debugging.
if (System.Diagnostics.Debugger.IsAttached)
{
    // Display the current frame rate counters.
    Application.Current.Host.Settings.EnableFrameRateCounter = true;
 
    // Display the metro grid helper.
    MetroGridHelper.IsVisible = true;
...
}

This is so useful it should just be there by default. You'll hear me say that a lot.

SilverlightToolkit

The Silverlight Toolkit from Microsoft is up on CodePlex and also easily installed with NuGet.

Install-Package SilverlightToolkitWP

It include a pile of useful controls like DateTimePicker, LongListSelector, ProgressBar (the one I was interested in), Transitions (another that I wanted), and lots, lots more. These should be in the box. They are utterly essential.

TombstoneHelper

Tombstoning is what happens when you app gets navigated away from then navigated back to. It's how you make your app feel like it's been in the background the whole time the user was switching around, even though you were dead and then came back to life.

Install-Package WP7TombstoneHelper

There's a number of ways to save your apps state, but the I found the WP7 Tombstone Helper useful as it will automatically look at your controls and save their state away then put you right back when you're launched again. It isn't right for every scenario, but it was useful to me.

protected override void OnNavigatingFrom(System.Windows.Navigation.NavigatingCancelEventArgs e)
{
this.SaveState(e);
}

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
this.RestoreState();
}

YourLastAboutDialog

If you're not careful, your About dialog can get more complex than your application. I don't want that, but I do like me a tidy About Dialog. I found YLAD - Your Last About Dialog to be the best option for me. It's a single DLL that gives you a generic but highly configurable about dialog. How configurable you ask?

Look how nice that is!

My lovely about box made with YLADMy lovely history box made with YLADMy lovely credits box made with YLAD

It's entirely managed by a single data.xml file that's totally self explanatory. I especially appreciate apps with clear listings of what's changed between versions. Not enough apps do that, probably because it's hard. But no more! Use YLAD.

Windows Phone Power Tools

Often you'll want to pull files off your emulator or actual phone directly. Since my app is going to serialize settings, make photos, and the like, I'll want to access the file system directly. The Windows Phone Power Tools were essential for accessing my application's Isolated Storage files. It was useful to simulate upgrades from one version to another and to debug serialization bugs.

Windows Phone Power Tools

Another one to watch is IsoStoreSpy that lets you preview files in the app itself.

PNGOut and PNGGauntlet

You will find yourself making a LOT of PNGs when you are doing mobile development. You'll almost always want to compress them before you ship. I squish the PNGs on my blog and often get compression improvements of 30% or more. I squished all the PNGs in my app to make the resulting XAP deployment file smaller, and the PNGs smaller on the phone itself.

I highly recommend PNGGauntlet with PNGOut. No quality is lost as PNG is a lossless image format. It's also worth pointing out that I lived in Paint.NET while making this application. It's an all around great app and the best way to work with all these PNGs.

Portable Library Tools

If you're going to want to create and use some assemblies between projects, the Portable Class Library project template for Visual Studio can make it a lot easier to share code.

Screenshots.cs

It's pretty hard to take a screenshot on a Windows Phone. On an iPhone there is a special button combination, but nothing like that exists on a Windows Phone. However, application developers have to take screenshots and submit screenshots all day long. Enter "screenshots.cs" from the crazy-useful Jeff Wilcox.

install-package ScreenShots.cs

When it's running (you don't want leave it running, just have it going when you need screenshots) it will take a screenshot programmatically every 2 seconds. If you leave it running it'll fill up your phone.  ;)

NotifyPropertyWeaver

When making ViewModels for Windows Phone, you'll always end up taking a nice clean class with some properties and end up littering the properties with code like:

string givenNames;
public string GivenNames
{
get { return givenNames; }
set
{
if (value != givenNames)
{
givenNames = value;
OnPropertyChanged("GivenNames");
OnPropertyChanged("FullName");
}
}
}
And this stresses me out. I don't want to see those OnPropertyChanged and watch my simple class full up with notification boilerplate that I don't need to see. Fortunately Simon Cropp agrees with me and created NotifyPropertyWeaver to add this code post-compilation via IL Weaving without the need for attributes, base classes or even a class reference! It's in NuGet:
install-package notifyPropertyWeaver

Or, even easier, from the Visual Studio Gallery. NotifyPropertyWeaver adds this MSBuild task automatically in your csproj:

<UsingTask TaskName="NotifyPropertyWeaverMsBuildTask.WeavingTask"
AssemblyFile="$(SolutionDir)Tools\NotifyPropertyWeaverMsBuildTask.dll" />
<Target Name="AfterCompile">
<NotifyPropertyWeaverMsBuildTask.WeavingTask/>
</Target>

I realize this whole idea is scary, but I can tell you that I added it and didn't think about INotifyPropertyChanged once in the development of my application. You just add properties and he'll take care of the OnPropertyChanged stuff. If you don't believe him (I didn't) then just open your DLL in Reflector and see for yourself.

My ViewModel class is super basic and I only had to implement INotifyPropertyChanged and the weaver did everything else automatically. Very cool and saved me a bunch of hassle. The details are up on the Google Code site for NotifyPropertyWeaver. I found it a very elegant solution to a potentially messy problem.

Coding4Fun Windows Phone Toolkit

No, the Windows Phone 7 Toolkit isn't enough. Clint and the guys over at Coding4Fun have created a toolkit of their own that adds even more awesomeness (that should have been baked into the thing from the start). Things like Color Pickers, Color Sliders, lots of different buttons and more.

Coding4Fun Windows Phone Toolkit

Drink in the awesome over at http://coding4fun.codeplex.com.

Windows Phone 7 Emulator Skin Switcher

OK, this one isn't essential but it's totally cool eye candy. Why not change your phone skin with the Windows Phone 7 Emulator Skin Switcher? Live a little. The default one that comes with the emulator is a little meh.

When you run it, be SURE to scroll to the right as there are LOTS to choose from.

WP7 Emulator Skin Switcher

It's a nice touch.

Lost Phone Screen inside a Nokia Lumia

There's a great list of other tools, libraries and tips over at Bil Simser's The Big Dummies Guide for Windows Phone Developer Resources. Bil helped me over Skype when I had dumb questions. I'm glad he called his guide the "Big Dummie's Guide" and not the Hanselman Guide because that'd make it too obvious that I was clueless when I called. Thanks, Bil!

All right. I've got the tools and I've got my idea. Now what?

Write The Application

I know C# as I'm an ASP.NET Web programmer, but I'm not a XAML guy. The last thing I wrote in XAML was BabySmash and let's just say it wasn't rocket science. I started by dragging stuff around on the visual designer, pulling in buttons, text boxes and stuff but the XAML source started getting really messy with absolute pixel values and stuff I didn't like looking at. I stared at it for a while and just decided to write the XAML manually via trial and error, convinced that the the simpler the XAML was that more likely my app was laid out correctly. This turned out to be pretty true. I made a home page and an edit page.

Visual Studio and LostPhoneScreen

I got the two pages laid out and focused on making sure everything line up on the 12's (remember the MetroGridHelper I mentioned above) and tried to "intuit" when things looked wrong. I also referred to the "Metro design guide for developers" a lot.

Adding Polish

One thing I couldn't get my head around was that the transition between the main screen and the edit screen seemed jarring. It was like "poof." Then I realized there was no animation. Windows Phone apps usually use short but subtle animations to move between screens. Not just any old animations, but ones that involve direction to indicate moving forward or backward.

I remembered the Windows Phone 7 Toolkit above had transitions, so I applied them. The XAML is scary, but I only had to copy/paste. I made a NavigationIn and a NavigationOut for both pages so that they flip cleanly between each other.

Nice Windows Phone Flip Animation

I changed the PhoneApplicationFrame in App.xaml.cs to a TransitionFrame and the rest was magic. It just worked. Nice.

private void InitializePhoneApplication()
{
if (phoneApplicationInitialized)
return;

//RootFrame = new PhoneApplicationFrame();
RootFrame = new TransitionFrame();

RootFrame.Navigated += CompleteInitializePhoneApplication;

// Handle navigation failures
RootFrame.NavigationFailed += RootFrame_NavigationFailed;

// Ensure we don't initialize again
phoneApplicationInitialized = true;
}

Once this was done, if I needed to add other animations, it would be trivial. This small change made the app feel more polished.

Resources (Yes, more PNGs)

I needed buttons for the ApplicationBar at the bottom but I'm not a designer. I talked to Jin Yang (a designer) to do the main icon:

This sad, tiny phone is lost and on the back of a milk carton. Won't you help him find a home?

ASIDE: If you don't understand this icon, it's because it's apparently not universal. In the US when a child was missing in the 80's and 90's they would put their picture on the back of a milk carton. The idea was that you'd be eating your cereal in the morning and you'd notice the picture and it would seep into you brain so you'd be on the alert for that child during the day. Maybe a "missing" flyer with this phone would be more culturally non-specific.

But I didn't need a full-blown expert for the standard black and white icons at the bottom. The Windows Phone SDK comes with 32 basic icons for things like download, save, stop, play, etc. Even better though are the icons at Templarian. These are hundreds of yummy icons for Windows Phone (and other phones) that are released under the Creative Commons license. The designers name is Austin Andrews and he's super talented. I mean, even when he's just drafting ideas he's awesome. If you use his icons, thank him and tell people. If you are a designer, why not join up and improve the pack for the community?

UPDATE: The 130 icons from WindowsWiki.info are also amazing and high quality. Another great place for icon inspiration is The Noun Project.

My app was so simple that I ended up only using just four of the icons that came with the SDK, but I'm going to exploit the Templarian Windows Phone Icon pack whenever I can in the future.

Interesting Gotchas (actually Got-mes)

The first time I submitted the app it was rejected within two days. Turns out that when you popup a Popup - like for my Save Button - the hardware Back button must dismiss the popup. They are really serious about this model that you move forward and the hardware Back button always moves "back."

I ended up having to close my popup like this:

protected override void OnBackKeyPress(CancelEventArgs e)
{
if (theHelpPopup != null && theHelpPopup.IsOpen == true)
{
theHelpPopup.IsOpen = false;
e.Cancel = true;
}
}

As I continue to explore Windows Phone Development I'm sure I'll find better (read: less hacky) ways to manage things like this. Frankly, I was surprised that the Popup class didn't handle this for me!

Test with Light Theme

Another important thing is to test your app with a light theme. I initially had colors with hard-coded opacity like "CC00000000" for a transparent black. However, when your theme is white-based, rather than black, things start look like crap when you hard code colors. Instead they recommend that you use StaticResources with names that will automatically look correct, regardless of theme:

<Grid Height="448" Width="480" x:Name="LayoutRoot" 
Background="{StaticResource PhoneBackgroundBrush}"
Opacity="0.8">
...

Here I'm using PhoneBackgroundBrush, which means my help Popup looks nice twice!

Lost Phone Screen with Two Themes

However, notice that the black text at the top is hard to read? More on that later. A feature to help with that will be in the next version, which should be out later this week!

Submit the Application

You log into http://create.msdn.com and go through a detailed but largely straightforward wizard. There's a long checklist but the one I spent the most time going over was the Application Artwork for Windows Phone section. You need two different icons for the phone, three different icons for the Marketplace and a panorama in case you are a Featured App. Remember earlier when I said it was less code and more PNGs? This is where the time was taken up; just making sure all the PNGs were perfect from a large source PNG.

After you submit, you wait. I waited 3 days, was rejected, fixed the Back Button issue and Submitted Again.

windowsphoenstep2

Now I've found a few more bugs and will submit an update this week. The cycle will continue.

Attention to Detail

There's so many little things from misspellings to missed pixels that you need to be on the lookout for. For example, I misspelled "wallpaper" in a screenshot - seriously - because I was working late into the night. Sloppy. And now I'll have to wait almost a week to fix it due to the way the Marketplace works. As a web programmer this will take getting used to as I'm used to "hit refresh, it's fixed" when squashing bugs for my users

Triple check everything, test and test again. Every small mistake means 3 days lost waiting for the marketplace to update. And those days can mean days of unhappy users.

Make the "Marketing" Website

Time to make myself a nice simple static website to promote my application. I could hire someone or try to make something myself, but I really just have some basic requirements.

  • The site should include screenshots
  • The site should be mostly static html but feel slightly dynamic (javascript?)
  • The site should work on a mobile device (even iPhones!) using responsive design.
  • The site should link to the Windows Phone Marketplace

I didn't want to spend much time on this, but I also didn't want to do my app a disservice with a crappy site. There are lots of mobile templates out there, but a few stand out as they are Windows Phone 7 Specific.

One is Wp7JekyllTemplates, which works nice if you are hosting your code and site on GitHub. The other is Wp7AppSite by Nick Harewood. I noticed that Wp7AppSite used the Skeleton Boilerplate, which I am a fan of. I used it on http://speakinghacks.com.  It looks great on mobile so I was sold.

It was stupid-easy to setup. I just pointed my domain my my host, setup index.html as the default document, resized the screenshots, modified the HTML and uploaded. Took about 10 minutes.

Pricing

I made it $0.99. I didn't want to make it free because I didn't want to make it free. It costs less than the foam on your latte and it will get nice updates for free. I find it funny that folks will research 99 cent apps for an hour while sipping a $5 latte. ;)

I buy lots of $1 apps because THEY ARE $1 APPS.

Find a Bug

Earlier I mentioned that some wallpapers make it so the text is hard to read depending on the theme. Tim Heuer reported this so I added a feature to invert the text color, as seen in the screenshot below:

Inverted Text in Lost Phone Screen

Notice how the A at the bottom in the Application Bar inverts depending on the color of the text. I am very happy with how that turned out.

Submit the Update

I also removed the progress bar as it was getting in the way of the screenshot process and fixed a data persistence bug where your settings don't always get saved depending on how you exit the application. This is due to my confusion about how task switching vs. application existing works in Mango. That's fixed and will be out as as a free update soon as they certify it.

I'll submit the 1.0.2 update this week that will include the smarter text coloring as seen in the screenshot above. Barring rejection, the Marketplace should notice you'll get the updates!

You can get Lost Phone Screen on the Windows Phone Marketplace and you can offer feedback and feature request on UserVoice. If you buy it, please review it on the marketplace from the About Screen.

UPDATE: Reviews

Bad Reviews hurt, even for a silly little application like mine. I've already released the 1.0.2 update with bug fixes that address many major issues folks have had with the app. Here's what you should do to keep on top of feedback and reviews:

I'll update this post with more info as I learn more. I haven't got download stats yet and I've only just released my first update.

Conclusion

I was pleasantly surprised how easy it was to get into Windows Phone 7 programming. I was also thrilled with the amount of great open source libraries, creative commons art and other resources that are available for the beginner. The marketplace process and website are still a little confusing and rough, and I don't like waiting days to find out how my app is doing, but I guess that's life with a marketplace.

Big thanks to Jin Yang for the Icon and Bil Simser for Skyping with me.

I'll keep updating my little app and trying to think of ideas for my Next App.

Enjoy!

Related Links

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. I am a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by ORCS Web
Monday, January 30, 2012 11:08:26 AM UTC
Impressive! And something that counts on people behaving correctly... I like it.

"Your app is so amazing, it makes me want to buy a Windows Phone so I can lose it!" ROFL

So how many did you sell? Also, when is the iPhone version of the app coming out?
Monday, January 30, 2012 11:42:02 AM UTC
Thanks for the awesome walk thru Scott. Makes me wanna write my own app!
Now for a cool and simple concept.
Monday, January 30, 2012 12:16:07 PM UTC
hi, nice work
I managed to get a game running in around 2 ish hours at the last windows phone camp in london. (note i was porting the logic from a java game) I only had the emulator, and found I had to spend another hour or so just getting it to work on a phone when i finally got a windows phone to playwith....

https://plus.google.com/u/0/109637320113616997677/posts/Yf3yWMdSiPC

now im making it touch friendly, which means a bi of refactoring, all in my spare time, but i'm estimating another 8 - 16 hours in total before its ready for market.

I'm doing it all in XNA though.
Monday, January 30, 2012 1:14:09 PM UTC
Great Post, excellent explanation... it is making me want to start developing a winphone app right now. I have developed an iphone and an android app but seeing your post, personally I think developing a phone app would be far more easy in Visual Studio than in any other IDE (Eclipse or XCode).
Monday, January 30, 2012 1:37:18 PM UTC
Possible blog-post bugs?

I suppose "TombstoneHelper" should've been a heading, and the following "Install-Package SilverlightToolkitWP", should perhaps be something else?
Monday, January 30, 2012 1:48:20 PM UTC
Being able to invert the text color is a start, but to really be sure that the text will be visible on any wallpaper you should outline the text, like they do with subtitles. White text with a black outline or black text with a white outline.
Monday, January 30, 2012 2:13:33 PM UTC
Also, you may want to use the photo of a cute baby as wallpaper to increase the chance of getting your phone returned : "" Keeping a picture of a "cute" baby in your wallet is the best way to make sure it gets returned when you lose it "" http://www.telegraph.co.uk/culture/books/booknews/5835192/Ten-ways-to-change-your-life-in-59-seconds.html

Monday, January 30, 2012 2:52:25 PM UTC
Nice post Scott. It is a coincident that I wrote a similar post about my experience in building the first windows phone app at My experience in building first windows phone app. Your post is really in depth. Thanks for sharing the wonderful tools and links. They'll be useful for my next app.
Monday, January 30, 2012 3:04:29 PM UTC
Great app Scott. I hope you .99 app does a lot better than my Shut The Box game did . I finally gave up a made a free version even after it was showcased on Hot Apps. I also created a free online version at http://JELyonsProductions.com but have yet to see any real download numbers.

Good Luck.
Monday, January 30, 2012 3:24:44 PM UTC
For the screenshots, the new Mango tools actually has this feature built-in. Just click the ">>" button on the "fading menu" at the top-right of the emulator, and you'll get additional "stuff" including Accelerometer and location emulation along with the ability to take screenshots ;)
Monday, January 30, 2012 3:42:43 PM UTC
One doesn't have to pay the $99 until publishing the app, or until trying out the app on a real phone, whichever comes first.
Monday, January 30, 2012 3:50:55 PM UTC
hey Scott, just a point of correction, you got a
Install-Package SilverlightToolkitWP where the TombStone package should be... :)
Monday, January 30, 2012 4:43:23 PM UTC
Great work and a great walkthrough, Scott!

I would encourage you to make a trial version though. Windows Phone users frown at paid apps without trials in general. To make the trial valuable to you (in marketing terms) I'd make it fully functional but stamp your logo or something like "made with Lost Phone Screen"
Monday, January 30, 2012 6:08:34 PM UTC
"I was pleasantly surprised how easy it was to get into Windows Phone 7 programming."

Silverlight is great, isn't it?
Monday, January 30, 2012 6:12:39 PM UTC
Scott,
Great post on WP7 development. Thanks for sharing.

One error I noticed. In step 1 you say:
Install-Package SilverlightToolkitWP
for the install TombstoneHelper step. It's a minor thing and I'm sure 99% of folks following along would figure it out but I thought I'd mention.

I've been doing some Objective-C, Android, and WP7 development lately. Trying to be a polyglot and genuinely interested in learning and contrasting the frameworks myself. Tutorials like this help make the cliff face feel a little less steep, especially the recommendations on open source libraries and tools. Thanks!

-- Stu
Monday, January 30, 2012 6:49:42 PM UTC
The XAML is scary, but I only had to copy/paste


After spending so much time with ASP.NET MVC and Razor, plus languages like CoffeeScript and SAAS, would you agree that XAML is a terrible language by those standards?
Monday, January 30, 2012 8:48:51 PM UTC
Paul - Conceptually, I like it, but as a syntax, it's insane. I'd like to see a SASS for XAML. You know?

Alan - A trial for a $.99 app is silly. Sorry. It's a dollar.

Catalin - Great idea!

Abedelmouman - I didn't know that, thanks!!
Monday, January 30, 2012 9:07:41 PM UTC
Scott - I'm curious. Did you use Expression Blend at all? Not that it's absolutely necessary for a simple app.

But it really makes working on the UI infinitely easier than doing it all in Visual Studio.
Monday, January 30, 2012 10:16:26 PM UTC
1$ is not the problem, problem is that Marketplace isn't supported in many countries, so we can use only free apps. Which is sooooo annoying ;)
I have android market, apple appstore, paypal, amazon, everything, except Azure and WP. I know, it's lot of work, laws, banks, blah, blah, but just sayin!
Tuesday, January 31, 2012 12:49:14 AM UTC
The gap between free and $0.99 is larger than between $0.99 and $5...
Peter
Tuesday, January 31, 2012 1:03:38 AM UTC
Peter, true... I learned all about the power of free from reading Dan Ariely's book, Predictably Irrational.

However, it's also true that you can make infinitely more money selling something for $1 than you can giving it away free.
Tuesday, January 31, 2012 1:46:31 AM UTC
Awesome blog entry Scott. What's owning me right now is the capabilities declaration in the WMAppManifest.xml, specifically with the ad control. Would love to see someone as good as you explain how to work through it. I know there is a tool to figure out the capabilities but for me it doesnt seem to jive well with the needed capabilities of the ad control.
Tuesday, January 31, 2012 2:45:10 AM UTC
Ok, 6 hours for the phone app, but how long did it take to do the blog post?
MC
Tuesday, January 31, 2012 5:33:29 AM UTC
MC - this post took about 3 hours ;)
Scott Hanselman
Tuesday, January 31, 2012 8:20:12 AM UTC
Change your TransitionFrame code to:

RootFrame = new TransitionFrame { Background = new SolidColorBrush(Colors.Transparent) };

Without the change TransitionFrame is stealing your fillrate: http://blog.mrlacey.co.uk/2011/10/how-to-stop-toolkit-transitions.html
Tuesday, January 31, 2012 9:08:56 AM UTC
Hi Scott,

Very nice article, one other app in wp world I do use is wpdashboard. It helps you keep track of your wp7 apps (comments, reviews and downloads)

http://www.wpdashboard.net/

Very useful
James Wright
Tuesday, January 31, 2012 12:04:00 PM UTC

Nice app like the iFoundit app in the Apple App Store. Please blog on how to convert to Android and iOS
Tuesday, January 31, 2012 3:48:11 PM UTC
Nice post! But unfortunately I would miss reading your blog so I'm going to deprive you of my money :)
Tuesday, January 31, 2012 6:33:46 PM UTC
I would be interested in hearing about what kind of statistics Microsoft gives you about your app sales. As an Android developer, I've been disappointed with how little Google tells me.
Tuesday, January 31, 2012 7:08:11 PM UTC
Sure, I'll blog about it as I get more info.
Tuesday, January 31, 2012 7:54:45 PM UTC
...but Scott, if you 'make a million bucks' and are 'GONE!', then what happens if you lose your phone?

Thanks for the article & great screenshots!
Wednesday, February 01, 2012 7:18:27 AM UTC
Kudos for creating a mobile-friendly marketing site for your app - too many mobile apps have sites that are practically unusable from any mobile device.
Wednesday, February 01, 2012 7:48:01 AM UTC
RE trial. It might be silly for 99 cents app but people just don't look at the paid apps without trial. You'll obviously get some sales from people who know you, but random people will just skip it. The truth is that people download free apps 10+ times more than even trials, and buy paid apps with trials 70% more than w/o trials (according to MS).
Thursday, February 02, 2012 9:38:39 AM UTC
It turned out to be S$1.59 in Singapore currency! Now i have to spend an extra hour researching whether to buy it or not.

:-)
Aaron
Thursday, February 02, 2012 9:50:22 AM UTC
Noticed the newly-saved wallpaper included the rolling progression dots at the top of the screen.
Aaron
Thursday, February 02, 2012 7:56:20 PM UTC
Hey scott maybe you can do a port for kindle
http://scottcate.com/blog/help-return-your-lost-kindle/
Saturday, February 04, 2012 6:42:28 PM UTC
I can publish up to 100 apps for that $99 and unlimited apps if I pay per app.


That isn't exactly right. According to the App Hub membership site you may publish 100 free apps for your $99 membership. Additional free apps are $19.99 USD per submission. However, you may publish unlimited paid apps. Since you're charging 99 cents for your app, that won't count against your 100 free apps.
Saturday, February 04, 2012 7:20:41 PM UTC
Really inspiring post. Because of it the world now has two new open source projects. After going through your post I checked out the Wp7AppSite and Wp7JekyllTemplates and really liked them both. And then ended up writing the following two projects:

Graze

and

GrazeWP7

The GrazeWP7 is exactly for the same purpose as the Wp7AppSite and Wp7JekyllTemplates: For greating the marketing web site for your app rapidly. But this time using the Razor and Twitter Bootstrap.
Monday, February 06, 2012 8:47:40 PM UTC
When will App Hub available for developers in Thailand?
I would love to build something :(
Non
Tuesday, February 07, 2012 6:22:05 PM UTC
Great article. I've been developing apps for WP7 for over a year now and still learned or was reminded of some very useful practices and tools.
Wednesday, February 08, 2012 9:52:16 PM UTC
Scott,

This is one of the best posts about WP7 app development I've ever read. I've been wrestling with an app for the last few months and this post alone has inspired me to pick it up again and finish it.

Thank you.
Friday, February 10, 2012 2:47:42 PM UTC
Hello Scott

I was trying to use YLAD with MVVM, and it would just not navigate. What do you think I would be doing wrong ?

Messenger.Default.Send<Uri>(new Uri("/YourLastAboutDialog;component/AboutPage.xaml", UriKind.Relative),"PageNavRequest");

Doesn't this look right ?
Saturday, February 11, 2012 7:57:50 PM UTC
Hey Scott,

just trying some things myself, looked up the YLAD and see what came up as well :)

http://nuget.org/packages/PhoneAppScaffolder/1.0.2

Could better have called it ScottHanselman's-blogpost-about-Windows-Phone-Apps-Scaffolder.
Tuesday, February 14, 2012 2:30:15 PM UTC
@Rob Fox - I put that all together after reading this post from Scott. I have not made a big deal out of it because I only made it for myself. The readme does credit Scott for pulling all the info together in one place (even if I did make a typo in v 1.0 and mis-spell his name. Sorry Scott!)

If anyone has any idea how to add the required lines to pre-existing code files in C# I'd love to know. That way, I can do a lot the wiring up automagically rather than relying on the dev reading the readme file.
Tuesday, February 14, 2012 10:15:53 PM UTC
Thanks, Scott.
Your post really helped while I was finishing up my first WP7 app - Photo Challenge.
Tuesday, February 21, 2012 6:35:00 AM UTC
Hi

Great article (as always).

You could show more code (or probably post whole code under some license), which your articles do most of the times.

Regards
Vivek Ragunathan
Tuesday, May 22, 2012 8:11:23 PM UTC
Dude, I just started working on my first hello world app for windows phone. Guess what versions of windows phone I can choose for my project. Yes, that's right 7.0 and 7.1. I'm guessing 7.1 is 7.5's stunt double or something.

What I'm getting at: please find the gremlin that got in the management position over there at MS and beat the crap out of him with the semver specs until he admits calling a product by 3-5 effin' version names has got to stop.
Monday, May 28, 2012 6:58:00 PM UTC
Great post! How did you make your animated gif?
Sunday, November 11, 2012 8:55:17 PM UTC
Hi Scott!

I'm running the web page MarketDiagnosis.net.

This allows developpers to follow their app rankings in different countries, and also to compare their apps with competitors (which I think is quite usefull)...

Maybe you would like to include it in your article (would be great!).
Comments are closed.

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.