What's New?

What's Old?

16 December 2002: Perl Paraphernalia: Open-enrollment classes in Philadelphia

I'll be doing two public, open-enrollment classes in Conshohocken, near Philadelphia: A three-day Hands-On Introduction to Perl and a six-hour Perl Program Repair Shop and Red Flags. For more complete information, see my public appearance schedule.

4 December 2002: Perl Paraphernalia: Internals of Familiar Unix Commands

I gave this talk on 4 December 2002 at the Philadelphia Linux Users' Group meeting. The talk investigates the Unix process model and u structure, the semantics of the fork and exec calls, and how this impacts the design of certain well-known Unix commands such as the shell, ls, nice, and others.

The slides

26 October 2002: Perl Paraphernalia: Quiz of the Week

I'm now running a mailing list called Quiz of the Week which carries a 'regular' and an 'expert' quiz each week. For complete information, see the page.

5 October 2002: Perl Paraphernalia: Classes and Talks

I did a mega-overhaul on the 'Classes and Talks' section of the site. Everything is cleaned up; all the pages are generated automatically from templates. This should make it easier to maintain this section of the site and keep it up to date.

In particular, I added information about three long classes that have been pending for a long time:

And I updated the information about Hands-On Introduction to Perl, which has undergone substantial revisions.

11 July 2002: Perl Paraphernalia: Memoize

Current version: 1.01.

1 July 2002: Some Talks from YAPC 2002

I gave a lot of talks at YAPC this year. Some are new.

18 April 2002: Mark Dominus at Perl Conference 6

I'll be giving three talks totalling nine hours at this year's Perl conference in San Diego. One is completely new; one is extensively refurbished.

Would you like to read the proposals I sent that were turned down?

This isn't as many as last year, but the conference has only half as much space this year.

18 April 2002: What Talks Should I Give at YAPC?

I can't decide which talks I should give at YAPC, so I've decided to poll public opinion. If you are planning to go to YAPC (or you think you might go to YAPC), please fill out this form.

15 April 2002: Perl Paraphernalia: TieFile short talk

I gave this short talk on 15 April 2002 to the Philadelphia Perl Mongers. Tie::File is my new module for inserting lines into the middle of a text file and for doing other text file operations that used to be difficult.

9 April 2002: Perl Paraphernalia: Interpolation

In 1998, Jendy Krynicky sent me some useful patches. I didn't put them in for four years (!!!) so I have finally turned the maintenance of the module over to Jenda. Jenda immediately put the patches in and released versions 0.67 and 0.68. 0.68 is available from CPAN and from Jenda's web pages.

4 April 2002: Perl Paraphernalia: Tie::File version 0.93

29 March 2002: Perl Paraphernalia: Memoize

Current version: 1.00.

21 March 2002: Perl Paraphernalia: The Perl Hardware Store (NYLUG Edition)

On 20 March I dusted off my old Perl Hardware Store talk from 1998, revised it a little, and went up to New York to show it to the New York Linux Users' Group.

The revised slides are now online

31 January 2002: Perl Paraphernalia: Lightning Talks

Lightning Talks are on for YAPC 2002 in Saint Louis.

5 December 2001: Perl Paraphernalia: Internals of ext2fs

I gave this talk on 5 December 2001 at the Philadelphia Linux Users' Group meeting. ext2fs is the most popular disk filesystem type for Linux systems. The talk is a quick tour of some of the most important ext2fs code and a discussion of the operation of Unix filesystems in general and ext2fs in particular.

The slides

5 November 2001: Perl Paraphernalia: Text::Template 1.42

Current version: 1.42. Last update: 2001-11-05.

No new features, but there is a bug fix for the UNTAINT feature, which did not work correctly under Perl 5.005_03 and possibly other versions; also the test suite for the UNTAINT feature is now more comprehensive. If you have Text::Template 1.40 or later and it passes all its tests, there is no need to upgrade.

1 November 2001: Perl Paraphernalia: EZDBI

Current version: 0.06.

EZDBI is a fast and simple interface to SQL databases. Check out the sample demo progam and you'll see right away what it's about.

25 October 2001: Perl Paraphernalia: Survey of $#array Usage

I surveyed uses of $#array in about 3.5 months of articles from comp.lang.perl.misc. The conclusion: At least 19% of uses of $#array are actually misuses. Detailed analysis.

