Hire me at Go Tripod.

“Have you done any Windows Mobile development?”
“A tiny bit. Isn’t it just like Winforms but on a phone?”

And from such an innocent beginning, a world of pain did explode into my universe. Just like Winforms on a phone is it? What’s the difference between the Compact Framework, Smartphone development, Pocket PC development, Windows Mobile? So many terms! So little time!

Windows Mobile is the operating system, just like Windows Vista. The Compact Framework is just like the .NET Framework on the desktop. As for the difference between a Smartphone and a Pocket PC, well, you’ve got me there. I picked Smartphone because my device had phone functionality and it seems to be working so far. There are separate SDKs for each, so I assume there are some key differences which escape me. With Windows Mobile 6, the Smartphone and Pocket PC SDKs are now Windows Mobile 6 Standard and Windows Mobile 6 Professional, respectively. I think.

Actually I think the real difference in these is the templates for projects you create and the emulators you are provided with. Professional, or Pocket PC, provides emulators for bigger screens. Microsoft has this to say about the naming kerfuffle:

With Windows Mobile 6, we are revising our SKU taxonomy and naming to better align our brand and products with the realities of today’s mobile device marketplace. The historical form-factor based distinction between Windows Mobile powered Smartphone and Windows Mobile powered Pocket PC Phone Edition is blurring dramatically. We want our taxonomies and terminology to evolve to better reflect the evolution of the mobile device industry.

So in order to reflect the blurring of the mobile device form factors, they’ve changed from having SDKs named after the types of device to SDKs named “Standard” and “Professional”. Hmm. How about having a single SDK called “Mobile Device SDK” and allow me to pick the device dimensions from within my project on the fly? Back at the start of this tale, I assumed that picking Windows Mobile for development would allow us to target a range of different devices, large and small, and in fact I can do that. I can deploy my application to a Windows Mobile phone with a big screen and to one with a small screen. The SDK split seems pretty artificial with that in mind.

Naming conventions and confusions aside, it is nice to be able to write against a single API and deploy to any Windows Mobile device. Or it would be if it worked.

My bugbear here is with a particular class: CameraCaptureDialog. Take the Samsung Omnia for example. You can certainly pop up the camera using CCD.ShowDialog(), but can you retrieve the filename of the image you took? You cannot. That’s because the Omnia’s camera supports taking multiple images one after the other until you explicitly close it.

How about the HTC Diamond? Well that opens fine, and returns a filename too, but if you try and re-open the camera straight after processing the filename, to allow the user to take another photo, it fails silently and doesn’t show the camera. If you try and do the same thing with the HTC Touch, it freezes.

Part of the issue is that the Compact Framework leaves too much up to the manufacturers and doesn’t give enough control to the developer. We can set the resolution of the camera for example, but we have no shortcut of setting it to the maximum resolution available. If you try and set it to a resolution which is not supported, some devices reset silently to a much lower resolution.

Microsoft need to extend camera support for .NET developers and give a lower level of access. They need to push device manufacturers to adhere to the Windows Mobile APIs and be more precise in how they are specified. And they need to simplify and modernise their mobile development framework so that developers can be fully aware of all the options available to them.

Jeff Atwood’s always awesome Coding Horror tackles the “Microsoft treadmill”: the range of problems which arise from being a developer in the world of Redmond. Looking at Jeff’s list of recent technology from Microsoft did make me shudder, and indeed made me think back to the announcement that the ADO.NET Entity Framework has been delayed.

I remember wondering what the hell the Entity Framework was to begin with, I mean take a look at this further list from the MS research departments:

LINQ, and…
LINQ for SQL, and… various other LINQs
WPF/E
Silverlight
DLR
.NET 3
.NET 3.5
Orcas

So many acronymns! So many releases! And a couple are even the same thing. In some ways, the Microsoft development world is reminiscent of the Live debacle which was unleashed on the world – too many ideas, too little coherence. It should be an exciting time to be a developer in the Microsoft world, but instead, because there is no good, consistant, focused promotion of the direction which Microsoft will be enticing developers to use, it’s just confusing.

