28.11.08

Analyze this

"The independent and problem-solving type. They are especially attuned to the demands of the moment are masters of responding to challenges that arise spontaneously. They generally prefer to think things out for themselves and often avoid inter-personal conflicts.
The Mechanics enjoy working together with other independent and highly skilled people and often like seek fun and action both in their work and personal life. They enjoy adventure and risk such as in driving race cars or working as policemen and firefighters."

Hmm that sounds about right, except they should have called them The Ninjas instead of mechanics!

Test your own at typealyzer.

Shoes course at Ruby learning

No post for the GUI toolkit extravaganza this time since I've been having some problems getting wxRuby to run properly. But this posting is related since we will deal with Shoes in one of the upcoming posts in the GUI toolkit extravaganza. So I just wanted to let you know I rolled in to the Shoes online course at rubylearning.org. It's a paid course, the cost is 5$ which is not much money. Why, the author of Shoes, seems to be happy about this course so I thought I'd give it a try. Anyway, the POIRPWSC101 course starts at 13 December and ends at 26 Dec 2008. This is a nice short time, so I should be able to keep focus :)

Some while back I tried to follow the Free Online Core Ruby Programming Course (FORPC101), it was good but I did not manage to keep up due to poor planning on my side. It seems that since this time they are providing a few more interesting courses including the following:

POIRPWSC101 - Paid Online Ruby with Shoes Programming Course
POIRPWDC101 - Paid Online FXRuby and MySQL Programming Course

If the Shoes fit, I think I'll sign up for the FXRuby and MySQL course as well. But it depends a little on my private and professional schedules. Oh and offcourse I'll write about my experiences on this Ruby class on this blog as well. If you are interested in taking a free, or almost free course on Ruby take a look at Rubylearning.

24.11.08

GUI toolkit extravaganza part II: FXRuby

The FXRuby toolkit is the subject of the GUI toolkit extravaganza, part deux. In this 7 part series, we will take a look at the various GUI toolkits in existence to find the ultimate GUI toolkit. One of the best known GUI toolkits is FXRuby, wich we will look at in this post.

FXRuby
FXRuby is a library that enables Ruby code to use the Fox toolkit. Fox is a graphics toolkit which was written in C++ and known for it's speed. FXRuby was created way back in 2001 and one of it's aims is to provide a cross-platform Ruby GUI toolkit. Let's take a closer look!

ease of installation
FXRuby has an interactive installer for Windows systems. Macintosh systems can use the Mac ports. The sources are available so you can compile from source in any case. I had a bit of trouble installing it on my Ubuntu Hardy Heron system. But eventually I got it working. Here's what you need to do:
apt-get install libfox-1.6-0 libfox-1.6-dev libfox-1.6-doc
gem install fxruby

documentation
FXRuby has been nicely documented. The project website provides the complete API reference and a users guide.

There is also a book written solely about FXRuby. The project's website hosts two mailinglists as well.

supported platforms
FXRuby has been created to provide a cross platform GUI toolkit, so it runs on multiple platforms. Systems running Linux, UNIX, Windows or Os/X are all supported by FXRuby.

complexity
Take a look at the following code sample. We create a main window and place a button on it. We use PLACEMENT_SCREEN to center it. Piece of cake!

#!/usr/bin/env ruby
require 'fox16'
include Fox
app = FXApp.new
MainWindow = FXMainWindow.new(app, "FXwindow" ,
:width => 200, :height => 100)
FXButton.new(MainWindow,"Button",nil,nil,0,BUTTON_NORMAL|LAYOUT_CENTER_Y|LAYOUT_CENTER_X)
app.create
MainWindow.show(PLACEMENT_SCREEN)
app.run

functionality
FXRuby provides a standard set of graphical functions. But one feature that makes it stand out on the feature front is the support for OpenGL, providing the posibility to render cool 3-D graphics from your Ruby code.

performance
The Fox toolkit is known for it's speed and limited use of system recourses. From what I have seen, the same goes for FXRuby, it is light and it is fast.

looks
There's not much difference to be seen in the example provided here and the one previously provided in parts I of the GUI toolkit extravaganza. There are some minimal details around the buttons and edges.



Update: ok, this does not help a lot. Here's an impression of one of the sample programs that come with Fxruby:
As you can see, it looks a bit like some apps did in the windows98 days...

You can find the FXRuby toolkit at:


Stay tuned for the GUI toolkit extravaganza part III: WxRuby

GUI toolkit extravaganza part I: Ruby-GNOME2