17 October 2001: Perl Paraphernalia: EZDBI

New module! Current version: 0.05.

(This is an update of the announcement of 0.03 that I made on 9 October.)

EZDBI is a fast and simple interface to SQL databases. Check out the sample demo progam and you'll see right away what it's about.

28 September 2001: Perl Paraphernalia: Program Repair Shop and Red Flags

More information about my new class Perl Program Repair Shop and Red Flags

Also, there are some new slides in the preview section.

12 September 2001: Perl Paraphernalia: Memoize.pm

Current version: 0.66.

10 September 2001: Perl Paraphernalia: Quantitative Analysis of Memoization

This short talk debuted on 10 September 2001 at the Philadelphia Perl Mongers meeting. Walt Mankowski was giving a talk about an occasion for which memoization didn't work for him. I decided to give a complementary talk explaining why.

The talk

4 September 2001: Perl Paraphernalia: Text::Template 1.41

Current version: 1.41. Last update: 2001-09-04.

No new features, but the test suite now works under Windows and may also work better on other non-Unix OSes.

2 Sep 2002: Perl Paraphernalia: Perl Advanced Techniques Handbook

I've updated the pages about my upcoming book. The explanation of what the book is about is clearer, and I've removed the tentative outlines for chapters 1-4 and replaced them with the actual tables of contents of the current versions of the drafts of those chapters.

Main page

  1. Recursion
  2. Dispatch Tables
  3. Caching, Memoization, and Lazy Computation
  4. Iterators

29 August 2001: Perl Paraphernalia: Text::Template 1.40

Current version: 1.40. Last update: 2001-08-29.

Several useful new features and some minor bug fixes. Now works when Perl is in taint mode!

1 August 2001: Perl Paraphernalia: Dirty Stories About the Perl Regex Engine

I added some front matter and end notes to the talk slides. If you haven't looked at the slides yet, don't look at the end notes.

The slides are from my short talk about the internals of the Perl regex engine from TPC5. All hope abandon, ye who enter here.

1 August 2001: Perl Paraphernalia: The Identity Function

The identity function is the function that returns its argument unchanged. A typical implementation is sub identity { return $_[0] }. In this talk, originally presented at TPC5, I show four unexpectedly useful uses for the identity function.

28 July 2001: Perl Paraphernalia: Rx: a Regex Debugger for Perl

Rx, and the paper about its history and internals, won the 2001 Larry Wall Award for Practical Utility.

27 July 2001: Perl Paraphernalia: Dirty Stories About the Perl Regex Engine

These are the slides from my short talk about the internals of the Perl regex engine from TPC5. All hope abandon, ye who enter here.

24 June 2001: Perl Paraphernalia: Memoize.pm

Current version: 0.65.

19 May 2001: Perl Paraphernalia: qrpff Explained

This is the un-Wired version of an article I wrote for Wired recently.

17 May 2001: Perl Paraphernalia: www.perl.com articles

A new article: Perl Program Repair Shop and Red Flags at the Open Source Conferences

13 May 2001: use.perl.org Journal

I'm maintaining a journal at use.perl.org, although it's not entirely clear what advantage this has over simply maintaining a journal right here. Typing into the browser box certainly is a much bigger pain in the ass than using emacs. I'll keep doing it for a while and see what I think. In the meantime, I think the stuff I have to say is a lot more interesting than the crap most other people are putting in their journals, so you might want to have a look. On the other hand, maybe that's just because I'm more interested in myself than I am in other people.

1 May 2001: What Talks Should I Give at YAPC?

I made up my mind what to propose; now it's in Kevin Lenzo's hands.

14 April 2001: What Talks Should I Give at YAPC?

I can't decide which talks I should give at YAPC, so I've decided to poll public opinion. If you are planning to go to YAPC (or you think you might go to YAPC), please fill out this form.

14 April 2001: Mark Dominus at Perl Conference 5

I'll be giving eight talks totalling fourteen hours at this year's Perl conference in San Deigo. Five of them are completely new!

24 March 2001: Perl Paraphernalia: Lightning Talks

Someone told me he wanted to do a lightning talk, but couldn't think of a topic, and asked if I could suggest some topics. So if you want some suggestions, here is a list of Perl-related topics.

