Ruby Weekly News 24th - 30th October 2005

Posted by Tsela on Nov 1, 2005 5:06 AM EDT
RubyWeeklyNews.org; By Tim Sutherland
Mail this story
Print this story

Ruby Weekly News is a summary of the week's activity on the ruby-talk mailing list / the comp.lang.ruby newsgroup, brought to you by Tim Sutherland, with contributions from Christophe Grandsire.

http://www.rubyweeklynews.org/20051030.html

Ruby Weekly News 24th - 30th October 2005 =========================================

Ruby Weekly News is a summary of the week's activity on the ruby-talk mailing list / the comp.lang.ruby newsgroup, brought to you by Tim Sutherland, with contributions from Christophe Grandsire.

[Contribute to the next newsletter.]

Articles and Announcements ==========================

* Are there any lecturers or professionals... ---------------------------------------------

Daniel Lewis asked if any "lecturers or professionals" were available to give a presentation on Ruby, or on Rails, to the Brookes Computing Society in Oxford, England.

* Monitoring network traffic with Ruby and Pcap -----------------------------------------------

Daniel Berger spotted an article [Monitoring network traffic with Ruby and Pcap] on Ars Technica, written by Ryan Paul.

* OSDC (Melbourne, Australia) open for registrations ----------------------------------------------------

Australia's second Open Source Developers Conference (held in Melbourne) is now accepting registrations. (Australia is an island to the west of New Zealand.)

"The conference is running from Monday 5th - Wednesday 7th December 2005."

User Group News ===============

* New Haven Ruby Brigade Formed! --------------------------------

The University of New Haven Ruby Brigade have voted to disband :-( and re-form as the New Haven Ruby Brigade :-), for everyone in Southern Connecticut.

See also [UNH.rb may soon become NewHaven.rb].

* Beer & Pizza SIG; 8 pm, 10/26, San Francisco, CA, USA -------------------------------------------------------

Rich Morin announced another Beer & Pizza meeting in the San Francisco Bay Area - "No program; just a way for folks to get together and chat about Ruby, Rails, etc."

The meeting is (haha, was) on Wednesday, October 26th 2005.

* Gauteng.rb meetup tonight (Tuesday 25 October) ------------------------------------------------

Luke Randall foretold the first meeting of Gauteng.rb, in Sandton City, South Africa.

* grandrapids.rb November Meeting and Preparing for December ------------------------------------------------------------

November and December meetings for the grandrapids.rb group in Grand Rapids, Michigan were covered off by zdennis.

* VanRuby Meetup Tonight & Canada on Rails Conference Announcement ! --------------------------------------------------------------------

Nathaniel Brown announced the next VanRuby meeting (Vancouver), as well as "Canada on Rails" on April 13th and 14th 2006; the first Canadian conference about Ruby on Rails.

Quote of the Week =================

* Rent-a-Matz -------------

|> Hmm, how many of you have had Matz in your car? :D |> Myself, Eric, some others...

|Does a rental count?

Where was rental Matz available? I'd like one.

matz. Threads =======

Ruby Weekly News 17th - 23rd October 2005 -----------------------------------------

Last week we cheered James Edward Gray II for reaching a year's worth of weeks of Ruby Quiz.

Curt Hibbs said that it was well deserved, and added that such recognition is important, as it "provides people like James with a little extra motivation to keep it up."

| So, the next time you're using some open source ruby project or | benefiting from some community effort and you're thinking "this is | really nice", don't hesitate to drop a note to the author or to | ruby-talk saying thanks. It really does make a difference.

how private is private in ruby? -------------------------------

Peter Ertl wondered why it was possible to 'send' a private method:

#### class MyUltraSecretKeystore private def key return "nobody-should-read-this-ever" end end

ks = MyUltraSecretKeystore.new

puts ks.send(:key) # -> "nobody-should-read-this-ever" ####

James Edward Gray II indicated that although tools like send could indeed be dangerous because of the ways they bypass method scope, it was a trade-off with their sheer power.

Edward Faulkner added that Peter's choice of example indicated a misunderstanding of the meaning of "private" :

| "private" is not intended as a security measure. It's an encapsulation | technique. You'll find this is generally true in other languages as | well. You can certainly subvert "private" in C++.

an explanation that Hal illustrated with a very good (and applauded) analogy:

