Ruby-EET 0.1.4

Posted at 2007-03-23

Just when you thought Ruby-EET was unmaintained, I go ahead and make another release. So here's Ruby-EET 0.1.4.

This is a boring maintenance release though, no exciting features this time.

Tags ,

Another Evas::Smart API break

Posted at 2006-10-01

The Evas::Smart hooks, on_show, on_hide etc were clashing with the Evas::EvasObject event methods. So I renamed the Evas::Smart hooks to smart_show, smart_hide etc.

I doubt anyone but me uses this shit anyway so it shouldn't be too bad ;)

Tags ,

Leaving for Wacken Open Air

Posted at 2006-08-02

I'll leave for Wacken Open Air in about an hour. There's some nice bands on the billing, I can't wait to see Legion of the Damned (again), Arch Enemy and Amon Amarth :D I'll write about how the festival has been going when I'm back on sunday.

In other news, I've written a Ruby extension to read and write vorbis comments since all of the existing vorbis extensions only have read-only support. I'll use it to synchronize vorbis comments with MusicBrainz.


Wacken 2006 was cool. We were camping with/near friends of a co-worker of my friend, and some of them are nice guys :D

Weird enough, we also met some guys that were camping with us last year, by chance. wtf, there's only 50.000 people in Wacken or something. Cheers to Alex, who even still knew my name \o/

Opeth is cool, especially Mikael Ã…kerfeldt. In Extremo and Arch Enemy are good live. Yay for Legion of the Damned. Amon Amarth = disappointing. Too lazy to write more now.

Tags ,

XMMS2 Ruby bindings API breakage

Posted at 2006-03-12

Dan "puzzles" Chokola recently convinced me that the naming choices for the XMMS2 module and class in the Ruby bindings isn't quite perfect.

We used to have a module called "XmmsClient" that holds a class also called "XmmsClient".

The module has been renamed to "Xmms", and the class is now simply called "Client".

xmms2-scrobbler, Euphoria (cough) and Snett have been updated already. So if you see any error related to the module/class names, make sure you run the latest code of everything :)

Tags , , ,

Cleaning up Ruby-EFL

Posted at 2006-02-22

Wow. I wrote most of Ruby-EFL (that's everything but Ruby-EET :P) in summer 2004, when I knew close to nothing about Ruby's internals and its C api. It shows. I recently started writing another application with it, and noticed that you couldn't even inherit from Ecore::Evas::SoftwareX11, for example. That's because I implemented for all of the classes instead of writing a proper initialize method. Fixing that up led to some great code cleanup, and I'm very happy with the codebase now. These changes are fully backwards compatible, too.

The API has changed for Ecore::EventHandler. You now add event handlers like this: { |ev| ... }

ie you just pass the event class instead of a stupid constant :)

The next thing I poked at is the Evas::Smart API. Not sure what I was thinking when I wrote the Ruby class back then...

Now it works like this:

# Inherit from Evas::Smart
# Done :D

The name for the smart class will be generated from the class path of the Ruby class. That way you cannot customize it but I don't think anyone would want to do so anyway.

Sorry 'bout the API b0rkage, but I think you'll agree that it's mucho better now :)


Whoops, I forgot to write about how it's now possible to define Ecore events in Ruby :)

It's really easy, look:

class SomethingEvent < Ecore::Event
    attr_reader :foo, :bar

    def initialize(arg1, arg2)

        @foo, @bar = arg1, arg2

To raise that event, you'd call:

SomethingEvent.raise(arg1, arg2)

Isn't that nice? :)

Tags ,

Woobie Edjing goodness

Posted at 2005-09-21

I worked a bit on Redact in the last few days, and I decided they were important enough to release Redact 0.1.5.

Most important changes: ImageDescription#set_border was broken badly, this is fixed now. On the feature side, I added Description#inherit, which works similar to the "inherit" keyword in EDC.

Get your copy now :)

Tags , ,

Valgrind support for Ruby

Posted at 2005-09-16

Debugging Ruby extensions with Valgrind is a tedious task, because Valgrind doesn't like Ruby's garbage collector much. Valgrind will print a lot of errors and warnings, which are mostly bogus. This makes it hard to spot the real errors you're looking for.

One way to deal with this is to create a suppression file for Valgrind. Suppression files are used to tell Valgrind to ignore certain errors. For every bogus error, the suppression file has to be extended. Although Valgrind can generate suppression files itself, and I've spend some time on generating a suppression file, I never got a perfect one which made Valgrind shut up about Ruby.

So I wrote a patch for Ruby that tells Valgrind that the memory locations the GC uses are safe to read, which makes it stop bitching about all those bogus errors. The patch is tiny, yet efficient:  |    4 ++-- |   14 ++++++++++++++
gc.c         |   12 ++++++++++++
3 files changed, 28 insertions(+), 2 deletions(-)


I prepared an updated patch.


Ruby event-loop announced

Posted at 2005-08-30

A few days ago, Daniel Brockman announced event-loop, his Ruby package that implements signal handling, IO events, timers and of course a main loop. He also uploaded a gem, so I removed mine from


Redact 0.1.4

Posted at 2005-08-25

Some weeks ago, I implemented the missing ImageDescription attributes in Redact, so here's Redact 0.1.4, finally.

Tags , ,

XMMS2-Scrobbler news

Posted at 2005-08-24

XMMS2-Scrobbler has been reworked in the last few days.

Rejoice, it now doesn't depend on Ecore and Ruby-Ecore anymore. Instead, it uses the event-loop Ruby package. Since that one isn't officially released yet, I put up a preliminary Ruby gem over here.

Also, some parts of the code now use multi-threading, which means that submission will work much better now.

XMMS2-Scrobbler is now hosted in a git repository on

Tags , ,

Older posts: 1 2 3