What's New?

Last update to Perl Line of the Day: 1 July 1999
Last update to Appearance Schedule: 20 October 1999

30 January 2000: Writeup of Static Typing Talk

Last September I gave a talk to the Perl Mongers about the history of static type checking and how it relates to Perl. The slides have been up for several months, but this weekend I got ambitious and wrote down all the stuff I said in the talk, so it might make more sense now that it is a nine-thousand-word article.

26 January 2000: Async.pm

Async is a new module that provides a simple interface to asynchronous computation. You use Async when you have some slow or long-running computation that you want computed in the background while the rest of your program goes about its regular business. Once you have started the computation, you can use the ->ready() method to see whether or not it has finished. If it has finished, you can get the results with the ->result() method.

25 January 2000: How to use tie to Escape Feature Creep

Slides from a talk I gave to the Philadelphia Perl Mongers.

25 January 2000: Review of Object Oriented Perl.

Summary: I recommend it. Find out why.

14 January 2000: Sixth Anniversary!

My web site, The Universe of Discourse, is six years old today.

4 January 2000: I am boycotting Amazon

Amazon's unethical patent infringement lawsuit against Barnes and Noble is dangerous to my own livelihood and injures almost everyone on the web, not just Barnes and Noble. I am joining the Free Software Foundation's Boycott of Amazon until they abandon the law suit.

FSF Boycott Page

What's Not So New?

21 December 1999: Perl Paraphernalia: Text::Template.pm

Current version: 1.23. Last update: 1999-12-21.

Some minor bug fixes and manual improvements. Also, a new feature that allows implicit prepending of a header to each program fragment.

16 December 1999: Hands-On Perl Class

I just gave an introductory Perl class at The Bazaar conference in New York. Instead of lecturing and then having a lab, I lead the students through a series of instructive examples for a day and a half. More details are available.

The instructive examples are available online.

16 December 1999: Security Classes

I've posted details and outlines of the security classes that I've given at conferences for the past two years.

3 December 1999: Hexapawn Returns

One of the earliest CGI programs I wrote was a web version of Hexapawn. Hexapawn is simple strategy game, traditionally used to demonstrate simple computer learning algorithms. When many folks on the web collaborate on training the computer, it learns very quickly.

The implementation might interest you if you want to see how a game interface would work in 1994 when you could not even trust a browser to support fill-in forms.

22 November 1999: Second Anniversary!

Perl Paraphernalia debuted two years ago today with a program to exercise the worst-case behavior of Perl's hash variables.

19 November 1999: Perl Paraphernalia: Classes and Talks: Perl and the Lambda-Calculus

On 18 November I gave a talk at the Princeton chapters of the ACM and the IEEE Computer Society about how you can use Perl to investigate the workings of the Lambda-Calculus. The slides are now online. The subtitle of the talk is How to Write a 163-line Program to Compute 1+1.

The talk is derived from a couple of papers I wrote up earlier this year; the papers have a detailed explanation of the slides.

17 November 1999: Perl Paraphernalia: More about why it's stupid to `use a variable as a variable name'

This is the third installment in what appears to be an ongoing series about why it's stupid to use symbolic references in programs. It leans more heavily on the `why it is stupid' side, and less on the `what to do instead' side.

17 November 1999: Perl Paraphernalia: Y2K Survey

Guess how many bogus bug reports about the localtime() function will be sent to perl5-porters during year 2000.

21 October 1999: Big News

I'm now the managing editor of www.perl.com. My duties: Write articles; arrange for other people to write articles; come up with ideas for other new content, and implement them. Big Idea #1 was to have a weekly summary of p5p activity. The first summary came out pretty well. There was a lot of interesting discussion. More updates as they happen.

17 October 1999: Happy Birthday Perl 5

Perl 5 is 5 years old today.

14 October 1999: My Life With Spam

James Andrews of Linux Planet web site asked me to write some articles for him, and said they could be about anything I wanted them to be. So I started writing about the first thing that came to mind, which was my ongoing battle against spam email. I've written a lot of spam filtering software in the past few years, tried a lot of stuff, and learned many things that work and some that don't work. In the course of discussing this I'll talk about how to process Email messages with Perl and how to write an Apache plug-in module. There should be something here for everyone.

Part 1 is available now. Other parts will appear over the next few weeks.

Linux Planet's typesetting is pretty nasty, so there's a version here that has better formatting.

8 October 1999: Glasperlenspiel

Several years ago I constructed a web version of the `glass bead game' of Hermann Hesse's Magister Ludi. At least, I think i did; I've never read Magister Ludi and I built the application from someone else's not-too-clear description of the Glasperlenspiel. Then this week someone in comp.lang.perl.misc happened to ask if there was a Perl implementation, so I brought it out and dusted it off. Here it is.

