Yesterday I attended
Microsoft Mobility Tour event here in Prague. It was held in Hilton Hotel, so I finally got a chance to see this place (see included pictures). The event was nice, a lot of good food (Microsoft knows how to feed its potential customers :-)). There was around 30 people attending it - I was actually surprised by such a small number, I would expect rather around 100 people. It could be interesting to see how many people would come for Sun Mobility Tour - I guess we could get at least 100 :-).
Hilton Hotel atrium - the main lobby
The event itself was very interesting and I was rather (positively) surprised by the amount of tools and support Microsoft gives to the mobile application developers. I spent there all day and basically found everything interesting. At the end we got a DVD set with Windows Mobile 5.0 Developer Resource Kit, where is a lot of materials so I'll be slowly going through over the next couple of weeks to learn something new. Unfortunately (and as usually :-( ) I didn't win the raffle - they had a very nice phone running their OS with VGA! screen and full keyboard. Hopefully next time ... :-).
Microsoft evangelist in action ...
What surprised me negatively, though, was two things - Microsoft does not offer any performance tool or profiler for .NET Compact Framework - the guy doing the session was nice and was trying to demonstrate at least some capability of their solution, so he set an obscure registry value at the target device (how typical ...), run the application, terminated the application and them downloaded a text log file from the device and tried to interpret it. From developer's point of view, this was hardly usable (I would call it even worse than that). The fact you have to terminate the application to be able to read the log file is simply ridiculous. When I asked the question whether there is any visual tool for performance measurement, the answer was 'we are working on it'. Ok - hopefully something will come up with the next version of the Visual Studio - perhaps in 2008 or some time around that. Looks like we (i.e. Java developers) have quite advantage here ...
An afternoon dessert ...
The other, "striking", thing was their platform fragmentation. I knew there are two editions of the platform - Windows Mobile for PocketPC (for PDAs and some phones) and Windows Mobile for Smartphones (for phones). What I didn't know was the fact that when you are using .NET Compact Framework 2.0 and targeting Pocket PC devices, you still need to keep in mind there are several editions of the platform (Windows Mobile 2003, Windows Mobile 2003 Second Edition, Windows Mobile 5.0) and each of them offers a set of different APIs for you as a developer. Thus to develop an application using .NET Compact Framework 2.0 and Windows Mobile 5.0, you need to make sure you are not using any classes specific for 5.0, because the application wouldn't work on the older version of the operating system. This might be quite frustrating. In Java, this is much easier - when you are using targeting CLDC 1.1/MIDP 2.0, you can be sure it is going to work on all devices supporting this standard (ok, ok, I know about device fragmentation, but ideally it should work). And when one considers also Smartphones platform, well, in this case there are
6! different platforms for which the application has to be carefully developed and on which should be also tested. Quite frightening IMHO ...
Inside the hotel's atrium
So to summarize the event - there are many things where we can learn from Microsoft (tools, support for end-to-end applications, ...), but this can be fixed by us, the tool developers. On the other hand, the Microsoft platform seems to be broken from the ground and I'm afraid there is no easy way to fix that. Again and again I'm glad I'm using Java and not their platform (but still keeping an eye on it and trying to make our solution more usable for the developers :-) ).