
Ruby's is not known for its deftness with XML. On RubyFlow, I considered calling the community to arms over it, and solicited twenty responses on what the problem is, and what we could do about it. Robert Fischer was lamenting on the state of Ruby's libxml library, and didn't seem to like REXML much either. Tim Bray has also had a few complaints about REXML. It seemed there was a problem to be fixed; a gap in the market, as it were, for a decent XML parser for Ruby. Hpricot, despite really being an HTML parser, would have to get us by in the meantime.
Today, however, libxml-ruby 0.8.0 has been released, and Charlie Savage explains why this is such a big deal. libxml-ruby now runs on Windows (thanks to Charlie), doesn't segfault all the time, and the bindings have all been fixed over the past year (thanks to Dan Janowski). You can get going with it right now with a simple gem install libxml-ruby
libxml-ruby is known for its performance, the latest release doesn't disappoint. For a range of simple tasks, libxml clocks in at ten times quicker than Hpricot like-for-like and between 30 and 60 times faster than REXML. Charles adds:
In addition to performance, the libxml-ruby bindings provide impressive coverage of libxml's functionality. Goodies include:
- SAX
- DOM
- XMLReader (streaming interface)
- XPath
- XPointer
- XML Schema
- DTDs
- XSLT (split into the libxslt-ruby bindings)
Charles is planning to write a proper tutorial in the next week, covering some of the key features, but suggests referring to the API documentation in the meantime. The test suite (located in the test directory that comes with libxml-ruby) also looks like a great resource for code examples; very clean and straightforward. If you have any libxml-ruby tutorials or resources of your own, please post them in the comments here.
Congratulations to all of those involved in libxml-ruby's long history and especially to Charlie Savage for giving it the finish push to this mature state. Ruby's XML woes are tempered, for now at least.

Here’s a cool DIY showing you how to make a twin bike out of 2 bikes. It seems pretty simple enough.
How to make a tandem bicycle from two bikes! no welding, no fancy tools needed other than a power drill.
Brought to you by: Zedomax.com
DIY - How to Make a Tandem Twin Bicycle with Two Bikes!
bikes, bikes, Consumer, Cool, DoItYourself!, DoItYourself!, Educational, Entertainment, fancy tools, Gadgets, HOWTO, tandem bicycle, twin bicycle, twin bike
tools
HOWTO
Entertainment
gadgets
cool
doityourself!
User:zedomax
Autumn is a framework by Tim Morgan that makes it easy to develop powerful IRC (Internet Relay Chat) bots with Ruby. Version 3, a significant update, was launched just a week ago. The code is available on Github, so it's ready to fork, tweak and work on to your heart's content.
An instance of an "Autumn app" is laid out in a similar way to a Rails app. There are config, doc, script, libs, tmp, and log folders, containing much what you'd expect, as well as a leaves folder (Autumn refers to "bots" as "leaves") that contains any number of folders each containing data, helpers, models, tasks, and "views" for individual bots. A default Autumn app comes with two bots pre-installed called insulter and scorekeeper that you can use to learn from.
Autumn is a pretty significant piece of work and Tim has done an excellent job at documenting it, leaving almost no stone unturned in demonstrating how to create bots / leaves of your own with the framework.

Pool Party is a new tool by Ari Lerner (of ProcessorPool fame) that makes it easy to automate the deployment, monitoring (using monit), persistent storage (using S3Fuse), and load balancing (using HAProxy) of EC2 instances. While intended to be application agnostic, there’s naturally a major slant towards Ruby applications in general, with support for Rake tasks a core feature.
Ari’s announcement blog post gives more in-depth details. Development is taking place on Github (where the README is somewhat more readable than with RDoc!) along with discussions at a Google group.
Ari presented PoolParty at RailsConf last week, and his slides are available to view below (or at Scribd):

