2011-06-30 ANSI 1.3.0

ANSI 1.3.0 has been release. If you are not familiar with ANSI, it is a collection of ANSI escape code related libraries enabling ANSI code based colorization and stylization of output on TTY consoles.

Continue Reading



2010-05-08 Hashery and Mixers

Perhaps you've already heard that Ruby Facets is filtering it's arsenal of code to provide ONLY core and standard library extension methods. This means a number of classes and modules that remained in Ruby Facets after the last "MORE library clean-up" have to move out. The question is, where to?

Somewhat surprisingly, much of the remaining MORE library's classes and modules fall into two categories, and based on this have found their way into two new spin-off projects: The Ruby Hashery and Ruby Mixers. In both projects are found a small collection of nicely related libraries. In Hashery, it is a collection of Hash-like classes. While in Mixers, it is a collection of mixin modules. Be sure to check them out. If you were using any of these libraries before, now you know where to find them when Facets 3.0 comes out.

Continue Reading



2010-04-18 String::Mask 0.3.0

String::Mask provides a tool for manipulating strings in a logicomathematical manner (e.g. add, subtract, xor) using masks. This new release simply changes #to_s and #inspect to return strings with the mask character re-inserted. Here are some examples.

Continue Reading



A long time ago, in an now long forgotten ruby-talk thread, a poster asked, "what's all the fuss over these open classes? If you really need something like that just open up a Hash and add method_missing", or something to that effect. It seemed a reasonable comment. And for some time after I thought the poster made a good point: for simple needs an "OpenHash" is a good light-weight solution, useful to many cases. The basic implementation of an OpenHash is as follows.

Continue Reading



2010-04-06 Paramix 2.0.0

Thanks to a conversation with Jonathan Rochkind, Paramix has been completely rewritten. Whereas anonymous modules were avoided in prior versions, it has become clear that the worries of memory consumption that would accompany them were largely unfounded. The new code is refreshingly concise, and the design fully comforms to POLS.

Continue Reading



2010-02-22 VanUnits 1.0.0

VanUnits is the SI units system originally underpinning Stick. Stick has implemented a new experimental unit system, so the prior system, which remains a very competent and useful system, is being spun-off as VanUnits, named after the primary designer Peter Vanbroekhoven.

The components included are the base unit system, the currency system (which needs an online backend to function), and a set of scientific constants utilizing the units.

Continue Reading



2009-12-26 TracePoint 1.1.0

TracePoint is a Binding with the addition of event information. In theory it would function very well as the join-point for AOP. In practice it provides a much better approach to #set_trace_func. This release (finally!) adds multi-tracing and named traces.

Continue Reading



2009-12-01 XDG 1.0.0

This is a major re-implementation of the XDG API to be more flexible and object-oriented. Instead of a single module with every needed method, the system is divided up into sub-modules, one for each set of XDG locations. So, for example, instead of "XDG.data_dirs" you use "XDG::Data.dirs" or "XDG.data.dirs".

Would love to get feedback on this project, especially suggestions on how it can be enhanced to support more aspects of XDG standards.

Continue Reading



In Ruby 1.9, Enumerable methods return an Enumerator when no block is provided them. This makes it very convenient to chain methods in what is often called fluid notation. For example, rather than the usual #each_with_index, one can use:

Continue Reading



Recently I set out to migrate most of my work from Rubyforge to GitHub, in so doing I needed a umbrella account to place all these wonderfully chewy morsals. In deliberating a name for the account I recollected the very first Ruby website I had ever created back in 2002. It was called Ruby Works and hosted at http://transami.net/ruby. It has long been defunct, but it seems fitting to bring my waining Ruby career to a conclusion by coming full circle. And so Ruby Works was reborn.

In the process of this migration I made myself this nifty new blog built with Brite, my home grown static website and weblog construction kit.

In any case, this website is dedicated to the many awesome Ruby projects I've had the privilege to develop and maintain over the years. Combined with ProUtils these cover my complete works in the Rubydom. Most of the projects are in good working order. In fact, I've only let a couple non-useable projects into the collection, in their case because I would like to get them working soon. All the rest good to go, some in relatviely perfect order, others still a little rough around the edges, but still usable.

As time wears on I'll blog about these various projects here (now that I have this spiffy new blog). If you would like to discuss any of these projects please hop over the the Google Group. I setup the group just for that purpose.

Continue Reading



2009-05-28 Anise 0.4.0

New release of Anise adds a callback method #annotation_added. It is a striaght-forward callback method patterned after Ruby's other built-in callbacks. The callback can be used to allow for the creation of "active" annotations.

Continue Reading



2008-11-23 Facets Hash#rekey

This is the first in a series of posts in which I plan to introduce my fellow Rubyists to the plethora or goodness that is Ruby Facets.

Ruby Facets has been in development for several years, starting out as a rather rag-tag collection general purpose Ruby scripts, and has evolved into the latest release, version 2.5.0, which has reached a nice level of maturity --getting pretty close, I suppose one could say, to that stately realm of "enterprise-ready".

Every few weeks or so, I'll pick a library or particular extension and expound upon it. While the main intent of this series is to let others know what Facets makes available to them. I will also use it as a platform to further improve and polish Facets. So please, feel free to comment, make suggestions and point out alternatives, so that Facets might better serve the Ruby community in the future. Okay, now to the meat of this edition... I decided to start with something quite simple, but very useful, homogenizing hash keys. Currently in Ruby, this requires code like:

Continue Reading