Ezra B. Gildesgame from Growing Venture Solutions presented an Introduction to Module Development.  (Slides)

While I was already fairly familiar with the basics of Drupal module development, it provided a nice refresher and some insight into how they handle things.  It was also interesting to see Ezra using Eclipse for module development -- I've always had mixed feelings about Eclipse and PHP.

A couple of new things I learned:

  • In devel views, you may now see "und" as an array index: this indicates undefined localization, as given by the Drupal constant LANGUAGE_NONE.
  • Remember to clear the cache when defining new hooks (not really new, but worth repeating)
  • func_get_args() and debug_backtrace() are both very useful PHP functions for debugging, especially when combined with dpm()
  • dpm() uses Krumo, which is a pretty awesome PHP library
  • Like so many other things in Drupal, modules have weights in the system table -> weights define execution order (Though well-developed modules should work under any order.)
  • Use proper APIs rather than querying the DB directly if you can.  Some modules add extra information to entities, etc., that you will miss by querying the DB directly.
  • Don't hack core. (Also not new, but also worth repeating)

All in all, Ezra put together a great presentation that was perfect for my first "regular" session of Drupalcon Chicago.