24 mars 2001: Perl Paraphernalia: Communications éclair

Quelqu'un m'a dit qu'il voulait présenter une communication éclair, mais, ne trouvant pas de sujet, il m'a demandé de lui en suggérer quelques-uns. Alors voici une liste de sujets relatifs à Perl.

5 February 2001: Perl Paraphernalia: Text::Template 1.31

Current version: 1.31. Last update: 2001-02-05.

Bug fix and maintenance release.

4 February 2001: Perl Paraphernalia: Lightning Talks

Lightning Talks are on for TPC5 in San Diego.

14 January 2001: Seventh Anniversary!

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

14 January 2001: Perl Paraphernalia: Lightning Talks

Thanks to the generous assistance of Luc St-Louis, the Lightning Talks information is now available in French.

Grâce à l'aide généreuse de Luc St-Louis, les informations sur les communications éclair sont maintenant disponibles en français.

12 January 2001: Perl Paraphernalia: Lightning Talks

Lightning Talks are on for YAPC 2001. Also, other miscellaneous status and updates.

6 January 2001: Perl Paraphernalia: Tricks of the Wizards

I added some sample slides.

30 December 2000: Perl Paraphernalia: Advanced Programming Techniques for Perl

I added more information about my class Advanced Programming Techniques for Perl, including some sample slides. This is an excellent class; please check it out.

20 December 2000: Perl Paraphernalia: FakeHash and DrawHash

FakeHash simulates the behavior of a Perl hash, but at the Perl level instead of at the C level so that you can see what is going on. FakeHash::DrawHash provides methods on a simulated hash that draw a box-and-arrow diagram showing the layout of the data structure.

18 December 2000: Happy Birthday Perl

Perl is 13 years old today.

16 December 2000: Perl Paraphernalia: Algorithm::Diff and diff.pl

Ned Konz took over Algorithm::Diff last summer and rewrote it from scratch. The new version (1.10) is much improved.

13 December 2000: Perl Paraphernalia: Software I use to make slides

Several people have asked for this, so here it is, with a complete example. Note that it is not supported. No. Not even a little bit.

13 December 2000: Perl Paraphernalia: www.perl.com articles

A new article this week: Why I hate Advocacy

1 December 2000: Perl Paraphernalia: Obfuscated Perl Contest Entry

The complete explanation of my prize-winning obfuscated program is now available.

30 November 2000: Perl Paraphernalia: www.perl.com articles

A new article this week: Red Flags Return: Reader Responses

22 November 2000: Third Anniversary!

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

19 November 2000: Perl Paraphernalia: Classes and Talks

Lots of updates here. I finally wrote up an explanation and outline of my class Hands-On Introduction to Perl. This includes samples of the slides.

I updated the description of Tricks of the Wizards, which has evolved substantially since I first wrote up the description.

I reorganized the Perl Hardware Store stuff a little bit.

Finally, I reworked the Classes and Talks section of The main page to make it easier for find the talks.

15 November 2000: Perl Paraphernalia: www.perl.com articles

I've been writing articles for www.perl.com for just over a year now. People sometimes write to tell me that they like my site, and so I thought they might also appreciate links to the other articles I've written.

I have summarized them here. I'll keep that page updated each time I write a new article.

1 November 2000: Perl Paraphernalia: Obfuscated Perl Contest Entry

My entry into the 5th Annual Obfuscated Perl Contest won second place in the 'Old Standby' category. But it was much, much harder to understand than the winner, which is a bummer.

Source code and hints are available. I will post the solution in one month.

23 October 2000: Perl Paraphernalia: Memoize.pm

Current version: 0.62.

Various minor functional and performance enhancements.

14 October 2000: Perl Paraphernalia: ArrayHashMonster

OK, this is not exactly new. I wrote it earlier this year and then forgot about it, and I never advertised it on my Perl Paraphernalia page. Sean Burke reminded me of it; he said that because of ArrayHashMonster someone asked him what a siphuncle was. It might form part of an argument about the relative merits of Perl and Python, but whether in favor of Perl or against I wouldn't really want to say.

I'm going to leave it at that. If you want to find out what it's about, please have a look.

(Caution: Requires Perl 5.005_02 or later.)