7 October 1999: Yet Another Perl Conference: Lightning Talks

Yet Another Perl Conference 19100 will take place June 22--23 of next year. I will be coordinating the Lightning Talks sessions.

The idea behind the Lightning Talks is that you might have some project that you want to report on, or some idea you want to throw out, or something interesting to say, and you want to contact some possibly interested people, but you don't want to put together a full-length talk. Perhaps it's because you've never given a talk before, and you're nervous, or perhaps it's because you just don't have that much to say.

Give a Lightning Talk instead. Lightning Talks are only five minutes long. Were you worried about making slides ? For a lightning talk you only need three slides. I hope to get ten talks into each one-hour session.

Another advantage of Lightning Talks is for the audience. If you come to a regular talk, maybe you find out too late that you're not interested in it or that the speaker is really boring. Forty-five minutes down the drain. If you come to the Lightning Talks, and one of the topics is uninteresting, or the speaker is bad, at least it's over quickly. And even if only three out of ten talks turn out to be worth while, that's still a lot of value for your hour; you can go talk to the speakers of the three talks that interested you afterwards and follow up.

For more details, visit the YAPC 19100 page

6 October 1999: Perl Paraphernalia: More about why it's stupid to `use a variable as a variable name'

This follow-on to my original article goes into more detail about what can go wrong and how to fix it.

27 September 1999: Perl Paraphernalia: Reviews

I've posted my review of Perl 5 for Dummies by Paul E. Hoffman, published by IDG books. (Also Perl for Dummies, which is almost the same).

27 September 1999: Perl Paraphernalia: Just the FAQs

My series of articles for Perl novices and beginners continues. The fourth article appeared in The Perl Journal #15. It's called Precedence Problems.

23 September 1999: Perl Paraphernalia: Talks and Classes Page

I reorganized my pages about my talks and classes. It's now all gathered into one place.

Also, I added information about Return to the Perl Hardware Store, a talk I gave at O'Reilly's Perl Conference 3.0, and I posted the slides for The Perl Hardware Store which I gave last year; I had never released the slides before. The prose notes for the first Hardware Store talk are still available.

Also new: Slides from my 22 September talk for the Philadelphia Perl Mongers about Strong Typing and Perl

17 September 1999: Perl Paraphernalia: Memoize.pm

Current version: 0.52.

Now supports arbitrary cache expiration policies, and comes with a demonstration module that expires cache elements when they have been accessed too many times or when they are too old or both.

9 July 1999: Perl Paraphernalia: Return to the Perl Hardware Store

Last year I gave a talk at the O'Reilly Perl Conference called The Perl Hardware Store. This year I'll be giving a sequel, Return to the Perl Hardware Store. An outline of the talk is now available.

28 June 1999: Perl Paraphernalia: Seven Useful Uses of local

My new article, Seven Useful Uses of local, appeared in The Perl Journal issue #14. It is a followup to my earlier article, Coping with Scoping, in which I said that you should always use my, and never use local.

16 June 1999: Perl Paraphernalia: Infinite Lists Article from The Perl Journal

An illustrated HTML version of the article is now available. (Formerly I only had a plain text version.)

15 June 1999: Perl Paraphernalia: Very Very Short Tutorial About Modules

The Very Very Short Tutorial About Modules is supposed to be the simplest possible example files, to get you started writing modules asbsolutely as quickly as possible. It has two parts:

You can download a gzipped tar file or a zip archive with both parts.

Do the exercises. I promise not to waste your time.

13 June 1999: Perl Paraphernalia: Automatic Address Munging

I made some changes to the module and added some notes. Details here.

12 June 1999: Perl Paraphernalia: Regex matching is NP-Complete

A new proof that regular expression matching is NP-complete, this time by reduction from the graph 3-colorability problem. I show how to construct a regular expression that will compute whether a given graph can be 3-colored, and if so, how.

11 June 1999: Public Appearances Schedule

I'm quitting my job at the end of the month and going on vacation to many delightful spots including Pittsburgh, Dayton, and Denver. If you're mad because it took me a year to put your patches into my module, here's your big chance to punch me in the eye.

Also some semi-public appearances where you can pay money to hear me speak, should you be so inclined. Or you can sneak in without paying. I don't care; I get a flat fee anyway.

Public Appearances Schedule

9 June 1999: Swatch Demo

Nicholas Negroponte and the Swatch company have conspired to invent an especially idiotic replacement for the current time system. As an act of Dada or maybe just sabotage, I like it. But digital watches are like, so 70's, you know? So I've decided to help them out a little by presenting my design for an analog Internet Time Swatch.

