When I started programming for CE, I was expecting to work in a rather cramped, rinky-dink, Mickey Mouse sort of environment. Missing functions, limited space, and generally reduced functionality would rule, I figured.|
Boy, was I wrong.
It's like entering the storefront of a strip mall, and finding yourself in Saint Peter's Cathedral. It's amazing in there!
Essentially, there are no compromises. For all intents and purposes, all of the functionality of Windows NT 5.0 exists in that little thing you carry in your pocket.
That's not to say that there aren't "Gotcha's." When I find the function that I need, I still scan anxiously down the text to find the line that will make my heart sink: "Windows CE: Unsupported."
But there's a definite pattern to these Gotcha's, and it's not what I expected (if I can read through the tea leaves to divine Microsoft's true intentions).
First, there's the "old stuff." Windows CE doesn't have to support a ton of "legacy" applications that Microsoft's customers will want to port to the new operating system, and Microsoft has taken this opportunity to get rid of the dead wood. In these cases, there's always a newer and better way of getting the job done (though finding out what that "newer and better" way might be can be challenging!).
Second, there's the "stay out of my territory" stuff. Microsoft doesn't want processes (programs) messing around with one another's private matters, and many of the things that programs could do to one another, or learn from one another are not allowed. This can be a pain to a programmer, but the net result is that you're left with a machine that is more likely to operate reliably.
As you can see, I'm terrifically impressed with the work that Microsoft has done!