Big News
30 Sep 2000: Perl Paraphernalia: Perl Advanced Techniques Handbook

I meant to make an announcement back in March when I signed the contract, but here it finally is. I am under contract to write a book about Perl for Morgan Kaufmann. It is tentatively titled Perl Advanced Techniques Handbook. It will be published sometime next year.

25 June 2000: Perl Paraphernalia: Lightning Talks 2000

The Lightning Talks were a big success at YAPC 19100. The final schedule is available, with links to any materials that the talk presenters have put online.

25 June 2000: Perl Paraphernalia: py

Dr. Knud Werner has provided some add-on scripts for py, which generates Perl parsers from YACC specifications. See the py page for more details, or just download.

15 June 2000: Yet Another Perl Conference: Lightning Talks

I have selected the sixteen papers that will be persented at the Lightning Talks sessions. The selections and tentative schedule are available.

What Are Lightning Talks?

1 April 2000: TRS80.pm

This Perl module simulates the TRS-80 Model I programming environment..

10 March 2000: What Talks Should I Give at YAPC?

Kevin Lenzo and I can't decide which talks I whould give at YAPC, so I've decided to poll public opinion. If you are planning to go to YAPC (or you think you might go to YAPC), please fill out this form.

2 March 2000: More Amazon Boycott News

Tim O'Reilly speaks out against Amazon's patents. You can also sign O'Reilly's open letter to Jeff Bezos. Woo-hoo! Thanks, Tim.

29 February 2000: More Amazon Boycott News

NoWebPatents.org

28 February 2000: Classes and Talks Update

I've added some information about ym new classes to my classes and talks page. This includes some advance information about the Perl Advanced Techniques and Internals of Perl Core Modules classes that I'll be teaching on the Perl Whirl 2000 and at the 4th O'Reilly Perl Conference.

I also updated my upcoming appearances page.

21 February 2000: Yet Another Perl Conference: Lightning Talks

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

What Are Lightning Talks?

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

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.

22 December 1998: Perl Paraphernalia: Just the FAQs

My series of articles for Perl novices and beginners continues. The third article appeared in The Perl Journal #12. It's called Coping with Scoping.

22 December 1998: Perl Paraphernalia: allsubs.pm

Following a suggestion of Alex Davies, this absurd module tries to automatically locate and declare all your subroutines at compile-time, so that you don't have to do it yourself.

23 September 1998: Perl Paraphernalia: Just the FAQs

My series of articles for Perl novices and beginners continues. The second article appeared in The Perl Journal #11. It's called Suffering From Buffering.

7 September 1998: Perl Paraphernalia: Memoize.pm

Current version: 0.46.

Now supports persistent cacheing via the Storable module.

6 September 1998: Perl Paraphernalia: Algorithm::LCS.pm and diff.pl

Current version: 0.54.

Christian Murphy wrote a front-end for Algorithm::LCS that generates output that is enough like real diff to be suitable for input to patch, so I decided to release it and put it on CPAN. Thank you, Christian!

4 September 1998: Perl Paraphernalia: Memoize.pm

Current version: 0.45.

Memoize is a module for speeding up functions by automatically memoizing them. New in version 0.45: Persistent storage of cached values. See the main memoize page for complete details.

22 August 1998: Perl Paraphernalia: The Perl Hardware Store

Notes for my invited talk from this year's Perl Conference are now on-line.

10 August 1998: Perl Paraphernalia: Why it's stupid to `use a variable as a variable name'

This essay, Why it's stupid to `use a variable as a variable name', addresses a common question that comes up frequently in comp.lang.perl.misc, and attempts to provide a higher-level answer than the usual one.

10 August 1998: Perl Paraphernalia: p (A program that prints its own source code)

This program prints its own source code. However, it is probably very different from other programs you may have seen that do that.

5 August 1998: Perl Paraphernalia: Algorithm::LCS (and diff.pl)

Current version: 0.52.

diff is a standard Unix utility that prints out the differences between two files. I have implemented it in Perl for {my,your} {entertainment,instruction}. The underlying module, Algorithm::LCS, may turn out to be useful for diff-like tasks such as computing the optimal way to update the screen.

