Thanks Janne, for the explanation and the references. I wish I had found out about the Moodle coding guide. Could have saved me a lot of time....

Thanks WP, for your detaillistic approach to things. I really like the way you always want to know the inside workings of all things Moodle, and then seem to remember a post from 2 months ago, or a link outside of Moodle, that puts everything in another perspective.
(Not too mention the colors in your posts

)
I have recently discovered the
Moodle code browser with cross-reference. It makes it really easy to find out where a variable gets defined, where it is referenced. If Moodle uses a function that you don't know, you can click on it and it sums up where it is defined and which parts of Moodle use the function...
Be careful though it's easy to get mesmerized by all the referencing inside the code...

You talk about blocks, modules. Have you ever downloaded NEWMODULE and NEWBLOCK
from CVS? They are templates for creating new er...

modules and blocks. There is a lot of documentation inside the template. I think developing a new block (not sure about module, my try at it was not a succes) is actually easier then hacking your way inside code that already exist. (WP, You've already done the hard part, making the course image display which involves changes in a lot of different files.)
The
Moodle API documentation is very helpful. I started learning all this
MySQL-stuff about connections, etc... in this book of PHP that I have... only to realise afterwards, that inside Moodle you can use Moodles built-in functions like get_record, update_record, which according to me me make much more sense...
Just some thoughts out of my own (short) experience...