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.
- Keep management off your back so you can get real work done.
- Make honest schedules everyone can live with.
- Track your progress effectively to avoid 11th hour rushes.
- Stop your project from stalling, or sliding backwards.
- Handle change requests without stress.
- Go from scapegoats to rock stars.
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