9 June 1999: Perl Paraphernalia: B-Tree Article from The Perl Journal

An illustrated HTML version of the article is now available. (Formerly I only had a plain text version.)

2 June 1999: Perl Paraphernalia: Upcoming 1999 Perl Conference

I've updated the outline of my Regular Expressions tutorial to include some changes that I made after I gave it in Boston and Santa Clara and some new things that I've learned since then.

31 May 1999: Perl Paraphernalia: Why is is easier to write a program in Perl than in other languages

This idiotic paper presents an irrefutable mathematical argument that it is easier to write programs in Perl than in other languages. The last installment of my April Fool 1999 suite, it arrive just in time for Memorial Day.

29 May 1999: Perl Paraphernalia: A Tale of Two Ties

Roland Giersig asked in comp.lang.perl.moderated how to have a hash with the indexing properties of the Tie::IxHash class be persistent, and save its values to disk when it was destructed and restored next time.

This really interested me, because it's useful and tricky, and because I had just finished writing some modules that did a similar thing. I found several solutions to Roland's problem. Two of them are variations on what Roland tried originally, and one is different. A lot of interesting things come up along the way, and I was very happy with the articles. They're pretty rough because I just dashed them off, but they might be worth careful examination.

Here's the whole thing.

27 May 1999: Perl Paraphernalia: Tie::HashHistory

HashHistory is a tied hash module that you interpose between your program and another tied hash module, usually a DBM interface. Everything looks completely ordinary, but you can also ask HashHistory for the history of a key. It will return a list of all the values that the key has ever had, in order.

24 May 1999: Perl Paraphernalia: Review section opens

I seem to be writing reviews semi-regularly now, so I opened a reviews area. At present there is only one review, of O'Reilly's Perl Resource Kit for Unix. I've also written a review of IDG Books' Perl 5 for Dummies which will appear here simultaneously with its publication in The Perl Journal.

13 May 1999: Perl Paraphernalia: Updates to `Tricks of the Wizards' Handouts

If you attended my Tricks of the Wizards talk at the 1999 O'Reilly tutorial sessions, you can get a collection of additions and corrections to your handouts. The username is tut and the password is the title of slide #104.

13 May 1999: Perl Paraphernalia: Automatic Address Munging

This Apache plug-in module may help me solve a spam problem.

10 May 1999: Perl Paraphernalia: What's That Mean?

I wrote this article for the first issue of the PerlMonth online Perl magazine. It's about the evolution of array interpolation in Perl since 1987, and the meaning of the annoying Literal @foo now requires backslash message. Read it here because my typesetting is better than PerlMonth's.

9 April 1999: Perl Paraphernalia: Minutes of the last Perl Intitute board meetings

The Perl Institute (TPI) last met on 3 March, 1999, to formally dissolve; the meeting before that was on 2 December 1997. Since the meeting minutes might be of general interest, and weren't available on the web anywhere that I knew of, I got them from Sharon Hopkins, the TPI secretary, and put them up here.

7 April 1999: Perl Paraphernalia: Perl is a superset of the lambda-calculus

Alternate title: How to write a 163-line program to compute 1+1.

You can investigate the lambda-calculus, a fundamental model of computability, for free in Perl because lambda-calculus is actually a subset of Perl. In the lambda-calculus, the only legal operations are to construct a function and to invoke a function that you've already constructed; from these two operations alone one can construct boolean and arithmetic operations, recursive functions, and data structures.

7 April 1999: Perl Paraphernalia: April Fool 1999 Patch

This patch against Perl 5.005_56 fixes a long-standing bug in Perl's comment processing.

1 April 1999: Perl Paraphernalia: Infrequently Asked Questions About Perl

31 March 1999: Perl Paraphernalia: Bricolage: Memoization

Caching is a straightforward way to speed up certain slow functions: You remember the return values by storing them in a cache, and if you are going to compute the same value again later, just get the result from the cache instead of recomputing it. It turns out it's not hard to build a facility that replaces any function with a caching version automatically; this is called memoization. This article explains how such a module works, and shows a number of interesting applications and contexts for memoization and caching.

22 March 1999: Perl Paraphernalia: Upcoming 1999 Perl Conference

An outline of my three-hour tutorial about Regular Expressions is now available for your perusal.

An outline of my three-hour tutorial called Tricks of the Wizards is now available for your perusal. Note that the tutorial brochure calls this Perl Tricks and Programming Technique.

7 March 1999: Perl Paraphernalia: Text::Template.pm

Current version: 1.20. Last update: 1999-03-07.

At last, the oft-requested option to change the text delimiters from curly braces to something else.

Also, bug fixes, and documentation and test suite improvements as usual.

3 March 1999: Perl Paraphernalia: Algorithm::Diff and diff.pl

Current version: 0.57.

Amir Karger wrote a front-end for Algorithm::LCS that generates real context diffs, either in `traditional' or `unified' style. (Actually, he did this months ago and I didn't get off my duff to announce it until now.) Thank you, Amir!

1 March 1999: Discordia: 9th Annual Mighty Marchday alt.slack rmgroup

Every year on March 1st I send out a usenet control message that instructs the news software to destroy the alt.slack newsgroup. I have been doing this since 1990.

This year I've opened a commemorative gallery of the rmgroup messages.

27 February 1999: Perl Paraphernalia: units

A perl implementation of the stand Unix units(1) command. I don't have a page about it yet, but you can download it here.

25 February 1999: Perl Paraphernalia: Text::Template.pm

Current version: 1.11. Last update: 1999-02-25.

A big bug fix: Fixed the way backslashes were processed. The 1.10 behavior was incompatible with the beta versions and was also inconvenient. (\n in templates was replaced with n before it was given to Perl for evaluation.) The new behavior is also incompatible with the beta versions, but it is only a little bit incompatible, and it is probbaly better.

20 February 1999: Perl Paraphernalia

News Flash! (20 February 1998) Because of space restrictions, The Seven Useful Uses of local will appear in the Summer issue of The Perl Journal in June, instead of in the Spring issue as expected. That means I won't be putting it on the web site until then. My regular Bricolage column will still be appearing in both places in March.

13 February 1999: Perl Paraphernalia: Text::Template.pm

Current version: 1.10. Last update: 1999-02-13.

New features, one big bug fix, and some small bug fixes. The big bug fix is that the SAFE and PACKAGE options didn't used to work together, and now they do. The features are all important, useful things that many people will want; nothing trivial.

5 February 1999: Perl Paraphernalia: Text::Template.pm

Current version: 1.03. Last update: 1999-02-05.

Well, that didn't last long, did it? (See next item you're confused.) My release of Text::Template.pm had a gigantic bug in it: The program fragments were being evaluated under strict vars, so you'd get a million complaints about Global symbol "$v" requires explicit package name. Why didn't I pick up on this before I released it? Because the only variable that the test program uses is $a, and $a is exempt from that error, that's why. Oooops.

