Archive for October 2010

31

October 2010

Windows Phone 7 (WP7) - Less Stop and Stare, More Glance and Go?

I was recently discussing Windows Phone 7 with fellow coder Mike Wilson of Evolved Software Studios. During the discussion, Mike said:

I'm not totally convinced by WM7 although it is original and has some unique features. What gets me is the general design and UI of the whole new 'Windows Live' theme. It wastes space unnecessarily and makes performing straightforward tasks just that little bit harder than it really needs to be.

I won't argue that WP7 has room for improvement (and some catching up to do), however I don't really agree with the last part of Mike's sentence, "makes performing straightforward tasks just that little bit harder than it really needs to be". I've been using WP7 for a little over a week and there are lots of little things that make life easier. I thought it was worth sharing some of these here for others that haven't been able to play with a real device at length.

This isn't intended to be an iPhone vs Windows Phone 7 post. Nor is it intended to give an unbiased comparison of the two. It will focus solely on some of the nice features that Windows Phone 7 has to save you time.

Calendar Appointments on the Lock Screen and Home Screen

This a killer feature for me. My upcoming appointments are shown on both the lock screen and on the calendar tile on the home screen. If you think about how many times you see these screens in a day compared to how many times you open your calendar app, I'm sure you can appreciate the usefulness. I really wish my iPad did this, but with Apple's app-centric approach, I'm not sure we'll ever see this sort of functionality.

Use the Camera without Unlocking the Phone

In Windows Phone 7, there's an option that allows you to long-press the camera button to launch the camera app, even when the phone is locked. This makes it much easier to pull out your phone and snap a picture without having to enter your pin and find and launch the camera app.

Voice Commands without Unlocking the Phone

Another time-saver is being able to hold the Windows key and instruct the phone to call people without unlocking the device. Again, this is optional, since it allows calling without entering your PIN.

Pin Contacts to the Home Screen

Another huge time-saver. If you're like me, 90% of your calls and texts are to the same person. Windows Phone 7 allows you to pin a contact to the home screen. With a single tap on their tile you land at a screen with options to call, text and email this contact. It even includes the ability to write on their Facebook wall or see their latest Facebook status (Facebook is very well integrated, should you choose to enable it).

Email Count on the Lock Screen

This is something very minor, but for some reason it's missing from iOS. In addition to showing missed calls and text notifications on the lock screen, Windows Phone 7 also shows a count of emails. I find this pretty useful because I'm not always near my iPad so when I do pick it up, I have to unlock it to see if I have any new email.

Hardware Search Button

I didn't think this would be all that useful but it's actually turned out to be a nice addition. By having a dedicated search button, you don't have to navigate around an app to get to the search box. When you're not in an app, it launches Bing - not my preferred search engine, but the app works very well on the phone.

Conclusion

While there is certainly room for improvement in Windows Phone 7, I have to argue that on the whole it makes a lot of tasks a lot easier than other smartphones. I think the next 6-12 months are going to be very interesting. How Microsoft responds to initial user feedback will play a huge part in the success of the platform. It will also be interesting to see how the competition responds to Microsoft finally launching a serious consumer smartphone. With three huge players in the smartphone market I can't wait to see what each comes up with to try and get ahead of the competition!

23

October 2010

Amazon AWS adds Free Usage Tier

Carrying on from the cloud comparison posts, I thought it worth mentioning that Amazon has recently announced a free usage tier for their web services:

To help new AWS customers get started in the cloud, AWS is introducing a new free usage tier. Beginning November 1, new AWS customers will be able to run a free Amazon EC2 Micro Instance for a year, while also leveraging 5 GB of Amazon S3 storage, and free tiers of Amazon Elastic Block Store, Amazon Elastic Load Balancer, and AWS data transfer. In addition, customers can benefit from the existing free tiers for Amazon SimpleDB, Amazon Simple Queue Service, and Amazon Simple Notifications Service. To learn more about the new AWS free usage tier, visit aws.amazon.com/free.

Unfortunately the Micro instance is linux-only (presumably for licensing reasons), but it's still a good deal, and there's other stuff included.