Welcome to the first part of the GUI toolkit extravaganza. The previous post was an introduction to the GUI toolkit extravaganza. In this part, the first of 7, we will take a look at the Ruby-GNOME2 toolkit. Let's go ahead and take a peek at this interresting toolkit!

Ruby-GNOME2
Ruby-Gnome2 is a Ruby library that contains a set of bindings to various GNOME/GTK+2.0 libraries. Basically these are just Ruby wrappers around the GNOME/GTK+2.0 libs.

ease of installation
This toolkit is very easy to install if you happen to be using a system running GNOME and Ruby. If you use Ubuntu you only need to execute apt-get install ruby-gnome2.

documentation
There's quite a decent level of documentation for the Ruby-Gnome2 toolkit. There's a Wiki that includes the API reference and tutorials. There is quite a lot of documentation, but there are quite a lot of "fixme's" so not everything has been documented yet. The site also provides a few sample programs for instance a simple webbrowser, a simple audio player and the classic game Sokoban!
There are a few public mailinglists too.

supported platforms
You can probably guess this one. It runs only on systems running GNOME. So this one is restricted to Linux and Unix systems. No Windows or MacOS and no Linux systems running other window managers.

complexity
A simple window with one button is created by the following code. It's pretty straightforward, but the odd thing is that the buttoncode is written before the window code. It's also quite a big ammount of code lines for a such a simple window.


#!/usr/bin/env ruby

require 'gtk2'

button = Gtk::Button.new("Button")
button.signal_connect("clicked") {
puts "Ruby-GTK2"
}

window = Gtk::Window.new
window.set_default_size(100, 100)
window.signal_connect("delete_event") {
puts "delete event occurred"
false
}

window.signal_connect("destroy") {
puts "destroy event occurred"
Gtk.main_quit
}

window.border_width = 100
window.add(button)
window.show_all

Gtk.main


functionality
If you thought this toolkit was limited to using GTK2.0 drawing libraries you were wrong. This toolkit not only offers access to the GTK libraries but also, amongst others, the GDK, Pango, Poppler, ATK and libglade libraries. So you can see it provides far more then just GUI functionality. There's stuff for mulitmedia, text editing, creation of PDF, accessibility, internationalization and what not.

performance
This is just as fast as your average GNOME app.

looks
This toolkit provides decent looks since it uses the GNOME/GTK2.0 libraries. Here's what our code looks like when executed.



You can find the Ruby-GNOME2 toolkit at:
http://ruby-gnome2.sourceforge.jp/

Next one up is FXRuby!

GUI toolkit extravaganza!

Lately I have been looking for the right toolkit to do some GUI coding. As it turns out, there are quite a lot of GUI toolkits available that are coded in Ruby or have Ruby binding's. At first glance, they rather seem not so different from each other. So it's time to put the candidates on the line and take a look at each one's pro's and cons. I am a bit biased in this comparison offcourse, since I do have my own specific needs for a GUI toolkit. So don't expect a fully scientific comparison here, this is biased, quick and dirty but I'll do you a favour and leave the religious aspects aside.
Personally I am mostly interested in a cross-platform toolkit that provides the most functionality but above all is fast and simple. Basically, I'm too lazy to learn multiple GUI toolkits, so I want something simple and cross-platform. Off course it should look good on various platforms too!

The usual suspects I have round up for you are:
Ruby-Gnome2
FXRuby
WXRuby
Ruby Cocoa
Shoes
Monkeybars
QtRuby

We shall compare these toolkits in the following blogposts on the following aspects:

ease of installation
What do you need to do to make it work. Install a Ruby Gem or compile from source? Are there any packages for different Operating Systems that ease installation? We will look at the ease of installation in general, and provide examples for Ubuntu Linux in specific.

documentation
Is there any online documentation, how about how-to's and faq's, are there any books on the subject, how about discussion groups?

supported platforms
On which platform can you program this toolkit? On what platforms does the toolkit run?

complexity
We will use a simple window with a title, a button and some text to see the difference in complexity. Remember, this is just quick and dirty.

functionality
What can you do with the toolkit? This will be a hard one to answer since this is just a quick peek at the various available kits. The documentation will be used as a primary source to assess the provided functionality.

performance
Did I write this was not a comparison with solid scientific fundaments? Well, I will just take a guess at the performance of the toolkit. Since I won't do some measurements it's just a subjective guess.

looks
This one is also subjective to one's personal taste. I'll post at least one picture so you can judge for yourself, but along with that you'll get my opinion for free :-)

We'll take a look at the first GUI toolkit, Ruby-Gnome2, in the next blogpost so stay tuned!