Strict Standards: Redefining already defined constructor for class wpdb in /home/thornock/public_html/wordpress/wp-includes/wp-db.php on line 52

Deprecated: Assigning the return value of new by reference is deprecated in /home/thornock/public_html/wordpress/wp-includes/cache.php on line 36

Strict Standards: Redefining already defined constructor for class WP_Object_Cache in /home/thornock/public_html/wordpress/wp-includes/cache.php on line 389

Strict Standards: Declaration of Walker_Page::start_lvl() should be compatible with Walker::start_lvl($output) in /home/thornock/public_html/wordpress/wp-includes/classes.php on line 537

Strict Standards: Declaration of Walker_Page::end_lvl() should be compatible with Walker::end_lvl($output) in /home/thornock/public_html/wordpress/wp-includes/classes.php on line 537

Strict Standards: Declaration of Walker_Page::start_el() should be compatible with Walker::start_el($output) in /home/thornock/public_html/wordpress/wp-includes/classes.php on line 537

Strict Standards: Declaration of Walker_Page::end_el() should be compatible with Walker::end_el($output) in /home/thornock/public_html/wordpress/wp-includes/classes.php on line 537

Strict Standards: Declaration of Walker_PageDropdown::start_el() should be compatible with Walker::start_el($output) in /home/thornock/public_html/wordpress/wp-includes/classes.php on line 556

Strict Standards: Declaration of Walker_Category::start_lvl() should be compatible with Walker::start_lvl($output) in /home/thornock/public_html/wordpress/wp-includes/classes.php on line 653

Strict Standards: Declaration of Walker_Category::end_lvl() should be compatible with Walker::end_lvl($output) in /home/thornock/public_html/wordpress/wp-includes/classes.php on line 653

Strict Standards: Declaration of Walker_Category::start_el() should be compatible with Walker::start_el($output) in /home/thornock/public_html/wordpress/wp-includes/classes.php on line 653

Strict Standards: Declaration of Walker_Category::end_el() should be compatible with Walker::end_el($output) in /home/thornock/public_html/wordpress/wp-includes/classes.php on line 653

Strict Standards: Declaration of Walker_CategoryDropdown::start_el() should be compatible with Walker::start_el($output) in /home/thornock/public_html/wordpress/wp-includes/classes.php on line 678

Deprecated: Assigning the return value of new by reference is deprecated in /home/thornock/public_html/wordpress/wp-includes/query.php on line 21

Deprecated: Assigning the return value of new by reference is deprecated in /home/thornock/public_html/wordpress/wp-includes/theme.php on line 508

Strict Standards: Non-static method GoogleSitemapGenerator::Enable() should not be called statically in /home/thornock/public_html/wordpress/wp-content/plugins/sitemap.php on line 2452

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method UltimateTagWarriorActions::ultimate_query_vars() should not be called statically in /home/thornock/public_html/wordpress/wp-includes/plugin.php on line 57

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method UltimateTagWarriorActions::ultimate_posts_where() should not be called statically in /home/thornock/public_html/wordpress/wp-includes/plugin.php on line 57

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method UltimateTagWarriorActions::ultimate_posts_join() should not be called statically in /home/thornock/public_html/wordpress/wp-includes/plugin.php on line 57

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method UltimateTagWarriorActions::ultimate_tag_templates() should not be called statically in /home/thornock/public_html/wordpress/wp-includes/plugin.php on line 160
Gary Thornock's Weblog » Damian Conway presentation
Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method UltimateTagWarriorActions::ultimate_add_ajax_javascript() should not be called statically in /home/thornock/public_html/wordpress/wp-includes/plugin.php on line 160
10th Aug, 2005

Damian Conway presentation


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/thornock/public_html/wordpress/wp-includes/formatting.php on line 74

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method UltimateTagWarriorActions::ultimate_the_content_filter() should not be called statically in /home/thornock/public_html/wordpress/wp-includes/plugin.php on line 57

Tonight's PLUG meeting featured Damian Conway, of Perl fame. His presentation, of course, was directly related to Perl, but many of the general ideas are relevant to programming in any language. My brief notes will not begin do do justice to the presentation; should you get a chance to hear him speak in person, by all means go!

The topic of the presentation was "Sufficiently Advanced Technologies", which, by Arthur C. Clarke's Third Law, are those which are "indistinguishable from magic". Dr. Conway mentioned several modules in Perl which might qualify as S.A.T.s, based on the simplicity of their interfaces and the amount of work that they do on behalf of the programmer, thereby requiring minimal or no work on your part. One of the best known of these is use strict;, which, of course, need only be included in a Perl program in order to do its work. use diagnostics; and Coy.pm are closely related.

Not all S.A.T.s are quite that transparent. For instance, there's IO::All, which provides a single function, io. This function only does a single thing, but that single thing is anything and everything having to do with I/O, and it does it amazingly well, with a very simple interface.

Another great example is Perl6::Slurp, which replaces any number of scary (and often inefficient) methods of loading the entire contents of a file into a scalar variable. (The prior "canonical" method was $text = do { $\; < $fh> })

Most S.A.T.s come about by an evolutionary process. The main idea in developing an S.A.T. is to identify the clunky, repetitive parts of an interface, and eliminate them. Sometimes this is done by overloading, sometimes by figuring out what information a module can infer from context, and sometimes simply by picking better defaults. One example of the last is a recent change to IO::Prompt, where you no longer have to specify that you want to call chomp() on the user input. 90% of the time, that's the desired behavior, so now it's the default, and you only have to specify when you don't want it.

The presentation touched on a couple of other interesting modules, like Lingua::EN::Inflect (and Lingua::EN::Autoinflect, which hasn't been released yet), and the very impressive Smart::Comments.

O'Reilly kindly sent a couple of boxes of books to be given away after the presentation. I didn't manage to get Dr. Conway's new Perl Best Practices, but I did end up with a copy of Simon Cozens' Advanced Perl Programming, which I will probably review here in the near future. I had to leave after the drawing for the books, but I hope someone else posts notes about the rest of the meeting. Dr. Conway was going to speak for another half hour or 45 minutes, about Perl 6.

No Tags

Responses


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/thornock/public_html/wordpress/wp-includes/formatting.php on line 74

The second part of the meeting was very good. There are some real interesting things happening in Perl 6, a lot of which is still very tentative. Too much to post about however. I imagine that Damian has it posted somewhere though. Anyway, it was very cool.

Categories