[#80776] prerelease of Guis-1.3pre1 (a GTK widget server) for Ruby — Basile STARYNKEVITCH <basile@...>

Dear All,

11 messages 2003/09/01

[#80849] Simple question(s) — Michael Campbell <michael_s_campbell@...>

(I think...)

16 messages 2003/09/02

[#80870] show me the ruby way — nord ehacedod <nordehacedod@...>

This works, but there must be a more natural way to do

18 messages 2003/09/02
[#80916] Re: show me the ruby way — aero6dof@... (Alan Chen) 2003/09/02

ts <decoux@moulon.inra.fr> wrote in message news:<200309021525.h82FPkM17085@moulon.inra.fr>...

[#80918] Re: show me the ruby way — "Warren Brown" <wkb@...> 2003/09/02

alan,

[#80873] RDoc: how to turn off automatic linking for a word? — leikind@... (Yuri Leikind)

Hello all,

12 messages 2003/09/02
[#80962] Re: RDoc: how to turn off automatic linking for a word? — William Webber <wew@...> 2003/09/03

On Wed, Sep 03, 2003 at 12:32:23AM +0900, Yuri Leikind wrote:

[#81014] unknown node type 0 — Hal Fulton <hal9000@...>

Hello, all.

15 messages 2003/09/03

[#81028] webrick and ruby — ahoward <ahoward@...>

12 messages 2003/09/03

[#81057] WEBrick and mod_ruby performance — quixoticsycophant@... (Jeff Mitchell)

I've been scoping out ruby for an upcoming server project.

16 messages 2003/09/03

[#81075] Unit Tests and Encapsulation — Scott Thompson <easco@...>

This may be off-topic in a Ruby list, although I have noticed that a

18 messages 2003/09/04

[#81167] Difference between .. and ... in boolean ranges — Oliver Dain <odain2@...>

I'm a bit confused by some Ruby behavior I'm seeing with ranges. As I

12 messages 2003/09/04

[#81234] Correction: "religious" — Daniel Carrera <dcarrera@...>

It has come to my attention that the word religious can, indeed, be

12 messages 2003/09/05

[#81239] rcalc 2.0 (Ruby Calculator) — "Josef 'Jupp' Schugt" <jupp@...>

Saluton!

14 messages 2003/09/05

[#81345] ANN: MetaTags 1.0 — Ryan Pavlik <rpav@...>

MetaTags 1.0

73 messages 2003/09/08
[#81361] Re: ANN: MetaTags 1.0 — Tobias Peters <tpeters@...> 2003/09/08

Ryan Pavlik wrote:

[#81371] Re: ANN: MetaTags 1.0 — why the lucky stiff <ruby-talk@...> 2003/09/08

On Monday 08 September 2003 06:58 am, Tobias Peters wrote:

[#81384] Re: ANN: MetaTags 1.0 — Chad Fowler <chad@...> 2003/09/08

On Tue, 9 Sep 2003, why the lucky stiff wrote:

[#81386] Re: ANN: MetaTags 1.0 — dblack@... 2003/09/08

Hi --

[#81394] Re: ANN: MetaTags 1.0 — why the lucky stiff <ruby-talk@...> 2003/09/08

On Monday 08 September 2003 12:08 pm, dblack@superlink.net wrote:

[#81396] Re: ANN: MetaTags 1.0 — Hal Fulton <hal9000@...> 2003/09/08

why the lucky stiff wrote:

[#81452] Re: ANN: MetaTags 1.0 — matz@... (Yukihiro Matsumoto) 2003/09/09

Hi,

[#81454] Re: ANN: MetaTags 1.0 — Dave Thomas <Dave@...> 2003/09/09

[#81615] Re: ANN: MetaTags 1.0 — Richard Kilmer <rich@...> 2003/09/10

On Monday, September 8, 2003, at 11:59 PM, Dave Thomas wrote:

[#81374] problem with Module#append_features — Ferenc Engard <ferenc@...>

Hi all,

24 messages 2003/09/08

[#81503] Memory consumption of Ruby/mod_ruby combo on Apache — David Heinemeier Hansson <david@...>

I'm seeing memory consumption in the area of 30-35mb per Apache process

12 messages 2003/09/09
[#81504] Re: Memory consumption of Ruby/mod_ruby combo on Apache — mgarriss <mgarriss@...> 2003/09/09

David Heinemeier Hansson wrote:

[#81535] using a filter inside Ruby — Eric Schwartz <emschwar@...>

I've the contents of a raw log file in memory, and a program that will

12 messages 2003/09/09

[#81587] Fwd: Calling fun taking struct and not pointer to struct? — Robert Feldt <feldt@...>

Related to the recent thread about nested structs

16 messages 2003/09/10
[#81590] Re: Calling fun taking struct and not pointer to struct? — "Nathaniel Talbott" <nathaniel@...> 2003/09/10

Robert Feldt [mailto:feldt@ce.chalmers.se] wrote:

[#81594] Re: Calling fun taking struct and not pointer to struct? — Robert Feldt <feldt@...> 2003/09/10

Nathaniel Talbott <nathaniel@NOSPAMtalbott.ws> skrev den Wed, 10 Sep 2003 22:42:24 +0900:

[#81596] Re: Calling fun taking struct and not pointer to struct? — "Nathaniel Talbott" <nathaniel@...> 2003/09/10

Robert Feldt [mailto:feldt@ce.chalmers.se] wrote:

[#81597] Re: Calling fun taking struct and not pointer to struct? — Robert Feldt <feldt@...> 2003/09/10

Nathaniel Talbott <nathaniel@NOSPAMtalbott.ws> skrev den Thu, 11 Sep 2003 00:06:18 +0900:

[#81612] What *are* variables? Which are nil now? — Hugh Sasse Staff Elec Eng <hgs@...>

Reading about reflection, ObjectSpace will give you the objects in

22 messages 2003/09/10
[#81632] Re: What *are* variables? Which are nil now? — Austin Ziegler <austin@...> 2003/09/10

> raise "@b1 is nil" if @b1.nil

[#81623] Chasing a garbage collection bug — "Thomas Sondergaard" <thomas@...>

I just discovered that I have a GC related bug, or that is to say it doesn't

17 messages 2003/09/10

[#81755] Passing an Object Class from a method to a caller — "RLMuller" <RLMuller@...>

Hi All,

14 messages 2003/09/11

[#81840] Re: Dir.foreach not with patterns? — "Weirich, James" <James.Weirich@...>

I like the Dir[] form (or its "glob" alternative). I used to write

14 messages 2003/09/12
[#82500] Re: Dir.foreach not with patterns? — Jason Creighton <androflux@...> 2003/09/19

On Thu, 18 Sep 2003 15:59:25 +0100

[#81871] Duck Typing — Jim Weirich <jweirich@...>

In the Method Redefinition thread, this explanation of Duck Typing is

38 messages 2003/09/13
[#81884] Re: Duck Typing — dblack@... 2003/09/13

Hi --

[#81929] actual debian ruby packages are unuseable with tk — Ferenc Engard <ferenc@...>

Dear debian ruby package maintainers,

12 messages 2003/09/13

[#81960] Dot versus double-colon — Hal Fulton <hal9000@...>

OK, I've been thinking (always dangerous after 11 pm).

18 messages 2003/09/14

[#82012] performance and style advice requested — Alex Martelli <aleaxit@...>

I'm trying to learn some Ruby, so I want to write some Ruby code, starting

53 messages 2003/09/14
[#82028] Re: performance and style advice requested — Ben Giddings <bg-rubytalk@...> 2003/09/14

Some style advice:

[#82029] Linguistics 0.02 — Michael Granger <ged@...>

Hi fellow Rubyists,

19 messages 2003/09/14

[#82056] Test::Unit -- multiple errors in test method ??? — Johan Holmberg <holmberg@...>

14 messages 2003/09/15

[#82166] scrambler one-liner — Xavier Noria <fxn@...>

I just came across this interesting article at Slashdot that explains that

27 messages 2003/09/16

[#82206] #{} and \" don't like each other — Peter <Peter.Vanbroekhoven@...>

From the Programming Ruby book:

32 messages 2003/09/16

[#82419] wiki reccomendations — ahoward <ahoward@...>

15 messages 2003/09/18

[#82448] closing stderr — Michael Garriss <mgarriss@...>

I would like to prevent some output that is going to stderr during a

15 messages 2003/09/18

[#82547] fork not available? — walter@...

I am running windows 2000 using the PragProgs install.

14 messages 2003/09/19

[#82561] Trouble with binary files? — <agemoagemo@...>

I'm trying to write a program that will read a binary

24 messages 2003/09/19
[#82562] Re: Trouble with binary files? — Heinz Werntges <werntges@...> 2003/09/19

agemoagemo@yahoo.com wrote:

[#82583] Re: Trouble with binary files? — Tim Hammerquist <tim@...> 2003/09/19

<agemoagemo@yahoo.com> graced us by uttering:

[#82575] Article on oreilly.net on how to build Unix tools with Ruby — Xavier <NOSPAM@...>

Thought you'd like to know about this article

24 messages 2003/09/19
[#82829] Re: Article on oreilly.net on how to build Unix tools with Ruby — Paul Brannan <pbrannan@...> 2003/09/23

On Sat, Sep 20, 2003 at 06:00:21AM +0900, Xavier wrote:

[#82589] POP3Filter for SoBig.F Virus: — Austin Ziegler <austin@...>

Here's an updated version of the Ruby pop3filter that was written. This

32 messages 2003/09/20
[#82592] Re: POP3Filter for SoBig.F Virus: — Austin Ziegler <austin@...> 2003/09/20

I've made more updates. Rather than just putting them here, I've created a

[#82609] Re: POP3Filter for SoBig.F Virus: — Austin Ziegler <austin@...> 2003/09/20

On Sat, 20 Sep 2003 10:14:39 +0900, Austin Ziegler wrote:

[#82617] Re: POP3Filter for SoBig.F Virus: — "Shashank Date" <sdate@...> 2003/09/20

[#82618] Re: POP3Filter for SoBig.F Virus: — Gavin Sinclair <gsinclair@...> 2003/09/20

On Saturday, September 20, 2003, 9:03:18 PM, Shashank wrote:

[#82621] Re: POP3Filter for SoBig.F Virus: — Austin Ziegler <austin@...> 2003/09/20

On Sat, 20 Sep 2003 22:15:40 +0900, Gavin Sinclair wrote:

[#82623] Re: POP3Filter for SoBig.F Virus: — Jose Quesada <quesadaj@...> 2003/09/20

On Sat, 20 Sep 2003 23:52:39 +0900, Austin Ziegler <austin@halostatue.ca>

[#82624] Re: POP3Filter for SoBig.F Virus: — Xavier Noria <fxn@...> 2003/09/20

On Saturday 20 September 2003 18:56, Jose Quesada wrote:

[#82632] Real emails on newsgroup version (was Re: POP3Filter) — Ben Giddings <bg-rubytalk@...> 2003/09/20

This whole worm thing brings up a question:

[#82683] Re: Real emails on newsgroup version (was Re: POP3Filter) — Dave Thomas <Dave@...> 2003/09/22

[#82661] Performance: Ruby vs Java — lalit_pant@... (Lalit Pant)

I'm a newcomer to Ruby, and thought I would write a little

18 messages 2003/09/22

[#82715] Ruby package for Linux — Jim Freeze <jim@...>

Ok, I know nothing about linux packages.

22 messages 2003/09/22

[#82832] upper to lower first letter of a word — yvon.thoravallist@... (Yvon Thoraval)

Recently, i get a vintage list (more than 500 items) with poor typo, for

30 messages 2003/09/23

[#82884] When threads block — Hans Fugal <fugalh@...>

It's difficult to do any serious multi-threaded network programming when

13 messages 2003/09/24

[#82964] Re: Prove internet package for Microsoft Internet Explorer — "Anthony Neville" <anthony.neville@...>

13 messages 2003/09/25

[#83002] TCPSocket.gethostbyname difficulties — "Nathaniel Talbott" <nathaniel@...>

I'm trying to use TCPSocket.gethostbyname to verify that a given domain

35 messages 2003/09/25
[#83006] Re: TCPSocket.gethostbyname difficulties — Peter <Peter.Vanbroekhoven@...> 2003/09/25

> I can browse to either of those hosts, so what's different about them? Any

[#83014] Re: TCPSocket.gethostbyname difficulties — "Nathaniel Talbott" <nathaniel@...> 2003/09/26

Peter [mailto:Peter.Vanbroekhoven@cs.kuleuven.ac.be] wrote:

[#83030] Re: TCPSocket.gethostbyname difficulties — ts <decoux@...> 2003/09/26

>>>>> "N" == Nathaniel Talbott <nathaniel@NOSPAMtalbott.ws> writes:

[#83035] Re: TCPSocket.gethostbyname difficulties — "Nathaniel Talbott" <nathaniel@...> 2003/09/26

ts [mailto:decoux@moulon.inra.fr] wrote:

[#83036] Re: TCPSocket.gethostbyname difficulties — ts <decoux@...> 2003/09/26

>>>>> "N" == Nathaniel Talbott <nathaniel@NOSPAMtalbott.ws> writes:

[#83037] Re: TCPSocket.gethostbyname difficulties — "Nathaniel Talbott" <nathaniel@...> 2003/09/26

ts [mailto:decoux@moulon.inra.fr] wrote:

[#83011] Adding, removing and redefining features at runtime — "Thomas Sondergaard" <thomas@...>

I am working on an article on the subject of implementing dynamically typed

23 messages 2003/09/26

[#83105] Fwd: FW: Porting Suggestions: Lucene to Ruby; Perl Text::Balanced — Erik Hatcher <erik@...>

I was alerted about me being mentioned on ruby-talk, as I was not

12 messages 2003/09/27
[#83117] OT: alerts - was Re: Fwd: FW: Porting Suggestions: Lucene to Ruby; Perl Text::Balanced — Hal Fulton <hal9000@...> 2003/09/27

Erik Hatcher wrote:

[#83140] Thoughts on yield — nolan_d@... (Nolan J. Darilek)

I've begun working on a music-related ruby project, and recently I've

17 messages 2003/09/28

[#83223] Article on ARTIMA — Peter Hickman <peter@...>

There is the start of a series of articles on ARTIMA with Matz.

21 messages 2003/09/29

[#83310] Making == symmetric? — elbows@... (Nathan Weston)

It has always bothered me that == is not symmetric in ruby:

22 messages 2003/09/30

Re: OOP flavours - was Python vs. Ruby (long long long)

From: Massimiliano Mirra - bard <mmirra@...>
Date: 2003-09-06 23:13:53 UTC
List: ruby-talk #81293
This has been a great thread.  Lots of interesting concepts have been
argued and many interesting points of view have been shown.  It's
taking me a while to absorb it and I'm nowhere close to being
finished.  I'm attaching to Ryan's post as I found it especially
thought-provoking.

Ryan Pavlik <rpav@mephle.com> writes:
> Actually this isn't a very good example.  This whole argument about
> "print should be a member of an object" is demonstrably inelegant and
> wrong, for a number of reasons (some of which have been noted already):
>
>     *  The action of "printing" presupposes a few things:
>
>        -  A device to print on
>        -  A format in which to print
>        -  Content to print
>
>     *  A String specifies no device on which to print
>
>     *  A String provides content and, to some extent, format
>
>     *  The physical act of printing is device-dependent, and thus in
>        OOP should be encaspulated within the device representation object

One of the tough spots I've bumped into, and which has been touched in
this thread, too, is the difference (sometimes dissonance) between a
model that is easy to understand and a model that is easy to
develop/maintain/extend easily, or in other words an intuitive model
and a good working model.

The former seems to be about how much the model is close to
real world experience and common sense, the latter about how much it
follows certain practices and ways that programming experience has
shown to be effective (i.e. to enable to develop/maintain/extend
easily).

The dissonance lies in the unsurprising fact that an intuitive model
and a good working model don't necessarily coincide.  (Yeah, you are
authorized to think `truism' here. ;-))

Sometimes a very natural model is a very uncomfortable one.  The
example has been pointed out of drawing something on a sheet of paper,
with various combinations and orders of `pen', `paper', `ink',
`figure', and as many suggestions as to who does the `drawing' and
therefore who shall be the receiver of the message and who shall be
the parameter.

What surprised me lies in what was *not* suggested: that it is a
painter who might know how to do the drawing, rather than a pen or a
sheet of paper.  Now allow yourself to be a little surprised as well,
if you will, before reading on. :-)

Thinking from a real world perspective, it would seem only natural
that a painter knew his tools, had access to them and could use them.

Thinking from a programming perspective, though, this smells of
passive data and procedural thinking (which isn't necessarily bad).
Yes, I'm thinking exactly about the memory area that stands for the
sheet of paper and the procedure lighting up some bits here and there
to simulate a trace of ink.

Yet, still thinking from a programming perspective but this time
wearing our Object Oriented Wizard's clothes, it suddenly becomes
natural to think of pen, paper and ink as living and active things.
Wizard says to pen: `Pen, fly to the sheet of paper and draw!' and the
pen does so.  Or, to get back to the string and printing device
example, wizard says to string: `String, lay thyself on the device
surface!' or `Device, receive this string and make it appear on your
surface!'.

Interestingly, much was discussed about the proper combination of pen,
paper, ink and figure, but it seemed somewhat more quietly accepted
that it is a device that does the printing of a string.  The paper was
perceived passive, the device active.

But the device acts no more than the paper, and no more than the pen
or string; it's the painter that moves the pen and draws the figure on
the paper, and it's the device *driver* that moves the virtual pen and
draws the virtual figure on the device's virtual paper.

The `why' of our tendency to consider some things passive and some
things active would lots of thinking in itself.  Who knows, maybe it's
just that, as technology goes on, we're surrounded more and more by
reacting and acting objects, and it makes sense to assign this
property even to those things who were not born with such initiative,
when their representations live somewhere inside the most active of
real objects, the computer. [1]

Or it might just be that, doing so, some things work better, and we're
back to the dissonance between easy to understand vs. good working
systems.  And/or to an unsettling question: `In a world where we speak
to pens and they fly and write, do we really want to stay attached to
models resembling real world?  How many excellent and exciting models
have we chosen to not explore and discover just because they appear so
little natural and real world?'


[1] It was only when re-reading that sentence that I noticed `...those
things *who* were...''

>     *  Undesired coupling: If you store outside data or define outside
>        actions, you will end up in a situation where your methods
>        require outside context which isn't there:
>
>           w  = World.new
>           sp = Sphere.new(w, 0, 0, 5) # Bad coupling, the location and
>                                       # world should not matter here
>
>           :                           # elsewhere
>     
>           sp = Sphere.new(??.., 5)    # We might not have a World here,
>                                       # we just want a sphere
>
>           sp.circumference            # Outside information not relavent
>                                       # to the sphere itself
>
>
>           # Someone else implements it like this:
>
>           w  = World.new
>           sp = Sphere.new(5)
>
>           w.add(sp, 0, 0)             # Good, no coupling
>
>           :
>
>           sp = Sphere.new(5)          # No ties to worry about
>           sp.circumference

This was what most caught my attention, because in the meanwhile I was
working with GTK and teaching AWT on one side (where you do things
like window.add(widget) rather than Widget.new(window)) and was toying
with a little LOGO implementation in C/Ruby (where I had done
something like g = Graphics.new; t = Tortoise.new(g)).

From a real world (sort of) perspective on the model: are coordinates
a property of an object or not?  That's a good question, and I'm
terribly envious the certainty of your answer, Ryan. :-)

Michael Benedikt, architect, wrote about the dimensionality of
Cyberspace [2] and about intrinsic and extrinsic dimensions of
entities in a -- real or perceived -- space.  Intrinsic dimensions are
e.g. color, texture, temperature, etc.  Extrinsic dimensions are x, y,
z.  As an operative definition of extrinsic vs. intrinsic, I assume
that in a moving object extrinsic dimensions change while intrinsic
dimensions stay the same, because ext-rinsic dimensions depend on a
relation with an ext-ernal context.

(Now of course this is limited; intrinsic dimensions are measured on
some scale and once you take that as the external context, you've
turned intrinsic into extrinsic.  But my head is exploding already.)

Now the question: who owns/knows the values of extrinsic dimensions?

Is it the responsibility of the space to know where every sphere it
contains is placed, or is it the responsibility of each sphere to know
where it is, while the space's only job is to contain them?

That's a natural question to hear from a programmer, but then again,
from a real world perspective I don't think it's the right the
question.

Because, of course, it's us observers that realize the relation
between a context and the things it contains.  And coordinates in the
space is precisely a matter of relation among entities, something that
is `in between' the space and the sphere, rather than `of' the space
or `of' the sphere.  Just like the act of drawing is what lies between
a pen and a sheet of paper, not really belonging to either, maybe only
belonging to the painter's mind or hand.  (Attempt at a martial arts
or Japanese oriented joke: Hey, somebody please invent ma-oriented
programming!  :-))

It's this kind of concepts that I find difficult to model in an
object-oriented world, rather than in a procedural world (can I say
observer-oriented world?  Einstein has been insistently knocking
behind my left ear since I've started talking about space and
dimensions. ;-)).

And this leads me to...

The programmer's perspective on the model.  Because in the end we
build programs based not (only) on the rules and concepts that seem
most natural, but on the rules and concepts that work best.

For example: in a CAD we will often want to know the coordinates of
the sphere according to a default coordinate reference (world
coordinates).  When we have this setting:

>           # Someone else implements it like this:
>
>           w  = World.new
>           sp = Sphere.new(5)
>
>           w.add(sp, 0, 0)             # Good, no coupling

How would one get to know the coordinates of sp?  He would have to
travel (iterate) the world along the `contained objects' dimension
looking for the coordinates structure that refers to `sp', maybe
something like:

    coords = world.object_coordinates.find {|id, x, y, z| sp.id == id}

(And note that `id' is kind of an extrinsic dimension related to
another context -- memory -- here held in the object, not in the
context!)

On the other hand, querying `sp' about its coordinates is trivial if
extrinsic dimensions are stored in `sp' itself:

    print sp.x
    print sp.y
    print sp.z

This is more convenient.  But now the sphere is coupled to a specific
context, and we cannot extend the context (for example introducing a
fourth dimension) without making the contained objects aware of it.
Which I suppose is one of the consequences Ryan was getting at.

The sphere also spits out data that are not collected from its own
point of view, instead from that of an external observer, which could
be counted as one more (albeit subtler) break of encapsulation.

[2] _Cyberspace - First Steps_, Massachusetts Institute of Technology,
1991

> These get even worse as you start trying to tie objects and methods with
> less relation together, like String and IO.  Would you consider a
> String#display function that takes a GraphicsDevice?  A GD and
> coordinates? colors? fonts? transformations?  Things get out of hand
> quickly.  What if you're working with multiple interfaces?  String#print
> is an identical concept, except it's merely displaying on an inferior
> rendering device.  And it won't work for ncurses, or without a console.
> Could you use mixin to abstract #print to different devices?  Yes.
> Could you abstract the formatting complexities? Maybe.  Can you
> ensure the concept of printing even makes sense at the target?  No.

Somehow, the content has to arrive on the rendering device.  Somehow,
the device must know additional data about the representation of the
content (I don't say that this additional data `must arrive' because
the rendering device might as well make them up based on its own
reasoning.)

Now, the string is just content.  How does it get to the device?

Since we have accepted that objects can be active when it makes things
work better (ok, *I* have accepted that ;-)), I see nothing wrong
with:

    s = "Hello, world!"
    s.transmit_to(io_device)

....provided that there is some agreed convention that says that
io_devices get content through a well defined interface like:

    class IODevice
      def receive_content(content)
        ...
      end
    end

....so that String#transmit_to knows how to transfer itself to the
IODevice.  The requirement of String to know this interface is the
consequence of making it so intelligent that there must not be an
outside painter or observer that picks the letters up and carries them
to an io_device, thereby knowing both the string and io_device.

What I see something wrong with, and again what I think Ryan was
getting at in the post and in the quote above specifically, is when
string knows more than its content, i.e. knows that additional data
needed for representing a string on a device; data which, yet, is
device-dependent.

So rather than String#display_to or String#print_to, a more balanced
(less prone to abuses or consequences) way to let the string have some
initiative and yet not stomp on others' objects feet could be:

    s = "Hello, World!"
    s.transmit_to(io_device)
    io_device.set_color('blue')
    io_device.set_cursor(100, 70)
    io_device.print_content

Or just:

    s = "Hello, World!"
    s.transmit_to(io_device)

Which reads: IO device listens to the data space and is willing to
display the data that requests it, but at a time and in a way
depending on its policies, not the data's.

So io_device decides whether to automatically assign a presentation to
the content and display it right away, or wait until someone provides
presentation data, or schedule its presentation at regular intervals
in another thread, and so on.  Which, come to think about it, it's
just what could already be happening with SomeObject#display, if the
method name didn't make us assume a communication of content *and* a
subsequent presentation, but just a communication of content.

> Anyhow, this message is getting far too long, so that's all.

I can sense people regretting the same thought didn't come to my mind
sooner. O:-)



Massimiliano


In This Thread