It does feel like I’m in a minority at the moment, in that I am a developer on the Microsoft platform who actually wants to work there, and doesn’t feel that Ruby on Rails or Python is the best thing since sliced bread. Castle is what I need to develop, and it is built using Microsoft technology and open source brainpower. To me, it’s development heaven.

Drag and Drop Web Development

May 9th 2006, 9:37 pm in .NET, Microsoft, Web.

Visual Studio is a fantastic development environment. The HTML editor in VS2005 alone shows that there are some very considerate individuals at Microsoft. But I’d like to explain why the overall drive of Microsoft’s web development ideas are flawed.

When you are developing a Winforms application – a desktop program – Visual Studio allows you to drag and drop controls such as buttons and textboxes onto a blank window, and then edit their properties, such as default text or border size. Developing an application using this method is pretty sweet. You’ve got a strong event model too, so that you can have actions which respond to user input in a timely fashion.

Now, when you are using Visual Studio to create a web application, it also tries to offer you the same experience. Drag and drop, WYSIWYG designing, event model. But the trouble is that it really is a misunderstanding of the way the web works.

The WYSWYG for the web doesn’t work. There’s too much variation. Auto generated code doesn’t work – you don’t get content/presentation separation and you get bloated HTML. The HTTP is stateless; trying to overlay an eventing model is fundamentally flawed.

I understand where MS is coming from here. They want web and Windows developers to have the same experience. But these are different platforms, with different limitations and which require a different skillset to work with. Microsoft is trying to abstract developers from the real world of the web and it ain’t gonna work.

Microsoft have launched some new research labs in the hope that they can be more agile. Trouble is that the site which fronts this new venture is embarrassingly bad. It doesn’t render properly in Firefox, it looks very amateurish, and seems unfinished. In short, it’s unprofessional.

That is a complaint I have with all of Microsoft’s Live stuff. It just looks shit. The biggest software company in the world are trying to revamp themselves but they don’t realise that people will dismiss them because the image that they are using to front this is very poor.

Kahuna – Next Generation Hotmail Invites

October 11th 2005, 6:42 pm in Microsoft.

If you fancy having a go at the new version of Hotmail, just visit the beta sign-up page and enter an active Hotmail address… Let me know how it goes, I’m interested in their CSS layout (I’ve heard they’re using one) and what next-gen web stuff they’re doing.

Avalon – Resolution & DPI Independent

September 16th 2005, 11:48 am in Microsoft.

I’m just watching the Microsoft Sparkle movie from Channel 9, and this exchange interested me:

Scoble: “So this lets you build resolution independent UIs?”

Manuel Clement: “Yeah Avalon is resolution independent and DPI independent.”

I imagine they’ll finally have to re-implement all of their interfaces and icons for Vista then?

What is Sparkle?

September 16th 2005, 10:20 am in Microsoft.

What is Sparkle and is it a “Flash Killer?” – This is probably the first time I’ve actually managed to understand what Sparkle is. It’s all very well Microsoft releasing market-speak press material and Scoble’s gigabyte sized promo movies but it would be much more helpful to have a sensible, clear-text rundown of what they’re actually going to release.

Internet Explorer 7 Communication

September 16th 2005, 9:05 am in Microsoft.

I have nothing but praise for the way the IE team is handling themselves in public at the moment. Even when they’re saying “no” to something the community is asking for, they are doing it in a very open and honest way. I look forward to the final release of IE7…

IE 7 Has Tabs

May 16th 2005, 8:50 am in Microsoft.

No surprise here really, but we finally get confirmation that IE 7 will have tabbed browsing. I’d like to see MS come up with a new implementation to try and show they’re not just playing catch-up.

Eat Open Source, Scoble

May 3rd 2005, 10:50 pm in Microsoft.

Asa gets in a sly hit on Scoble. He really couldn’t have come up with a better reply.

Next Entries »