T
Tim Sutherland
http://www.rubygarden.org/ruby?RubyNews/2005-01-31
Ruby Weekly News 31st January - 6th February 2005
-------------------------------------------------
A summary of the week's activity on the ruby-talk mailing list / the
comp.lang.ruby newsgroup. This summary is brought to you by Tim Sutherland
(TimSuth).
Articles and Announcements
--------------------------
* [Toronto Ruby User Group meeting 6 Feb 2005]
Michael Stok announced that the Toronto Ruby User Group would have
their next meeting to eat and discuss Ruby on Sunday Feb 6, 2004.
"This is our regular first Sunday of the month meeting at Sushi
Rock in Toronto."
* [Ruby Quiz Domain]
James Edward Gray II has moved Ruby Quiz over to
http://www.rubyquiz.com/ and intends to do some [Rails]
development on the site in the future. He added "let me just take
this chance to MASSIVELY thank EVERYONE who has helped Ruby Quiz
in these first 18 weeks! It has been a much bigger success than I
expected and that is completely due to the wonderful community
forming around it. Every time you submit a quiz, a summary, or
even just work one of the quizzes you make my job that much easier
and I'm very grateful for that. "
* [IBM developerWorks article about Cerise]
Koen Vervloesem wrote an [article] for IBM developerWorks that
introduces [Cerise], a Ruby web application framework.
Quote of the Week
-----------------
Matt Maycock was caught [saying]
"Given that the OP mentioned Haskell, I think we should all try to come
up with some language that has the wonderfulness of Haskell with the
wonderful ness of Ruby. We could call it Rascal. Since Haskell cats
are all about domain specific languages, we could call DSLs in Rascal
"Little Rascals"... "
(Thanks to Dave Burt for suggesting this as the quote of the week.)
Threads
-------
Interesting threads this week included:
[ruby, gtk and windows..]
-------------------------
Tom Rathbone wanted to know if anyone had got Gtk+ and Ruby to work
together under Windows. Joao Pedrosa said that it was easy to setup and
linked to an install guide at
http://ruby-gnome2.sourceforge.jp/hiki.cgi?Install+Guide.
[Recommendable ruby books?]
---------------------------
Tom Rathbone asked what Ruby books people recommend, especially any that
give information on [Rails]. Brian McCallister suggested Programming Ruby,
2nd Ed (Pickaxe 2), Dave Thomas & Andy Hunt ("Most up to date and probably
the best general reference available") and The Ruby Way, Hal Fulton
("Quite good in my opinion, captures the spirit of ruby very well").
Curt Hibbs confirmed the rumour that Dave Thomas is writing a [Rails]
book.
[Oracle Adapter For Rails -- About When?]
-----------------------------------------
Matt Bowen had heard that an Oracle adaptor of ActiveRecord was being
developed (to allow the use of Oracle with [Rails]), and wondered when this
would be available. raymond capozzi replied with some good news - a patch
has recently been submitted that adds preliminary Oracle support.
[Default values for block parameters]
-------------------------------------
Matt Mower was using define_method to dynamically create a method, but
found that Ruby would not allow him to create a block having default
values for some parameters. For example, the following results in a syntax
error:
define_method("name") { |x=1,y=2,z=3| f(x,y,z) }
Robert Klemme suggested
define_method("name") { |*a| f(a[0] || 1, a[1] || 2, a[2] || 3) }
and guessed that default parameters were not supported since blocks are
usually called from only one place (e.g. each) so default parameters are
not useful. Mark Hubbart agreed with this assessment but suspected it
would change in the future. The development version of Ruby (version 1.9)
supports the &block syntax in block parameter lists, so we might expect
that block and method parameter lists will be made more consistent in
other ways.
[Ruby/DL and functions that modify a pointer]
---------------------------------------------
Ben Giddings had some C code like the following, and wanted to be able to
call it from Ruby. He wasn't sure what to pass in for results_ptr to allow
C to modify the structure.
typdef struct {
int status;
int results[16];
} foo_t;
int get_results(handle_t the_handle, foo_t *results_ptr)
{
results_ptr->status = 0;
results_ptr->results[0] = 0xFF;
return 0;
}
Takaaki Tateishi said that struct can be used to handle this, with the
code below demonstrating the idea
module MyLIB
extend Importable
dlload "...."
MyStruct = struct [
"int foo[3]",
]
extern "int get_data(void*)"
end
ptr = MyLIB::MyStruct.malloc()
MyLIB.get_data(ptr)
[symbols vs strings vs ?]
-------------------------
Joe Van Dyk wondered about the point of Symbols - when it is an advantage
to use them over Strings.
Assaph Mehr explained that "Symbols are immutable strings. Every occurence
of the same symbol correspondes to the same single object, while every
occurence of the same string is a different object (with the same value).
Thus symbols are a bit faster and cheaper to use in things like case
statements, hash keys etc. It's also usually a bit nicer to read in the
code, as it signifies that what you're looking it at is a unique
identifier, rather than something that can have a dynamic content."
[Ruby-muse Summary for Jan.]
----------------------------
trans posted a summary of January topics on the ruby-muse mailing list
(aka ruby-suby), a list for "musing" about Ruby or "suggesting"
improvements to the Ruby language. Topics covered include Aspect Oriented
Programming (AOP), prototype-based OO and subclassing vs delegation.
[[SUMMARY] To Excel (#17)]
--------------------------
James Edward Gray II summarised last week's [Ruby Quiz], which was to
write code to extract information from a report given in an inconsistent
human-readable format. The summary describes the process you can go
through to iteratively simplify the report.
[[QUIZ] Solving Tactics (#18)]
------------------------------
Bob Sidebotham came up with this week's [Ruby Quiz].
"There's a little pencil and paper game, Tactics, played on a 4x4 grid.
The play starts with an empty grid. On each turn, a player can fill in one
to four adjacent squares, either horizontally or vertically. The player
who fills in the last square loses."
"Your task, should you choose to accept it, is to write a Ruby program
which, given only these rules, determines whether the first or second
player is bound to be the winner, assuming perfect play."
[lack of reaction to latest ruby implementations]
-------------------------------------------------
Alexander Kellett wondered why no-one seemed to be commenting on YARV (a
Virtual Machine for Ruby) or Ruby2C (part of a project to implement Ruby
in Ruby).
Daniel came out with "Well, Alex, I kinda feel like a caveman who's just
been given a wrench. You're screaming "Look! Look! Look at this awesome
tool we've invented! And it's all yours!". I'm staring at the shiny new
metal thing, and deep down I get the feeling it's pretty important, but I
just don't know what to do with it."
Aredridel added "I think it's a case of bated excitement. We dare not
speak, for fear of disturbing progress. It's mostly for me, a combination
of having work to get done at the moment and no time to help -- I can only
watch from afar, and hope for the best."
There was also some discussion about Cardinal (project to run Ruby in
Parrot, which is the VM that will be used for Perl 6). gabriele renzi
mentioned that "the python frontend has had quite a lot of work lately,
mostly since Sam Ruby started hard hacking it, IIRC. Btw Ruby writing a
python frontend for a perl VM sounds too much funny ".
[[OT] A public thank you...]
----------------------------
Tom Copeland issues a public thank you "to Dennis Oelkers, who recently
provided another mirror for some of RubyForge's larger files. Now he and
Austin Ziegler are splitting the bandwidth load of 100+ GB per month that
RubyForge absorbs. Thanks guys!"
[Need to create zip files]
--------------------------
DaZoner wanted to create zip files through Ruby and wondered where he
could find some documentation or examples for rubyzip. Nathaniel Talbott
gave a link to http://rubyzip.sourceforge.net/doc/.
New Releases
------------
* [XDCC-Fetch 1.386]
martinus enhanced the GUI of XDCC-Fetch, a tool for searching,
collecting and downloading XDCC announcements within IRC channels.
* [Nitro + Og 0.9.3]
[Nitro + Og 0.9.5 (BUGFIX VERSION)]
George Moschovitis made some important changes to the [Nitro] web
application framework. Fastcgi support was added, as was a new
rendering pipeline (one of the benefits of which is easier unit
testing). A few days later he released version 0.9.5 to fix some
bugs.
* [Arachno Ruby SUSE 9.1 Linux 0.1]
[Arachno Ruby IDE 0.1.1 (for SUSE 9.1/9.2 and Ubuntu Linux)]
Lothar Scholz released a public beta of the Linux version of
[Arachno Ruby], a proprietary, commercial IDE.
* [Pimki 1.5]
Assaph Mehr improved [Pimki], a PIM (Personal Information Manager)
based on the Instiki wiki server.
* [Wee 0.7.0 + Tutorial Videos]
Michael Neumann added some new features to the Wee web application
framework. He also posted three tutorial videos.
* [LXL (Like Excel) 0.1.1]
Kevin Howe made the initial public release of [LXL], an evaluator
for a mini-language that mimics Microsoft Excel formulas.
* [eric3 snapshot released]
Detlev Offenbach added initial Ruby support to his IDE [eric3].
* [PQA v1.5 released!]
Tom Copeland fixed some bugs in [PQA], a database query analysis
tool. (It gives information like which queries in your application
take the most time to execute.)
* [ParseTree 1.3.3 and ruby2c 1.0.0 beta 1]
Ryan Davis announced the first public release of ruby2c, a tool
that converts a restricted subset of Ruby into C. The idea is to
allow Ruby internals to be written in Ruby rather than in C.
* [aeditor-2.3 (darkmatter release)]
Simon Strandgaard issued the latest release of AEditor, a
programmers editor written in Ruby.
* [net-mdns, multicast DNS and service discovery (aka "Rendezvous")]
Sam Roberts posted an extension to the standard 'resolv' library
that adds support for multicast DNS. An example of the use of
multicast DNS is for service discovery in Apple's Rendezvous.
* [Harmonium -- A distributed hash table implementation for Ruby]
Dido Sevilla made the first public release of Harmonium, a
distributed hash table implementation.
* [SQLite3/Ruby 1.0.0]
Jamis Buck declared that the Ruby binding for the SQLite3 database
was ready. "Here it is, at last. Bright, shiny. I think I'm going
to cry." Also announced is a "brand-spanking-new" [users manual].
* [mrplot-0.0.1]
Malte Harder released his first Ruby project: a general purpose
plotting library. It currently uses RMagick, but other backends
like OpenGL may be added in the future.
Ruby Weekly News 31st January - 6th February 2005
-------------------------------------------------
A summary of the week's activity on the ruby-talk mailing list / the
comp.lang.ruby newsgroup. This summary is brought to you by Tim Sutherland
(TimSuth).
Articles and Announcements
--------------------------
* [Toronto Ruby User Group meeting 6 Feb 2005]
Michael Stok announced that the Toronto Ruby User Group would have
their next meeting to eat and discuss Ruby on Sunday Feb 6, 2004.
"This is our regular first Sunday of the month meeting at Sushi
Rock in Toronto."
* [Ruby Quiz Domain]
James Edward Gray II has moved Ruby Quiz over to
http://www.rubyquiz.com/ and intends to do some [Rails]
development on the site in the future. He added "let me just take
this chance to MASSIVELY thank EVERYONE who has helped Ruby Quiz
in these first 18 weeks! It has been a much bigger success than I
expected and that is completely due to the wonderful community
forming around it. Every time you submit a quiz, a summary, or
even just work one of the quizzes you make my job that much easier
and I'm very grateful for that. "
* [IBM developerWorks article about Cerise]
Koen Vervloesem wrote an [article] for IBM developerWorks that
introduces [Cerise], a Ruby web application framework.
Quote of the Week
-----------------
Matt Maycock was caught [saying]
"Given that the OP mentioned Haskell, I think we should all try to come
up with some language that has the wonderfulness of Haskell with the
wonderful ness of Ruby. We could call it Rascal. Since Haskell cats
are all about domain specific languages, we could call DSLs in Rascal
"Little Rascals"... "
(Thanks to Dave Burt for suggesting this as the quote of the week.)
Threads
-------
Interesting threads this week included:
[ruby, gtk and windows..]
-------------------------
Tom Rathbone wanted to know if anyone had got Gtk+ and Ruby to work
together under Windows. Joao Pedrosa said that it was easy to setup and
linked to an install guide at
http://ruby-gnome2.sourceforge.jp/hiki.cgi?Install+Guide.
[Recommendable ruby books?]
---------------------------
Tom Rathbone asked what Ruby books people recommend, especially any that
give information on [Rails]. Brian McCallister suggested Programming Ruby,
2nd Ed (Pickaxe 2), Dave Thomas & Andy Hunt ("Most up to date and probably
the best general reference available") and The Ruby Way, Hal Fulton
("Quite good in my opinion, captures the spirit of ruby very well").
Curt Hibbs confirmed the rumour that Dave Thomas is writing a [Rails]
book.
[Oracle Adapter For Rails -- About When?]
-----------------------------------------
Matt Bowen had heard that an Oracle adaptor of ActiveRecord was being
developed (to allow the use of Oracle with [Rails]), and wondered when this
would be available. raymond capozzi replied with some good news - a patch
has recently been submitted that adds preliminary Oracle support.
[Default values for block parameters]
-------------------------------------
Matt Mower was using define_method to dynamically create a method, but
found that Ruby would not allow him to create a block having default
values for some parameters. For example, the following results in a syntax
error:
define_method("name") { |x=1,y=2,z=3| f(x,y,z) }
Robert Klemme suggested
define_method("name") { |*a| f(a[0] || 1, a[1] || 2, a[2] || 3) }
and guessed that default parameters were not supported since blocks are
usually called from only one place (e.g. each) so default parameters are
not useful. Mark Hubbart agreed with this assessment but suspected it
would change in the future. The development version of Ruby (version 1.9)
supports the &block syntax in block parameter lists, so we might expect
that block and method parameter lists will be made more consistent in
other ways.
[Ruby/DL and functions that modify a pointer]
---------------------------------------------
Ben Giddings had some C code like the following, and wanted to be able to
call it from Ruby. He wasn't sure what to pass in for results_ptr to allow
C to modify the structure.
typdef struct {
int status;
int results[16];
} foo_t;
int get_results(handle_t the_handle, foo_t *results_ptr)
{
results_ptr->status = 0;
results_ptr->results[0] = 0xFF;
return 0;
}
Takaaki Tateishi said that struct can be used to handle this, with the
code below demonstrating the idea
module MyLIB
extend Importable
dlload "...."
MyStruct = struct [
"int foo[3]",
]
extern "int get_data(void*)"
end
ptr = MyLIB::MyStruct.malloc()
MyLIB.get_data(ptr)
[symbols vs strings vs ?]
-------------------------
Joe Van Dyk wondered about the point of Symbols - when it is an advantage
to use them over Strings.
Assaph Mehr explained that "Symbols are immutable strings. Every occurence
of the same symbol correspondes to the same single object, while every
occurence of the same string is a different object (with the same value).
Thus symbols are a bit faster and cheaper to use in things like case
statements, hash keys etc. It's also usually a bit nicer to read in the
code, as it signifies that what you're looking it at is a unique
identifier, rather than something that can have a dynamic content."
[Ruby-muse Summary for Jan.]
----------------------------
trans posted a summary of January topics on the ruby-muse mailing list
(aka ruby-suby), a list for "musing" about Ruby or "suggesting"
improvements to the Ruby language. Topics covered include Aspect Oriented
Programming (AOP), prototype-based OO and subclassing vs delegation.
[[SUMMARY] To Excel (#17)]
--------------------------
James Edward Gray II summarised last week's [Ruby Quiz], which was to
write code to extract information from a report given in an inconsistent
human-readable format. The summary describes the process you can go
through to iteratively simplify the report.
[[QUIZ] Solving Tactics (#18)]
------------------------------
Bob Sidebotham came up with this week's [Ruby Quiz].
"There's a little pencil and paper game, Tactics, played on a 4x4 grid.
The play starts with an empty grid. On each turn, a player can fill in one
to four adjacent squares, either horizontally or vertically. The player
who fills in the last square loses."
"Your task, should you choose to accept it, is to write a Ruby program
which, given only these rules, determines whether the first or second
player is bound to be the winner, assuming perfect play."
[lack of reaction to latest ruby implementations]
-------------------------------------------------
Alexander Kellett wondered why no-one seemed to be commenting on YARV (a
Virtual Machine for Ruby) or Ruby2C (part of a project to implement Ruby
in Ruby).
Daniel came out with "Well, Alex, I kinda feel like a caveman who's just
been given a wrench. You're screaming "Look! Look! Look at this awesome
tool we've invented! And it's all yours!". I'm staring at the shiny new
metal thing, and deep down I get the feeling it's pretty important, but I
just don't know what to do with it."
Aredridel added "I think it's a case of bated excitement. We dare not
speak, for fear of disturbing progress. It's mostly for me, a combination
of having work to get done at the moment and no time to help -- I can only
watch from afar, and hope for the best."
There was also some discussion about Cardinal (project to run Ruby in
Parrot, which is the VM that will be used for Perl 6). gabriele renzi
mentioned that "the python frontend has had quite a lot of work lately,
mostly since Sam Ruby started hard hacking it, IIRC. Btw Ruby writing a
python frontend for a perl VM sounds too much funny ".
[[OT] A public thank you...]
----------------------------
Tom Copeland issues a public thank you "to Dennis Oelkers, who recently
provided another mirror for some of RubyForge's larger files. Now he and
Austin Ziegler are splitting the bandwidth load of 100+ GB per month that
RubyForge absorbs. Thanks guys!"
[Need to create zip files]
--------------------------
DaZoner wanted to create zip files through Ruby and wondered where he
could find some documentation or examples for rubyzip. Nathaniel Talbott
gave a link to http://rubyzip.sourceforge.net/doc/.
New Releases
------------
* [XDCC-Fetch 1.386]
martinus enhanced the GUI of XDCC-Fetch, a tool for searching,
collecting and downloading XDCC announcements within IRC channels.
* [Nitro + Og 0.9.3]
[Nitro + Og 0.9.5 (BUGFIX VERSION)]
George Moschovitis made some important changes to the [Nitro] web
application framework. Fastcgi support was added, as was a new
rendering pipeline (one of the benefits of which is easier unit
testing). A few days later he released version 0.9.5 to fix some
bugs.
* [Arachno Ruby SUSE 9.1 Linux 0.1]
[Arachno Ruby IDE 0.1.1 (for SUSE 9.1/9.2 and Ubuntu Linux)]
Lothar Scholz released a public beta of the Linux version of
[Arachno Ruby], a proprietary, commercial IDE.
* [Pimki 1.5]
Assaph Mehr improved [Pimki], a PIM (Personal Information Manager)
based on the Instiki wiki server.
* [Wee 0.7.0 + Tutorial Videos]
Michael Neumann added some new features to the Wee web application
framework. He also posted three tutorial videos.
* [LXL (Like Excel) 0.1.1]
Kevin Howe made the initial public release of [LXL], an evaluator
for a mini-language that mimics Microsoft Excel formulas.
* [eric3 snapshot released]
Detlev Offenbach added initial Ruby support to his IDE [eric3].
* [PQA v1.5 released!]
Tom Copeland fixed some bugs in [PQA], a database query analysis
tool. (It gives information like which queries in your application
take the most time to execute.)
* [ParseTree 1.3.3 and ruby2c 1.0.0 beta 1]
Ryan Davis announced the first public release of ruby2c, a tool
that converts a restricted subset of Ruby into C. The idea is to
allow Ruby internals to be written in Ruby rather than in C.
* [aeditor-2.3 (darkmatter release)]
Simon Strandgaard issued the latest release of AEditor, a
programmers editor written in Ruby.
* [net-mdns, multicast DNS and service discovery (aka "Rendezvous")]
Sam Roberts posted an extension to the standard 'resolv' library
that adds support for multicast DNS. An example of the use of
multicast DNS is for service discovery in Apple's Rendezvous.
* [Harmonium -- A distributed hash table implementation for Ruby]
Dido Sevilla made the first public release of Harmonium, a
distributed hash table implementation.
* [SQLite3/Ruby 1.0.0]
Jamis Buck declared that the Ruby binding for the SQLite3 database
was ready. "Here it is, at last. Bright, shiny. I think I'm going
to cry." Also announced is a "brand-spanking-new" [users manual].
* [mrplot-0.0.1]
Malte Harder released his first Ruby project: a general purpose
plotting library. It currently uses RMagick, but other backends
like OpenGL may be added in the future.