| I made an analogy the other day with the movie Apollo 13. Remember when | Bacon's character had been awake for many hours and was, as he said, "a | little punchy"? There was a toggle switch which would separate the two | modules (and thus doom to death the other two astronauts who were | spending their time in the other one). He taped a piece of paper over it | saying "NO." | | That's how "private" works.

Jeremy Kemper mentioned that currently in Ruby 1.9 one cannot send private methods.

But in the end privacy in Ruby can never be 100% ensured since as David A. Black indicated, one can always reopen the class itself and redeclare the private methods public.

What's your Ruby Number? (self.to_i) ------------------------------------

Hal Fulton offered a test to determine your Ruby number "in the spirit of the old "purity test" and the "nerdity test" that was derived therefrom."

The instructions are "cut, paste, run. Or just cut and run."

Hal suggested that Jim Freeze should get extra points for having a last name the same as a method in Ruby's core library, to which David A. Black generously offered:

| We doubled our number of core-method-named people at RubyConf this year, | thanks to the presence of Adam Keys as well as Jim Freeze. | | I'm still holding out for Matt Tainted? or Joe Instance_variable_get. | And if anyone legally changes his or her last name to a core method, he | or she will be admitted free of charge.

Ezra Zygmuntowicz:

| Hopefully we will never have a method called zygmuntowicz ;-) But I | thought =~ was pronounced "zygmuntowicz"! ...

Joel VanderWerf: "That's it. I'm legally changing my name to <=>. Sincerely, Mr. Spaceship."

_why:

| I think JEGII should keep his score cause he hacked it. David Black | deserves more points, though. I ended up with 4, but only because I knew | that I couldn't take the test in good conscience without adding a few | questions that would severely dock points for unsavory traits. | | I also filled it out for Minero Aoki, as a kind of fantasy quest. And | that really got me excited about starting an RPG based around the | premise of being Minero Aoki. Or maybe just a flight simulator.

Ruby's GC ---------

Jeremy Tregunna asked for a technical description of Ruby's current garbage collector.

Eric Hodel said that the short answer is "a conservative mark and sweep garbage collector", and Matz gave the longer one:

| conservative | | we use system stack and CPU registers for tracing root as well as | usual language roots (global/local variables etc.). jmpbuf is used | to access registers. | | mark and sweep | | simple mark and sweep, but uses Knuth's algorithm to avoid crash for | deep recursion.

