23 Sep 2006
Perl at Work

Approximation Algorithms in Perl

Presented by Walt Mankowski

Abstract

Your boss has given you a new assignment. Remembering back to that intro to programming course you took back in college, you realize that he's asked you to solve is NP complete. People smarter that you have been working on this since before you were born and haven't been able to come with any good solutions, so chances are you won't, either. So what do you do? It turns out that many NP complete problems have approximate solutions that are surprisingly close to optimal. Even better, many of them are really easy to code. This talk begin with a brief introduction to NP completeness, then show several simple approximate solutions to famous NP complete problems.

Details

Time
10:45 AM
Length
30 minutes
Room
pair Networks

Bring Your Smoke Tests to Life

Presented by Michael Peters

Abstract

So you've written your regression tests and you run them periodically, now what? Does your entire team respect them and run them before every commit? Do developers continue developing even though tests are breaking? Do some tests fail on certain machines and not others? How does your team share test results? Project Managers, can you verify that your test suite is actually working? All of these are good questions that need better answers than most development teams currently have.

Enter Smolder. Smolder is a stand-alone Smoke Test Server designed to fill all of those gaps. It is designed to be used by developers and testers to upload (automated or manually) and view smoke/regression tests using the Test Anything Protocol. TAP was invented by Perl programmers but is language agnostic with implementations in Perl, C, PHP, Python, Java and Javascript.

Test details and trends can be viewed in various formats (HTML, XML, YAML) and also received via email. This means that all developers can be immediately notified if the automated tests are failing and that Project Managers can instantly see the progress of the test suite.

As developers and project managers, we have bug-trackers, wiki's, version control and mailing lists. It's time to add one more tool to the kit and raise our tests suites to the next level.

Details

Time
3:00 PM
Length
30 minutes
Room
pair Networks

Having fun with stored procedures with DBIx::Fun

Presented by Al Tobey, Scott Kwilinski

Abstract

DBIx::Fun is a brand-new module on CPAN that takes a lot of the pain out of database interaction in perl by letting you call stored procedures as methods on perl objects as if they were written in perl. It already supports the Oracle and Sybase databases, and can be extended to support any RDBMS with stored procedures. This talk will demonstrate how to set up and use DBIx::Fun. It will also include how Priority Health has devised an MVC pattern around it that facilitates rapid web application development and promotes shared code between our perl, PL/SQL, and C++ developers.

Details

Time
3:45 PM
Length
45 minutes
Room
Socialtext

Higher-Order Design Opportunities

Presented by Sam Hume

Abstract

Higher-Order Design Opportunities aims to introduce functional programming design concepts to programmers whose world is dominated by OOP thinking. The goal, really, is to introduce new developers to these concepts gently, so they gain an appreciation for the power of these techniques. Of course, the topic was inspired by the MJD book "Higher-Order Perl".

The talk will highlight an ETL type application used to take clinical trial data generated by a major pharmaceutical company and transform it into a form suitable for reporting. The application was originally written in a most pedestrian fashion and violated the DRY principle. The application gets re-used, with modifications, for each new clinical trial the company runs (we do about 70 a year with this client). Each clinical trial is different, but there are significant common elements.

In order to reduce our work load, we needed to modify the application to maximize reuse and encapsulate as many of the core transformational algorithms as possible. Fairly straightforward functional techniques provided significant improvements in re-usability and overall quality.

Details

Time
1:45
Length
45 minutes
Room
Socialtext

Make your database work for you

Presented by Beth Skwarecki

Abstract

Some Perl programmers are SQL-phobic, and wrap database access so they don't have to look at it. But many of the common ways of doing this break the SQL up so it's hard to read, hard to maintain, and can't be optimized - and worse, they duplicate (sometimes badly) things the database can do itself, such as sorting rows, joining tables, or constraining data values.

In this talk we'll learn how to let the database do the work it's good at. As a result, your programs will run faster, they'll be easier to maintain and debug, and many of your grunt-work tasks will be done by the database no matter what program accesses it. (We'll accomplish this, in part, by triggers written in Perl that live in the database. Isn't that cool?)

We'll cover some common myths about getting down-and-dirty with the database (for example, that similar SQL must be repeated throughout the code) and bust them (for example, by making good use of views).

