Mark Jason Dominus on Wed, 9 Apr 2003 21:59:08 -0400


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

[PLUG] Perl tutorials at U Penn on Monday April 14 and April 21



This year I'll be doing three tutorials at the big Perl conference in
San Diego.  One is entirely new, and one is substantially
refurbished. I need to practice these before I go to San Diego, so
I'll be giving the tutorials in Philadelphia this month.

If you were to attend in San Diego, you would pay between $250 and
$345 for each tutorial.  But you can come to my practice session for
less than that.  I am asking for a (voluntary) donation of $10.  If
this covers my expenses for the class, I will contribute 30% of the
surplus to the EFF, a non-profit legal action group devoted to
defending digital rights.  (See http://www.eff.org/ for details.)

The two tutorials are titled:

        Tricks of the Wizards (2003 Edition)

        Making Programs Faster: 
          Benchmarking, Profiling, and Performance Tuning 


                                 WHEN


Tricks of the Wizards: Monday, 14 April 2003.
Making Programs Faster: Monday, 21 April 2003.

Both tutorials will start around 6PM and will last until about 9:30,
including a 30-minute break in the middle.

                                 WHAT

Here are the brochure descriptions:

TRICKS OF THE WIZARDS
*********************

        This class will explore Perl's most unusual features.  We'll
        look at some of the standard modules written by famous wizards
        like Tom Christiansen, Damian Conway, and Larry Wall, and
        learn what they're for and how they work.

        First we'll investigate Perl's remarkable 'glob' feature.
        We'll see many uses of globs, including the 'Exporter' module,
        which everyone uses but hardly anyone understands.  We'll
        discuss how to accomplish the same globby magic in Perl 6,
        which won't have globs.

        After this we'll look at unusual uses of Perl's 'tie'
        function, which scoops the brain out of an ordinary Perl
        array, hash, or filehandle, replacing it with your own
        concoction.  We'll make hashes with case-insensitive keys,
        arrays that mirror the contents of a file, and filehandles
        that suppress annoying output.

        Then we'll learn about AUTOLOAD, Perl's function of last
        resort.  We'll see a tremendously useful application: How to
        generate the accessor methods of a class *without* writing
        pages of repetitive code.  We'll see how Larry's 'Shell'
        module uses AUTOLOAD to emulate the Unix shell inside Perl
        scripts, and how Damian Conway's 'NEXT' module uses AUTOLOAD
        for method redispatch.

        Section 4 discusses Perl's new "source filter" feature.  This
        magic allows you to write Perl programs in any language, and
        translate them to Perl at the last moment.  We'll add a
        'switch' statement to Perl and we'll see how Perl 5 can
        emulate the variable syntax of Perl 6.

        The class will finish with ten very small but useful
        enchantments that take thirty seconds each.


MAKING PROGRAMS FASTER
**********************

        Almost every application must be made to run faster; some
        sooner, some later. Performance tuning of applications has
        long been a dark art, understood by few and riddled with
        terrible pitfalls. Stories abound of optimization projects
        that took weeks but yielded a pathetic 2% decrease in total
        run time.  Don't let this happen to you.

        The class begins with a brief introduction to the basic
        concepts of performance tuning. We'll then take an extensive
        look at modules for benchmarking and profiling, including
        several common blunders that even experts commit when
        benchmarking. We'll finish with a discussion of a few of the
        most important optimizations.

        Throughout, the class will emphasize both high- and low-level
        approaches to performance tuning: when to tune and when to try
        something different, and if tuning is necessary, how to focus
        your efforts where they will do the most good. We'll learn how
        to rationally evaluate programming situations and when to try
        alternative approaches.

        Short introduction: Basic concepts and tools; CPU, wallclock,
          system, and user times; I/O, CPU, and memory-bound programs;
          'time,' 'times,' 'Time::HiRes'.

        Performance tuning tools: 
          Benchmarking: 
            The cardinal rule of benchmarking (look at the big picture)
            Benchmark.pm
            Common errors of commission and interpretation
              The incredible shrinking test case 
              When two optimizations look like zero
              The pseudo-hash disaster
            Case studies: Speeding up regexes, numerical calculation. 
         Profiling: 
            The 90-10 rule
            The Wrong Question
            The Innermost Loop
            Speeding up the case that never occurs
            Standard profiling modules
            Case study: high-turnaround XML processing. 

        Common optimizations;
          When common optimizations don't work.


                               WHARNING

These are NOT introductory classes.  Both tutorials are
intermediate-level Perl classes.  Basic familiarity with Perl is
assumed for both; "Tricks of the Wizards" requires some familiarity
with packages, objects, modules, and references.

A notice was circulated recently that asked "Interested in learning
perl?"  Anyone who is "interested in learning Perl" is probably not
going to get a lot out of these classes.


                                WHERE

The classes will be held in Heilmeier Hall (room 100, formerly Alumni
Hall) in the Towne Building at the University of Pennsylvania.  The
Towne Building is located at 220 South 33rd Street in Philadelphia.

For directions to the University, see

        http://www.facilities.upenn.edu/visitUs/

A map is available at:

        http://www.facilities.upenn.edu/mapsBldgs/view_map.php3?id=158


                                 WHO

According the the conference web site:

        Mark-Jason Dominus has been programming in Perl since 1992. He
        is the author of the 'Memoize', 'Text::Template', and
        'Tie::File' modules, the author of the 'perlreftut' man page,
        and an occasional contributor to the Perl core.  He won the
        2001 Larry Wall award for Practical Utility.

For more details about me, see

        http://perl.plover.com/yak/aboutme.html

For more details about classes I teach, see

        http://perl.plover.com/yak/


                                 WHOW

We have plenty of space this year, but please make an advance
reservation so that I know how many handouts to bring.  To reserve,
please send an email message to:

        mjd-tpc-practice-tricks+@plover.com
        mjd-tpc-practice-performance+@plover.com

or both.

Please do circulate this notice to any people or mailing lists that
you think might want to see it.

My grateful thanks go to Helen Anderson and Chip Buchholtz of the
University of Pennsylvania School of Engineering and Applied Science
for providing the space and AV equipment for these classes.

                                WHUH?

Questions?  Send me email.

_________________________________________________________________________
Philadelphia Linux Users Group        --       http://www.phillylinux.org
Announcements - http://lists.netisland.net/mailman/listinfo/plug-announce
General Discussion  --   http://lists.netisland.net/mailman/listinfo/plug