opensource
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.
Diaspora initial source release coming today, see: http://github.com/diaspora
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.

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:
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: http://ndt.hcro.org
Stuff related to helping out MingGW:
Setup of garnet.hcro.org for MinGW buildbot use:
openSUSE 11.3 timeline:
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 http://gsl4r.rubyforge.org Git repository already available in alpha-planning stages:
git clone git://rubyforge.org/gsl4r.git
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]
end
def imag()
return self[:dat][I]
end
def equals( a )
return ( a[:dat][R] == self[:dat][R] && a[:dat][I] == self[:dat][I] )
end
def set( r, i )
self[:dat][R] = r
self[:dat][I] = i
return self
end
def set_real( r )
self[:dat][R] = r
end
def set_imag( i )
self[:dat][I] = i
end
def to_s()
return "(#{self[:dat][R]},#{self[:dat][I]})"
end
end
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;
} ALLEGRO_COLOR;
...