Anyway, I added a new feature and some documentation while I was fixing this boneheaded error.

5 February 1999: Perl Paraphernalia: Text::Template.pm

Current version: 1.0. Last update: 1999-02-05.

Text::Template is a module for filling in templates. A template is a file or a string that has bits of Perl code, called program fragments, embedded in it. Program fragments are delimited by curly braces. They can be simple variable references like {$var} or complicated programs that define and call functions and assemble big chunks of HTML text. When a template is filled in, the program fragments are executed, and each is replaced with the values they compute, so for examlpe {$var} is replaced with the value of $var. Parts of the template that are not program fragments are returned verbatim.

This is useful for generating form letters, CGI program output, and many other kinds of text.

3 February 1999: Perl Paraphernalia: Locked.pm

Current version: 0.1. Last update: 1999-02-03.

Locked is a module for providing scalar variables that can be locked and unlocked. Unlocked scalars behave normally. Locked scalars abort the program if you try to assign to them. Variables can be locked and unlocked; you can also test them to see if they are locked or not.

It's also a fine demonstration of the power of tie.

I just wrote this, so there's little documentation and no test suite yet.

2 February 1999: Perl Paraphernalia: Upcoming 1999 Perl Conference

I'll be attending the Third Annual Perl Conference in August. While I'm there I'll be teaching three tutorials, giving an invited talk (or two), and probably answering questions. Sketchy details are available; more complete details will appear in about six weeks.

15 January 1999: Perl Paraphernalia: Memoize.pm

Current version: 0.48.

Now supports prototyped functions and persistent caching via NDBM module.

14 January 1999: Fifth Anniversary!

Yes, the Universe of Discourse is five years old today. Is that not amazing? My The Temptation of Saint Anthony (no longer available; sorry) was #195 on Eric Bina's `Free for All' page, if that means anything to you.

I had a working guestbook script running no later than 14 February, 1994. I suspect that this was the first guestbook on the web; if you know of an earlier one, tell me about it.

5 January 1999: Perl Paraphernalia: Bricolage: Data Compression

This article discusses how data compression works. It comes with a module, Huffman.pm, which implements a simple data compression scheme in Perl.

What's Old? (1997-1998)


Return to: Universe of Discourse main page | Perl Paraphernalia

mjd-perl-www-id-irg+bw5g9sd+@plover.com