Kevin Hoffman is an enterprise programmer who straddles two worlds: Windows, including Windows Mobile and now Windows Phone 7, and Apple iPhone. His day job is chief systems architect for Oak Leaf Waste Management, where he focuses on mobile and cloud application development.
"Every framework has advantages and disadvantages," he says. "You can't make blanket statements that one is better than the other; you have to qualify it."
He has extensive background in Windows development, and writes The .Net Addict's Blog, where he's currently writing about his Windows Phone 7 experience. He has co-authored several books, including WPF Windows Presentation Foundation Control Development Unleashed. Hoffman also has a page at Amazon's website.
But until recently he's also been editor-in-chief of Sys-Con's iPhone Developer's Journal, and does contract work writing iPhone apps. He has presented at Apple's Worldwide Developer Conference, comparing programming for iPhone and for Microsoft .NET Compact Framework.
We caught up with him to ask him his impressions of Windows Phone 7 (WP7) and the differences and similarities between that platform and iPhone.
Given your background, how does WP7 stack up against iPhone?
In the market of high end mobile applications, iPhone has had a monopoly until now. If you have to choose a target device [for your applications], you choose the one with the most users. The iPhone has that.
Now Microsoft is in that market, with a device [platform] that does everything the iPhone does and some things it doesn't. But from pure developer standpoint, I think in general, especially for people new to mobile development, it will be easier to build apps for Windows Phone.
Mainly because development is lower level on the iPhone than on Windows Phone 7. For example, memory is not managed for you on iPhone but it is for WP7. So there will be inherently less crashes, and developers [therefore] can spend more time on what they want their app to do rather than tracking down memory leaks.
Because of Silverlight [Microsoft's interactive web application environment] and XNA [for developing games on Windows and Xbox], of all these available design tools, including Microsoft tools that let you import directly from Photoshop and Illustrator, all of this means that people can go directly into a WP7 development cycle. You don't get the same kind of design experience from the iPhone.
As you indicated, all WP7 applications must execute in either the Silverlight or XNA runtime environments. Why is that a benefit?
With XNA, anyone who has been building Xbox games already knows how to use it: the language, tools, everything is the same, except the control interface and the size of the screen. Game developers… can build an application for the phone and not only reuse their skills but reuse a huge chunk of their code.
Silverlight is equally attractive for business and productivity software developers. With previous [OS] versions, the default look and feel [for mobile applications] was terrible. Much of the development effort was in making the application look good. But Silverlight has designer tools to take designer-built assets and put them into the application with no loss. And if developers have a Silverlight application on a website and want the same app to run on Windows Phone 7, they can reuse a very large amount of their code, in some cases all of their code.
Apple created a development environment for iPhone after the fact, in response to demand. Does Microsoft have an edge here?
Microsoft has been second to none in my opinion in building development tools. The fact that I can use [Microsoft] Visual Studio to build these WP7 apps is great. And Microsoft's simulator for the phone [a PC application that mimics the look and feel of a physical WP7 device] has more functionality in it than Apple's iPhone simulator.
Apple's push notification service to send data in messages: this does not work in the iPhone simulator. I can't play video in Apple's simulator. Also there's no hardware acceleration in it, so I can't use OpenGL [a standard for high performance graphics] in it.
But I can test my games in the Microsoft simulator. All of this, plus other stuff from Microsoft, make the overall experience much smoother.
What else is a plus for WP7?
With an iPhone application, you can make great looking app, in short amount of time, but that's something which takes quite a bit of skill. The entire process [including publishing and distribution] is incredibly frustrating: there are speed bumps and roadblocks and all kinds of things that will slow you down, especially in large development teams.
But from what I can tell [at this early stage], Microsoft's experience of getting your app into their pipeline is significantly easier. They had a MIX10 session on the pipeline for publishing a product. Assuming they deliver on that, there's a drastic number of steps that have been removed from what you see in today's iPhone lifecycle.
How does WP7 "feel?"
When I first saw the videos [demonstrating the UI], I wasn't sure whether I liked it. But when you poke around with it and see how it all works together, what [actually] shocks people is the lack of UI. Microsoft has been big on wrapping information and apps with shiny things and bells and whistles. In WP7, they strip away all that and make the information itself as beautiful as possible. Their philosophy is that the app and the information is the design, these are the UI.
The codename for the UI was "Metro." Their inspiration was "signs in a city." A sign gives you the information as quickly as possible, with as little crap as possible in between, so you get to where you want to go as fast as you can.