Apache Hacks
(20-minute talk, presented at the Pittsburgh Perl Workshop, October 2007)
Make Apache bend to your will! We'll look at two ways to have fun with apache and mod_perl.
First, we'll see how to write a simple Apache2 module that acts as an output filter (munging text in certain pages) according to parameters from your Apache configuration.
Next, we'll look at a more drastic modification - changing Apache::Registry itself to add some new behaviors, such as sending an email when a perl script dies.
This topic is based on modules developed at the Sol Genomics Network, http://sgn.cornell.edu. Attendees will be encouraged to adapt these techniques for their own nefarious purposes.
- Slides, notes, audio/video: coming soon
- Abstract and details on the PPW 2007 website
Under the Hood at a Bioinformatics Project
(20-minute talk, presented at YAPC, June 2007)
See what it takes to run a bioinformatics website like the one at sgn.cornell.edu that processes, catalogues, and displays genomic data. Our project is powered by six programmers, a couple terabytes of data, and a lot of perl code. In this 20-minute under-the-hood tour, I'll show what sorts of nucleotide-crunching a project like ours does, and what kinds of tools and machines we use to do it. Hear about our challenges and successes in maintaining databases, clusters, mirror sites and data-processing pipelines, and our work with the International Tomato Sequencing Project.
SGN (http://sgn.cornell.edu) is a bioinformatics project based at Cornell in Ithaca, NY, that studies tomatoes and their relatives - including potatoes, peppers, coffee, and other plants you may have heard of.
- Slides (pdf)
- Notes (txt) - there is info here that is not on the slides
- audio: mp3/ogg link coming soon
- Abstract and details on the YAPC 2007 website
Databases and the Virtue of Laziness
(20-minute talk, presented at YAPC, June 2007)
Why write Perl code that duplicates what your database can do for itself? You'll kick yourself when you see how much work you can save by coding smarter, not harder. Your programs will be simpler and run faster; they'll be easier to read, write, and debug. Plus you'll get better data integrity thrown in as a freebie! I'll show you some quick, concrete examples to put your newfound laziness to work right away.
- Slides (pdf)
- Notes (txt) - there is info here that is not on the slides
- audio: mp3/ogg link coming soon
- Abstract and details on the YAPC 2007 website
Make your database work for you
(45-minute talk, presented at the Pittsburgh Perl Workshop, September 2006)
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.
- Relive the experience through my slides and notes
- Abstract and details on the PghPW website
The Solanaceae Genomics Network: Data, Methods, Tools, and the Tomato
Genome
Poster, presented at the Plant and Animal Genome conference, January
2005.
- View the PDF of the poster
- Abstract and authors on the PAG XIII website