Writing Custom UIs
Before you jump in and start writing code...
...read this
...and this.
(These guys have learned a few lessons in the process.)