Mistakes when starting out with Symbian

So what are you doing? If you are just playing around, fine. If you are
going to anything serious, get a good book _now_. Decide whether
you need device-independence early, as it'll force you to make
some design decisions. Think about multiple processes and threads, and
what that means to your API style.

In general the things I did most badly wrong when starting out with
Symbian were:

- Brought in my own coding conventions instead of Symbian's. Do follow:
	* FunctionL for leave
	* iX for member variables
	* memory over speed and convenience tradeoffs (e.g., don't use
	a hash, use a tree)
	* C, T and R classes
	* NewL and a private ConstructL
	* CamelCase?

	Don't use:
	* callbacks and recursion: use asynchronous state machine
	objects instead, use Active Objects even for intra-thread
	notifications. You can't always do this, but even in cases
	where you need to get notifications from several objects,
	trigger those objects via the Active object mechanism
	* char*'s, instead always use Symbian descriptors
	* stdlib

- Didn't separate implementation and interface for my classes.
- Didn't do out-of-memory testing from the beginning
- Didn't use auto_ptr and friends (I haven't written this up yet,
but in addition to van der Wal's auto_ptr, we use a similar
construct for R classes. See symbian_auto_ptr.h and raii*h
in http://db.cs.helsinki.fi/~mraento/lxr/source/ContextCommon/inc/).
Manual cleanup-stack usage is _not_ the thing to do.
- Didn't have a clean MVC-separation of concerns
- Didn't have good unit-tests (Ian'll will help you with motivation for
this, right  :-) 

Things that I still don't have really good advice for:
- build system:
	- dependancies
	- configuration management
- IDE integration
- device independence
- unit-test framework
- consistent error-handling and recovery
- battery usage evaluation