[#45942] win32ole and excel — Martin Stannard <martin@...>

Hi,

19 messages 2002/08/01

[#45948] "gets" blocking process not thread (in Windows only) — Matt Pattison <mfp@...>

The problem with my program is that (in Windows) gets seems to block the entire

13 messages 2002/08/01

[#46030] IO.readlines is slow ? — "Shashank Date" <ADATE@...>

I really like the convenience of doing:

18 messages 2002/08/02

[#46072] How to Load Script from a C Extension? — William Djaja Tjokroaminata <billtj@...>

Hi,

20 messages 2002/08/02

[#46107] embed or swig? — ptkwt@...1.aracnet.com (Phil Tomson)

I'm working a C++ project for a contract I'm doing. Originally, the

21 messages 2002/08/03

[#46128] Assoc Class (Hash Pairs) — Tom Sawyer <transami@...>

i've been thinking about posting this as an RCR.

28 messages 2002/08/03

[#46136] Should this work? — "Hal E. Fulton" <hal9000@...>

Should multiple assignment work for the

17 messages 2002/08/03

[#46192] Detecting when an instance variable is created/set — Harry Ohlsen <harryo@...>

Imagine we have a class like ...

22 messages 2002/08/04
[#46198] Re: Detecting when an instance variable is created/set — Tom Sawyer <transami@...> 2002/08/04

On Sun, 2002-08-04 at 06:03, Harry Ohlsen wrote:

[#46207] Re: Detecting when an instance variable is created/set — Harry Ohlsen <harryo@...> 2002/08/04

> > Can I write a method (of class Object or Kernel, perhaps) that will be

[#46226] Re: Detecting when an instance variable is created/set — Massimiliano Mirra <list@...> 2002/08/04

On Sun, Aug 04, 2002 at 10:32:44PM +0900, Harry Ohlsen wrote:

[#46264] Dynamic creation of classes and methods — Tomasz Wegrzanowski <taw@...>

I want to create classes and methods on fly.

11 messages 2002/08/05

[#46341] More questions on automation from na誰ve Windows user. — Chris Gehlker <gehlker@...>

Hi all,

15 messages 2002/08/05

[#46356] Coding challenge (on Ruby Garden) — David Alan Black <dblack@...>

Hello --

47 messages 2002/08/06

[#46357] Compiling Ruby to Native Code? — web2ed@... (Edward Wilson)

Having looked at OCaml, after following a post to this group, one

20 messages 2002/08/06

[#46426] Is There an Inverse of 'rb_define_method'? — William Djaja Tjokroaminata <billtj@...>

Hi,

15 messages 2002/08/06

[#46442] COM on Unix? — Chris Gehlker <gehlker@...>

As part of my crusade to make Ruby an automation language I read up a little

12 messages 2002/08/06

[#46443] Dup and Clone — "Justin Johnson" <justinj@...>

Could anyone kindly point out the difference between 'dup' and 'clone'?

17 messages 2002/08/06

[#46475] Named paramters again — "Justin Johnson" <justinj@...>

26 messages 2002/08/07
[#46534] Re: Named paramters again — "Gavin Sinclair" <gsinclair@...> 2002/08/07

[#46537] RE: Named paramters again — "Rich Kilmer" <rich@...> 2002/08/07

[#46550] GUI's and the Rouge, Part IV — Kero van Gelder <kero@...>

Funny, two savannah accounts for the same objective:

12 messages 2002/08/07

[#46565] Re: Unicode in Ruby now? — "Marcin 'Qrczak' Kowalczyk" <qrczak@...>

Wed, 7 Aug 2002 16:41:18 +0900, Curt Sampson <cjs@cynic.net> pisze:

12 messages 2002/08/07

[#46732] ambiguity between local variable assignment and writter method — Tom Sawyer <transami@...>

does anyone else find it annoying that local variable assignment is

56 messages 2002/08/09
[#46788] Re: ambiguity between local variable assignment and writter method — dblack@... 2002/08/10

Hi --

[#46791] Re: ambiguity between local variable assignment and writter method — Tom Sawyer <transami@...> 2002/08/10

On Fri, 2002-08-09 at 22:50, dblack@candle.superlink.net wrote:

[#46794] Re: ambiguity between local variable assignment and writter method — dblack@... 2002/08/10

Hi --

[#46734] Re: ambiguity between local variable assignment and writter method — Paul Brannan <pbrannan@...> 2002/08/09

On Sat, Aug 10, 2002 at 03:00:28AM +0900, Tom Sawyer wrote:

[#46737] Re: ambiguity between local variable assignment and writter method — Tom Sawyer <transami@...> 2002/08/09

On Fri, 2002-08-09 at 12:05, Paul Brannan wrote:

[#46739] Re: ambiguity between local variable assignment and writter method — Dave Thomas <Dave@...> 2002/08/09

Tom Sawyer <transami@transami.net> writes:

[#46741] Re: ambiguity between local variable assignment and writter method — GOTO Kentaro <gotoken@...> 2002/08/09

At Sat, 10 Aug 2002 03:44:45 +0900,

[#46748] Re: ambiguity between local variable assignment and writter method — Dave Thomas <Dave@...> 2002/08/09

GOTO Kentaro <gotoken@notwork.org> writes:

[#46753] Re: ambiguity between local variable assignment and writter method — Tom Sawyer <transami@...> 2002/08/09

On Fri, 2002-08-09 at 13:30, Dave Thomas wrote:

[#46841] Ah, I'm finally back from Japan ... — Dossy <dossy@...>

Not like anyone cares (or noticed) but my two week stay in Japan

12 messages 2002/08/10

[#46875] To be a Module, or not to be... — Holden Glova <dsafari@...>

-----BEGIN PGP SIGNED MESSAGE-----

12 messages 2002/08/11

[#46911] Choosing ruby? — Rhymes <raims@...>

27 messages 2002/08/11

[#46957] Handling forms on database driven websites — Philip Mak <pmak@...>

Ever since I learned Perl, Ruby and MySQL, I've built several database

10 messages 2002/08/12

[#47000] Primary Key Hash help — "Chris Morris" <chrismo@...>

I have a huge data file with rows like this:

17 messages 2002/08/12

[#47134] Data_Make_Struct Considered Dangerous? — William Djaja Tjokroaminata <billtj@...>

Hi,

39 messages 2002/08/13

[#47212] Ruby Weekly News — Dave@...

21 messages 2002/08/14

[#47292] Thought question: Where does "new" come from? — "Hal E. Fulton" <hal9000@...>

I've been brooding again on the circularities

28 messages 2002/08/15
[#47342] Re: Thought question: Where does "new" come from? — "Hal E. Fulton" <hal9000@...> 2002/08/15

----- Original Message -----

[#47346] Re: Thought question: Where does "new" come from? — dblack@... 2002/08/15

Hi --

[#47365] Re: Thought question: Where does "new" come from? — "MikkelFJ" <mikkelfj-anti-spam@...> 2002/08/15

[#47369] Re: Thought question: Where does "new" come from? — dblack@... 2002/08/15

Hello --

[#47372] Re: Thought question: Where does "new" come from? — "MikkelFJ" <mikkelfj-anti-spam@...> 2002/08/15

[#47377] Re: Thought question: Where does "new" come from? — dblack@... 2002/08/16

Hi --

[#47344] eruby editor — "Kyle Wilson" <kyle.wilson@...>

Hello. I was wondering if anyone knows of a text editor which will

17 messages 2002/08/15

[#47440] Help with a segv in mod_ruby — Dave Thomas <Dave@...>

14 messages 2002/08/16

[#47461] How do I dup file descriptors in ruby? (diverting STDERR) — "Richard A. Ryan" <ryan@...>

Hello,

12 messages 2002/08/16

[#47464] IDE vs. editor — Holden Glova <dsafari@...>

-----BEGIN PGP SIGNED MESSAGE-----

43 messages 2002/08/16

[#47547] Re: What Ruby needs. — "Shashank Date" <ADATE@...>

I do not have any problem with item 1) on your wish list as long as I don't

13 messages 2002/08/18

[#47559] Ruby Bot — Giuseppe Bilotta <bilotta78@...>

Hello,

14 messages 2002/08/18

[#47643] thread control — "Shashank Date" <ADATE@...>

I am trying to write a ruby script (Ruby 1.7.2 mswin32) which does the

21 messages 2002/08/20

[#47695] What makes a "good" Ruby extension? — Tim Hunter <cyclists@...>

So I'm reading the "Comparing Gui Toolkits" wiki page

14 messages 2002/08/20

[#47749] What New Language After Ruby? — William Djaja Tjokroaminata <billtj@...>

To Andrew Hunt and David Thomas:

74 messages 2002/08/21
[#47754] Re: What New Language After Ruby? — Wilkes Joiner <boognish23@...> 2002/08/21

Although activity seems to have died down, here are some links

[#47817] A Repeat: New Language After Ruby? — William Djaja Tjokroaminata <billtj@...>

Hi,

54 messages 2002/08/21
[#47820] RE: A Repeat: New Language After Ruby? — " JamesBritt" <james@...> 2002/08/21

[#47918] Win32 Scripting — Sean Middleditch <elanthis@...>

Hi,

13 messages 2002/08/22

[#48035] Why Ruby Uses Mark-and-Sweep GC? — William Djaja Tjokroaminata <billtj@...>

Hi,

39 messages 2002/08/23

[#48062] Ruby and Judy — Joseph McDonald <joe@...>

29 messages 2002/08/23

[#48082] Distributed Object Container — junderdown@... (Jason Underdown)

Is anyone out there in the Ruby community working on an object

23 messages 2002/08/24
[#48185] Re: Distributed Object Container — "Gavin Sinclair" <gsinclair@...> 2002/08/26

----- Original Message -----

[#48223] Ruby Based App Server — junderdown@... (Jason Underdown)

I posted a similar question a few days ago, but didn't get any

21 messages 2002/08/26

[#48264] Ruby developers: help push RPKG development and usage forward!! (it is like CPAN.pm, only Ruby) — itsnewsforme@... (M S)

A big complaint from people looking into Ruby is that they don't see

36 messages 2002/08/27
[#48292] Re: Ruby developers: help push RPKG development and usage forward!! (it is like CPAN.pm, only Ruby) — ts <decoux@...> 2002/08/27

>>>>> "M" == M S <itsnewsforme@yahoo.ca> writes:

[#48296] RE: Ruby developers: help push RPKG development and usage forward!! (it is like CPAN.pm, only Ruby) — "Rich Kilmer" <rich@...> 2002/08/27

Actually, it would be nice to have them online, but not necessarily

[#48336] Re: Ruby developers: help push RPKG development and usage forward!! (it is like CPAN.pm, only Ruby) — Massimiliano Mirra <list@...> 2002/08/27

On Tue, Aug 27, 2002 at 09:39:32PM +0900, Rich Kilmer wrote:

[#48358] RE: Ruby developers: help push RPKG development and usage forward!! (it is like CPAN.pm, only Ruby) — "Rich Kilmer" <rich@...> 2002/08/28

http://kt-www.jaist.ac.jp/~ttate/ruby/ruby-dl.html

[#48362] RE: Ruby developers: help push RPKG development and usage forward!! (it is like CPAN.pm, only Ruby) — Tom Sawyer <transami@...> 2002/08/28

On Tue, 2002-08-27 at 19:32, Rich Kilmer wrote:

[#48367] RE: Ruby developers: help push RPKG development and usage forward!!(it is like CPAN.pm, only Ruby) — "Rich Kilmer" <rich@...> 2002/08/28

You can just install it in another directory and then go to that

[#48369] RE: Ruby developers: help push RPKG development and usage forward!!(it is like CPAN.pm, only Ruby) — Tom Sawyer <transami@...> 2002/08/28

uh, sorry, how do i get 1.7.2? i tried anonymous cvs but it said NO. did

[#48371] RE: Ruby developers: help push RPKG development and usageforward!!(it is like CPAN.pm, only Ruby) — "Rich Kilmer" <rich@...> 2002/08/28

Nightly CVS snapshot:

[#48274] ANN: RJudy-0.1 - Judy Arrays for Ruby — Lyle Johnson <lyle@...>

All,

17 messages 2002/08/27

[#48477] Newbie converting brain from perl — William Pietri <william-news-383910@...>

20 messages 2002/08/28

[#48544] Best GC for Ruby? — "Justin Johnson" <justinj@...>

34 messages 2002/08/29

[#48573] FXRuby Threading Problem Solved? — Lyle Johnson <lyle@...>

All,

14 messages 2002/08/29

[#48584] suggestions to the Ruby community — stibbs <stibbs@...>

Hi, first i would like to state that i absolutely love Ruby more than any

85 messages 2002/08/29
[#48923] Re: suggestions to the Ruby community — <bbense+comp.lang.ruby.Sep.03.02@...> 2002/09/03

-----BEGIN PGP SIGNED MESSAGE-----

[#48930] RE: suggestions to the Ruby community — " JamesBritt" <james@...> 2002/09/03

> >I was surprised just now to find that there is no absolute requirement

[#49017] Re: suggestions to the Ruby community — <bbense+comp.lang.ruby.Sep.04.02@...> 2002/09/04

-----BEGIN PGP SIGNED MESSAGE-----

[#48657] ICFP Programming Contest — Alan Chen <alan@...>

http://icfpcontest.cse.ogi.edu/task.html

12 messages 2002/08/30

[#48705] Ruby aesthetics — vegai@...

Hello. I've been checking into python lately quite a lot, and I

192 messages 2002/08/31
[#49010] Re: Ruby aesthetics — "Hal E. Fulton" <hal9000@...> 2002/09/04

----- Original Message -----

[#49100] Re: Ruby aesthetics — Paul Prescod <paulp@...> 2002/09/05

On Thu, 5 Sep 2002, Hal E. Fulton wrote:

[#49112] Re: Ruby aesthetics — William Djaja Tjokroaminata <billtj@...> 2002/09/05

Hi,

[#49154] Re: Ruby aesthetics — Paul Prescod <paulp@...> 2002/09/05

On Thu, 5 Sep 2002, William Djaja Tjokroaminata wrote:

[#49161] Re: Ruby aesthetics — Christian Szegedy <szegedy@...> 2002/09/05

Paul Prescod wrote:

[#49173] Re: Ruby aesthetics — William Djaja Tjokroaminata <billtj@...> 2002/09/05

Hi,

[#49183] Re: Ruby aesthetics — <paul@...> 2002/09/05

On Fri, 6 Sep 2002, William Djaja Tjokroaminata wrote:

[#49189] Re: Ruby aesthetics — William Djaja Tjokroaminata <billtj@...> 2002/09/05

I think we have communicated very well; I agree with all you said. May I

[#49191] Re: Ruby aesthetics — <paul@...> 2002/09/05

On Fri, 6 Sep 2002, William Djaja Tjokroaminata wrote:

[#49272] Re: Ruby aesthetics — William Djaja Tjokroaminata <billtj@...> 2002/09/06

Hi Matz,

[#49293] Re: Ruby aesthetics — matz@... (Yukihiro Matsumoto) 2002/09/06

Hi,

[#49312] Re: Ruby aesthetics — <paul@...> 2002/09/06

On Sat, 7 Sep 2002, Yukihiro Matsumoto wrote:

[#49321] Re: Ruby aesthetics — dblack@... 2002/09/06

Hello --

Re: What makes a "good" Ruby extension?

From: "Hal E. Fulton" <hal9000@...>
Date: 2002-08-20 23:32:53 UTC
List: ruby-talk #47700
----- Original Message -----
From: "Tim Hunter" <cyclists@nc.rr.com>
Newsgroups: comp.lang.ruby
To: "ruby-talk ML" <ruby-talk@ruby-lang.org>
Sent: Tuesday, August 20, 2002 5:31 PM
Subject: What makes a "good" Ruby extension?


> So I'm reading the "Comparing Gui Toolkits" wiki page
> (http://www.rubygarden.org/ruby?ComparingGuiToolkits) and I notice that
> the author characterizes one of the Ruby interfaces as "Perl-like" and
> another as "immature." As someone who's been busy beavering away at his
> own Ruby interface to an existing C library for some months now, I'm
wondering,
> just what makes a "good" Ruby interface? (After all, I don't want to
> embarrass myself by offering a bad one to the Ruby community :-)

Well, if it's on the Internet, it must be true. :)

> Going by my own standards for software, I'm assuming that a good Ruby
> interface should be
>
> 1) usable, that is, not buggy, reasonably efficient, and predictable
> 2) complete, that is, provides a complete interface to whatever it's
> interfacing with
> 3) documented, (no point having an interface that you can't figure out)
and
> 4) supported, so you have some hope of getting bugs fixed, etc.
>
> Does this sound right? What else is important? I'm especially intrigued
> by the notion of a "Perl-like" binding vs. a
> "Ruby-like" binding. What makes an interface "Ruby-like?"

An interesting question. I'll offer an opinion or two.

An API should take advantage of the things Ruby does
well -- the things that make it Ruby -- WHEN this is
appropriate.

Most of my examples here will deal with only the API
that is exposed to the user... if we got into coding
style, I could probably come up with even more.

Examples:

1. Use class variables and methods in the API as needed.
2. If you have a collection or list, consider giving it
an iterator. Consider more than one kind, e.g. with_index.
3. If you do an open/close or start/stop, consider using
an "non-iterating" iterator for this. Examples are
File.open, Mutex#synchronize, and Dir.chdir (the new one).
4. If a method takes an object, consider whether it might
be meaningful for it to take a block instead or in addition.
5. Make use of nil where appropriate.
6. Make use of the existing modules, especially Enumerable
and Comparable, where appropriate.
7. Use symbols if/when appropriate. Sometimes they make a
good substitute for string constants or arbitrary integer
values.
8. Create meaningful exception classes as needed.
9. Provide objects with to_a, to_s, to_i, etc., as needed.
10. Give objects good 'inspect' methods.
11. Remember that often it matters less what class a thing
is than what methods it responds to. One of my favorite
examples: Suppose your method appends each thing in a collection
onto an object supplied by the caller (obj << item). This
will work whether the 'obj' passed in is a string, array, or
file (since you can meaningfully append onto any of them
with a << operation).
12. As regards #9, we also have to_ary, to_str, and (I think?)
to_int.
13. If you define some kind of numeric class, make sure it can
be coerced as needed.
14. Subclass as needed. This is just good OO besides good Ruby.
Subclass your own classes and/or the predefined ones.
15. Use hashes when convenient/appropriate. They're powerful.
16. As regards #11 above, remember to hide implementation
details to de-couple with the caller. If a hash has numeric
keys, it resembles an array (if you only use [] and []=). Or
it could even be your own special data structure.
17. Use readers/writers/accessors when appropriate.
18. Don't be afraid to add to existing classes/modules when
it makes sense to do so. That's why they're open.
19. An occasional alias can help an API. (Some people don't
like this, but I do.) In the core, indexes and indices are the
same for Arrays. For Strings, size and length are the same. Etc.
20. When an object needs to act "almost" like another object,
minus some functionality, consider delegation (delegate.rb).
21. When appropriate, make use of the ? and ! suffixes in the
standard way.
22. When appropriate, use default values for parameters.
23. Use Struct when it will help you. This will often prevent
indexing into arrays with arbitrary indices.
24. Be platform independent when you can. There are things like
File::SEPARATOR (?) that help with this.
25. Consider whether it makes sense to marshal an object. If so,
try to write the class so that it remains marshallable.
26. Overload operators as needed. That's why we have the capability.
27. In your API, try to use terminology consistent with the rest
of the Ruby world. (Sigh. I don't always do this either.)
28. It's a good idea (though I don't practice what I preach) to
try to support non-US and/or non-ASCII users to the extent you can.
29. Use singleton methods for objects where it makes sense. For
example: In a GUI, you might allow the user to attach a method
directly to a Button object.
30. Worry about performance last, and only when needed. (Some may
flame me for this.) If you really need great performance, write
a C extension. Otherwise stay in Ruby. Conceivably you might even
offer options for some pieces.
31. Allow users to represent their data in creative ways. If your
"foo" method takes an array, see if it makes sense for it to take
a hash also (or any object that knows [] and []=). If it takes a
string, see if a regex makes sense. Et cetera...
32. Make use of method_missing where appropriate. At the very
least, catch undefined methods that may be generated/called at
runtime. Hmm, unneeded? Ruby does it for you...
33. If you add to a class or module, go to the highest meaningful
level of generality. Don't add to File if it belongs in IO. Don't
add to a dozen classes if it belongs in Enumerable.
34. Consider making objects thread-safe when appropriate, since
Ruby has thread capabilities.
35. Consider a "hybrid iterator" (if I may call it that) which
returns a list when called without a block.
36. Don't forget that Ruby is dynamic. I'm not sure what I mean
by saying this, but don't forget it.  :)
37. Avoid camelCase in your API. Some like it, some use it, but
it isn't done in the core, I think. Likewise avoid using capitalized
method names (unless perhaps they perform data conversion, like
Integer). Underscores are generally accepted (i.e., used in the core).
38. Don't force users to use global variables or the Perl-like
"swearing" variables ($!, $_, etc.).
39. Don't forget there is such a thing as a Range class. Allow
users to pass in ranges where it makes sense.
40. Allow arbitrary numbers of parameters where it makes sense.
41. Make error messages and exceptions as meaningful as possible.
You can include data in them when it helps.
42. Use Rubylike ways of dealing with data. For example, don't
represent a time as an array of numbers or a string, but as a
Time object. If you need to convert to/from the other representations,
provide a way to do so.

Oh, yeah. And wear sunscreen.

Hal Fulton


In This Thread