BioRuby

Hey everyone,

A litle bit of excitement today; my Tutorial updates for Bioruby have been acceptied into the project's GitHub repository! For those of you (probably most of you) who aren't sure what BioRuby is, you can see my last post for information, or visit their website. My work so far has been on correcting errors and cleaning up the writing to make the work easier to read. I'm currently working on porting the accepted version of the Tutorial over to the project's wiki, after which I will be updating tutorial code to reflect additional portions of code that have recently been written.

This is exciting for me; it's my first accepted commit to an open-source project that wasn't formed through RCOS. So far it's been a very enlightening process, and I hope that I have contributed (and will be able to continue contributing) something to the BioRuby project that will help people get started in the exciting field of bioinformatics!

Semesterly progress and second presentation

Hello everyone,

It's more than halfway through the semester! Class has been keeping me busy this semester, but I've been working on CAGE as often as I can. I'm getting closer to getting the packaging system working; I can build the project, but it needs some external library information still. I'm continuing to work on it, but it's frustrating, given the lack of documentation for Rawr.

In addition to my work with CAGE, I've been working with the BioRuby project (bioruby.open-bio.org) to further their goals of providing an integrated environment for bioinformatics for the Ruby programming language. Bioinformatics is the application of computer science to biological problems, such as genome analysis and protein design. BioRuby aims to make creating software for bioinformatics easy for those without a biology background. I've been working on BioRuby's documentation; updating the tutorial and example code to help new users get started.

Lastly, I got a demo version of AirMath working! Airmath is an application to use the Chronos watch to allow people to do math with their wrists, and it can currently be found at: https://github.com/epall/cage/tree/airmath.

I've posted my slides from RCOS last week. A Youtube video for AirMath is forthcoming!

Click here to download:
Second_spring_presentation.pdf (3.3 MB)
(download)

Spring Semester: presentation and goals

Hey everyone, 

It's the start of the spring semester again, and it's time for work to start on CAGE again! Priorities this semester include getting windows support working, and packaging CAGE for people to more easily use.

I gave my first presentation today! The slides are below; they talk a little bit more about my goals for this semester, and a timeline for achieving them.

If you have any questions, comments or suggestions for CAGE, feel free to email me. My email address is okeefm (at) rpi (dot) org.

Click here to download:
First_spring_presentation.pdf (4.14 MB)
(download)

Second Presentation

Hey everyone,

The other week I gave my second presentation to the RCOS group. I can't export the other presentation to PDF from here, unfortunately, so I will upload a PDF version as soon as I get to my other computer. 

A video (and better newspost) for the CAGE desktop app will be forthcoming later this weekend! So keep your eyes open for that.

 

CAGE is currently broken, since Apple changed/removed the ability to evaluate AppleScript from Java. I have a workaround planned, which I will implement this weekend as well.

 

Talk to you all later!

Michael

First Presentation of the Fall

Hey all,

Sorry it's been rather quiet around here these days. School has sort of taken me by storm at the moment, hence why there haven't been many (ok, any) updates until now. To remedy that, here's the first slides from the presentation I gave last week. 

Click here to download:
first_fall_presentation.pdf (3.07 MB)
(download)

I'm still trying to get a 0.9.0 release out, but Rawr is proving harder to deal with than I thought. Hopefully by the end of October there should be a functioning build for Mac.

Thanks all for your patience,

Michael O'Keefe

CAGE progress

Hey all,

I've added a bunch of documentation to most of the Java and Ruby files in the project. It's not complete, but it's much better documented than it was before. the Java and Ruby documentation should be parseable by Javadocs and RDoc, respectively. If you have an issue with any of the comments, or want to see documentation for a portion of it that isn't documented very well or at all, please let me know!

In other news, I finally fixed a bug with the Windows version of the project, so I can once again compile that version. This means one thing: Windows scripting support is coming! I found a version of Win32OLE for JRuby, so I will be integrating that with the project shortly. The code I found is hosted at http://kenai.com/projects/jwin32ole. It's not perfect (some Windows binding is missing), but from initial appearances it seems promising. I'll let you know how the code works.

After all of the polishing of the code and Windows scripting support are included, CAGE will finally be at a point that I feel comfortable calling it "v 0.9". It's still very much in beta (hence the lack of 1.0), but it's getting close to stable enough to be used by everyday people. This tag will be accompanied by built versions of the code for Windows and Mac, supplied by the Rawr JRuby packaging and deployment tool.

If you have any questions or comments for me, feel free to leave them here at the blog or to email them to me at okeefm@rpi.edu. I appreciate your comments!

Until next time,

Michael

CAGE gesture editing

Hey everyone,

Gesture editing/deleting is finally all done! Talking between Ruby and Java, to get the necessary information back to the GUI without overwriting things on the GUI we didn't want to, was tricky. In order to send the gesture name and AppScript action back to the GUI from Ruby, I had to tell Monkeybars to synchronize data both ways:

map :view => "gestureName.text", :model => "current_gesture.name", :using => [:default, :default]

but by using the default mapping, we would overwrite what the user put into the text boxes when we went to make a new gesture (since the default setting for "current_gesture.name" in the model is nil, it would send that to the view and overwrite whatever was there). So, I designed a custom mapping:

map :view => "gestureName.text", :model => "current_gesture.name", :using => [:edit_gesture_name, :default]

This mapping uses a function called edit_gesture_name to filter when it should be sending the name back to the GUI. The function looks like this:

def edit_gesture_name(name) 
    if @editing_gesture 
      return name 
    else 
       return gestureName.text 
    end 
  end

By using this function, we are able to only send the name back to the GUI when the editing_gesture flag is set. The same principle is used for the gesture action field.

Windows automation with Ruby

WIndows automation is one of the bigger goals this summer; it's hard for people to use CAGE if they can't actually control anything with it. One possibility that I've found is Win32OLE, a library included with Ruby. It is intended for talking to applications that expose a COM port, but not all programs do that. Luckily, it is also a quick and easy way to send keystrokes! Using keystrokes, you can control most programs in windows, provided they have hotkey support. It's not quite as convenient or all-in-one as with AppleScript, as we are doing on the Mac, but it is a viable option for Windows automation. I will be investigating further in the days ahead.

Original blog post: http://rubyonwindows.blogspot.com/2007/05/automating-applications-with-ruby.html

Win32OLE homepage: http://homepage1.nifty.com/markey/ruby/win32ole/index_e.html