Raggle Article, RubyGems Signing, Gah People XML-RPC, and More...

Linux Format, Alonzo's Linux magazine of choice, has a brief article about Raggle in issue 65 (April 2005). They seemed to like it. Guess I'd better fix the UTF-8 munging bug before anyone notices (actually, it's fixed in CVS). I scanned the review — if you're intereste, you can check it out here.

Side projects, side projects. A couple weeks ago, I submitted a patch which adds OpenSSL-based package signing for RubyGems. A patch against RubyGems 0.8.10 is available here (signature). I also wrote up some fairly detailed documentation. It's included in the patch, and also here.

Overall I like the OpenSSL support in Ruby, although I've managed to uncover a couple of gremlins along the way, most notably missing methods in the PKCS12 and ASN1 modules. The single biggest problem though, is the lack of documentation; it's even more sparse than the OpenSSL documentation. I've done enough crypto stuff that I was able to slog through it, but this is just ridiculous. It's 2005. RDoc exists for a reason — use it. I'll resist the urge to comment on the lack of decent RDoc documentation, because I think pragdave has earned a few gold stars. You know, for that whole Pickaxe thing.

The #gah people page now has an XML-RPC interface, which allows you to (say), quickly build a blogroll of IRC people, find people in your state, or whatever other pathological idea you can come up with. Full API documentation (including the XML-RPC endpoint) is available here.

Speaking of web pages, I really really like the final designs on the Ruby-Lang 2005 Redesign Blog. The current ruby-lang.org is kind of an eye-sore, so the sooner they replace it, the better.

On the nifty software front, I've been playing with OpenVPN and Monotone. The former is absolutely incredible; it's easy as piss to configure, completely customizable, fast, uses OpenSSL-based X509 certs for identification (both client and server), and as Windows support. Did I mention it's easy to configure, too? I've been using an OpenVPN to tunnel from my laptop to my file server for the last couple of weeks so I can mount my NFS exports read-write over wireless.

As for Monotone, it looks really promising, but it's unbelievably slow. Actually, "ridiculously, horribly, unbearably slow" might be more apt. I know they're working on speed, so in a couple of months, I'm sure things will be bearable. Once that happens, I may seriously consider switching over...

Oh yeah, Raggle. Work continues on the 0.4 branch. the next stable release (0.4.1) will have the Unicode munging behaving properly (hopefully), and a configurable bookmark system. If I get harassed enough, that might be within the next few weeks :).

As for the development version of Raggle... Well, that's where all the fun is. Here's a high-level diagram of the various components:

Next-Gen Raggle
Engine (Squaggle) Interface
Synapse (libsynapse) SQLite3-Ruby Console Web
libfeed Curl SQLite SQLite Profanity WEBrick
libptime expat       Curses
  •     Written in Ruby
  •     Written in C
  •     External Dependency

What's new? Profanity has been added to the diagram, and Squaggle has a new dependency, Synapse. Synapse is a C-level library that wraps Curl and libfeed. This arrangement has a whole lot of advantages; here's a handful of them:

  • Speed. C is faster than Ruby, and the Synapse API actually passes commands to a child process, so we also avoid the overhead of Ruby's green threads (and threads in general).
  • Smaller memory footprint.
  • All sorts of great new Curl-related HTTP features: Digest authentication, GSS-Negotiate authentication (eg, Kerberos), NTLM authentication (Microsoft), SOCKS5 proxy support, tunnelled proxy support, SSL peer-verification control, cookie support (including Mozilla cookie jars), and more.
  • A complete language-agnostic RSS/Atom parsing, fetching, and saving interface. Write your own interface in whatever language you want!

I could keep going, but I just saw the time. I've got to take a look at picard's busted hard drive (yeah, another one), and check on kylie's fancy new off-site backups (thanks, Alonzo!). Be sure to check out Sean's article, "How I Implemented Tags".