Nokia Lumia 920 Review

The Lumia 920 (taken with a competing smartphone)

It’s a fantastic phone. Yes it’s porker at 180 grams, but if you can get over that single downside, everything else is frankly wonderful.

For users coming from Windows Phone 7, the 920 is a huge step-up. The screen is finally on par (and often surpasses) other high-end smartphones; performance is wonderful, with the lack of app load and switch lag making multitasking brilliant; and the new start screen gives you the control you’ve always wanted.

If you’ve never used a Windows Phone, the 920 (and others in its class) might just make you want to.

Hardware

The Lumia 920 brings the familiar polycarbonate body shell from earlier Lumias. Mine is black, but I’d prefer one of the other colour options: cyan, grey, red, white or yellow. The rounded edges feel nice in the hand, and the buttons have been spaced out a little, which makes it easier to differentiate between the volume and lock buttons.

The screen, at 1280×768 rocks a 332 ppi pixel density. For humans, this just means that you’ll fail hard when playing “find the pixel”, just like on the iPhone 4. Brightness and contrast are great, and I haven’t noticed any colour casts or issues.

Another Microsoft device shot with a 920

The camera. Ooohh the camera. Where do I start? Basically this: we took some shots in a dingy Redmond hotel room, and couldn’t stop saying “what the fuck?” when viewing the results. The last time I was this stunned by a camera was when I first used the Canon 5DII. Now there’s no way that the Lumia 920 would match the 5D2’s output, but it’s a hell of a lot better than any other phone camera I’ve used.

Battery seems pretty sweet, and if that’s the one reason the device is so heavy, I can forgive it. Bashing around at Microsoft’s BUILD conference, with flakey WiFi, spending all day tweeting up a storm, and the battery still has 30% charge at 7pm. Not bad at all.

WiFi, Bluetooth, 3G, NFC, and other stuff work fine.

Software

Windows Phone 8 is a player. Finally. Phone 7 was a cool operating system with a stunning new visual design. It worked fine as a phone, but it sucked in a few essential ways that I won’t bother going into.

With 8, performance is bonkers. Running “big Windows” (aka the NT core) means that apps can be massively pre-optimized by the operating system so they load and run super quick. And yes, that means existing Windows Phone 7 apps. Putting 7 apps on an 8 phone is like having brand new apps.

Add to that multiple CPU cores and some serious optimizations around the input and UI thread performance, and you get incredibly slick software. It’s buttery smooth everywhere.

The new start screen is really, really cool. It’s like Android’s customizable launcher without the shitty mess. Pin people, apps, widgets and icons in 3 different sizes, and lay them out in a cool masonry arrangement. For me this was explained best when Steve Ballmer, Joe Belfiore and Jessica Alba held up their phones at the launch event. Three phones, all running the same software, but they looked totally different because of the way each user customized them. None of those users had to root their phones or install custom “launchers”.

Built in apps are fast and work great. Linked inboxes in mail, multiple calendars, the same great people hub, and some nifty new stuff including “Rooms” and “Kids corner”.

Xbox Music with streaming and downloads makes the music hub great, and this is now available to New Zealanders without having to work through a USA Live ID. Like other apps, Xbox music can set your wallpaper using album art, which makes the phone really come to life, even when locked. I’m looking forward to local apps leveraging this wallpaper option, after seeing how the CNN app updates the wallpaper with news photography every 30 minutes.

Another new addition is a real timesaver: not only does the keyboard auto-correct as you type, it also pre-suggests words. If you’re typing a sentence and hit the spacebar, you will get suggestions for the next word without even typing a letter. This is uncannily good: I found it suggested the correct word a good 30% of the time, increasing to 80% after I’d typed a letter or two.

Sure we could have an argument about “Apps”, because Windows Phone doesn’t have Instagram or Letterpress, but my bet is these will come. For one: porting is massively easier in WP8 (I can say this because I have first-hand knowledge of porting c++ iOS games to WP8); and hopefully with 8 we’ll see some decent market share. Hopefully.

So there you go. A biased, enthusiastic review. Feel free to fire any questions in the comments because I’m sure I haven’t covered everything.

Buying

Unfortunately if you’re not one of the lucky few to pick up a 920 at the BUILD conference, there’s currently nowhere you can buy one. There’s no word on carriers for New Zealand at this stage, but given the support of previous Nokia phones, and Microsoft’s planned marketing spend, I’d be confident they’ll show up on all carriers in short order.

Review: Forza Motorsport 4

Gaming nerds are divided into two camps: console gamers and PC gamers. I’m a PC gamer. You can keep your crap textures, arcadey first person shooters, and giant menus off my dual monitors, and I won’t pwn you with my mouse and keyboard. But strangely, there’s one genre that keeps pulling me back to the couch: racing games. I even tried once to download and play Need For Speed on my PC, but something was just not right.