2 August 1998: Perl Paraphernalia: Some updates to `Why Questions go Unanswered'

18 July 1998: Perl Paraphernalia: Devel::Trace

Devel::Trace emulates the -x option of the shell; it prints out each line of your Perl program as it is executed. It's also probably the simplest possible module that uses Perl's DB features, which means that it's instructive.

16 July 1998: Perl Paraphernalia: M-J. Dominus at The Perl Conference

I'll be attending the Second Annual Perl Conference in August. While I'm there I'll be teaching a tutorial, giving an invited talk, and answering questions. Complete details are available

15 July 1998: Perl Paraphernalia: Ray Tracing

Ray tracing is one of the most flexible and versatile methods of rendering three-dimensional computer images. In this article, I show you a simple ray tracing program written in Perl and explain how it works.

15 July 1998: Perl Paraphernalia: Just the FAQs

I'm writing a second series of articles for The Perl Journal; this series is aimed at novices and beginners. The first of these articles appeared in TPJ #10; it's about references.

27 April 1998: Perl Paraphernalia: Interpolation Ideas page

People have been writing in with all sorts of clever uses for my Interpolation module that I had not thought of before. Jan Krynicky suggested that I make a guestbook where people could insert their own clever ideas for how to use it. I thought I'd give that a try. Here is it.

23 April 1998: Happy 434th Birthday, William Shakespeare!

22 April 1998: Discordia: Disgusting Perversion Picture

This item was one of the first things I had on my web page, just about four years ago. I've decided it needs wider distribution. I plan to write a shocked, appalled essay about it, but I'm in a good mood today so that will have to wait.

20 April 1998: Perl Paraphernalia: Stat::lsMode.pm: Version 0.50

Stat::lsMode is a module for displaying file permission modes in the style of the UNIX ls -l command. For example, a plain file that is world-readable and writable only by its owner is represented by the string -rw-r--r--.

18 April 1998: Discordianism: Essay about Discordianism and Programming

My Discordia Page now has a short essay about why computer programming is an essentially Discordian pasttime.

16 April 1998: Perl Paraphernalia: py

This program, py, implements LALR(1) parsers in Perl. These are the sorts of parsers produced by YACC and Bison. But the program is a complete oddity. Find out why.

9 April 1998: Perl Paraphernalia: Interpolation.pm: Version 0.53

New version of Interpolation.pm

3 April 1998: Perl Paraphernalia: New Contender for Stupidest Module Ever Written

This one may give Addition.pm a run for its money, if only because it takes so darn long to load.

24 March 1998: Perl Paraphernalia: Regex Article from The Perl Journal

How do Perl's regexes work on the inside? Suppose you were going to write a laguage like Perl, which has regexes, in a language like C, which doesn't? How might you do that?

The Regex.pm page has the article, source code, and discussion.

14 March 1998: Perl Paraphernalia: Interpolation.pm: A Very Useful Module

Identity.pm did turn out to be useful. It evolved into Interpolation.pm, which lets you enterpolate expressions into strings and have them be formatted any way you want; for example you could define a format for `money', which was `always put commas every three places, add a leading dollar sign, and print out two decimal places after the decimal point', and then use "You still owe me $money{$AMOUNT_OWED}." to insert the value of $AMOUNT_OWED, formatted appropriately.

7 March 1998: Perl Paraphernalia: Identity.pm: A Very Funny Module

Not only is Identity.pm funny, but it may actually be useful. You be the judge.

23 February 1998: Perl Paraphernalia: Memoize.pm module

Version 0.06 of Memoize.pm.

19 February 1998: Perl Paraphernalia: Memoize.pm module

Version 0.05 of Memoize.pm.

18 February 1998: Perl Paraphernalia: Perl Code Line of the Day

It seems that almost every day, I write one line of code that's my favorite. Sometimes it's obfuscated, sometimes clever, sometimes bizarre, sometimes instructive. Now I'm going to share them with the world in the Perl Code Line of the Day feature.

17 February 1998: Perl Paraphernalia: What is `Scalar Context'?

Why doesn't print reverse $x work? And what is `Scalar Context'? And what is the scalar builtin function for? This short article explains contexts and the scalar function.

11 February 1998: News Flash! I am a Discordian!