Gabriele Renzi asked about the `generational' GC that he recalled was being worked on - "are there some news or this simply never happened and I'm crazy?"

Matz said that a generational GC had been implemented, but it had failed to perform better than the current collector. He will try again after YARV is merged.

TumbleDRYer (#53) -----------------

Hugh Sasse created this week's Ruby Quiz. The task is to write a program which takes repetitive input and creates a Ruby program that generates the input, without the repetition. It's all about DRY: Don't Repeat Yourself.

"This quiz is about writing a program which we'll call TumbleDRYer, which, given repetitive input, will create ruby code to generate that input, such that the generating program has much less repetition in it."

Cleaner syntax for .map (is there already a way, or ruby2 idea?) ----------------------------------------------------------------

Ron M found himself writing code like the following all the time:

people.map { |person| person.email_addr }

This is pretty short already, but could we make it even shorter (and less repetitive) by adding syntax like people[*].email_addr ?

The syntax could be extended to support nested arrays, so that departments[*].people[*].email_addr would be equivalent to today's

departments.map { |dept| dept.people.map { |person| person.email_addr } }

Trans said that Facets supports something like this already with people.every.email_addr, or people.%.email_addr.

What's wrong with just using map?, asked David A. Black.

Dave Burt argued that it's too verbose for simple cases, offering the example of result = array.map { |element| element.transform }

where the word element is written twice, compared to Groovy, where implicit parameters enable

result = array.map { it.transform() }

David A. Black came back with a new thread, ["Readability" inflation] in which he pondered the suggestions for changing Ruby's syntax that keep popping up.

| I think what's happening is that people who've used Ruby for a while get | used to it, and then they sort of shift their readability threshold. In | other words, if you've seen this: | | a.map {|b| b.meth } | | for several years, then even though it looked beautiful and concise and | transparent to you at first, it will start to look verbose and | syntactically inefficient. So then you might want to have: | | a.every.meth {|b| (or implicit var, or whatever) }

...

| So I think there's a kind of readability inflation going on: people who | are acclimatized to Ruby start feeling comfortable about going to the | "next" level of line-noise and/or compactness. | | I'd like to sound a note of caution about this. I think it has the | potential to disserve Ruby's interests, by moving the language away from | the thing that has been proven to be so attractive.

James Britt had a couple of theories. The first was that early users of Ruby were "language geeks" already, who were accustomed to a wide range of syntaxes. The second theory is that "Ruby is a "victim" of its own success" - users' expectations are raised because it is good for creating DSLs (Domain-Specific Languages).

Several people said they didn't find the { |foo| ... } syntax that great when they started with Ruby anyway.

The thread swung back to the "redundant block argument" topic of the original thread, with suggestions like playlist.sort_by :track_length as an alternative to playlist.sort_by { |e| e.track_length }

Brian Schröder proposed that a well-named argument can make the code easier to read. Compare for example playlist.sort_by :length with playlist.sort_by { |track| track.length }

This can be particularly important with a dynamically typed language (perhaps more precisely, "latently-typed") like Ruby, where you don't have type declarations in your code telling you what sort of objects you have. Your editor can attest that this extra bit of verbosity has proven invaluable when it comes to maintaining his own code - especially in keeping track of the shape of his data-structures. (For example, that a playlist is made up of tracks.)

New Releases ============

priority-queue 0.1.2 --------------------

Brian Schröder polished'n'released his priority queue implementation, containing both a pure-Ruby version and a C extension.

FuseFS-0.5 ----------

"Lo, another travesty was visited upon the ruby-talk community ... and this one was named ... FuseFS 0.5!", trumpeted Greg Millam.

FuseFS allows you to define filesystems in Ruby, for example the railsfs.rb filesystem which exposes your ActiveRecord objects as files containing YAML data.

Changes were made to update the library to FUSE 2.4, as well as adding the ability for filesystems to specify the sizes of their virtual files, and a lower-level interface to FUSE (useful for streaming).

FuseFS is Linux only, for now.

RubyPhone 0.1 released. -----------------------

Gregarican introduced RubyPhone, which allows a "TSAPI-compliant PBX system to join a CTI environment". Mkay.

Rails 1.0 Release Candidate 3 (0.14.2): A bunch of little things ----------------------------------------------------------------

David Heinemeier Hansson announced the third release candidate for Rails 1.0, fixing a memory leak with render_component and other issues.

Instant Rails 1.0 preview3 Released -----------------------------------

Curt Hibbs posted preview3 of Instant Rails 1.0, a "one-stop Rails runtime solution containing Ruby, Rails, Apache, and MySQL, all preconfigured and ready to run." (Currently Windows-only.)

Several bugs were fixed and the components were upgraded (including Rails to 1.0 preview3.)

Nitro Spark 0.6.0 -----------------

George Moschovitis happily announced a new version of Nitro Spark, a wiki system powered by the Nitro web application framework.

Facets 2005-10-30 -----------------

Trans announced the Halloween version of "The Proverbial Zoo-of-More for Ruby".

"Ruby Facets is a cornicopia of extension methods and module/class additions for the Ruby programming language."

rttool-1.0.0 ------------

rubikitch released version 1.0.0 of rttool, a program for converting files in the RT human-readable table format into HTML and plain-text.

rttool-1.0.1 was later announced.

Nitro + Og 0.24.0, Annotations, KirbyBase, SCGI, Og Evolution, Gen, Dynamic --------------------------------------------------------------------------- CSS... ------

George Moschovitis released new version of Og and Nitro, the former being an object-relational mapper library, and the latter a web application framework.

A number of significant features were added.

gdiff / gpatch 0.0.1 released -----------------------------

Brian Schröder posted gdiff / gpatch version 0.0.1 - pure-Ruby versions of the Generic Diff binary-diff format.

See also [Ruby Quiz for building up Ruby?], which proposed this task as a Ruby Quiz, as it will help RubyGems, which has a problem with the index file being too large.

  Nav
» Read more about: Groups: MySQL, Community; Story Type: News Story

« Return to the newswire homepage

This topic does not have any threads posted yet!

You cannot post until you login.