When I heard Forza was coming back for another round, I jumped on the twitters, and the PR company very kindly responded. I’m so glad they did. I was expecting subtle revisions to the game, but Forza 4 is a revelation.

It’s the best car racing game you’ll find on any platform.

Dropping into the introduction race, the whole game just felt more visceral from the start. I couldn’t pick out any one thing that nailed it, but everything from the subtle head bobbing inside the car to the twitchy new physics and incredible audio just drew me into the game instantly. I’ll try to break it all down logically.

The Gameplay

The Forza you remember is all here. World Tour, multiplayer (now with public, custom lobbies), free and purchased cars, upgrades, car categories, everything. The in-game experience is also similar with the suggested driving lines and other optional assists (each one counting against your points potential). But all the new additions make so much sense.

Rivals mode lets you challenge friends and anons on a track and mode (hot lap, drift, etc.) with the same car, racing against a ghost. Each time you beat the rival you can race again against someone a little faster. You move up the ladder and earn credits as you beat rivals. It’s a fun and interesting new way to earn cash for cars and upgrades. There’s something special about racing against real people instead of computer opponents.

In-game has been tweaked too. The most notable addition is a subtle rating system for cornering, passing, drafting and drifting. After each corner, for example, you’ll see four little boxes in your peripheral vision, rating how well you handled the corner. It turns every track into a series of minigames, and you find yourself paying much more attention to using the right lines and all of the track through the corners. Same goes for clean passing: bumping your opponent on the way through is a sure way to get a 1-star rating for that passing manoeuvre.

The Cars

They’re all there, and they are all there. From the Kia Cee’d to the Bugatti Veyron, by way of muscle cars and Japanese drifters; if you can’t find a car you like, then you don’t like cars. There’s even a selection of V8 Supercars so accurately modelled that I’m positive Avesco are getting a cheque for every copy of Forza sold. Unfortunately there’s no Bathurst track to take them around, but then again how often do you get to blast around the Nurburgring in Craig Lownde’s Holden?

Every car has an active dashboard, making the in-car view my new preference (I’m usually a bonnet-cam kinda guy).  I haven’t had an opportunity to try out the Kinect head tracking, but I’m told it works well.

For someone like me who has outgrown the desire to lie under his car every weekend, Forza’s upgrade system is my happy place. I’ve upgraded my ’89 MR2 to A-class and happily race it against Porches and Audis. It’s lowered, got a giant intercooler and a rorty exhaust system. I love it.

The Tracks

Again, all your favourite Forza tracks are in 4, with a few new ones to boot. Perhaps the most notable is the addition of the Top Gear test track. Yes, you can drive the Kia Cee’d to see what time you can run as the Star in a Reasonably Priced Car. Having Jeremy Clarkson narrate the intro and car descriptions adds to the Top Gear flavour. Check out his overview of the Halo Warthog:

The tracks have had a makeover, and seem just that little bit more real. Maple Valley has more stuff over the fence, and the Nuburgring has more paint on the track. There’s no weather effects, but the low cloud at Nurburgring has an entirely different feel to the blue skies over the Amalfi Coast.

The Physics

I don’t know if it’s just me, but I certainly don’t remember being able to unsettle a front wheel drive in any other sim the way that I can in Forza 4. If you’re a driving fanatic, you’ll know you can spin a front wheel drive by lifting off aggressively in a corner. The front wheels bite, the rear lifts, and you’re going backwards before you know it. Forza does this, and I think it’s incredible.

But! If you’re not into the simulator physics, turn it all off and you’ve got a friendly arcade racer.

The End

If you like driving games, just buy it. Heck, buy an XBox too if you don’t have one.
As usual, fire away with questions in the comments if there’s any particular aspect of the game I missed, or questions you want answered.

Samsung Omnia W in New Zealand

When I asked Vodafone NZ for an official statement on the availability of Windows Phone 7.5 devices in New Zealand, their response was “We’ll let you know when we are ready to announce anything.”

Imagine my surprise then, when I saw this story from the Waikato Times on Twitter.
[box]A Vodafone spokesman said that the telco hoped to have the Samsung Omnia W, which has a 1.4Ghz processor at its heart, on its shelves by late November.

The phone includes a front facing camera which will enable users to Skype once Microsoft releases a Skype application for the phone.[/box]
Top stuff. I can’t wait to see these and more devices running Windows Phone 7.5. Bring on the Nokias!

Windows 8

Windows 8 Start Screen

You can have your cake, and eat it too, but only after it is fully baked. This is my one-sentence summary of the first day keynote sessions from Microsoft’s Build conference.

