This was a wonderous site to see, and one a long time coming. After long months of working to build a sense of importance for the build, we finally got every one of our 199 projects in CruiseControl to build successfully. Good work team.

One obstacle we faced along the way was knowing exactly how many of our projects were failing. That’s what lead me to submit this patch to CruiseControl. It was accepted and has since been improved upon by others, I believe. It’s finally nice to see the “Failed” count down to 0. 
UPDATE: I’ve posted a more complete version of this code in More Ruby Exporting of Groupwise to iCal.
I’ve wanted to export my Groupwise calendar to iCal format for a long time. Every time I try to do it, I ended up running into the same few pages. They sorta worked, but were clumsy.
So I threw this little beauty together in under 10 minutes and 2 google searches. It seems to be a start, though I expect to improve it. Groupwise Object API Docs (PDF format; the web version keeps blinking — arrrgh) from Novell were useful, as was this Ruby gem.
require ‘win32ole‘
require ‘icalendar‘
groupwise = WIN32OLE.new(“NovellGroupWareSession“)
account = groupwise.Login(“your-username“, ““)
path_to_host = account.PathToHost
cal = Icalendar::Calendar.new
account.Calendar.Messages.each do |message|
next unless message.ClassName == “GW.MESSAGE.APPOINTMENT“
event = cal.event event.user_id = “tims@asrs.state.az.us“
event.timestamp = DateTime.now
event.summary = message.subject.PlainText
event.description = message.BodyText.PlainText
event.start = message.StartDate
event.end = message.EndDate
end
puts cal.to_ical
Every day I find more reasons to love using Ruby. Enjoy!
I like to challenge barriers. I think part of it is that I’ve had so many of my own challenged and under scrutiny, they fell. That opened up worlds hitherto unexplored.
Design is like that. Many people hold to current limitations or artificial constraints that bolster the status quo. Challenging those assumptions almost always leads to greater knowledge. Either I learn something about the system that I didn’t know. Or new vistas open up and widen our range of viable design options.
True knowledge engenders design freedom.