Title: Getting Started with mod_perl Author: Stas Bekman Session: FRI 09:15-12:15 Duration: 165 Description: received Who Should Attend: Programmers with basic Perl and Apache experience who wish to get started with mod_perl. Explore widely used strategies of coupling mod_perl with another Apache server or/and Squid proxy server to improve performance and reduce system requirements. Learn to port and develop CGI scripts and modules under mod_perl, about persistent database connections and various performance tips. Course Outline: Basic Installation and Configuration Real world strategies: light vs heavy server, mod_proxy and squid. Porting existing CGI scripts Developing code under mod_perl mod_perl and RDBMS databases Performance improvement tips Handouts: a 100 pages handouts in pdf (in addition to the course slides) A PC with loaded Linux and ghostview utility. (I don't own a laptop). Title: Object Oriented Programming with Perl Author: Johan Vromans Session: FRI 09:15-12:15 Duration: 165 Description: received This training will cover: * What is object oriented programming, and why do we need it? * Basic principles (encapsulation, inheritance, polymorphism). * The Perl way of object orientation. * Detailed case study. * Perl modules for object oriented programming. Upon completion, the attendants will be capable of writing basic object oriented Perl programs, understand existing programs, and know how to find and understand additional information. This training does not include hands-on. Prerequisites ------------- Trainees must be able to write and understand Perl programs and be familiar with references, packages and modules. Documentation ------------- The course documentation consists of a copy of the sheets used during the training. Title: Writing Solid Perl Author: Michael Schwern Session: FRI 13:30-16:00 Duration: 135 Description: not received Title: Building and Managing Web Systems with the Template Toolkit Author: Andy Wardley , Simon Matthews Session: FRI 13:30-16:00 Duration: 135 Description: received Introduction ------------ * Why use templates? * Why use the Template Toolkit? * What it looks, feels and smells like. Using the Template Toolkit -------------------------- * The Template Toolkit utilities - tpage: process template files - ttree: process entire directory trees, like 'make' * The Template.pm module - command line - CGI scripts - Apache/mod_perl handlers Template Language ----------------- * Template syntax and directive style * Template variables and code bindings (GET, SET, CALL, etc.) * Template components and modularisation (INSERT, INCLUDE, BLOCK, etc.) * Logical tests (IF, UNLESS, ELSIF, SWITCH, etc.) * Loops (FOREACH, WHILE, NEXT, BREAK, etc.) * Error handling (TRY, THROW, CATCH, etc.) * Filters (FILTER) * Plugins (USE) * Macros (MACRO) * Perl (PERL, RAWPERL) Template Plugins ---------------- * Date - generated formatted date strings * Table - format data into tables * CGI - interface to CGI.pm for CGI scripting * DBI - Database Interface * XML::RSS, XML::DOM, XML::Simple, etc. Power Playing ------------- * Advanced examples * Writing filters * Writing plugins * Putting it all together Title: YAS and YAPC: Reclaiming Civil Society Author: Kevin Lenzo Session: SAT 10:30-11:15 Duration: 45 Description: not received Title: Art and Open Source Author: Simon Cozens Session: SAT 10:30-11:15 Duration: 45 Description: received In his influential book, "Two Cultures and the Scientific Revolution", CP Snow discusses the cultural divide between the realms of science and art. These two cultures must be re-examined in the light of the Open Source movement, which gives us an opportunity to bridge the gap. We will examine to what extent the philosophies involved in the Open Source movement can influence, or have already influenced, the artistic culture. We will also attempt to examine how artistic movements can be correlated with Open Source philosophy. Title: Docserver--using the network to overcome proprietary formats Author: Honza Pazdziora Session: SAT 11:30-12:15 Duration: 20 Description: received When our users wanted a way to read proprietary Word documents in Unix environments, we evaluated a couple of solutions, most of them trying to write independent converters from these propriatery binary formats to plain text. But nothing seemed to suit good enough. So we decided to use the original MS converters. Obviously, they need to run on the MS machine, and Docserver/Docclient solution allows sending the input file to the remote MS machine, run Word to produce the converted output, and get the output back. The presentation will show the internals of the solution because the setup has been very stable and we believe that similar approach could be use in different situations as well. Perl and its network capabilities allows to glue many things together to many things, and it is reasonable to exploit it to interconnect incompatible worlds as well. The RPC::PlClient RPC::PlServer framework by Jochen Wiedmann provides object oriented interface to calling actions on remote machine, and that machine can also be non-Unix host. Title: Perl 6 Roundup Author: Brian Foy Session: SAT 11:30-12:15 Duration: 20 Description: received At TPC 4 Larry Wall announced that "work has begun in earnest" on Perl 6. Initial plans were made to divide up the work and to reinvent the development model and the community of Perl to handle the large nature of the task of rewriting Perl from the ground up. This talk will summarize the progress to date and present the plans for the immediate future of Perl 6 development. This talk is intended as an overview rather than a discussion. A transcript will be available at the conference. Due to the dynamic nature of the subject, advance transcripts cannot be made available. Title: Generating Abstract Art Using Perl Author: Duncan White Session: SAT 11:30-12:15 Duration: 20 Description: received Perl has already proven itself to be an extremely capable tool in the linguistic arts - generating artificial haikus and other poetry, for instance - due to Perl's excellent text-handling facilities. When one looks at the visual arts, however, it is quite a challenge to see how to use Perl to construct works of artificial visual art, essentially because very few of the visual arts lend themselves to an algorithmic treatment. Imagine trying to write a program to paint someone's portrait! Of course, Perl has excellent support for producing images in a portable way - modules such as GD for 2D drawing, Tk for user interfaces, the GIMP and PerlMagick for image manipulation (to name but a few), so where it is possible to describe a form of art algorithmically Perl will enable us to visualise the results easily. In general, the more stylized and constrained forms of visual art are likely to be more amenable, whereas more free-form and unconstrained forms of art are less likely. So, what sort of forms of visual art are there, where Perl (and other computer languages) might be able to construct non-obviously artificial works of visual art? First, a rather obvious candidate - fractals and other forms of complex geometrical 2D art that grow out of mathematics. Many fractals are extremely beautiful and have fascinating depths to them - just read Mandelbrot's Fractal Geometry of Nature for inspiration. Other forms of geometrical visual art might be, for instance, Islamic space-filling patterns, lacework doilies and pin-and-thread pieces. Second, semi-realistic 2D and 3D renditions of plants and other natural structures have been achieved using Aristid Lindenmayer's L-systems formalism and the well-known Turtle Graphics interpretation of L-systems. These techniques could be used to generate slightly stylized plant portraits - especially effective in a Japanese style on a jet black background - or (with more work) natural looking scenes. Third, raytracing of 3D models has been extensively used in generating photo-realistic images in blockbuster Hollywood films (Jurassic Park etc), although not so far in Perl (as far as I know). A relatively simple artistic application of this technique might be to produce still-life images like the traditional bowl of fruit on a table, perhaps placing the fruit automatically by a random placement and packing strategy - effectively shaking the fruit into a packed arrangement. However, away from the rather constrained still life art form, most works of visual art do not (and should not!) look photo-realistic - much of the emotional impact is achieved by subtle brush stroke techniques. Very little work has yet been done on producing images with more of a painted feel, although some image manipulation transformations in the Gimp, ImageMagick or PhotoShop make a fairly feeble attempt at this. Fourth and finally, certain forms of highly simplified art - Chinese watercolours that are highly stylized (and skillfully done with only a few brush strokes) might be achievable, and certain forms of abstract art certainly lend themselves to a Perl-based approach. Here, I will concentrate on one particular period of work by my favourite abstract artist - the great abstract artist Piet Mondrian (1872-1944). From about 1912 until his death in 1944, he became interested in space, structure and form, and developed a totally original abstract style based on a single theme - irregularly spaced horizontal and vertical lines dividing a white canvas into rectangular regions, with most of these regions left white, but a few of them being coloured in, usually in bold primary colours (he particularly liked yellow, blue and red). These artworks are beautifully simple and understated, totally abstract, and happen to be relatively easy to simulate via algorithms. Of course, I should point out that Mondrian did not stick to one near-algorithmic style his whole life - he was was an accomplished painter of flowers and landscapes before he ever settled on his abstract style, and even in his abstract style, he experimented continually with different variations on the theme, producing a wide range of abstract artwork. In this talk, I will show a series of Perl programs that I wrote in 1998-99 (largely to familiarise myself with the GD graphics library in an interesting way), which experiment with partitioning the plane in different ways, and use randomness to produce an infinite number of Mondrian-esque images which can be then wrapped up into a web-based generator using the CGI module. While this is just a start - only tackling one period of one artist in a simplified way - I hope that these programs may act as a spur to others to investigate other forms of visual art and see what Perl (and computers generally) might be able to do - and just as importantly, what they can't do.. I wonder whether a computer program could simulate a Whistler nocturne someday soon, for example? Among landscapes, these must be the most abstract, and might be relatively easy to simulate via algorithms! Title: Generative Perl Music Author: Alex Mclean Session: SAT 11:30-12:15 Duration: 20 Description: received I'd like to talk about making generative music with Perl, with live demonstrations. This will draw heavily of the generative music pieces myself and fellow generative musician Adrian Ward have been creating. I enjoy the technicalities of programming but don't enjoy talking about them, so I will focus instead on the ideas behind what myself and Ade do. This would probably include things like: o Exploration of polyrhythms -- demonstrating how good very simple algorithms can sound, particularly to the ear of a programmer. o Demonstration of transforming 'natural' sources such as birdsong and mailing list archives into electronic music. Talking about how, in contrast to popular opinion, computers can bring music closer to the outside world. o Process-based music. How music can live in the totally abstract environment hosted by a computer, with the musician/programmer in total control. How pseudo-randomness can result in ever-changing musical pieces, taking the programmer and listener to worlds seperated from our own. o To conclude, I'll talk about Perl. Why I gave up using sequencers many months ago and now write all my music in Perl. Title: Who Dares Wins (taming the SAS system with Perl) Author: Jeremy Gurney Session: SAT 14:00-14:45 Duration: 5 Description: received In an effort to make life as a SAS programmer easier we have produced a set of Perl powered intranet tools to help maintain our in house SAS applications. The tools greatly simplify the management of SAS source code and make it much easier for a programmer to follow the flow of linked programs. The techniques used could be applied to other programming languages with little modification. The talk gives an overview of the features of the finished application (e.g. presenting SAS code as navigable HTML) and outlines how Perl was used to find solutions for the problems encountered. Title: Perl Monger World Map Author: Leon Brocard Session: SAT 14:00-14:45 Duration: 5 Description: received How the map came to be, how it's generated, and what problems I've had to work around Title: Sub::Approx Author: Dave Cross Session: SAT 14:00-14:45 Duration: 5 Description: not received Title: The Compleat Perl Internals Author: Simon Cozens Session: SAT 14:00-14:45 Duration: 5 Description: received Simon Cozens will explain the entirety of the Perl 5 internals. In 5 minutes. In verse. Title: Perl6 Quality Assurance Author: Michael Schwern Session: SAT 14:00-14:45 Duration: 5 (shortened) Description: not received Title: Nouns Author: Mark Summerfield Session: SAT 14:00-14:45 Duration: 5 Description: received Reflections on names and namespaces. Title: How not to abuse regular expressions Author: David Landgren Session: SAT 14:00-14:45 Duration: 5 Description: received The exhilarating power of Perl's regular expressions can lead programmers to try and use them for everything, everywhere, all the time. Other functions in the Perl toolbox can offer Another Way To Do It. Title: Obfuscation Author: Philippe Bruhat Session: SAT 14:00-14:45 Duration: 5 Description: received Obfuscation is just another way to talk to the machine. The main difference is that human understanding of your code is not desirable. As always, machine understanding is seeked, and achieved (most of the time). My most impressive obfuscations are on the thin line that separate two languages : * for OPC4, I had a wc that was both Perl and C * for OPC5, I sent a program that was both Perl and postScript, and another that was a boustrophedon (and quite a few others too) There is a big difference between art and progamming: once the partition (source code) is written, each time it is played, the interpretation is perfect. The machine does what it has to do, what is written exactly. The only differences are in the context, in the audience. The performer performs always the same, each and every time. Whereas in music or theater for example, each performance is unique, and depends a lot of the performer. This has not only to do with the language as in computer language, but also as in literature. As an avid reader of the works of Oulipo (Ouvroir de Litt\351rature Potentielle, in english Workshop for Potential Literature) writing an obfuscated text can only mean using formal constraints. I will list constraints can be used for obfuscating code: * size limits (256, 512, 1024, 2048 in OPC) * make the statements of one language work in another (using tricks such as void context, comments, etc) * formal constraint (non language-imposed) such as acrostic, boustrophedon, lipogram and such (for example, $A+=1 can be written without alphanumerical characters as ${'@'|'!'&~'"'}-=$#$+${""}-${''} ) Title: Using HTML and Perl without Templates Author: Andrew Ford Session: SAT 14:00-14:45 Duration: 5 Description: received Template systems such as ASP, Embperl and Mason obviously have their uses, but often HTML production is farmed out to non-programmers, who have problems with the extensions. This talk presents a web site workflow system written in Perl that amongst other things allows the HTML and Perl to be produced separately and then combined in a rigorous manner. Title: Tangram Author: Jean-Louis Leroy Session: SAT 14:00-14:45 Duration: 5 Description: received 1. Meta-information The text in square brackets describes the slide on the overhead projector. [UML] is a UML diagram. [Perl] is a fragment of Perl code. [SQL] is a fragment of SQL code. [tables] show database tables. 2. It's about objects! Take a simple class, for example Person [UML diagram]. A Person has a name, a first name and an age. In Perl, you can represent it as a blessed hash [Perl]. Using DBI, you can store Person objects in a relational database, one object per row and one column per field [SQL]. Easy, but tedious: you will need to name each field 4 times at least: in the CREATE TABLE, INSERT, UPDATE and SELECT statements. 3. Look Ma, no SQL! You don't need to write and maintain all that SQL anymore, thanks to Tangram. Just create a Schema [Perl] and declare each persistent field there. Once. Tangram will build the SQL statements for you [Perl & SQL]. 4. Inheritance and Polymorphism If your class has bases [UML] Tangram spans instances across several tables. That's the vertical mapping [tables]. You can retrieve objects via a base class [Perl], for example, selecting all the Persons yields a mixture of NaturalPersons and LegalPersons. Thus Tangram supports polymorphism. 5. Relations A Person has children, a Company has employees and a manager [UML]. This is expressed as foreign keys and link tables in SQL [tables]. Objects OTOH express the same concepts via references and collections. Tangram transparently maps between the two, loading relationships on demand [Perl]. 6. Filtering There's something that SQL does real good though: filtering. Tangram lets you tap the power of SQL where-clauses via an object syntax [Perl]. 7. Identity Now what happens when you retrieve all the Simpsons, and then all the Homers [Perl]? Do you end up with two Homer Simpsons? Fortunately not: the second select returns the Homer already present in memory. 8. Availability You can get Tangram from CPAN or from its website http://www.tangram-persistence.org; you can access the documentation online there. Title: Why SQL in Perl is Bad, and What You Can Do About It Author: Hugo van der Sanden Session: SAT 14:00-14:45 Duration: 5 Description: not received Title: Why perl6 Design is So Hard Author: Nathan Torkington Session: SAT 14:00-14:45 Duration: 5 Description: received I have choked at many of the suggestions made for perl6. I will explain why it is hard for people to come up with changes to Perl that aren't garishly out of place. Title: DocBook for Perl Documentation Author: Nik Clayton Session: SAT 14:00-14:45 Duration: 5 Description: not received Title: The Geek from Uluru Author: Gregory Tod Session: SAT 14:00-14:45 Duration: 5 Description: received A ballad concerning the exploits abroad of the laconic Bruce Hogan - how he finesses the coding problem, foils the dastardly Reginald St. John Widget (or some equally droll appellation yet to be finalised) and gets the girl. Title: Perl Advocacy in Italy Author: Aldo Calpini Session: SAT 14:00-14:45 Duration: 5 Description: received We present the state of Perl in Italy, at least from our experience of programmers, employees and mongers. We will show our projects for the www.perl.it website, an idea for a local "official" Perl site to help build a stronger community and culture. Title: kstat(1): The first Perl command in Solaris Author: Alan Burlison Session: SAT 14:00-14:45 Duration: 5 Description: received A new command appeared in Solaris 8 - kstat(1). This utility is the first perl command to be shipped with Solaris, and it was made possible by the integration of perl into the Solaris source tree. kstat(1) allows the internal Solaris performance statistics to be displayed and monitored, using the Sun::Solaris::Kstat module which also shipped with Solaris 8. This module takes an underlying function-based Solaris API and presents it as a perl hash, using an XSUB to create a tied perl hash. Work is continuing to add further perl based utilities to Solaris. The intention is to expose further Solaris APIs via perl XSUB wrappers, and the intention is to offer perl as a 'first-class citizen' for scripting on Solaris. Title: How to write an internet server in half an hour Author: Charlie Stross Session: SAT 15:00-15:45 Duration: 20 Description: received NetServer::Generic is a Perl module intended to allow relative novice Perl programmers to write TCP/IP servers. It hides the complexity of socket programming behind a simple "read from STDIN, write to STDOUT" face. In this talk I'll explain what a server is, why you might want to write one, and how to write a simple server using this module. I'll also cover the system's weaknesses and give some suggestions for where you might go if you want to write a mission-critical server. Title: Why and how to use Cache::Mmap Author: Peter Haworth Session: SAT 15:00-15:45 Duration: 20 Description: received The Cache::Mmap module allows multiple processes on the same host to share a data cache. It presents a simple, transparent API, so that users need not be concerned with keeping the cache up to date, or with writing data both to the cache and to the underlying datastore. This talk presents situations where a shared cache would be useful, and outlines the various options of the Cache::Mmap module. Title: Dynamic Flash with Perl Author: Mark Fowler Session: SAT 15:00-15:45 Duration: 20 Description: received Background of the Shockwave flash file format, its advantages and limitations; Proposed solution to limitations : Server side movie generation with Perl; Discussion of work carried out so far, the pitfalls encountered, and what has been done to surmount them; Example applications and demonstrations. Title: unknown Author: unknown Session: SAT 15:00-15:45 Duration: 20 Description: not received Title: Data Munging with Perl Author: Dave Cross Session: SAT 16:00-16:45 Duration: 20 Description: received Most of the computing tasks that go on from day to day involve taking data in one format and converting it to another format. This is colloquially known as "data munging". Data munging tasks can range in size from grepping for a particular word in a text file to processing a payroll run for a multinational comapny. Data munging can be broken down into four separate processes: * Data Recognition (finding the data that interests you within your input stream.) * Data Parsing (getting the data into a form that you can work with.) * Data Filtering (removing unwanted data items or summarising required ones.) * Data Transformation (changing the format of the data from that supplied by your input stream to that required by your output stream.) This presentation will demonstrate how Perl is a language which is able to deal with all of these processes in a way which makes a developer more efficient than with almost any other language. We will also look at some general principles which can be very useful when munging data. Whilst it is largely aimed at developers who are not very experienced with Perl, it is hoped that it will help everyone to look at data munging problems in a different way. Title: 12 Step Perl Author: Piers Cawley Session: SAT 16:00-16:45 Duration: 20 Description: received "My name's Piers and it's been 24 hours since I last wrote some code that was so clever I can't understand it now". Sure you can have guru sessions and clinics where Big Names in the Perl world show you how your code can be cleaner, faster and less likely to spew out warnings under -w. You are using -w aren't you? 12 step perl is different. Deep down, I'm quite sure that all those great and good perl ghods are actually recovering addicts. Addicted to grungy code, clever hacks and idioms so thick that you're amazed there's any code there. Have *you* ever written a chunk of 'real life' code and found yourself thinking "If I changed that bit there, and that bit, I'll have a JAPH to rival Abigail"? Have you ever used a complicated Schwartzian Transform to sort an array that was never going to have more than 10 elements? Perpetrated self modifying code to save time at project build time? Messed with the symbol table and used soft refs because, well, you could? You have? Well, come and get it off your chest in the supportive of environment that is Manglers' Anonymous. We've all been where you are, and we feel your pain. My name's Piers, and it's been a week since I screwed around with globs. Title: Teaching Perl as a Foreign Language Author: Pete Sergeant Session: SAT 16:00-16:45 Duration: 20 Description: received Of the major computer languages in use today, it would be possible to label perl as the most similar to human language, with its "TMTOWTDI" approach allowing a programmer to choose their personal mix of idiomatic language and elegance. As a result, Perl can either be seen as the perfect starting language for a new programmer, or one of the worst. The talk aims to study how learning perl and other languages differ, and the advantages and disadvantages of learning in different ways. The talk will also look into the similarities between learning human languages and computer languages, and what teachers of perl can learn from the teachers of human language. Having learnt perl as a first language, and then learnt other afterward, and having been taught all languages I speak as a foreign language, as well as having taught associates foreign languages and perl, I feel I can produce a well-structured and interesting speech. Title: Parsing Ancient Greek and other obsolete data formats with Perl Author: Peter Heslin Session: SAT 16:00-16:45 Duration: 20 Description: received It may be a surprise to hear that of all the disciplines among the Liberal Arts, one of the first to make eager use of computer technology was Classics, the study of Latin and Ancient Greek, and yet this early adoption has had its drawbacks. If one were to start today to encode complex and often fragmentary early works of Greek literature, one would probably use Unicode and XML. There already exists, however, very large collections of Latin and Greek texts which have already been encoded using fairly clumsy ad hoc protocols developed long ago. The largest such collection is the Thesaurus Linguae Graecae, or Treasury of the Greek Language, which now nearly fills a CD-Rom. The original tool for searching this corpus was a chunk of hardware known as Ibycus, a 68008-based machine designed by David Packard, Jr., son of the HP co-founder. These custom-built machines were difficult to maintain, and so, as personal computers became widespread, various software search programmes were developed for both the Mac and Windows platforms. There was, however, no free search tool, nor one with the flexibility I wanted, nor anything at all that would run under Linux, so I began to write my own tool, called Diogenes. It now consists of a Perl module, a command-line interface and a CGI front-end. The CGI programme can display Greek as HTML with Unicode, or if the necessary Unicode font is not available, it can generate GIF images from LaTeX. I had expected that a tool written written in Perl would be handicapped with respect to speed, but it has been reported that Diogenes runs as fast or faster than other programmes written in C. My talk will be comprise a brief history of the TLG, the Ibycus machine and other search programmes, a discussion of the unusual data format used in these corpora of texts and the particular problems it posed. I will show some samples of Ancient Greek poetry as output by Diogenes, and I will discuss some of the more interesting or fun bits of Perl in it. I will conclude by enumerating some of the qualities that made Perl an excellent and surprisingly speedy solution to a problem that had previously only been approached at a much lower level. Title: How and Why Perl/Tk Replaced 4GL for the Registers of Scotland Author: John Clutterbuck Session: SUN 11:00-11:45 Duration: 45 Description: received Registers of Scotland (RoS) Executive Agency is a UK Government Agency that holds information about ownership of land and property in Scotland. The Land Register is a property-based database of all registered land and includes data elements such as location, ownership, and charges and conditions that affect a property. The Register guarantees title to the property and gives state indemnity to that title. As required by law, all of the data elements must be registered on sale, change of title, etc. of a property. The original "system" consisted of paper-based property plans plus a mainframe text/ word processing system for title details as well as some indices. In 1994, Siemens supplied the initial fully-computerized Land Register System (LRS) for three counties. This was a 4GL system with a mix of Windows 3.11 and Solaris clients. In 1996-7 Siemens converted the remaining counties over to the new LRS application. This extremely complex data conversion needed to extract the relevant property, ownership, charge, and burden information from approximately one-half million poorly structured ASCII text documents. After a false start, Perl (4.0) rescued this job via some extremely complicated scripts using vast regex patterns. Primarily because of DBI, Perl steadily became the language of choice for more and more server-based aspects of the entire application. Ultimately included were general admin and reporting scripts as well as online interfaces with other systems in the Agency (Finance, MIS, Digital Mapping, and other Register applications). During 1998-1999, and impressed with the success of our trials with Perl/Tk, the Agency agreed to our bold plan to re-engineer all of the applications with Perl/Tk. This was driven by Y2K changes, a new desktop strategy (NT and Suns) and avoidance of new licence costs for the still limited 4GL technology. Development started in earnest in the beginning of 1999 using a small team; by the end of 1999 the system had been rolled out to over 800 clients with 11 servers. LRS2000 is a complex business system - yet with Perl/Tk we reduced the number of screens from 200 down to 50; Perl/Tk also gave us a readily customizable application. There have been numerous problems along the way - some small, some avoidable with foresight (and RTFM), and some not so small. The application is now working well and is in daily use for all Land Register production work. The Land Register currently holds details on 600,000 titles in 22 counties with 95,000 transactions per year. I plan to give a brief overview of the project, show some examples of what the application looks like and recount some of the Perl experiences we have had. Title: Perl/Gtk Programming Author: Paolo Molaro Session: SUN 11:00-11:45 Duration: 45 (shortened) Description: received The Gtk+ library provides a novel way to develop graphical applications. This library (with the associated Gnome, OpenGL, HTML and image libraries) can be used in Perl with the Gtk-Perl modules. The distinctive features of the binding will be explaind as well as the differences between the Perl interface and the C one: this includes the mapping of the Gtk+ object model in Perl packages and the handling of enumerations and flags. The usual "Hello, world!" kind of application will be inflicted on the attendees, explaining the differences with the existing Perl/Tk approach. More advanced examples of usage will be shown later: a 50 line web browser and the use of Glade for (visual) rapid application development. A new style of embedded documentation for XS modules will be presented along with the reference documentation for the Gtk modules (yes, Virginia, we got documentation:-). Title: Graphing Perl Author: Leon Brocard Session: SUN 12:00-12:45 Duration: 20 Description: received This talk will introduce the user to the graphing of Perl programs and data structures. Data structures are clearly quite suited for viewing as a graph due to their heirachy, and I will present methods for doing this (for example, see [1]). I will also present modules which interface to the Perl debugging API to provide useful features such as code coverage, code profiling[2], and call trees[3]. Most of the examples will use the popular GraphViz tool. [1] http://www.research.att.com/sw/tools/graphviz/examples/directed/datastruct.html [2] http://www.research.att.com/sw/tools/graphviz/examples/directed/profile.html [3] http://www.astray.com/calls2.png Title: Networked IrDA from Windows and Perl Author: Marc Mosthav Session: SUN 12:00-12:45 Duration: 20 Description: received Communication via infra red is a nice thing. Starting with Windows 2000, Microsoft is using the network API for this. Unfortunately they are not using it in the standard way, which means that you have to utilize Win32::API so that you can use the MS functions from Winsock 2. This talk will describe the steps necessary and the problems related with this approach. Title: Speech and Perl Author: Kevin Lenzo Session: SUN 14:30-15:15 Duration: 20 Description: not received Title: Data::Locations Author: Steffen Breyer Session: SUN 14:30-15:15 Duration: 20 Description: received The Data::Locations module implements a very useful but widely unknown concept. One could even say a paradigm. Because it is so widely unknown, it is somewhat hard to explain (therefore I think a talk could improve matters in that respect), also because it is difficult to find a good real-world equivalent for illustration. This happens with other great paradigms, too - just think of regular expressions, for instance. For people unfamiliar with the concept, it's like a book with seven seals... And try to find a real-world equivalent in order to illustrate it - almost impossible! (Cars with different types of engines are a little far-fetched, IMHO :-) ) You can regard the module as a virtual file manager which allows you a quasi-random access to sequential files (which reside in memory for greater efficiency). Every such virtual file is a container for data with an inherent sequential order, or an object, in OO parlance. (In practice it's basically a Perl array blessed into the object class implemented by the module.) Moreover, the module offers the possibility to put placeholders into any such virtual sequential file, where you can later insert additional data. Imagine writing a book and putting a bookmark where you intend to insert some chapter later, after you finished writing the rest of the book, or at least some of the chapters immediately following the bookmark. You can even put more of these bookmarks into that bookmarked chapter while you are writing it, i.e., you can nest the corresponding containers. And just like in writing a real book, you can work in many places in parallel in this way: Adding something here, something there, or throwing away something somewhere else. Think of soap bubbles and how you can create bubbles inside of existing bubbles by using a straw: Each bubble is a container (the object), and the straw is the object's handle (a blessed reference in Perl). You can also get at the contents of any bubble and even deflate it with that straw. Note that (in contrast to soap bubbles), you can insert any amount of data you wish into any such container, there is no size limit (your machine will actually swap parts of its memory to disk if your data structures grow too large). Thus this module allows you to create and store data in a different order than the order in which the data is to reside on disk (or in memory) later - without the need for temporary files, which is the commonest strategy to achive this. By recursively traversing the "bubbles" or nested data structures, it is possible to "flatten out" the data contained in the various containers. Just like sorting all the loose parts of your book into the right order and then printing it out in its final form and order. Title: Bit::Vector Author: Steffen Breyer Session: SUN 14:30-15:15 Duration: 20 Description: received The Bit::Vector module implements bit vectors of arbitrary size. Not very sexy, you may think. But actually bit vectors are the base of most, if not all, computations performed by a computer! The numbers and strings and other types of data a computer processes are all represented internally as vectors of bits. You usually call them bytes, ints, longs, floats, etcetera. But computers cannot have registers in their central processing units with an unlimited number of bits. They have to have a fixed width. Can you still remember the days of 4 bit processors (example: TI-59), then came the 8 bit processors (6502, Z80, for instance), then 16 bit processors, 32 bit processors - and right now, we are entering the realm of 64 bit processors? There you are. Now what the Bit::Vector module does is to provide you with registers of unlimited (but fixed) size. And you can also grow and shrink your registers at will. It does so by using your computer's registers, whatever size these are, and your CPU's built-in operations for processing them, for maximum efficiency. Moreover, the module provides methods (and overloaded operators, for maximum ease of use) for various common applications, i.e., things you frequently do with registers in a computer, and some more. There are methods for performing arithmetic operations (addition, subtraction, multiplication, division, modulo, greatest common divisor, exponentiation), logic operations (shift left, shift right, bitwise and, or, xor etc.), methods for accessing individual or chunks of bits, methods for inserting, deleting, copying and reversing bits, search functions, matrix functions, functions for dealing with sets - almost anything you usually do with registers in a computer (but no floating point arithmetic - yet?), except with unlimited precision! The talk will try to show various applications for this module. Title: Perl Project Management Author: Greg McCarroll Session: SUN 15:30-16:15 Duration: 20 Description: not received Title: Managing a Consulting Business with Perl, Mason, and MySQL Author: Reuven M Lerner Session: SUN 15:30-16:15 Duration: 20 (shortened) Description: received I have worked as a Web/database consultant for about five years. Over time, I have begun to work on larger and larger projects, and have hired programmers to work with me on some of those projects. Given that all of our work is on a per-hour basis, and that each employee (and project) has a different billing rate, I soon realized the need for a system to keep track of how many hours each person worked on each project. Once I developed the basic system, I began work on a system that would, via a Web interface, print nicely formatted invoices (in triplicate, of course). This talk will present, for the first, time, my accounting system. It uses a combination of Mason (a Web development environment based on mod_perl and Apache), MySQL, and LaTeX. I will describe the basic approach with this system, and ways in which I have expanded it and used it in my work over the last 18 months. I will then describe future directions for this project, which I expect to release under the GPL in the fall. Title: Shopped: Perl makes online shopping a steal Author: Ian Portman Session: SUN 15:30-16:15 Duration: 20 Description: received Shopped takes advantage of those things Perl is best at -- pattern matching and file processing -- to create a portable, extensible, very fast online shop. The application is designed to be easy to use -- I mean by someone with a very few basic computer operating skills -- robust and scalable. It allows the user to name a shop, create departments, stock them either manually or from a pre-existing database, add images of goods if needed, determine page layouts, backgrounds, font styles as required and make changes interactively. Then the finished e-mporium is uploaded to wherever you want from within the app via FTP. The main module I rely on is Perl/Tk for the GUI, which, despite its occasional syntactical quirks, is elegant, flexible, remarkably stable and -- for my purposes -- quite fast enough. And, for those who don't have Perl installed, I have used the excellent Perl2exe to make a standalone app. The finished shop takes advantage of the object-oriented talents of JavaScript to effect a searchable product database, a dynamically-generated department display, an instantaneous, client-side shopping cart and an (optional) Secure Socket Layer connection for basic data protection. My talk will offer a quick tour of a finished shop and then scrabble around in the innards of the application for juicy tidbits. Title: PApp--New Ways to Web Site Development Author: Marc Lehmann Session: SUN 15:30-16:15 Duration: 20 (shortened) Description: received Some time ago I had to develop yet another cgi script, and after that I swore not to ever do CGI programming again. To escape CGI-hell I started to do my own environment, based on Apache/mod_perl. While the chances that it will ever be finished are very low (beta versions are on CPAN, however), I combined a lot of interesting technology to create an environment that at least allows me to quickly code complex applications with the minimum amount of redundancy. The main objective of this talk is not just to describe these features, but also how and why they were implemented, using the latest features of perl-5.6 and a lot of "standard" perl modules. These include: - automatic session/user tracking - application/site-centric: papp has stopped using the one-file-one-page methodology. - full state management: session variables will be handled in a secure and fast manner (not handed out to the client) and are persistent within the whole application or site - easy and in-bult i18n: __"translations are as easy as this". - xml/xsl: xml allows embedding and grouping of applications, xsl allows to customize styles of pre-built-components ("webwidgets"). See also http://papp.sourceforge.net/ Title: Class::Tom Author: James Duncan <> Session: SUN 12:00-12:45 Duration: 20 Description: not received Title: Managing and Munging Content for Enhanced TV with Perl Author: Chris Young Session: SUN 12:00-12:45 Duration: 20 Description: not received Title: XML::Generator : Practical Magic Author: Benjamin Holzman Session: SUN 14:30-15:15 Duration: 20 Description: received XML::Generator, a modest module that simplifies the generation of well-formed XML, makes effective use of two somewhat obscure magical features, specifically sub AUTOLOAD and overloaded operators. General usage of the module will be discussed, including options for pretty-printing, auto escaping of illegal characters, syntax checking of entity and attribute names, namespace support, processing instructions, comments, XML declarations and CDATA sections, followed by a closer look at the parts of the interface that rely on the aforementioned magical features. Some of the plans for the future of the module, such as enforcing schema validity at runtime, will be discussed, time permitting. Familiarity with at least the basic syntax of XML is assumed.