It’s been the programming world’s worst kept secret, but the covers are finally off as GitHub officially launched today. No more beta invites needed - hurrah!
GitHub is, officially, a Git repository hosting service (where Git is a source code control system - think decentralized, distributed SVN) built by Chris Wanstrath (Err the Blog), Tom Preston-Werner (creator of Chronic and God), and PJ Hyett. GitHub’s early users are calling it a “social programming network,” a “FaceBook for coders,” and all sorts of wonderful things. This is because Git’s decentralized nature makes it easy to fork, branch and merge code, and so does GitHub, which makes GitHub an ideal platform for collectively working on software, especially open source.
As of Rails 2.1 (coming very soon), GitHub will be the new official home of the Rails source repository, and the Merb, RSpec, Capistrano, Prototype and Scriptaculous projects are also on board, along with hundreds of other Git repositories created by beta users.
GitHub is a commercial offering (though from two open source devotees), but with an incredibly generous free level, meaning that the service is free for most reasonably sized open source projects (that is, the free level covers that sort of open use). There are, of course, a wide range of plans available for the whole gamut of users.
If you haven’t yet given Git a go, don’t fear, as a round up of Git tutorials, tips and tricks (with a Ruby slant, naturally) is coming next here on Ruby Inside. That said, I’ve just noticed InfoQ has already posted something similar, so read that if you’re feeling impatient.

Doodle is an interesting new Ruby library that adds ActiveRecord-style conventions and relationship building functionality to the process of defining and instantiating (as above) Ruby classes.

Instead of manually building the accessors, setters, and relationships between classes, Doodle lets you define these on a single line, along with default values, initial values, and even validations.
Doodle is an interesting experiment although, personally, I think these sorts of constructs should be part of the base language. Hopefully Doodle will help to popularize this style.

Ebb is a small, extremely high performance Web / HTTP server designed specifically for hosting applications built upon Web frameworks such as Rails and Merb (and, in future, apps on other non-Ruby frameworks.) The design is event based (similar to that used by Ruby daemons that use EventMachine) but Ebb itself is written in C and dispatches requests to Rack adapters. This is a real leapfrog over the popular Mongrel and Thin daemons which are primarily written in Ruby, and results in scary levels of performance.
Since the start of 2008, it seems as if the Ruby and Rails deployment sectors have been on fire! Thin, a Ruby HTTP daemon that’s faster than Mongrel, made it on the scene in January, then we discussed the problems involved in deploying apps here on Ruby Inside, and my own SwitchPipe arrived in February. Other systems such as Swiftiply have also continued to innovate. These are exciting times!

Castanaut is a Ruby-backed screencasting domain-specific language that allows you to script screencasts in code. When these scripts are run, Castanaut takes control of your Mac and produces the desired effect. It’s simply automated, scripted screencasting.
The Origin
Two weeks ago I was reading a post on 37signals’ blog about producing screencasts. Joseph Pearson’s comment got me all excited:
At Inventive Labs, we’re experimenting with scripted screencasts. That is, you run a script, and at the end of it you have a screencast.
For example, this movie was generated by this Ruby script. No human was involved at all.
Obviously we would replace the text-to-speech narrative with a real voice actor for any screencast we put out, not least because the robot suffers from the Uncanny Valley effect. But it does ensure that timing is right.
I e-mailed Joseph and gave his system a try. It’s now publicly available under the superb WTFPL license.

Why?
One of the common problems with screencasts is that they take a long time to produce, and this often means they fail to get updated when situations change (new versions of products, updated interfaces, etc.) With Castanaut, you could script your screencasts and rapidly reproduce them each time your software has a major update. If the changes are just at the interface level, you could even reproduce the video, paste the old voice / sound track over the top, and you’d be done.
As an aside, if you’re more interested in producing screencasts the “old fashioned” way, I can heartily recommend Geoffrey Grosenbach’s “Screencasting On The Mac” video. It costs $9 but you get a lot of information for your money. PeepCode is a sponsor of Ruby Inside but I am recommending this separately to that. I watched it last week and took away a lot of useful information, although now I’m being tempted by Castanaut instead ;-)
Rush, by Adam Wiggins, is an interesting development. It’s a shell and remote login (as with SSH) replacement written in Ruby that accepts Ruby syntax to perform system operations. Consider these operations:
processes.each { |p| p.kill if p.command == “mongrel_rails“ }
Or..
local = Rush::Box.new(’localhost‘) remote = Rush::Box.new(’my.remote.server.com‘) local_dir = local[’/Users/adam/myproj/‘] remote_dir = remote[’/home/myproj/app/‘] local_dir.copy_to remote_dir remote_dir[’**/.svn/‘].each { |d| d.destroy }
Instead of making you use the usual UNIX commands, Rush abstracts a collection of system related tasks and allows you to perform operations using the Ruby you know and love. I can’t say I’m rushing to install this just yet, because I think there might be some security aspects that need to be figured out, but it’s definitely a bold, interesting development and I’m keen to see where it goes next.