I should also point out that some of the free stuff only applies to new customers.

16

October 2010

Windows Phone 7 Marketplace - Managed and Indie Game Tiering

A few months ago, I posted about (and updated) the news of the Windows Phone 7 Marketplace separating "managed portfolio" games (eg. those that have relationships with Microsoft - generally the bigger games developers) and "indie games" (created by you and I). I was concerned that the lack of XBLIG sales would continue in the WP7 world. Now that the Windows Phone 7 Marketplace is live in the Zune 4.7 software, I thought I'd post an update on how things turned out.

When first entering the apps section of the marketplace, the intro screen is comprised of four sections. The top one (largest) looks like a list of Microsoft-chosen list of apps, similar to Apple's featured/staff picks section. Just undernearth, slightly smaller, is a "We recommend" section. It's not entirely clear what the difference is here - it's possible that this is just one list, and the top four simply get bigger icons. It's not clear whether either of these may ever contain indie games, though I'll try to get clarification. The remaining two sections are top selling lists, which do include indie games, one of which can be seen in the screenshot below.

The Windows Phone 7 Marketplace apps langing screen

The landing screen is not restricted to games, so for the games section, you'd click the "games" option on the left side of the screen. This brings you to the games section, which can be filtered to All, Paid, Free, Xbox LIVE. Notice that the default section is Xbox LIVE. This section is restricted to managed portfolio games, which all have full access to the LIVE APIs. You can easily identify these games by the "XBOX LIVE" banner at the top of the icons.

The Xbox LIVE section of the Windows Phone 7 Games Marketplace

Clicking the "all" option, will give you a full list of all Windows Phone 7 games. There are subgenres in the bottom left, but this list contains both managed portfolio games, and indie games. Hurrah! No navigating to the indie bin!

The Xbox LIVE section of the Windows Phone 7 Games Marketplace

Clicking the "paid" option, takes you to a section that is exactly the same as the "all" option, but shows only games that cost. Again, indie games sit side-by-side with managed portfolio games here.

The paid section of the Windows Phone 7 Games Marketplace

Clicking the "free" option, as expected, takes you to the same again, but shows only games that a free to download. Again, indie games sit side-by-side with managed portfolio games here.

The paid section of the Windows Phone 7 Games Marketplace

Conclusion

In summary, I think this is an excellent structure. Defaulting to the Xbox LIVE games is a great choice for consumers, and outside of this section, it looks like indie games are treated equally. This eliminates all concerns I had, and I can't wait to finish Badger Quest and get it up there!

02

October 2010

Google App Engine (GAE) vs Amazon Elastic Computing (EC2) vs Microsoft Azure

Almost a year ago, I compared Google App Engine and Microsoft Windows Azure, trying to decide which platform I should write and host my blog (and some other small projects) on. The comparison was about more than hosting - the languages and frameworks used would be influenced by the platform I was hosting on. There were also APIs available only to one platform, or easier to use on one platform compared to the other (such as the App Engine authentication).

Due to the huge differences, I did a little homework on each platform, and ultimately, it came down to price. The difference in pricing between Google App Engine and Windows Azure was so enormous, that there wasn't really a decision to make. App Engine hosts this blog for free. Windows Azure would've cost around $100/month minimum.

One Year On

Fast forward a year and things have changed a little. App Engine has become more mature, Amazon has introduced Micro instances, and Microsoft has done, well, not a lot. There's been seemingly zero change in the pricing for Windows Azure, meaning there's still a significant minimum cost in using it.

Maybe Windows Azure is aimed at The Big Boys?

I can only assume Microsoft don't care so much about small developers and are aiming Windows Azure at bigger businesses that already have significant applications. Of course, this is their decision. However, I think they are overlooking something significant. All successful websites/applications start small. At the time of launch, it's very difficult to tell whether a website/application will do well. Who wants to fork out for expensive hosting for something that might not take off?

