Nothing at all and Everything in general.

First Post

I'm a Software Engineer.  Developing on Windows Mobile is a small part of that and there's a lot of things not directly related to Windows Mobile about which I would like to speak.  So I decided to start another blog just for those topics.  This is my first post but I still have a lot to do to get my blog setup.  So the next time I post here I'll have something of substance to say.

24 Hours of Windows Mobile - Halfway Point

As of yesterday the 24 hours of Windows Mobile series has reached its halfway point. .  I thought this would be a good time to post the links to all of the recorded presentations for those that may have missed one. 


Introduction to Windows Mobile Development 200 High level introduction to developing managed applications for mobile devices
Interoperability Between Native and Managed Code 300 Basic's of P/Invoke and using COM objects
Creating Adaptive Applications 300 Creating applications that work with a wide variety of formfactors
Using Pocket Outlook Data within a Managed Application 300 Retrieving and manipulating data stored within Pocket Outlook
Live Update from PDC 300 Sharing news announced at PDC time and other demonstrations
Developing Battery Friendly Applications for Windows Mobile 300 Demonstration of the State and Notifications broker and other features of Windows Mobile that can assist in developing applications that consume less power
Unit Testing for Mobile Devices 300 Explore using the unit testing functionality of Windows Mobile for devices
Testing Your Mobile Applications 300 Strategies for testing your Mobile Application
IPC and True Push 300 Asynchronous programming techniques inside your managed application
Windows Mobile Networking 300 Negotiating and establishing a network connection
Location Awareness 300 Location services available for Windows Mobile
Windows Mobile Power Toys 200 Tools to assist you in diagnosing information about your running applications.


Where is 'cordbg.exe'?

I was writing a guide for those that wish to write Windows Mobile programs using the command line tools and was validating my information when I came across a discrepency.  cordbg.exe from the 3.5 and 2.0 framework does not support the conn[ect ]command any more.  Attempting to use it results in the message "Error: Command 'connect' not found."  The ramifications of this is that one will not be able to use the command line debugger to debug on their remote device at all.  If you plan to start on .Net development I strongly urge you to use Visual Studio.  Otherwise for now you have no debugger.


Secret Run Menu in Windows Mobile

Like the desktop versions of Windows there is a Run menu in Windows Mobile. But it is hidden.  To access it hold down the action button and access the context-menu (press-and-hold) button on the clock. 

Selecting "Run" will display the run menu.


In case you are wondering why any one would want to have access to this here is the reason.  Several programs on Windows Mobile devices can accept command line arguments.  But since there is no command line in Windows Mobile there's not a clear way to pass such arguments to a program.  A typical user would never need this, but a developer would.

Updated MSDN Forums

Over the pastfew  week Microsoft has been updating many of their forums.  For those not familiar Microsoft host the MSDN forums so that those working with related technologies can communicate and ask each other for assistance.    The Smart Device Development forums when through their metamorphosis last week.  While there are still a few things transitioning over the migration of the core information and functionality seems to be complete.  The interface of the new forum is more aesthetically pleasing and much more responsive (it is based in Ajax) and the editor is much easier to use and gives more control over formatting.   

If you are ever stuck with a problem that you cannot figure out then this is always a good place to start.  However the promptness and accuracy of your response is going to be dependent on the clarity of your question. So if you've never posted in a newsgroup or forum before I'd like to direct you to some general rules that Daniel Moth wrote that will help ensure that you get the best answer.  


Outline - Introduction to Windows Mobile Development

I see a lot of questions from new-comers to Windows Mobile development on how to get started.  I also see in the Google Analytics report for my site that people stumble upon my site are looking to start on Windows Mobile Development.  I'm planning to write an article introducing one to Windows Mobile development this week.  I will be targetting the developer that already programs in C#.  Unfortunatly I cannot target the person that has never programmed before because too many programming concepts would need to be followed.  For those that have developed before for other platforms I will suggest getting a foundation in C# and .Net before specifically targetting Windows Mobile.  So the profile of the person that I am targetting with my article is some one that knows C# and has some familiarity with Windows form development.  Based on the frequent questions that I see in the forums I plan to cover the following in addition to some other information.

  • Minimum Software Required for Windows Mobile Development
  • Overview of Mobile Development Technologies
    • Win32
    • MFC
    • ATL
    • .Net
  • Thread Spinning <- this will kill your battery, and fast!
  • Using Multiple Threads
  • PIM
  • System State and Notifications Broker
  • P/Invoke
  • Supporting various Form Factors
  • Connection Management
  • Bluetooth
  • 3D Programming
  • Dispose();
  • Adding Help to an Application
  • Data management
  • Synchronization
  • Setup and Deployment
  • Other Resources
    • MSDN Library
    • MSDN Forums - also mentioning Daniel Moth's Guidelines for the forum
    • Windows Embeded Blog
    • Windows Mobile Blog
    • "24 Hours of Windows Mobile" webcast series
    • "How  do I" videos

Assessment of Windows Mobile Development

In responding to a question on the MSDN forums I wrote the following. I thought it to be a particularly useful response for some people so I decided to repost it here.


In my opinion Microsoft is the best company around when it comes to supporting developers. Information on the general Windows Mobile APIs are freely available to everyone; no registration or fees required.  The source code is not open, but a majority of the APIs are publically documented. You can find these APIs reference on the Windows Mobile Development Center in MSDN.  For Windows Mobile I could divide the APIs into one of 2 categories; native and managed. 

If you are just starting with Windows Mobile development you will want to use the Managed APIs.  All of these APIs are implemented through .Net.  When using these APIs a lot of low level tasks such as some aspects of memory management are taken care of for you.  The Native APIs give one direct access to more of the device at the cost of less protection from one's mistakes and more effort being demanded to perform certain tasks.  Since versions of the .Net framework are supported on both the desktop and on windows mobile devices you may want to start with some simple desktop application development with .Net before developing on a Windows Mobile device.  After getting a foundation in the .Net framework pick up the book "Microsoft Mobile Development Handbook" by Andy Wigley, Daniel Moth, and Peter Foot.

The bear minimum toolset that one would need to develop for Windows Mobile would be the .Net framework and one of the Windows Mobile SDKs.  These are free downloads.  However, I would strongly encourage you to invest in Visual Studio 2008 Professional.  It will provide a much more complete development environment then using the command line tools of the SDK.

You usually have access to the file system of a Windows Mobile device (though some businesses or phone carriers may restrict certain areas of the device for their own security or policy reasons). giving you the ability to copy programs to the device as desired.

Other sources of information include


Meet WiMobot

WiMoBot Picture

I have a moment of freetime, so I'm cleaning the windows installation on one of my computers for a Silverlight class I will be teaching, and coming up with goals for future projects (reading barcodes with a Windows Mobile camera, using SMS is a data transport for a game, real-time discrete fourier transformation based fourier analysis to produce sheet music from a wave file) and I decided to slip through some unread issues MSDN magazine.  In the August issue the Windows Mobile section had an interesting article on a Windows Mobile based lego robot.  Very Cool!  A useful piece of code I was able to lift from the article deals with Bluetooth communication using the Microsoft stack.  I plan to use it to update the Windows Mobile Call Silencer program I wrote so that it can communicate over Bluetooth or WiFi.  If you are interested in the WiMoBot check it out at the Microsoft Employee's website at http://www.wimobot.com. There are also some references to some other bluetooth sensors that you can get for developing with yout phone so that you don't have to solder wires to it.