Open source projects
Posted by colby

Hardware used:
TRENDnet 56K USB 2.0 Phone, Internet, and Fax Modem TFM-561U (White)

Under openSUSE 11.3, this modem is immediately detected when plugged into a USB port and the device file shows up as /dev/ttyACM0 (assuming you only have one).

The TRENDNet modem will respond with a device id of 56000 given the command ATI. mgetty that ships with openSUSE 11.3 will incorrectly detect this modem as a Rockwell and proceed to issue commands that the TRENDNet modem does not understand for voice modes.

Posted by colby

Diaspora initial source release coming today, see:

Posted by colby

Diaspora, the project of a small group of developers who gained attention with their Kickstarter project has announced a developer only source code release for September 15th, 2010. Diaspora is a decentralized framework to create and drive social networking websites and to allow it to be under the control of the individuals involved in the network and not a corporation.

Log4r 1.1.8 released

07 Jun 2010
Posted by colby

credit:C G-K

The 1.1.8 release of Log4r has the following changes:

  • Fix for bug #28021 - major change to how Log4r handles thread synchronization, now using Monitor class instead of directly using Mutex. Yann Golanski reported what appeared to be a deadlock related to Mutex not being re-entrant.
  • Move files from src directory to lib directory, following convential ruby gems.
  • Add %T to pattern formatting, allowing for truncated file path, this runs opposite to the c vs C patterns. e.g. %t outputs /fully/qualified/path/filename.rb, %T outputs filename.rb
  • Added example to illustrate logger inheritence rules see: examples/ancestors.rb
  • Added "levels" method to Logger
  • Incorporating STARTTLS support via Nitay Joffe wrapping change with a check for ruby < 1.8.6 to require 'smtp_tls' and handle different calling characteristics. Dan Sketcher submitted an almost identical patch a month later. Added examples/gmail.yaml and examples/gmail.rb to illustrate usage.
  • Modifications to behavior of rollingfileoutputter.rb by David Siegal. Can automatically purge older files, intelligently picks up appending where left off, or deletes existing log files and starts at the beginning again.

Other changes that I did not blog about earlier:

Posted by colby

Internet2 (yes, that's the logo)

Yes, the Internet 2 exists. Yes, they continue research into tools and protocols for high speed networks. This afternoon, I wanted to set up a server running the Internet 2 Network Diagnostic Tool. I wanted to run it with their "fakewww" server so that it would be isolated away from other services on the server I set aside. While fakewww allows one to specify the port it binds to, it does not allow it to bind to a specific address. Again, I am made sad. So, I fixed it and submitted the patch to the fine folks at Internet2, if they take the patch, I'll edit this to point at the release with the patch.

NDT servers are pretty nifty, here, try out ours:

Posted by colby

Stuff related to helping out MingGW:

Setup of for MinGW buildbot use:

Posted by colby

openSUSE 11.3 timeline:

openSUSE release schedule, credit: coolo
Posted by colby

credit: C G-K

Renaming rgslffi to gsl4r. Might as well. Hopefully I won't wake up tomorrow and decide to call it Moon Child. Project page in the works Git repository already available in alpha-planning stages:
git clone git://

Posted by colby

While working on rgslffiGSL4r, I needed to define a mapping for the gsl_complex struct (we'll ignore for now that gsl_complex is potentially platform dependent).

Here's my attempt:

  class GSL_Complex < ::FFI::Struct
    layout :dat, [:double, 2]

    R = 0
    I = 1

    def real()
      return self[:dat][R]

    def imag()
      return self[:dat][I]

    def equals( a )
      return ( a[:dat][R] == self[:dat][R] && a[:dat][I] == self[:dat][I] )

    def set( r, i )
      self[:dat][R] = r
      self[:dat][I] = i
      return self

    def set_real( r )
      self[:dat][R] = r

    def set_imag( i )
      self[:dat][I] = i

    def to_s()
      return "(#{self[:dat][R]},#{self[:dat][I]})"
Posted by colby

I was stumped for a few hours on passing FFI::Structs into external routines, luckily, this post, 'Functions returning structures' (groups/google/ruby-ffi), tipped me off by showing how to return a struct by value:

From the C code:

    typedef struct
        int r, g, b, a;