In 1994 I took a very strenuous and unpleasant job, and I had to stop seeing my friends or generally having a life. In this Great Interruption, I forgot about a lot of things that I had done before, and it has taken me many years to get them back. The sudden burst of activity on my web site is one sign that I'm finally remembering who I was after this terrible disaster.

Today I just remembered that I'm a member of the Discordian Society, Grand Vizopteryx of the Dick Feynman Cabal. There's a lot of stuff on the site already that I realize now is essentially Discordian, especially in the Perl Paraphernalia pages. When I look at badhash.pl and at Addition.pm, I can see that I was groping towards Discordianism without remembering it exactly.

Now that I've rediscovered my Discordianism, I hope to let it inspire me to create more explicitly Discordian works. I am very excited that this part of my past has returned to me. Watch here for future developments!

4 February 1998: Perl Paraphernalia: Memoize.pm module

Memoize is a module for speeding up functions by automatically memoizing them. Main memoize page.

3 February 1998: Perl Paraphernalia: Regex Matching in Perl is NP-Complete

Added a second proof of the NP-completeness of regex matching in Perl. This one is due to Abigail. See below for more details.

1 February 1998: Perl Paraphernalia: Regex Matching in Perl is NP-Complete

Sometimes Perl can take a very long time to evaluate a regular expression match. Is this a problem with Perl's implementation of regexes? The answer is no; this paper shows that regex matching in Perl is NP-complete. This means that if you could come up with an efficient way to evaluate regex matches in Perl, you would become very famous because your method would also be an efficient way to solve many other well-known and difficult problems.

28 January 1998: Advocacy: Round 1 Begins!

Advocacy is a game where one person proposes an apparently stupid engineering or design decision, and the other players try to justify it. See the Round 1 engineering decision. Join the game.

24 January 1998: Perl Paraphernalia: Perl Trivium

The default value for the $; variable is control-\. Why was this value chosen?

14 January 1998: mod_auth_cookie_mysql

An Apache server module that authenticates users based on a cookie value, which is matched against the contents of a MySQL database.

Get source code or see demo.

8 January 1998: Perl Paraphernalia: Stupidest Perl Program Ever Written

I don't really believe that it is the stupidest. In fact, you should watch this space for the sudden appearance of other stupid programs. But it sure is mighty stupid though.

6 January 1998: Perl Paraphernalia: Introduction to Perl article from IEEE Software

I wrote an article for IEEE Software magazine; it's their first-ever article about Perl. It appears in Vol. 15, #1 (the January / February 1998 issue) pages 69-74.

It's partly an introduction to the language for people who have never seen it before, and partly a big boast about how great Perl is. I'm not sure I believe that Perl is as great as I made it out to be, but I do think it's pretty good.

Read the plain text of my last draft, or get a PDF copy of the published version from The Computer Society (Computer Society members only).

27 December 1997: Perl Paraphernalia: New version of badhash: When Hashes Go Wrong

Recently updated: It used to include the time it spent computing special hash leys in the times it reported for inserting items into the hash, which was not fair. Also, the new version produces more interesting output.

More about this.

22 December 1997: Perl Paraphernalia: Perl, 1967 Edition

It occurred to me today that there was a language I'd heard about before that sounded a lot like Perl. I looked it up, and sure enough, it sounded just like someone in 1967 describing Perl. You can read the description of Perl '67 and try to guess what language is really being described.

Over the next few weeks I hope to research this language and learn whether it really does resemble Perl as much as it seems to. If so, it could be a valuable example lesson that could teach us a lot about how to develop Perl and what sorts of mistakes to avoid.

17 December 1997: Perl Paraphernalia: B-Tree Article from The Perl Journal

15 December 1997: Perl Paraphernalia: Why Questions Go Unanswered

Someone on comp.lang.perl.misc wanted to know why nobody was answering his questions. In answer, I wrote an article about how to ask a question so that it'll get an answer.

22 November 1997: Perl Paraphernalia: badhash: When Hashes Go Wrong

This program demonstrates what happens When Hashes Go Wrong. It accepts one command-line argument, N, which defaults to 10,000. It then constructs N strings and uses them as keys for the hash. The strings are constructed so that their hash values are all the same, so they all go into one hash bucket. This turns the hash search into a linear search---very slow.


Return to: Universe of Discourse main page | What's New page | Perl Paraphernalia

mjd-perl-www@plover.com