Build replaces the long-running Professional Developer Conference (PDC), with the most visible change being a ton of Metro-style branding: bold colours, strong typography, attention to detail. Elements which, if I’m completely honest, Windows developers have not been well known for. You’ll recognise the Metro design style if you’ve seen a rare Windows Phone 7 device in the wild.

Despite some poor sales numbers, the look and feel of Windows Phone 7 has been widely praised. Microsoft have taken this onboard, and applied the Metro look and feel to Windows 8 – bringing about the biggest change to the world’s most popular desktop operating system since Windows 95 shook up the Windows 3 design. The new face of Windows 8 is a touch-centric home screen populated with “tiles” instead of icons. Each tile is active and full of information. It feels clean and sparse, while at the same time being informative and information-rich. I’m not the only one (http://daringfireball.net/2011/09/metro) that likes this new interface and sees it as a geniune challenge to Apple on a tablet.

Windows 8 Start ScreenIf this gorgeous new start screen is your cake, what happens when you eat it? Hit the “Desktop” tile, and you get more cake: the familiar Windows desktop. A few elements have been refreshed, but otherwise it appears identical to Windows 7. The main difference is that hitting the Start button takes you back to the new start screen, rather than popping a menu.

From what I have seen, most (if not all) applications that run on Windows 7 will run perfectly fine on Windows 8 in this “desktop” mode. Of course these “legacy” applications are not designed to be operated by touch, so there is some genuine awkwardness when switching from the Metro aplications and layout to (for example) Skype or Outlook in desktop mode. However, the truth is that Windows 8 can present both a fantastic finger-centric tablet mode and a mouse/keyboard centric desktop mode in the same package. And both work extremely well. Certainly well enough that we can cope with using standard Windows applications until they are ported and redesigned for the new Metro look.

Hardware

I sit here typing this on a Samsung Series 7 Slate device. One of around 5,000 devices handed out to all attendess of Build. The device comes pre-loaded with a “Developer Preview” verison of Windows 8. Speakers have been at pains to point out – frequently and forcefully – that this developer preview is not ready for prime-time. It’s not even complete enough to earn the Beta label. When will it be ready? Steven Sinofsky (President of Microsoft’s Windows division), earned one of the loudest rounds of applause for his statement that the release date will be driven by quality, not deadline.

The device is certainly up to snuff for developers, sporting a quad-core Intel processor, plenty of RAM, and a solid state drive. Size and weight wise, it’s certainly no iPad, but the story is that we’ll see more iPad-like form-factors when Windows 8 is running on low power ARM chips, as opposed to the hot and heavy Intel i5. Having said that, I’m getting a good 4-5 hours of battery from this device, which is acceptable.

The Windows 8 build on this device works. Barely. It’s rough around the edges and not something I’d give my Mother, but it’s good enough for me to use on a day-to-day basis. The best thing is that the Developer Preview build comes with Visual Studio, meaning we can develop applications for Windows 8 right on the device. Think about that for a moment: a full-featured, modern tablet device that is powerful enough to run Visual Studio 2011, Microsoft Office, and probably anything else you can throw at it.

Developers Developers Developers

From a developer (and user) perspective, I came to Build expecting to be disappointed in at least some way. There were rumours of the demise of development languages, or of developers being forced to adopt HTML and Javascript as a platform for Windows applications. There was the concern that the design of Windows simply wouldn’t work on a tablet.

I’m still trying to process what we were told instead: develop in whatever language you are comfortable with. We can use the traditional C++, c# or Visual Basic languages, and now HTML/Javascript. The new Windows Runtime (aka WinRT) replaces Win32, and is designed to expose its features in a language agnostic way. This means as features and functions are added to WinRT, they will be available to developers regardless of which language they are developing in. Microsoft are staying true to their developer-first ethos: all supported languages are first-class citizens in WinRT land.

But developers don’t get away scott free: similar to Windows Phone (and Apple’s iPhone and iPad), Microsoft is requiring a more thorough attention to detail from developers. Developers get design templates that help them develop good-looking apps from the outset, and all new Metro-style apps will be vetted by Microsoft for bugs and security compliance before being allowed into the Windows Store.

The development tools have been updated with the new release of Visual Studio 2011. Most changes are incremental, but the package gets major updates to web development and 3D game features. In both cases developers get incredibly deep debugging features. Effectively we can look at the outcome of our development work, then easily drill back through the running software to see the code that created the element we are viewing – whether that be a pixel on a 3D game screen or an element on a web page. Not an entirely new feature, but the way it has been implemented makes our bug-finding easier than ever before.

Let them eat cake!

So overall, this is a solid, impressive release from Microsoft. Let’s see a Metro-fied desktop and some polish before we reach a definitive conclusion, but for now I come away hugely impressed.

Yes, the Windows 8 cake is certainly not yet baked, but the recipe looks delicious, and the cooking smell coming out of the giant Redmond oven is intoxicating.

Using TeamCity and PowerShell to Deploy Automated Builds to Windows Azure

We’re building an ASP.NET MVC3 website that runs in Windows Azure, using the fabulous TeamCity as our build server. So far we have been just building and running the site locally on the build server, but we wanted to extend our build process into the cloud. Here’s what we wanted:

  • Build server runs a build and executes all tests
  • Deploy locally to the build server for our own smoke testing
  • Create Azure packages
  • Deploy to an existing Azure staging environment (retaining the same staging URL so our clients can access it)
  • If staging is all good, we can manually do a VIP-swap to move staging into production.

We found some pretty useful posts, including this one, which got us most of the way along the road. However, even that post seems overly convoluted. There’s no need to execute a cspack command line, for example. Perhaps it’s geared to older versions of the Azure tools? For the record, we’re using MVC3 and Azure tools 1.4, and we have a very basic solution with a single web role, a test project, and an Azure project.

So, assuming you already have a TeamCity build configuration that builds your web project without problems, here’s what you need to do to get your Azure packages built and deployed.

TeamCity Build Step to Create Azure Packages

This one was a lot easier than many blog posts made out. We didn’t need to call cspack via command line. Simply create an MSBuild step, point it at your Azure package (the actual ccproj file), and set the target to be CorePublish. That’s it. Once that step runs, you should see your cspkg file in the output location on your build server.

If you’re struggling with this step, make sure you have the Azure tools installed on your build server, and you might also need to copy across all the MSBuild include files from a PC with Visual Studio on it (from C:\Program Files (x86)\MSBuild\Microsoft\). Worst case you can install Visual Studio on your build server.

Open the little image at right to see an example of how this build step should look.

Create (or copy) a Powershell Script to Deploy to Azure

The first thing to do is install the Windows Azure Platform Powershell Cmdlets on your build server. Just install the package, and remember to run the “StartHere.cmd” file to install and configure the Cmdlets.

This is where we needed to do some jiggery-pokery. The original script we found was rather aggressive. It completely removed the existing staging deployment, then recreated it. The downside of this is that it changes the staging URL. Our modified script is below. This new script assumes an existing staging deployment exists, and will upgrade it. Ideally we should modify the script a tiny bit to deploy a new staging deployment if one doesn’t exist (in the else block).

We’ve also made a small change so that the staging URL is emitted as part of the build script (see the write-host $azureProperties.Url line).

Obviously you’ll need to insert the appropriate certificate thumbprint (you’ve got a management certificate in your Azure console right?!), and your subscription ID. The best way to test that you’ve got this right is to execute the script from the PowerShell command-line on your build server. It took us a few goes to get it bang-on, but once we had everything right, we could see the deploy happening in real-time.

$cert = Get-Item cert:\CurrentUser\My\your-management-certificate-thumbprint
$sub = "your-azure-subscription-id"
$buildPath = $args[0]
$packagename = $args[1]
$serviceconfig = $args[2]
$servicename = $args[3]
$storageservicename = $args[4]
$package = join-path $buildPath $packageName
$config = join-path $buildPath $serviceconfig
$a = Get-Date
$buildLabel = $a.ToShortDateString() + "-" + $a.ToShortTimeString()
 
if ((Get-PSSnapin | ?{$_.Name -eq "AzureManagementToolsSnapIn"}) -eq $null)
{
  Add-PSSnapin AzureManagementToolsSnapIn
}
 
write-host Getting service...
$hostedService = Get-HostedService $servicename -Certificate $cert -SubscriptionId $sub | Get-Deployment -Slot Staging
 
if ($hostedService.Status -ne $null)
{
    write-host Service found.

	$currentService = Get-HostedService $servicename -Certificate $cert -SubscriptionId $sub
 
	write-host Updating staging deployment...
	$currentService 
		| Set-Deployment -slot Staging -package $package -configuration $config -StorageServiceName $storageservicename -label $buildLabel 
		| Get-OperationStatus -WaitToComplete

	$azureProperties = $currentService | Get-Deployment -Slot Staging
	write-host $azureProperties.Url

	write-host Done!

} else {

	write-host Existing staging deployment not found!

}

TeamCity Build Step to Deploy Azure Packages

From there, it’s a simple step to call the script from your build server. Click the image to see how we do it (with placeholder parameters – use your own).

The parameters required in order are:

  • Path to your published package location
  • Package filename (the ones that ends in .cspkg)
  • Service configuration filename (.cscfg)
  • Hosted service name (aka DNS Prefix in Windows Azure console)
  • Storage service name, if this is different to the hosted service name

Done!

There you have it. When you execute this build configuration, you should see the staging deployment being replaced in-line, with zero downtime. If you’ve given your staging URL to client for UAT purposes, they will be able to use this same link and see the updated code as soon as it is deployed. Hooray!