System Overlord

A blog about security engineering, research, and general hacking.

Linode Rocks!

As you may know, my site is hosted by Linode, one of the older Linux VPS providers.  I was excited when Linode announced native IPv6 support in some of their data centers, but then disappointed when I saw "No ETA" for the Atlanta datacenter where my site was hosted.  I had been running my node with Hurricane Electric's IPv6 tunnel service, but I prefer a native solution when I can get it.

As a result, I decided to move my Linode to the New Jersey data center.  At first, I contemplated just opening a ticket to get it moved, but I'd been wanting to do some "housekeeping" and had considered switching to pure Debian, so I decided to rebuild and migrate services.  As of this morning, I had migrated most services (including web/database) to the new Linode in New Jersey.  If it's at all possible, it seems even faster than my Atlanta Linode was.  (Technically, it is: 2.5 GHz CPUs vs 2.0 GHz CPUs)

It required opening a ticket to get an IPv6 address assigned -- but the ticket was handled in less than one minute.  At 11:00 PM Eastern time.  I've known that Linode has great customer service, but this blew me away.  Way to go, Linode!

(NB: If this entry helps inspire to join Linode, I'd appreciate you supporting my site and using my referral code of 680a893e24df3597d32f58cd41930e969027dc06).

Welcome (back) to Drupal!

Regular readers of my blog may have noticed a significant change.  As of about midnight last night, I had completed the migration of my site from Wordpress 3.1 to Drupal 7.  A few features are not yet implemented, including automatically posting my blog entries to Twitter, but the RSS feeds do work.  Additionally, some of the RSS feed URLs have changed, so please check your feed readers.

Drupalcon 2011: Introduction to Module Development

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.

Drupalcon 2011: Keynote by Dries

[NB: Video of Dries' keynote has been posted here:] Dries opened Drupalcon with an inspiring keynote, discussing the successes and failures of the Drupal 7 development cycle, and the proposed changes for the Drupal 8 development cycle.  (Yes, we're already talking Drupal 8.) He started off with some statistics:

  • This Drupalcon has 3000 attendees.
  • The attendees will consume $100,000 in coffee.
  • Every major government uses Drupal in some fashion.
  • 1.7% of websites run on Drupal.
  • has 551,392 community members

He noted that he would open the Drupal 8 branch today, as soon as one of the git masters shows him how to: "I'm not quite sure how to do branches yet in git." In Drupal 8, we will see a cap in the number of outstanding critical bugs at a time at 15 (any more than that and new features will not be accepted).  We will see feature maintainers as different aspects are developed, adopting a Linux-kernel like development model, and there will be several quality checks on each feature before it is committed into the D8 mainline. Check out the video of Dries's keynote if you want to hear more, and ask yourself: "What have you done today to make you feel proud?"

Drupalcon 2011: Code-Driven Development: Using Features Effectively

One of the biggest barriers to using Drupal effectively is managing the Dev->Test->Production->Update lifecycle.  Most problematic is making structural changes to a site already in production.  You don't want to break/modify production while live, you don't want to blow away data by copying data from Dev to Prod, and you don't want to try to make the changes in two places.  Based on my readings, I had decided that Features would play a major role in solving this problem.  The training class presented by Nuvole today showed that Features can make life-cycle management much, much, easier.  In fact, as best as I can tell, code-driven development is the way to produce, manage, and deploy enterprise-quality sites.
Nuvole has posted slides on SlideShare.  (These may not be the exact slides used at Drupalcon, as they seem to be a few weeks old, but look very similar to what I'm seeing on the screen.)
Thanks to Antonio and Andrea for a great presentation -- it was really content-rich, and they managed to work through the technical glitches of student laptops quite smoothly.