[#14459] Overloading Constructors. — "Florian G. Pflug" <fgp@...>
Hi
Hi,
On Tue, May 01, 2001 at 10:20:23AM +0900, Yukihiro Matsumoto wrote:
Hi,
[#14464] who uses Python or Ruby, and for what? — ellard2@...01.fas.harvard.edu (-11,3-3562,3-3076)
A while ago I posted a request for people to share their experiences
Its interesting that people consider the number of
On Tue, 1 May 2001 10:27:58 +0900, Bryan Zarnett <bryan_zarnett@yahoo.ca> wrote:
[#14517] RAA — ptkwt@...1.aracnet.com (Phil Tomson)
[#14552] emacs and ruby debugging — "Joseph McDonald" <joe@...>
[#14555] Ruby as a Mac OS/X scripting language — Dave Thomas <Dave@...>
I was looking at OS/X yesterday and although the sales
I'm confused by people saying that there is no scripting language for Mac OS
Applescript is there, as is Perl. I guess (IMHO) that
[#14556] Ruby code: the lost generation — David Alan Black <dblack@...>
Hello --
[#14557] Arggg Bitten by the block var scope feature!!! — Wayne Scott <wscott@...>
>
[#14598] Re: Arggg Bitten by the block var scope feature!!! — "Conrad Schneiker" <schneik@...>
# On Thu, 3 May 2001, Wayne Scott wrote:
On Fri, 4 May 2001, Conrad Schneiker wrote:
On Fri, May 04, 2001 at 08:51:32AM +0900, David Alan Black wrote:
[#14600] Design by contract — "J J" <jj5412@...>
Any interest/thoughts on implementing simple design by contract in Ruby?
[#14601] bizarre File open, read, close problem on Win98? — ptkwt@...1.aracnet.com (Phil Tomson)
[#14609] scope of base class instance variable — "Chochain Lee" <cclee@...>
Hi,
[#14629] Database Abstraction Framework — "Florian G. Pflug" <fgp@...>
Hi
[#14636] Yet another "About private methods" question — Eric Jacoboni <jacoboni@...2.fr>
I'm still trying to figure out the semantics of private methods in Ruby.
Eric Jacoboni <jaco@teaser.fr> writes:
Greetings from a newbie,
On Sat, 5 May 2001, Chris Montgomery wrote:
"Guy N. Hurst" <gnhurst@hurstlinks.com> writes:
On Tue, 8 May 2001, MJ Ray wrote:
On Tue, 8 May 2001, Guy N. Hurst wrote:
[#14663] Vote for anime character — "Gudrun Heinrichmeyer" <Gudrun.Heinrichmeyer@...>
I vote for a modern friendly symbol clearly associated with japan, the animcharacter.
[#14683] Class refresher please. — "John Kaurin" <jkaurin@...>
class B
[#14689] ranges — "Joseph McDonald" <joe@...>
[#14710] Why's Ruby so slow in this case? — Stefan Matthias Aust <sma@3plus4.de>
Sure, Ruby, being interpreted, is slower than a compiled language.
[#14740] have I messed up my setup, or are these real irb problems? — Dave Thomas <Dave@...>
[#14743] ANTLR rules for Ruby — matz@... (Yukihiro Matsumoto)
Hi,
matz@zetabits.com (Yukihiro Matsumoto) writes:
[#14753] Re: Ruby on AIX? — "Conrad Schneiker" <schneik@...>
Sean Rusell wrote:
[#14762] skipping arguments — touch freedom <stillflame@...>
this is going to be a stream of thought, not really one coherant question. i am sorry(or 'you are welcome', in some cases).
[#14768] SimpleDelegator assymetry — Robert Feldt <feldt@...>
Hi folks,
[#14777] Completely freaky behavior — "J J" <jj5412@...>
I've got a class that sets a variable in a method like so:
[#14780] AW: Re: SimpleDelegator assymetry — Wyss Clemens <WYS@...>
...does your solution remove obsolete methods?
[#14792] Integer division oddness — "Mike T. Miller" <mtm@...>
My father pointed out this oddity.
[#14793] Polymorphic methods — "J J" <jj5412@...>
In C++ you can have polymorphic methods such as
[#14825] [Q] Why module methods are NOT included by 'include' statement? — Leonid Razoumov <see_signature@127.0.0.1>
Ruby has a powerful 'include some_module' statement which imports into the
[#14881] Class/Module Information — "John Kaurin" <jkaurin@...>
It is possible to modify the following code to produce
[#14932] Re: Automatic inclusion of modules — "rashworth" <rashworth@...>
What is your translation of:
[#14945] ICQ LIB for Ruby — "Anders Johannsen" <anders@...>
Hi
[#15004] Re: Standard practices for module distribution — Renald Buter <buter@...>
On Fri, May 11, 2001 at 04:40:00PM +0100, ruby-talk@ruby-lang.org wrote:
Renald Buter wrote:
Ok, the synapsis aren't firing so well today.
[#15005] Re: Mascot/Icon Ruby Laser — "Conrad Schneiker" <schneik@...>
Furio R Filoseta wrote:
[#15006] Komodo support for Ruby? — Brian Sobolak <sobolak@...>
On Sat, 12 May 2001, Brian Sobolak wrote:
[#15011] DRuby/Rinda/TupleSpace Dokumentation — "Florian G. Pflug" <fgp@...>
Hi
# Is there any documentation of DRuby/Rinda/TupleSpace in english?
[#15034] Re: calling .inspect on array/hash causes core dump — ts <decoux@...>
>>>>> "A" == Andreas Riedl <viisi@chello.at> writes:
Question 1
[#15043] Can't compile 1.7 — Urban Hafner <the-master-of-bass@...>
Hello,
[#15047] Ruby/GTK question and future RAA suggestions — "Conrad Schneiker" <schneiker@...>
Hi,
[#15056] Syntax highlighting — Stephan K舂per <Stephan.Kaemper@...>
Hi,
[#15057] ncurses-bindings — Stefan Nobis <stefan@...>
Hi.
[#15069] Flushing TkText — "John Kaurin" <jkaurin@...>
I am converting a command line program that had
[#15071] bytecode compilation — Steven Haryanto <steven@...>
Hi folks,
Not exactly what you want, but look at ruby2c (rb2c)
[#15096] [Q] Rroc#arity ambiguity. Is it a bug? — Leo <slonika@...>
Hi experts,
[#15101] Re: Ruby on AIX? — Christian Szegedy <szegedy@...>
Here is a solution:
[#15115] Q: GUI framework with direct drawing capabilities? — Stefan Matthias Aust <sma@3plus4.de>
Hi!
Stefan Matthias Aust <sma@3plus4.de> writes:
[#15125] Re: How do I alias a class method? — Mathieu Bouchard <matju@...>
On Tue, 15 May 2001, Mathieu Bouchard wrote:
On Tue, 15 May 2001, David Alan Black wrote:
Hi,
[#15162] Regexp (a\1) — ts <decoux@...>
[#15173] Re: Discussion on new Ruby features — Christian Szegedy <szegedy@...>
Dave Thomas wrote:
[#15174] class << self — Hans-Dieter Stich <hdstich@...>
hi!
Hans-Dieter Stich <hdstich@commplex-media.de> writes:
[#15193] Re: Discussion on new Ruby features — Christian Szegedy <szegedy@...>
Angus McIntyre wrote:
[#15197] Re: Discussion on new Ruby features — Christian Szegedy <szegedy@...>
Dave wrote:
[#15198] Re: Q: GUI framework with direct drawing ca pabilities? — Steve Tuckner <SAT@...>
Would it be a good idea to develop a pure Ruby GUI framework built on top of
-----BEGIN PGP SIGNED MESSAGE-----
[#15216] Re: Discussion on new Ruby features — "Christian Szegedy" <szegedy@...>
matz wrote:
[#15234] Pluggable sorting - How would you do it? — "Hal E. Fulton" <hal9000@...>
Hello all,
Hi,
Wayne Scott <wscott@bitmover.com> writes:
From: Dave Thomas <Dave@PragmaticProgrammer.com>
Is there a built in way to turn an array
[#15235] Bug or feature? eval("x=5") — "Hal E. Fulton" <hal9000@...>
Hello Rubyists...
[#15268] WriteExcel for Ruby — Hans-Dieter Stich <hdstich@...>
btw, i'm trying to port John McNamara
[#15272] Re: Discussion on new Ruby features — "Benjamin J. Tilly" <ben_tilly@...>
>===== Original Message From matz@zetabits.com (Yukihiro Matsumoto) =====
[#15290] Ruby in Java — Glen Starchman <glen@...>
[#15318] — "Michael Dinowitz" <mdinowit@...2000.com>
subscribe michael dinowitz
[#15325] help with rubyunit — Max Ischenko <max@...>
[#15333] how to use garbage collection relyably? — viisi@... (Andreas Riedl)
hi!
[#15364] Re: Time.times problems in libc5; getrusage request — ts <decoux@...>
>>>>> "G" == Guy N Hurst <gnhurst@hurstlinks.com> writes:
[#15366] UnMac — Chris Moline <ugly-daemon@...>
Hi, I was reading the anti mac paper that showed up on slashdot and figured why not?? For those who don't follow slashdot, the paper was about alternative interfaces. In this case an interface similar to the ones found in text adventure games. I think this is a cool idea. A sample session would be
[#15391] PROPOSAL: Java-like method-based synchronization mechanism in Rub y — Wyss Clemens <WYS@...>
Hi all,
[#15394] Re: Ruby in Java — ts <decoux@...>
>>>>> "M" == Mathieu Bouchard <matju@sympatico.ca> writes:
[#15403] how to remove method from singleton class — Joel VanderWerf <vjoel@...>
[#15438] Newbye question: retrieving a Class by its classname — "Benoit Cerrina" <benoit.cerrina@...>
Hi,
[#15448] RCR: #const_name_is — Mathieu Bouchard <matju@...>
[#15456] more reflection — Mathieu Bouchard <matju@...>
Hi,
On Mon, 21 May 2001, Yukihiro Matsumoto wrote:
[#15470] Re: Embedding Ruby - Segfaults? — ts <decoux@...>
>>>>> "S" == Sean Middleditch <elanthis@users.sourceforge.net> writes:
[#15474] Ruby catching error signals — Sean Middleditch <elanthis@...>
Hi again!
[#15493] One for the FAQ — "Matthew Bloch" <mattbee@...>
initialize NOT initialise, dammit :-) The error message:
[#15511] Tk Bitmaps — "John Kaurin" <jkaurin@...>
The following code works when I use a bitmap from the Ruby Tk demos kit
[#15512] Newbie GC question — Ashley Roeckelein <ashley.DONT@...>
Hi,
[#15549] ColdFusion for Ruby — "Michael Dinowitz" <mdinowit@...2000.com>
I don't currently use Ruby. To tell the truth, I have no real reason to. I'd
[#15569] I like ruby-chan ... — Rob Armstrong <rob@...>
Ruby is more human(e) than Python. We already have too many animals :-).
----- Original Message -----
On Wed, 23 May 2001, Hal E. Fulton wrote:
[#15590] Re: -lX11 error installing Ruby — ts <decoux@...>
>>>>> "C" == Collins Richey <erichey2@home.com> writes:
[#15599] Language specification reference — Lothar Scholz <llothar@...>
Hello,
[#15601] How to avoid spelling mistakes of variable names — ndrochak@... (Nick Drochak)
Since Ruby does not require a variable to be declared, do people find
ndrochak@gol.com (Nick Drochak) writes:
On Thu, 24 May 2001, Dave Thomas wrote:
Jim Freeze <jim@freeze.org> writes:
[#15602] Interactive Ruby II — Mario Lang <mlang@...>
Hello.
[#15615] help attr_reader — bashar asad <baasad@...>
hello;
[#15633] Q: Function modification/Procedures — Daishi Harada <daishi@...>
Hi,
[#15646] Disabling stderr — "Tom Spilman" <tspilman@...>
Is there a way to keep Ruby from sending exception info to the stderr
[#15683] Newbie: each! — Martin Julian DeMello <mdemello@...>
I'm trying to write an each! iterator that will iterate over an object
[#15688] every body wants java — bashar asad <baasad@...>
its really frustrating when you try to look for a job noadays.... you know so
[#15704] gnome, bonobo and corba. — Erik B虍fors <erik@...>
Hi all,
[#15725] Wow! (impressed newbie) — sjr3a@... (Stephen Ramsay)
I just got the Programming Ruby book a few days ago and have been reading it
[#15734] java based interpreter and regexes — "Wayne Blair" <wayne.blair@...>
I have been thinking about the java based ruby interpreter project, and I
>
Does anyone have any experience with javacc? I've been playing with it and
[#15735] Compilation helper — Sean Middleditch <elanthis@...>
Hi!
[#15738] Ruby globbing problem? — Guillaume Cottenceau <gc@...>
[#15754] Challenges of java interpreter — "Wayne Blair" <wayne.blair@...>
"Stefan Matthias Aust" <sma@3plus4.de> wrote:
"Wayne Blair" <wayne.blair@relian.com> wrote:
[#15782] Subsets of a set — Harry Ohlsen <harryo@...>
I know that the Array class has a number of methods that make it usable
[#15793] Check a few characters of a string: How? — "Franz GEIGER" <fgeiger@...>
Want to check the first or last character of a string or say any character
[#15804] is it possible to dynamically coerce objects types in Ruby? — mirian@... (Mirian Crzig Lennox)
Greetings to all. I am a newcomer to Ruby and I am exploring the
Hi,
In article <990979671.433370.24481.nullmailer@ev.netlab.zetabits.com>,
Hi,
In article <991006658.571333.26080.nullmailer@ev.netlab.zetabits.com>,
Hi,
In article <991014401.628418.26898.nullmailer@ev.netlab.zetabits.com>,
On Mon, 28 May 2001, Mirian Crzig Lennox wrote:
[#15828] subclassing Date — Michael Husmann <Michael.Husmann@...>
Using ruby 1.6.0 and trying to subclass the Date class like
[#15832] Can irb have smart completion? — Max Ischenko <max@...>
Hi,
[#15846] gtk/glib — Patrik Sundberg <ps@...>
hi,
[#15863] Experimental "in" operator for collections — Stefan Matthias Aust <sma@3plus4.de>
There's one thing where I prefer Python over Ruby. Testing whether an
[#15871] embedded ruby — Wesley J Landaker <wjl@...>
Hello list, =)
[#15886] Q about TrueClass & FalseClass — Stefan Matthias Aust <sma@3plus4.de>
Hi!
[#15894] Dir[] — "Todd Smith" <todd@...>
I can get a list of files to be returned from a line such as:
[#15923] Block arguments vs method arguments — Mike <mike@...>
Hi,
[#15925] Re: Block arguments vs method arguments — ts <decoux@...>
>>>>> "M" == Mike <mike@lepton.fr> writes:
----- Original Message -----
On Thu, May 31, 2001 at 11:53:17AM +0900, Hal E. Fulton wrote:
At 11:01 PM 5/31/2001 +0900, Sean Russell wrote:
In article <5.1.0.14.2.20010531160016.00aa8aa8@mail.vex.net>,
mirian@cosmic.com (Mirian Crzig Lennox) writes:
[#15947] Traffic seems to be up significantly — ptkwt@...1.aracnet.com (Phil Tomson)
[#15954] new keyword idea: tryreturn, tryturn or done — Juha Pohjalainen <voidjump@...>
Hello everyone!
[#15955] .scan() using '/' as the regular expression delimiter — "Luke Crook" <lcluke@...>
I am trying to parse an Apache log file. The date field looks like:
[#15960] Ruby Standard and Enterprise Edition — Bryan Zarnett <b@...>
One of the best "marketing" things that Java did was there standard and
[#15998] ruby-mode not hilighting keywords in XEmacs 21.4? — jeffrey@... (Jeffrey P Shell)
In a freshly-built XEmacs 21.4.3 with lots-o-packages installed,
[#16030] /src/rough — "Akinori MUSHA" <knu@...>
Hello,
[#16068] require and include confusion — Albert Wagner <alwagner@...>
I have totally confused myself about the relationship between require and
[#16087] linked list redux — Al Chou <hotfusionman@...>
Hi, all,
>Hi, all,
Johan Dahl <Johan.Dahl@ling.lu.se> writes:
[ruby-talk:14538] interfaces to some existing C/C++ code?
[Synopsis: a C library I work with uses opaque integer handles to
refer to internal toolkit objects. It also requires correct
deallocation order for some of the objects. I can write a
wrapper layer for the C implementation of Python to have it do the
correct automatic garbage collection, but can't figure out how to
use Ruby for the same task, because finalization order isn't
guaranteed and because it assumes C extension types are always
through pointers.]
Hello,
I posted this on c.l.py but Matz asked that I repost it here.
This is the more appropriate group, but I'm a long time Python
developer and c.l.py people nearly always do a good job of describing
the pros and cons of different languages. Plus, posting here meant
I needed to reread the FAQ and the back newsgroups postings.
The topic was on C/C++ integration. From my admittedly poor
understanding of Ruby, I don't follow how I could use it for a
system I worked on called PyDaylight.
The Daylight toolkit is a library for chemical informatics.
It contains data types like "molecule", "atom", "bond", "pattern"
and "reaction." It is written in C but exposes a consistent
API for both C and Fortran programmers. This API uses opaque
object handles to refer to internal objects. These are represented
as integers - starting with 1 - because Fortran doesn't have a
pointer data type. The internal data model is object oriented,
but it is hidden behind that API.
For example, using the SWIG'ged Python interface to the C code
(this is from memory, commentary on the right)
>>> from dayswig_python import *
>>> dt_smilin("CO") # Create a molecule
1 # the molecule handle is 1
>>> dt_typename(1) # Get the toolkit's name for this type
'molecule'
>>> dt_stream(1, TYP_ATOM) # Create an iterator over the atoms
2 # this is a new object
>>> dt_next(2) # Get the first object in the iterator
3 # another new objet
>>> dt_typename(3) # What is it?
'atom' # an atom
>>> dt_symbol(3) # What kind of atom is it?
'C' # carbon
>>> dt_next(2) # Next atom
4
>>> dt_symbol(4)
'O' # is an oxygen
>>> dt_next(2) # Next atom?
0 # nope, finished with the iteration
>>> dt_dealloc(2) # Remove the iterator
1
>>> dt_dealloc(1) # Remove the molecule
1
>>>
The interface layer I wrote in Python hides this low-level interface
to allow the following
>>> from daylight import Smiles
>>> for atom in Smiles.smilin("CO"):
... print atom.typename, atom.symbol
...
atom C
atom O
>>>
It does this by:
- wrapping the integer handle inside of a class instance, as in
class dayobject:
def __init__(self, handle):
self.handle = handle
def __int__(self):
return int(self.handle)
...
class Atom(dayobject):
...
atom = Atom(3) # where 3 is an atom handle
The __int__ method allows a dayobject instance to be coerced into
the value expected by the SWIG interface. The int(self.handle)
is needed for reasons discussed below.
- converting attribute lookup to function calls via a getattr hook,
which lets me do 'atom.symbol' instead of 'dt_symbol(atom.handle)'
(In Python, the getattr hook lets the instance define how to
resolve attribute lookups if the attribute isn't otherwise found.
Ruby has a similar method, if my memory serves me correct.)
- converting the toolkit iterator model to a Python one, either
by direct conversion to a list (eg, bond.atoms returns a list
with two Atom instances) or through a lazy interface (eg,
an iterator through all the compounds in a database). I
know Ruby does iterators well.
- doing the appropriate garbage collection.
I'm not sure how well Ruby handles this last part. Let me
explain in even more detail.
The lifetime of a toolkit object may be dependent on another
object (its parent). For example, the lifetime of an atom is
dependent on the molecule. If the molecule is deallocated, then
all of its atoms are deallocated. (If an atom is deallocated,
it is deleted from the molecule, but the molecule persists.)
The lifetime doesn't even always depend on the object type. For
example, the molecule may be created on its own, or may be part
of a "reaction" data type. (In the reaction "[OH-] + [H+] -> [H2O]"
there are three molecules.)
The only place which knows the lifetime of the object is the
function used to create it. By reading the documentation and
experimenting I found what they were. These create an integer
handle which I wrap with a new object, something like:
class smart_ptr:
def __init__(self, handle):
self.handle = handle
def __int__(self):
return self.handle
def __del__(self):
dayswig_python.dt_dealloc(self.handle)
Here's where you see why dayobject's __int__ calls int(self.handle) -
if it's a smart_ptr, it still needs to be converted into an integer.
Consider the molecule. If I create a molecule from scratch
then I return a Molecule wrapping a smart_ptr wrapping the handle
def smilin(smiles):
mol_handle = dayswig_python.dt_smilin(smiles)
return Molecule(smart_ptr(mol_handle))
If instead I return a molecule which is a component of a reaction
I use:
mol_handle = ... # code not shown because it's too complicated
# and irrelevant to this discussion
return Molecule(mol_handle)
This approach works because of the __del__ method, which is how
Python does finalization. In the C implementation, it is called
when the reference count goes to 0. (It is not called when
the garbage collecter finds and removed non-accessible cycles.)
This lets me use Python's garbage collector for all toolkit objects.
Things get trickier. Some objects manage their own lifetime
but are also dependent on another object. One such is the
'MatchObject' used for substructure searches. If the molecule
is deleted, the toolkit invalidates all of the handles used
in any MatchObject related to the molecule.
Consider
class MatchObject(daylight.dayobject):
def __init__(self, mol, smarts, match_handle, flags):
daylight.dayobject.__init__(self, match_handle)
self.mol = mol
...
def __del__(self):
del self.handle
del self.mol
This saves both the handle for the MatchObject ('match_handle')
*and* the handle for the molecule ('mol'). Because it keeps a
reference to the molecule, that molecule will not be garbage
collected until all of the MatchObjects are also removed. From
tests, this is the expected behaviour.
But notice that the finalizer is careful about the order in
which objects are deleted. The match object is removed before
deleting the molecule. If the order was reversed, then the
ref count for the molecule goes to 0 so gets dt_dealloc'ed
by the smart_ptr's __del__. The toolkit then invalidates
all of the match objects associated with the molecule.
Python doesn't know the match object handles are invalid. When
the 'del self.handle' occurs, the smart_ptr for the match
object calls its __del__, which tries to deallocate the
invalidated match object. This is not allowed by the toolkit,
although thankfully it returns an error message rather than
core dumping. By deleting the objects in the correct order
I ensure the library calls are done as needed by the toolkit.
I understand that Ruby also has a way to do finialization for
an instance, but I'm concerned about several things.
1. The size of a toolkit object can be large - up to 64K atoms,
which is a couple of MB. Because Ruby doesn't know anything
about that memory, how does it know when to do garbage collection?
Under the C implementation of Python, this object is gc'ed when
it is no longer needed - when the ref count hits 0.
It can't be subtle and search memory for pointer-like values
because the toolkit stores a table mapping the integer handles to
the internal pointer.
2. The Ruby way to do finialization seems to be with a
'ObjectSpace.define_finalizer' method, which associates a finalizer
with each object instance. Does that mean each instance I
create needs to be registered? (As compared to Python where
I define the finalization in the class definition - not with
each instance.)
3. That lets me implement the 'smart_ptr' behaviour, but I
still don't understand how to define finalization relationships
between two Ruby objects, so that I can guarantee one object is
removed before the other. In pure Ruby code this isn't needed,
but I need to match the semantics expected by the C library. In
Python I did it by defining the order in the __del__ (specifically
in MatchObject.__del__)
I cannot find a pure Ruby solution to this problem, which means
working at the C level. I know just how complicated the Python
code was to ensure the correct dependencies - I'm glad I could code
everthing up in Python. Is a pure Ruby solution possible?
I read in http://www.rubycentral.com/book/ext_ruby.html how
to manage a C pointer with Data_Wrap_Struct. This interface
allows you to tell the gc which associated objects should
be marked as "in use." In some sense this is what I'm looking
for excepting two things:
a. I still don't know how to tell it which objects are to be
deleted first. Are those mark relationships stored so the
acyclic components are removed in the correct order?
b. I don't have a C pointer. All I have are integers. I guess
I could cast them to a pointer value, but there's always the
chance it could collide either with a real pointer or with
another library which also uses integer handles.
If my observations are correct, then there is a category of C
libraries which do not work well under Ruby but do work well
under the C implementation of Python.
(I say C implementation of Python because the __del__ semantics
are implementation dependent. The Daylight toolkit is also
available in Java via JNI. My code can talk to it using Jython.
But Jython doesn't run the __del__ methods, instead leaving
gc up to the Java runtime. But the JVM doesn't know the internals
of the toolkit, so I end up leaking memory all over the place.)
BTW, if you wish, the source code for this Python package is available
at http://starship.python.net/crew/dalke/PyDaylight-0.7.tar.gz and
a description of some of the implementation details is available in
the Jan. 2001 Dr. Dobbs.
Sincerely,
Andrew
dalke@acm.org
P.S.
Any errors in interpretation of Ruby or Python are purely my
fault. My background is in physics and my interest these days
is software applications development for computational chemistry
and biology. That means I may not use the right computer science
words for certain topics and that I do not have the experience
to readily understand how Ruby works.