Then, after a tour of database features you never knew existed (and can't possibly live without) we'll look at a perl program that builds database searches by intersecting SQL sub-queries. This approach has advantages in both performance and code maintainability.

Details

Time
9:45 AM
Length
45 minutes
Room
Socialtext

Making Perl Work for You

Presented by brian d foy

Abstract

There's just not enough time in the day to get everything done, but most of the time our computers sit there doing nothing. I started my technology career in physics, where I started maxing out CPUs at 5 pm and kept it that way until 7 am. If someone wasn't using the computer, I had a Perl script doing something useful. I had better things to do, such as doing crosswords or playing Minesweeper. Given some Perl chops, you can get computers working for you rather than the other way around, so you too can spend more time with Minesweeper.

Details

Time
9:45 AM
Length
1 hour
Room
pair Networks

Perl DateTime Project

Presented by Dave Rolsky

Abstract

The Perl DateTime Project was started at the beginning of 2003 to create a set of interoperable modules covering all aspects of date/time programming.

Since the beginning of the project, several dozen modules have been created including a core date/time object, time zone modules, modules for numerous non-Gregorian calendars, formatting and parsing, and much more.

This presentation discusses general date/time concepts, such as time zones, UTC, calendars, and epochs, and then shows you how to solve date/time programming problems using modules from DateTime Project. Some of the areas covered will include how to handle data in for date/times in multiple time zones, date/time math, localization, formatting and parsing, set math with date/times, and more.

Details

Time
3:45 PM
Length
45 minutes
Room
Socialtext

Perl-Powered Extensions to MySQL: deferrable constraints and nested transactions

Presented by Len Budney

Abstract

The DBMS is normally tasked with insuring data integrity, but no DBMS provides a complete solution in this area. Triggers are often used to fill the gaps, but they don't work in all situations. Two important features needed by a modern DBMS, and not provided by MySQL, are nested transactions and deferrable constraints--the ability to defer constraint-checking until commit time. Both of these features can be implemented at the Perl layer, using existing MySQL features and Class::DBI's much richer system of triggers.

Details

Time
10:30 AM
Length
45 minutes
Room
Socialtext

Perl Logging Practices

Presented by Mike Fragassi

Abstract

There is a profusion of CPAN modules for handling logging tasks. The majority are very similar, typically providing a log object with a simple set of methods. In addition, a few provide much more complex frameworks, often with radically different terminology. In this talk, I will lay out the general pattern followed by all of the modules, where individual log method calls have their own levels, which determine whether each message is actually logged or not. I will then demonstrate how this is done with a few of the simpler CPAN modules, discussing the differences between these modules. Finally, I will overview the additional possibilities provided by the more complex logging frameworks, Log::Dispatch and Log::Log4perl, focusing on the potentially confusing aspects of their terminology.

Details

Time
2:00 PM
Length
30 minutes
Room
pair Networks

Perl Modules for Exceptions, and Parameter Validation

Presented by Dave Rolsky

Abstract

This talk covers a few different programming practices that can improve the quality of your code, focusing on available CPAN modules for these practices.

First, we'll cover parameter validation, assertions, and design by contract programming. Next, we'll talk about error handling, specifically return codes and exceptions.

The goal of this presentation is to help you expand your toolkit for writing reliable code in a defensive programming style.

Details

Time
11:30 AM
Length
30 minutes
Room
pair Networks

Practical Extraction with Perl 6

Presented by Nathan Gray

Abstract

With Perl 5 extracting data from semi-structured content required many regular expressions and lots of glue. Perl 6 has introduced (or stolen) the ability to specify multiple regexes within a package called a grammar. Additionally, transformations can be made on the regex match object before it is returned, allowing amazing flexibility and customization.

We will examine a simple document, such as a conference schedule, and extract interesting information, placing the extracted data in a structured document, such as YAML.

Details

Time
3:00 PM
Length
45 minutes
Room
Socialtext

Preventing Crisis: Project estimation and tracking that works

Presented by Andy Lester

Abstract

Everyone hates impossible schedules, but they're all too common. Don't accept them as inevitable: Prevent them! Learn how to improve estimates and quality with accurate project estimation and tracking that your customers will love.

Details

Time
1:30 PM
Length
30 minutes
Room
pair Networks

Talking to Managers

Presented by Peter Scott

Abstract

A somewhat whimsical yet practical look at how to bridge the chasm that separates geeks from managers. What gets in our way of promoting Perl to the suits, and what can we do about it?

Details

Time
3:30 PM
Length
1 hour
Room
pair Networks

The Tester's Toolkit

Presented by Pete Krawczyk

Abstract

To be announced.

Details

Time
2:00 PM
Length
30 minutes
Room
pair Networks

Thermd - an environmental monitoring, logging, graphing, and reporting engine

Presented by Daniel V. Klein

Abstract

Five years ago, thermd started out as a simple temperature monitoring daemon using a $20 sensor kit. In the intervening time, it has grown to be a CGI script, graphing program, and documentation system (all with the same program) that supports a variety of sensors from a wide variety of manufacturers (including temperature, weather, environment and most recently power consumption). This talk documents not only the growth of the software, but the design choices, implementation techniques, mistakes and triumphs made in this science-project gone wild. You can see the latest incarnation of the system at http://www.klein.com/thermd/.

Details

Time
1:00 PM
Length
30 minutes
Room
pair Networks

Writing an "Enterprise Scheduler" in Perl using POE, DBI, and SSH

Presented by Al Tobey

Abstract

I'll walk through the process of assembling an application that is relatively simple compared to the dependency graph it is capable of executing. The basic database schema, event loop(s), inter-host communication, and security will be covered in detail. While the scheduler isn't open source (for now), I can present all of the logic needed to make it possible for any competent programmer to roll their own.

Details

Time
11:30 AM
Length
45 minutes
Room
Socialtext