On 5/8/07, Paul Raulerson <[EMAIL PROTECTED]> wrote:

No, I have looked, and CMS Pipelines are nice indeed. But then so are pipes
under UNIX; indeed, pipes are the very core of UNIX. If you are not annoyed
by discussing it, I would love to hear your opinions on what is so primitive
about UNIX. :)

As I said: leaky garden hose. The analogy holds just as long as you
use terms like "nice"

* CMS Pipelines has multi stream pipelines which means that you can
divert part of the input stream and have that go through a different
segment of the pipeline and further down the pipe the streams can join
again when desired. The closest you get in UNIX is something like the
"tee" program.
* The stages in CMS Pipelines are not limited by a single input and
output (and stderr), but can have many streams which allows for
building complex refineries without the need for endless copies of the
data.
* The way records are moving through the pipeline and the way stages
interact means that you can reason about where records are and
guarantee the order in which data is produced and consumed in parallel
pipeline segments.
* Dynamic changes to the topology of the pipeline where a stage can
replace itself by a newly composed segment either permanently or
temporary (a sipping pipeline). Combined with the strict order in
which data is consumed, you control what part of the data flows
through the modified pipeline.

I do believe I am one of those many VM people who embraced Linux and
the concepts are not alien to me (I avoid the term "transition"
because that would suggest going from one to the other).

Recently I wrote a simple Perl program - ptime - to take lines from
stdin and write them out prefixed with the local time. To my surprise
the following did not work to tag vmstat output with the time as I
intended:     vmstat 10 | ptime
Turns out that something is doing an undetermined amount of buffering
(and yes, I learned that I can set the "$|" variable (?) to change
that). And there's many more cases where the tools violate the
Principe of Least Astonishment. Things like njpipes and OS/2 pipe ran
short of that and turned out to be far less useful.

I understand I have the option to write a C program from scratch to do
what I want, or maybe copy an old one from when I wanted almost the
same. We've done so with Rexx for quite some time. However, I find it
way more productive to compose a pipeline out of many built-in stages
and maybe a few reusable ones from myself in Rexx.

Rob

Reply via email to