Experiments

This page is for any small applications or libraries I create. Often I’ll lose interest rather quickly – either by discovering that whatever I was setting out to achieve is harder than I expected, by working out how to implement it, or by getting distracted by some other, equally useless-in-the-real-world, idea. While certainly not likely to be immediately useful, something here may provide a beneficial starting point for someone.

auto-admin

Automatic administration interface for Ruby on Rails model objects

This has really passed the point of being an experiment, and moved on to “project” status. However, as I’m not currently working with Rails, I’m not actively developing it.

rasp

Ruby ASP (VBScript) interpreter

A semi-functional VBScript interpreter, written in Ruby (using racc for parsing). Predictably, a couple of orders of magnitude slower than the WSH engine, in all but the most string-intensive test scripts (in which it can easily outperform WSH). Still lots of core VBScript functionality missing – though I don’t currently remember what.

bongo

ASP (JScript) compatible Ruby Web environment

Based on SpiderMonkey, using ruby-spidermonkey, with some changes / improvements. I really need to look through the changes I’ve made and identify anything I should submit upstream.

chartdir-rb

Ruby wrapper for ChartDirector C API

Mostly autogenerated from the C headers and the C++ documentation, with some extra methods to offer a drop-in replacement for the official ChartDirector COM object. The developers appear to have subsequently released an official Ruby interface, rendering the utility of this library questionable, at best.

libtpproto-rb

Ruby network library for Thousand Parsec

Comprises some extensions to Ruby’s Array#pack / String#unpack methods (“length + bytes” strings, “length + packed-items” arrays, and “semi-signed” integers – integers ranged between -1 and MAXINT - 1), and a library that parses the TP Protocol Definition XML and dynamically builds Struct-based packets that include the ability to convert between Packet objects and on-wire byte strings.