Cygnipede client-side persistence

As of v2, Cygnipede on the client (BlackBerry) is two applications:

  • UI – a midlet, rather than a RIM applet
  • Listener daemon – sits in the background, listens for location updates, and transmits results to one-or-more CygNet EIS gateways

Today I’m hooking up (and extending the old classes) the persistent store code.  We’ll see how that works. 

<time passes>  Late afternoon…

I. Am so. Angry.  That I can barely describe it.  I have spent more than half of my day trying to figure out why *both* BBs just stopped communicating with the BBDevMgr.  I’ve rebooted 3-4 times, maybe more. Reinstalled the BB desktop software as many/more times.  Now they’re working, for no reason I can understand.

For reference, here’s what I did.

  1. burnt offering to Atropos, cutter of cords
  2. Uninstall Desktop Manager
  3. Shut the machine down
  4. Unplug all USB devices (except keyboard/mouse)
  5. Reboot and disable all protective software, turn off all services that might be listening for a media device to be plugged in, etc.
  6. Reinstall Desktop Manager
  7. repeat step 5
  8. Plug in the 8330 and open Device Manager.  It’s there, with a notice that the driver might be corrupt.
  9. Without unplugging the device uninstall and delete the driver.
  10. Unplug the device.  Count to 100 by primes.  Plug it back in
  11. Allow it to install the current drivers
  12. Watch as “Blackberry Smartphone” appears magically in the DevMgr
  13. write angry blog post about being angry

Searching Google for “blackberry not recognized” is a real eye-opener, because there are too many results, and none of the results (really, I checked, none of them) have answers from RIM (or anyone else) that’s helpful.  They all boil down to, “do things randomly.  sacrifice something.  dance in the moon.” 

They were recognized by the operating system, which is the super amazingly annoying part.  Device manager said, though, “There’s a problem and maybe the drivers are corrupt.”  What?  Corrupt?  No. That doesn’t happen, because if it did, the disk manager would tell me I was getting disk errors.  That happened in, oh, I dunno, 1985.  Not now.

This whole Cygnipede2 experience has been insanely frustrating, to the point of tears.  Everyone has been on board, very helpful and interested, offering lots of useful suggestions.  Derek and Jeff have been in on feature decisions, and I feel as though a lot of this has been torpedoed because I’ve probably spent 1/3-1/2 of my core development time dealing with bullshit issues like this.

Hey, RIM!  Don’t you get it?  *THIS IS WHY THE iPhone IS WINNING!!*  Yeah, because their platform works, and even though I don’t like their development platform, it would be novel to have one that, say, worked more than 50% of the time.  I’m sitting here thinking to myself, “Did I start too late?  Am I stupid?  Am I too lazy?  Did I do the wrong thing?”  The answer has to be “probably not”, because I have never in my life said, “50% of my development schedule is going to be devoted to reinstalling and rebooting.”  I’ve been doing this for 30 years and I can say without exaggeration that this has been one of the worst software development experiences of my life, owing solely to what I can only see as massive incompetence on the part of the vendors involved.

Another problem for the past month was the Desktop Manager deciding, apparently arbitrarily, that “This application is incompatible with your device,” on what appeared literally to be a random basis.  How do I know this was nonsense?  Because you can use javaloader to install the applications and they work fine.

So…where was I, 8 hours ago?  Oh, right, persistence.  And Yong’s sent out an installable gateway, which is what I think I’ll do next, because I’m about 10 minutes from pitching these damn things into the backyard for the squirrels.

To paraphrase,

“Continuing to develop software is a clear example of the triumph of hope over experience.”


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s