If the price is too high, people will pass on Windows Azure for small start-up websites/applications. They'll look at cheaper alternatives, such as Google App Engine or Amazon EC2. If they explode overnight, they have two options; 1) Stick with App Engine/Amazon EC2; 2) Convert everything to Windows Azure. One of them is zero work, and one of them is significant work. What do you think most business will choose?

Google App Engine Lock-in

Despite currently hosting my log on App Engine, I do agree with the lock-in argument. With Google App Engine, you're very closely tied to Google's way of doing things, and Google's APIs. Although there are initiatives out there trying to make it possible to run App Engine apps on non-Google hardware, they're generally incomplete, lagging behind, and it's unlikely they will ever match the performance and scalability of hosting with Google.

Put bluntly, if you want to move away from App Engine, there will certainly be a lot of pain and re-writing code.

Update: In the comments, Tobias points out that TyphoonAE is pretty much a complete implementation of the API, making this much easier. I'm not sure how the performance or scalability stacks up to App Engine, but you can certainly get the code up and running elsewhere (even EC2!) relatively easily.

Enter, Amazon EC2

Amazon EC2 wasn't mentioned much in my original comparison because it was similarly priced to Windows Azure, but you also have to manage your own servers. It also requires much more work to make your application scale. Things have changed a little at Amazon EC2 over the last year.

Recently, Amazon introduced Micro Instances. These are low power instances and have only 600MB RAM, but they come in at around 3 cents per hour! If you're prepared to pay a little up-front (Reserved Instances), then the price is just 1 cent per hour! Before you run and sign up, be aware that with Micro instances, there is no instance storage - your volumes must all be EBS volumes. This doesn't really change much, but you will incur a charge for all disk access (IOPS), but this should still work out pretty cheap.

In addition, Amazon now has an Autoscaling service, which allows you to automatically start up new instances (or shut them down) based on load. This service is free if you opt for CloudWatch (a resource monitoring service, which costs 1.5 cents per instance per hour).

Going hand in hand with Autoscaling, there is Elastic Load Balancing, which allows an IP address to balance load across multiple instances. This costs 2.5 cents per hour, and 0.8 cents per GB of data handled by the load balancer.

These scaling options aren't cheap (they're not expensive either), but they are options that require little work. You can start off with a Micro instance and scale up fairly easily if things explode overnight. The only real thing you need to handle is scaling your writable data. You can't just run SQL on each instance, because the data would not be replicated. You also have a serious single point of failure running just one instance.

Google App Engine vs Amazon EC2

So, with Windows Azure's cost (and lack of an equivalent to Amazon's Micro Instances), it looks like it's between Google App Engine and Amazon EC2. It's time to make a list of pros and cons for each! This list is based on my opinions, and my requirements, so it might not match your own (eg. you might love Python!).

Amazon EC2 Pros and Cons

  • Pros
    • No lock-in. Relatively easy to move code to another box.
    • Code in C#, .NET, ASP.NET MVC / Visual Studio
    • SQL Server (Express/Compact)
    • Amazon staff very active in the community
  • Cons
    • No free quota - minimum cost per month, even if 0 visitors
    • Scaling harder (if required) - need to handle data spread across n instances
    • Single point of failure with single Micro instance

Google App Engine Pros and Cons

  • Pros
    • Generous free quota
    • Billed for actual CPU usage, not "live" hours
    • Scaling is (relatively) easy
    • "Free" built-in Google authentication
  • Cons
    • (Pretty much) locked in to Google App Engine See comments below
    • No support for C#/.NET
    • Non-relational datastore - more restrictive on how data can be accessed
    • (Relatively) high rate of datastore errors, need to code to handle them
    • Blog is already hosted here - don't need to do any work ;)
    • No local storage, so unable to use libraries that rely on writing to disk

Both platforms have a lot going for them. It's a tough decision, but it doesn't need to be. If Google added support for C#/ASP.NET MVC (unlikely, but technically possible), then there would be no contest for me. Alas, it really comes down to whether to pay the extra cash for EC2, in return for being able to use Visual Studio, C# and ASP.NET MVC!

It's a really tough call, so I'm going to have to think a little more about it, and maybe do a little more research!