Tuesday, March 29, 2005

Deep in the pits of hell...

Symbian OS crawled and fought it's way into the world of cell phones. What is Symbian, you might ask? It's worse than drugs, worse than dropping your icecream cone, worse even the being caught watching Barney over the age of 7.

More specifically it is an operating system designed for higher end cell phones. If you really want to look into it, google it. Hopefully, this is as far as you'll go.

Up until today, I just forcefully disliked Symbian, for these reasons:

Documentation is poor and sparse. See a potentially useful function and want to know how it works? You can find it in the online symbian developer library, but most function and class explanations are limited to 3 sentences, and I have yet to see an example of how to use the said function.

This problem flares again when your program crashes and you get a cryptic error message, like "KERN-EXE 0" or "USER 4" or "ALLOC: 0x14a4h3". And that's all you'll get. You can of course look these codes up at the ever so unhelpful online dev library, but again, their explanation is limited to 1 to 2 sentences and no example of how and when they occur is given.

The App, UI, Document, and view design pattern is odd. Pretty much every program you write MUST follow this. Symbian requires it (you can skip the view part though). There is no real main() function and limited control over frame updates; and this leads to hackish work arounds.

No std::string, and it's replacement is god awful. The Symbian dev team also decided std::string was unsuitable and replaced it with 300 confusing versions designed to accomplish the same purpose (also designed, apparently, to increase your risk of insanity). They go as follows: TBuf, TBuf8, TBuf16, TBufC, TBufC8, TBufC16, TPtr, TPtr8, TPtr16, TPtrC, TPtrC8, TPtrC16, TDes, TDesC, TDesC8, TDesC16, HBuf, ...and so on. This is all just to accomplish common string related tasks. Something is clearly wrong with your design if it takes about 20000 classes to encompass SIMPLE STRING FUNCTIONALITY.

The emulator is too slow. When you go to test your symbian code on the emulator, it takes 13 full seconds just to start the emulator in debug mode. Imagine having to wait 13 seconds everytime you want to step through your program or even just run it to see your changes. Don't think it's that bad? Just count to 13 before you start your program next time it's done compiling and continue doing that forever.

Even with all that crap I was able to cope, but now, things have changed. I got a new cpu and motherboard, in hopes I could drop the emulator start up time. Not only did it stay about the same (12 seconds now, w00t?), but now my computer has decided to instantly restart whenever any Symbian network code is run. It can be my own code or symbian's official stuff, no difference. I uninstalled and reinstalled everything from drivers to SDKs to no avail.

Symbian OS should return to the hell of its birth.

This is just scratching the surface of the crap one must go through to develop for this damn platform. I loathe it, if you try it, you'll loathe it too. I briefly worked with BREW (a competing platform) and found that that limited experience was much more enjoyable than working with the demon called symbian. Soon, I'll get down and dirty with BREW too, and we'll see if I still like it as much then...

In short, developing for Symbian OS is like taking a spork and carving out your eye.

0 Comments:

Post a Comment

<< Home