Presentation proposal: Type of talk (tutorial, long, short, or lightning): Long (40 min) (Could be stripped down, though, if necessary) Category: Module guts and usage of any particular module Title: "Date::Calc - Philosophy, examples, future" A 200-300 word abstract: (See below) One or two sentences on you and your affiliation: I am programming in Perl since 1995, and also submitted my first modules (Set::IntegerFast, Date::DateCalc) to CPAN in that year. I work for a 700 people software company which specializes in tailor-made individual software for all sorts of large companies and public entities (see www.sdm.de for more details). My web site and download page with my Perl modules is at http://sb.fluomedia.org/download/. More details about me can be found under the URL http://sb.fluomedia.org/whoami/. Whether you will have course notes or other materials (if you are proposing a tutorial): No, just slides. I suppose separate handouts wouldn't be a good idea given the great number of participants. Are you planning to make a brochure of all talks or to put the talks online before or after the event? (Please tell me if you want the slides ahead of time) Any special presentation needs: A computer or laptop and a beamer would be great, an overhead projector would do. The computer should preferably have Perl installed, and my modules if possible. Please tell me if I can user PowerPoint (PerlPoint doesn't seem to be out of alpha state, is it?) Abstract: ------------------------------------------------------------ "Date::Calc - Philosophy, examples, future" Date::Calc is a widely used module for date calculations using the Gregorian calendar (the one used in all western countries today), complying with all relevant standards (ISO/R 2015-1971, DIN 1355 and ISO 8601, where applicable). In contrast to other modules (like Date::Manip, for instance, the most prominent one), this module does not try to provide routines for every imaginable function, but tries to mimick the Unix approach "keep it simple", "do just one thing, but be good at it" and the Unix toolbox philosophy of little elementary building blocks, which can be combined in many ways to solve any problem at hand (e.g., elementary tools like cat, grep, sort etc., which can be combined with pipes "|" to form larger and more powerful commands). The idea is to have a minimal set of functions which are computationally complete, i.e., which allow to solve _any_ possible date calculation problem. The module achieves this high degree of interoperability by providing functions which can be nested very easily (through their interface design), and by using a canonical representation for dates, namely lists (or arrays) always consisting of ($year,$month,$day) or something similarly obvious, which are the "glue" (like the pipes "|" in Unix commands) that binds the different functions together; these arrays or lists being the next best thing to real objects. (For real date objects, read on.) The talk will briefly present some of the functions offered by this module, something in the style of http://www.linux-magazin.de/ausgabe/1998/09/Kalender/kalender.html but much shorter. The talk will also show some common problems and how to solve them using this module; for instance: - How do I compare two dates? - How do I check whether a given date lies within a certain range of dates? - How do I verify whether someone has a certain age? - How can I send a reminder to members of a group on the day before a meeting which occurs every first Friday of a month? etc. In the last part of the talk, I will briefly discuss the development of the next version (5.0) which is currently under way, and present my ideas where the module will be going (e.g., an object oriented front-end will allow to deal with dates in a much more comfortable way, using overloaded operators for common tasks such as adding an offset to a date, calculating tomorrow's or yesterday's date, etc.). This will also be a good opportunity for the audience to submit additional wishes and ideas. ------------------------------------------------------------