What’s Hot on GitHub – April 2009
What's Hot on Github is a monthly(ish) post highlighting interesting GitHub-hosted Ruby-related projects that are new or updated within the past month.

What's Hot on Github is a monthly(ish) post highlighting interesting GitHub-hosted Ruby-related projects that are new or updated within the past month.
It was just several months ago that we first began to mention MacRuby on Ruby Inside, but it's been coming on by leaps and bounds since then. MacRuby is a Mac OS X-based Ruby implementation that works on the Objective C runtime. It's based on Ruby 1.9 and uses the YARV VM (as Ruby 1.9 does) but will be switching to LLVM at the next major release. MacRuby is attempting to make Ruby a first class OS X development language.
The always popular MountainWest RubyConf took place again this year on March 13-14 and the always awesome Confreaks team was on hand to record all of the presentations. Already they have 31 videos of MWRC 2009 up and ready to view in both HD (720p) and 640x360 MPEG4 formats. This is a goldmine of viewing and even if you don't get to a single Ruby conference this year, these videos could do 90% of the work for you.
Sau Sheong Chang works at Yahoo!'s Singapore office. Yahoo! isn't implemented in Ruby, of course, but Sau's made an attempt at implementing a basic search engine in Ruby and has written a pretty interesting, indepth article about the whole process. Sau's search engine is formed of a crawler, indexer, and query system, and uses Hpricot, DataMapper, and Sinatra to get things done. Lots of code, lots of explanations - go read it.
Twibot is a Sinatra-esque "micro framework" for building Twitter bots (somewhat like Isaac is for IRC).
Try this:
In late 2008, 399 Ruby developers took part in the 2008 Ruby GUI Survey, conducted by Alex Fenton. The results are now available. There's a brief summary of the results, as well as an excellent 20 page report (!!) and a separate 16 page PDF giving the per-question totals.
Heist is a Scheme interpreter by James Coglan written in Ruby. Scheme is a programming language that's a dialect of Lisp, was an influence upon Ruby, and still a popular choice for learning functional programming (such as in the classic Structure and Interpretation of Computer Programs).
Can you remember what a hideous chore it was to deploy Ruby-based apps (Rails apps being a key example) before early 2008? FastCGI, proxying schemes, plain old CGI - it was all a bit of a mess. It was so bad, in fact, that in January 2008 we posted No True "mod_ruby" Is Damaging Ruby's Viability On The Web and kicked off a major discussion about it (115 comments!)
Marc-André Cournoyer has proven that almost anything is possible by developing a small, functional, and surprisingly "unslow" Ruby VM called TinyRB. Some basic testing shows that it's faster than 1.8 on a Fibonacci benchmark, though slightly slower than JRuby, Rubinius, and YARV (Ruby 1.9).
Apache CouchDB is a "distributed, fault-tolerant and schema-free document-oriented database accessible via a RESTful HTTP/JSON API" that has received quite a bit of publicity in developer circles in the past year. It's written in Erlang, so has all of the scalability and flexibility the Erlang environment brings to the table, but as a RESTful service, you can use it from pretty much anywhere.
Feedzirra is an all-new Ruby feed parsing (it's not a generator) library by Paul Dix. The choice of feed parsing libraries in Ruby has been reasonably limited so far, so Feedzirra is a most welcome addition to the Ruby ecosystem. Its focus is on pure speed - it uses Nokogiri (an ultra fast Ruby XML parser that depends on libxml) and curb (bindings for libcurl - to do the HTTP work) so compilation is required. Feedzirra was designed to be used to fetch thousands of feeds, process updates quickly, save on bandwidth (with conditional GETs, etc) and be dead simple to use.
Rhodes - developed by Rhomobile - is an intriguing framework of Ruby interpreters that can be used to develop native applications for the iPhone, Windows Mobile, RIM (Blackberry) and Symbian smartphone platforms (with Android support to come). Last month, Werner Schuster (of InfoQ) wrote a basic roundup of how Rhodes works.

The Government of Fukuoka Japan, together with the Fukuoka Ruby Award Selection Committee, is running the 2009 Fukuoka Ruby Award Competition. In short, they're trying to raise public awareness of the growing software industry in Japan but also Ruby in general.
Apologies for the buzzword collision in the title, but Cloudkit really is a RESTful JSON-powered storage appliance that uses Rack! Think of it as a schema-less, HTTP accessible database of sorts - like CouchDB without some of the more advanced features. It's all written in Ruby and makes it ridiculously easy to set up a fully discoverable, RESTful, JSON API.
Whenever you run a Ruby program, Ruby's parser processes the code and turns it into an "abstract syntax tree" (an AST) which can then be either turned into bytecode for YARV (on Ruby 1.9) or be interpreted immediately (as with Ruby 1.8).
What's Hot on Github is a monthly post highlighting interesting projects that are new or updated this month, within the Ruby community that are hosted on Github. Github has become an extremely popular place for Ruby and Rails developers to congregate lately, so I wanted to list some of the new projects, and some of the updated ones, that I have found interesting and that are too small for their own blog post.
If you've ever investigated how to build your own compiler, you might be familiar with LLVM (Low Level Virtual Machine), a "compiler infrastructure" that makes it easy(ish) to create virtual machines, code generators, and optimizers of your own. It also has its own intermediate representation language that's architecture independent and the instruction sets and typing system available are similarly language independent. In theory, if you want to build your own programming language and a compiler for it, LLVM will get you most of the way.
HappyMapper is John Nunemaker's attempt at "making XML fun again" for Rubyists by providing an object to XML mapping library with a succinct syntax. Essentially, you can use HappyMapper to rapidly turn XML into Ruby objects - even nesting them inside and referring to each other. This is powerful stuff. To install, just gem install happymapper
Earlier this month, Rails Envy's Gregg Pollack gave a talk at RubyConf08 called Scaling Ruby (without the Rails). He answered questions like "How do existing Ruby applications use Threads/Processes to scale?", "How do we implement an Event Driven application using Ruby EventMachine?", "What are the current bottlenecks with speeding up Ruby and how can they be fixed?", and "What does Ruby 1.9 bring to the table to speed things up?" From what I hear, it was a very well received and informative session.
Merb - a much heralded, highly flexible Ruby-based Web application framework - has reached version 1.0 after two years of development. Congratulations to Merb's creator, Ezra Zygmuntowicz, and to the large group of associated developers (such as Yehuda Katz and Matt Aimonetti) who've kept adding features and pushed Merb forward to be a significant alternative to Rails.
Charles Nutter, of the core JRuby team, writes:
Yesterday, Aaron Patterson (@tenderlove) and Mike Dalessio released Nokogiri (Github repository), a new HTML and XML parser for Ruby. It "parses and searches XML/HTML faster than Hpricot" (Hpricot being the current de facto Ruby HTML parser) and boasts XPath support, CSS3 selector support (a big deal, because CSS3 selectors are mega powerful) and the ability to be used as a "drop in" replacement for Hpricot.
What's Hot on Github is a monthly post highlighting interesting projects that are new or updated this month, within the Ruby community that are hosted on Github. Github has become an extremely popular place for Ruby and Rails developers to congregate lately, so I wanted to list some of the new projects, and some of the updated ones, that I have found interesting and that are too small for their own blog post.
Giles Bowkett is anything but a quiet chap - indeed, he's one of the more outspoken members of our community. With the roar, however, comes a lot of wisdom, and Giles recent work on integrating Ruby and MIDI is inspired.
JS.Class is an attempt at making JavaScript more Ruby-like. More specifically, it's a library that makes object oriented development easier in JavaScript (in comparison to JS's prototype technique, at least) by implementing Ruby's core object, module, and class systems as well as some of Ruby's meta-programming techniques.
