1) Can you tell us a little about yourself?
My name is Raffaele Limosani, I’m a Support Engineer at Microsoft CSS (Customer Service and Support) and I’m located in Milan, in the “Sunny” Italy — not so “sunny” btw compared to where I come from! (Rome) :-)
2) Can you tell us a little about what your role as a Support Engineer involves? What kind of developers do you help support?
I help ISV Application Developers “realize their potential” when working on the Windows Mobile and CE platforms: basically, if you have a Technical Support contract (including the one you got buying a Visual Studio box!) and need help while developing Smart Device projects, if you’re located in Europe-Middle East-Africa chances are that I’ll be your contact at Microsoft. I deal with “Premier” Customers (big contracts), Partners, MSDN Subscribers or developers who bought a Visual Studio box… are you aware that together with Visual Studio you bought Technical Support Incidents? Test us! :-)
3) You have recently started blogging about Windows Mobile development. What was your emphasis for doing this?
I felt that a blog was missing in the Windows Mobile-related blogosphere, related to Technical Support: that’s where the subtitle comes from… (”Support Side Story”) Basically I’m facing issues that for example didn’t find an answer in newsgroups and forums, or developers asking for advice about how to architect their applications. Sometimes I find myself repeating the usual suggestions (especially for .NET CF Memory Leaks or Kiosk-mode applications), and therefore I thought that a good investment for the community would be to publish my usual suggestions and solutions.
4) Your blog shows some real insightful glimpses into not only technical aspects of the Windows Mobile OS, but also how the Windows Mobile ecosystem is structured and functions. Would you mind briefly explaining the major players involved from the time Microsoft develops a new OS feature until the time the device reaches a shop or third party developer?
Microsoft provides device manufacturers (OEMs) with a tool called “Adaptation Kit for Windows Mobile” (a special edition of “Platform Builder”): this contains about 90% of the source-code for the Operating System and device driver sample source code. OEMs use this tool to adapt the Operating System to their hardware. They physically BUILD the platform after possibly having developed their own DRIVERS based on the samples that Microsoft provides. Apart from building the bits, it’s completely up to the OEMs to configure the OS, in terms of Security configuration, connections and so on (especially when a Mobile Operator brands the device). This is why it may happen that a problem is reproducible on one device and not another, with the same OS: in terms of Technical Support, many times the best initial step involves verifying if the issue is reproduced on the Emulators as well – if that’s true, it’s much easier for us to troubleshoot as we can also package a DEBUG build of the platform, or instrument parts of the RETAIL build with some specific debugging info. This is not available for ISVs purely because they don’t have the Adaptation Kit and this is for example one of the added values given by Technical Support.
5) Would you mind briefly explaining the difference between Windows Mobile and Windows CE?
Windows Mobile is based on Windows CE: it’s a special configuration of Windows CE modules put together by OEMs, which must pass a certification process in order to have the “Windows Mobile-Logo”. For example, every Windows Mobile device must have the Connection Manager: this is simply one of the requirements that must be fulfilled. But the bits in many cases are the same, and that’s why it’s so useful for ISVs to download the Evaluation Edition of Windows CE 5.0 to have plenty of native sample source code available. Despite the names, Windows Mobile 6 is NOT based on Windows Embedded CE 6.0 – probably the next version will be, so ISVs will finally have plenty of Virtual Memory to leak! :-) [Christopher - see the following post for further details]
6) I notice your blog posts are currently fairly evenly split among managed (.NET CF) and unmanaged (C / C++) posts. In your job supporting third party developers what do you see developers utilising out in the field?
Many have switched to managed development, but on Windows CE and Windows Mobile there are many topics that are better covered by native development. And that’s why OpenNETCF’s Smart Device Framework has been so successful.
7) When you are personally coding what language / environment do you prefer?
I prefer C#, now on Visual Studio 2008. My background was C/C++, not VB — therefore I found it easier to migrate to. Obviously there are many VB developers out there and I can handle requests about .NET CF applications written in VB.NET.
8) Do you carry a Windows Mobile PDA or Smartphone with you? If so what model?
Sure! And more than one! :-) Many times we have to deal with test devices with test platforms running on them. For example, lately I was carrying a very old HTC Tornado running the now just-released Windows Mobile 6.1! You see, “just-released” means “just-released to OEMs”: now they’re packaging ROM Upgrades for some existing Windows Mobile 6 devices and also will ship brand new devices, internally it’s been tested for a while.
9) What Windows Mobile feature couldn’t you live without (or conversely what feature do you find the most lacking or missing)?
I really enjoy using Windows Live for Mobile. Regarding missing or lacking feature I can’t express myself knowing the ones that will be introduced in the future! :-)
10) Due to supporting other developers are there any resources (or tools) that you would recommend for developers new to the Windows Mobile environment?
There are many tools available to programmers, but probably the one I use the most is the Device Emulator. Obviously if you have to deal with specific “real” features, say barcode-scanning, the emulator can’t help. But all the new features introduced in v3.0 and in the Windows Mobile 6 SDKs help a lot, and remember that if an issue is reproducible on the emulator then it’s sure that that it’s not related to a customisation of the OS done by the OEM: hence, it’s easier to troubleshoot. Then, surely every serious development should include Hopper in their tests. For managed development, you can’t live without the NETCF v3.5 Power Toys, while for native development remember you have the Application Verifier for Windows Mobile. And sometimes I find myself still using the (quite old) Windows Mobile Developer Power Toys!
Then I think having a repository of sample source code is always good. Re-using code is obviously something that a developer should do… why re-invent the wheel each time? And that’s why I usually prefer posts with some code in them… :-) So, here are some sources of sample source code:
- Evaluation Edition of Windows CE 5.0
- sample code available with a copy of Programming Windows CE .NET (3rd Edt) or Programming Windows Embedded CE 6.0 (4th Edt)
- If you don’t want to invest on the OpenNETCF’s Smart Device Framework v2, download at least their older v1.4’s bits, so that you have a lot of P/Invoke sample code
- Mobile Client Software Factory July 2006 (refresh)
- Windows Mobile Line of Business Solution Accelerator 2008
- sample code available with a copy of Mobile Development Handbook
11) Do you have any closing comments?
A comment about Microsoft Technical Support. It’s simply great that nowadays many developers rely on newsgroups and forums! I was there when Microsoft newsgroups were born and personally helped them to grow up, until they became auto-sufficient thanks to the great support given by Microsoft MVPs. When you don’t find an answer through your favourite Microsoft newsgroup or MSDN forums (or whatever!), just give the Microsoft Technical Support the chance to show what added value it can offer. If you have a contract (“Premier” or “Partner”) you will already be using it. If you have a MSDN Subscription or simply bought a Visual Studio box, chances are that you don’t know that you have the opportunity to open Service Requests thanks to a certain number of so-called “incidents”… so my suggestion is: make sure you use everything you’ve paid for! :-)