diff options
Diffstat (limited to 'content/posts/2005-05-12-raggle-article-rubygems-signing-gah-people-xml-rpc-and-more.html')
-rw-r--r-- | content/posts/2005-05-12-raggle-article-rubygems-signing-gah-people-xml-rpc-and-more.html | 230 |
1 files changed, 230 insertions, 0 deletions
diff --git a/content/posts/2005-05-12-raggle-article-rubygems-signing-gah-people-xml-rpc-and-more.html b/content/posts/2005-05-12-raggle-article-rubygems-signing-gah-people-xml-rpc-and-more.html new file mode 100644 index 0000000..ab24c37 --- /dev/null +++ b/content/posts/2005-05-12-raggle-article-rubygems-signing-gah-people-xml-rpc-and-more.html @@ -0,0 +1,230 @@ +--- +date: "2005-05-12T04:42:59Z" +title: Raggle Article, RubyGems Signing, Gah People XML-RPC, and More... +--- + +<p> +<a href='http//linuxformat.com/'>Linux Format</a>, <a +href='http://bsin.org/'>Alonzo's</a> Linux magazine of choice, has a +brief article about <a href='http://raggle.org/'>Raggle</a> 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 <a +href='http://cvs.pablotron.org/?m=raggle'><acronym +title='Concurrent Versioning System'>CVS</acronym></a>). I scanned the +review — if you're intereste, you can check it out <a +href='http://raggle.org/files/lf65-raggle_article.jpg'>here</a>. +</p> + +<p> +Side projects, side projects. A couple weeks ago, I submitted a patch +which adds <a href='http://openssl.org/'>OpenSSL</a>-based package signing for +<a href='http://rubygems.org/'>RubyGems</a>. A patch against <a +href='http://rubygems.org/'>RubyGems 0.8.10</a> is available <a +href='/files/rubygems-0.8.10-sign.diff.gz'>here</a> (<a +href='/files/rubygems-0.8.10-sign.diff.gz.asc'>signature</a>). I also +wrote up some fairly detailed documentation. It's included in the +patch, and also <a href='signing_gems.txt'>here</a>. +</p> + +<p> +Overall I like the <a href='http://openssl.org/'>OpenSSL</a> support in +<a href='http://ruby-lang.org/'>Ruby</a>, although I've managed to +uncover a couple of gremlins along the way, most notably missing methods +in the <code>PKCS12</code> and <code>ASN1</code> modules. The single +biggest problem though, is the lack of documentation; it's even more +sparse than the <a href='http://openssl.org/'>OpenSSL</a> documentation. +I've done enough crypto stuff that I was able to slog through it, but +this is just ridiculous. It's 2005. <a +href='http://rdoc.sourceforge.net/'>RDoc</a> exists for a reason — +use it. I'll resist the urge to comment on the lack of decent <a +href='http://rdoc.sourceforge.net/'>RDoc</a> documentation, because I +think <a href='http://pragprog.com/'>pragdave</a> has earned a few gold +stars. You know, for that whole <a +href='http://pragmaticprogrammer.com/titles/ruby/'>Pickaxe thing</a>. +</p> + +<p> +The <a href='http://gah.pablotron.org/'>#gah people page</a> now has an +<a href='http://xmlrpc.com/'><acronym title='eXtensible Markup Language/Remote Procedure Call'>XML-RPC</acronym></a> +interface, which allows you to (say), quickly build a blogroll of +<acronym title='Internet Relay Chat'>IRC</acronym> people, find people +in your state, or whatever other pathological idea you can come up with. +Full <acronym title='Application Programmer Interface'>API</acronym> +documentation (including the <a href='http://xmlrpc.com/'><acronym title='eXtensible Markup Language/Remote Procedure Call'>XML-RPC</acronym></a> +endpoint) is available <a href='http://gah.pablotron.org/api/'>here</a>. +</p> + +<p> +Speaking of web pages, I really <em>really</em> like the final designs +on the <a href='http://redhanded.hobix.com/redesign2005/'>Ruby-Lang 2005 +Redesign Blog</a>. The current <a +href='http://ruby-lang.org/'><code>ruby-lang.org</code></a> is kind of +an eye-sore, so the sooner they replace it, the better. +</p> + +<p> +On the nifty software front, I've been playing with <a +href='http://openvpn.sf.net/'>OpenVPN</a> and <a +href='http://venge.net/monotone/'>Monotone</a>. The former is +absolutely incredible; it's easy as piss to configure, completely +customizable, fast, uses <a href='http://openssl.org/'>OpenSSL</a>-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 <acronym title='Network File +System'>NFS</acronym> exports read-write over wireless. +</p> + +<p> +As for <a href='http://venge.net/monotone/'>Monotone</a>, 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... +</p> + +<p> +Oh yeah, <a href='http://raggle.org/'>Raggle</a>. 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 :). +</p> + +<p> +As for the development version of <a +href='http://raggle.org/'>Raggle</a>... Well, that's where all the fun +is. Here's a high-level diagram of the various components: +</p> + +<p> + <style type='text/css'> + /* table style */ + table#ng-raggle { + text-align: center; + border: 1px solid black; + padding: 4px; + background-color: #ddd; + } + + table#ng-raggle td { + text-align: center; + border: 1px solid black; + padding: 4px; + margin: 2px; + font-family: arial, verdana, helvetica, sans-serif; + font-size: 14px; + } + + /* element styles */ + table#ng-raggle td.ruby, table#ng-raggle ul#legend span.ruby { + background-color: #faa; + } + + table#ng-raggle td.clib, table#ng-raggle ul#legend span.clib { + background-color: #afa; + } + + table#ng-raggle td.dep, table#ng-raggle ul#legend span.dep { + background-color: #aaf; + } + + table#ng-raggle td.hdr { background-color: #eee; } + table#ng-raggle td.nada { border: 0px; } + + /* legend style */ + table#ng-raggle td#legend { + text-align: left; + font-size: 12px; + border: 0px; + } + + table#ng-raggle ul#legend { margin: 0px; padding: 2px 20px 2px 15px; } + table#ng-raggle ul#legend li { padding: 1px; } + table#ng-raggle ul#legend span { padding: 0px; margin: 0px; } + </style> + + <table id='ng-raggle'> + <tr><td class='ruby' colspan='7'>Next-Gen Raggle</td></tr> + <tr> + <td class='hdr' colspan='5'>Engine (Squaggle)</td> + <td class='hdr' colspan='2'>Interface</td> + </tr> + <tr> + <td class='clib' colspan='4'>Synapse (libsynapse)</td> + <td class='dep' colspan='1'>SQLite3-Ruby</td> + <td class='hdr' colspan='1'>Console</td> + <td class='hdr' colspan='1'>Web</td> + </tr> + <tr> + <td class='clib' colspan='2'>libfeed</td> + <td class='dep' colspan='1'>Curl</td> + <td class='dep' colspan='1'>SQLite</td> + <td class='dep' colspan='1'>SQLite</td> + <td class='ruby' colspan='1'>Profanity</td> + <td class='dep' colspan='1'>WEBrick</td> + </tr> + <tr> + <td class='clib'>libptime</td> + <td class='dep'>expat</td> + <td class='nada'> </td> + <td class='nada'> </td> + <td class='nada'> </td> + <td class='dep' colspan='1'>Curses</td> + </tr> + <tr></tr> + <tr> + <td colspan='7' id='legend'> + <b>Legend</b> + <ul id='legend'> + <li><span class='ruby'> </span> Written in Ruby</li> + <li><span class='clib'> </span> Written in C</li> + <li><span class='dep'> </span> External Dependency</li> + </ul> + </tr> + </table> +</p> + +<p> +What's new? <a +href='http://cvs.pablotron.org/?m=profanity'>Profanity</a> has been +added to the diagram, and <a +href='http://cvs.pablotron.org/?m=squaggle'>Squaggle</a> has a new +dependency, <a +href='http://cvs.pablotron.org/?m=libsynapse'>Synapse</a>. Synapse +is a C-level library that wraps <a href='http://curl.haxx.se/'>Curl</a> +and <a href='http://cvs.pablotron.org/?m=libfeed'>libfeed</a>. This +arrangement has a whole lot of advantages; here's a handful of them: +</p> + +<ul> +<li>Speed. C is faster than <a href='http://ruby-lang.org/'>Ruby</a>, +and the <a +href='http://cvs.pablotron.org/?m=libsynapse'>Synapse</a> +<acronym title='Application Programmer Interface'>API</acronym> actually +passes commands to a child process, so we also avoid the overhead of <a +href='http://ruby-lang.org/'>Ruby's</a> green threads (and threads in +general).</li> +<li>Smaller memory footprint.</li> +<li>All sorts of great new <a +href='http://curl.haxx.se/'>Curl</a>-related +<acronym title='HyperText Transfer Protocol'>HTTP</acronym> features: +Digest authentication, GSS-Negotiate authentication (eg, Kerberos), NTLM +authentication (Microsoft), SOCKS5 proxy support, tunnelled proxy +support, SSL peer-verification control, cookie support (including <a +href='http://mozilla.org/'>Mozilla</a> cookie jars), and more.</li> +<li>A complete language-agnostic RSS/Atom parsing, fetching, and saving +interface. Write your own interface in whatever language you want!</li> +</ul> + +<p> +I could keep going, but I just saw the time. I've got to take a look at +<code>picard's</code> busted hard drive (yeah, another one), and check +on <code>kylie's</code> fancy new off-site backups (thanks, <a +href='http://bsin.org/blog/'>Alonzo</a>!). Be sure to check out <a +href='http://hellojoseph.com/'>Sean's</a> article, <a +href='http://hellojoseph.com/tags-howto.php'>"How I Implemented +Tags"</a>. +</p> + + |