Puff the Fractal Dragon is an example of filk music (a play on folk music) where the original song is twisted a bit.

The original song for this is Puff the Magic Dragon, and the filk author is unknown (see http://www.poppyfields.net/filks/ for this song and far too many others)

No plain fanfold paper could hold that fractal Puff --
He grew so fast no plotting pack could shrink him far enough.
Compiles and simulations grew so quickly tame
And swapped out all their data space when Puff pushed his stack frame.

Puff the fractal dragon was written in C,
And frolicked while processes switched in mainframe memory.
Puff the fractal dragon was written in C,
And frolicked while processes switched in mainframe memory.
Puff, he grew so quickly, while others moved like snails
And mini-Puffs would perch themselves on his gigantic tail.
All the student hackers loved that fractal Puff
But DCS did not like Puff, and finally said, "Enough!"


Puff used more resources than DCS could spare.
The operator killed Puff's job -- he didn't seem to care.
A gloom fell on the hackers; it seemed to be the end,
But Puff trapped the exception, and grew from naught again!

I am quite aware that not everyone reading this is a computer geek, nor are all computer geeks familiar with their history. Thus, I shall attempt to explain as much as I can.

In all likelihood, this grew from academia somewhere with DCS referring to Department of Computer Science. While there is a 'DCS' defense contractor and the term 'DCS' often stands for 'Data Collection System' within the government, it is unlikely that either of these would have anything to do with "student hackers". Yet, it still is a possibility that this song grew elsewhere.

The fanfold paper is something that is rarely seen outside of print rooms for computer platforms - rarely is it ever used outside with the ubiquitousness of the laser printer. Fanfold paper itself comes in huge stacks of paper that are one continuous sheet that have been perforated at the top, thus sitting on itself and forming a 'fan' like appearance. The most common use of fanfold paper is for a line printer. Classically, the holes on the side for the paper feed guide are not removable so that bindings can also make use of them.

When associated with plotters, 'pack' is a program or utility that removes objects from the plotting queue after they have been rendered. In the case of Puff, this implies that his object (when printed) was very complex and made it difficult to make it an easier object to plot after part of it was plotted.

Two of the most intense uses of a computer's CPU is that of compilations and simulations. Often, these use fair to large chunks of the memory (and need it all) and do large amounts of calculations. When a program such as 'puff' ran it would compete for the memory and force them to swap their memory to disk (and thereby slowing them down).

Each time a function is called, a stack frame is added with the memory that that function requires. As a fractal, often recursion would be used to compute part of it (to draw a square 4x4, break it up into 4x 2x2 squares, then break each 2x2 square into 4x 1x1 squares... then figure out what you've got for each 1x1 square).

Of course, Puff was written C.

A process switch (often called a context switch) is when a multitasking system switches from running one process to another process. Often this involves a fair amount of disk access if anything has been swapped out, and in the meantime, while the swap is blocking for the disk, other processes might get a few cycles if they don't need the disk.

Once again we have the image of a large program - and one that uses recursion - 'mini-Puffs would perch themselves on his gigantic tail.'

Playing with fractals is one of the fun things to do on computers (the two most interesting aspects of computer science for students are that of pretty pictures (be they computer generated or... other) and games. However, the Department of Computer Science rarely allows students to do either of these (pictures and games are rarely part of coursework), and eventually they go about and start trying to get the computers to be used for proper academic jobs.

True story:

Back in college, before I got there (its not my fault!) someone from the lab where I later hung out in had played distributing a version of the ray-tracer written there. Over Christmas vacation, he installed the software on the 80 or so academic lab computers and rendered a fractal landscape - over 4 million triangles. Unfortunately, he didn't take into account the resources this would take, and all 80 of the machines crashed when /tmp filled up.

And well, the operator who killed the process - he was probably happy that he killed it before it made a mess (like filling up /tmp).

A kill signal to a process tells it 'clean up'. Well, this is the 'TERM' signal - it is a much nicer one to call, lets Netscape remove its locks and such. However, this is trap-able and possible to be caught and ignored (not advised). The '-9' (aka 'KILL') does not allow the process to clean up, and is not trap-able. The process is dead.

Log in or register to write something here or to contact authors.