Wednesday, September 17, 2008

The Easier It Gets, The Harder It Gets...



I develop applications for mobile devices. Well, that’s an exaggeration; I am working on one application which, I suppose, will run on more than one device, assuming it ever gets finished.

Here’s the thing. When I read about the pioneers of computer programming, the guys who started doing Fortran, who wrote the internet protocols, the guys at the Xerox Parlo Alto Research Center who developed the graphical user interface back in the 70’s when there were no PCs to run it on, Tim Berners-Lee who invented hypertext and therefore the world wide web, well I kind of feel like a pretender.

I mean I can’t count in binary nor in hexadecimal, I don’t know squat about memory addressing, the only assembly language I know is the sheet that comes with the pantry you buy at Reno Depot, and I don’t understand that either. I’ve never stayed up all night working against an ever-getting-closer deadline, surrounded by cardboard pizza boxes and dozens of discarded coffee cups. Not me. I go home at 5.

We have high-level tools that make it easy to program. All the drudgery is taken out of it. No counting bits, no convoluted API calls that requiring marshalling or thunking. No memory management. Easy.
So the mobile app, you know. It’s supposed to run on a Windows Mobile Pocket PC, or a Windows Mobile Pocket PC Phone. If that means something to you I’m glad because it means nothing to me. But I’m doing it.

So here is the setup. I use a program called Visual Studio 2005, which we use to create applications for Windows and for the Web. To do mobile you need an add-on. I don’t remember how I got the add-on, so if my PC fries and I have to reinstall, I’m in trouble.

Here’s what I know I have.

· Microsoft Windows Mobile Pocket PC SDK [Software Development Kit]
· Microsoft ActiveSync (to synchronize a mobile device with a PC, and to allow one to use the environment of the other, but don’t ask me what that means)
· Microsoft Mobile 6 SDK
· Microsoft Virtual PC (this may or may not be involved)
· An actual physical mobile device sitting in a cradle which is connected to my PC

These various pieces work together in ways that I can’t fathom. There is something called an emulator. It simulates a mobile device on your desktop, working in its own virtual space. It works with ActiveSync and it doesn’t work with ActiveSync. I can’t get the emulator to work outside Visual Studio but other people at my workplace can. Sometimes one emulator will work and another won’t. I have two pocket pc’s on my desk. One connects to the internet, one doesn’t. We’ve spent hours trying to get these devices to connect to my web server with no luck; I had the best networking guys helping me. Then I pull a handheld out of the box by my desk, they all look the same but apparently I’ve not used this one before, and voila, it connects to my web server, it connects to the internet, it doesn’t even have to be in its cradle, and ActiveSync is in disconnected mode so it’s not in the picture. I showed my networking guy; he is impressed but he has no idea why this one is working. Believe me, neither do I. but at least it proves that my application is working.
And just today the whole structure was crashing and burning. Nothing would run; I was getting esoteric messages telling me that the device was already running (it wasn’t), that there was an error in ConmanClient2.exe, a file that doesn’t apparently exist on my hard drive, or that there was some other deep-in-the-kernel-of-the-virtual-device error that suggests that something somewhere is utterly corrupt. And there are so many places to change configuration settings. Should the transport be DMA or TCP? Do I enable the NE2000 PCMCIA network adapter? Do I bind to the Fast Ethernet Adapter or the connected network card (which, as far as I know, is the Fast Ethernet Adapter – you following this?) Do I map any serial ports? And if so to what? Should I reset the virtual device? And if so do I do a hard reset or a soft reset?

Oh my goodness.

And, there is no information about this. No real help files, no real information on the web, you’re on your own. I don’t know if Microsoft would offer tech support, probably not.

Not even Dennis Ritchie could figure this one out. Meanwhile I have this sudden craving for pizza…

No comments: