A Cuckoo’s egg and no birds

Quite some time ago I read an awesome book. In German it’s called Kuckucksei. After a day of dealing with Mylyn (I was trying to write a Mylyn connector to Excel files, don’t ask why), I’m pretty much lacking creativity. So I’ll just post the cover text (actually the description from Amazon):

Geradezu zufällig kommt Clifford Stoll 1986 als neu eingestellter Systemmanager am Berkeley Laboratory in Kalifornien einem deutschen Hacker auf die Spur, der militärische Geheimnisse an den damals noch existierenden sowjetischen Geheimdienst KGB verraten hat. Da alle Warnungen an die Behörden nichts bewirken, nimmt Stoll die Nachforschungen selbst in die Hand und führt uns zurück in die frühen, wilden Pionierjahre des Internet. In seinem Bestseller Kuckucksei schildert Clifford Stoll diese atemberaubende Verfolgungsjagd durch das Netz. Wir erfahren, wie man durch Löcher in elektronischen Zäunen schlüpft, wie eine digitale Falle funktioniert und wo es mit der Datensicherheit hapert …

Just by accident, in 1986 Clifford Stoll, as newly employed system manager at the Berkely Laboratory in California, got wise of a German hacker who had given information to the at this time still existing KGB. As all warnings to the officials didn’t lead to something, Stoll takes the investigation on his own and leads us back into the wild first years of the internet. In his bestseller Kuckucksei, Clifford Stoll explains this breath-taking chase thru the net. We find out how to slip thru holes in electrical fences, how a digital trap works and where the weak points of data security are. …

Again, I can only recommend reading this book if you’re interessted in a fascinated piece of IT history.


Ruby 1.9 performance

This is just some quickie about the performance of Ruby1.9. I’m currently playing arround with visual pattern recognition (e.g. interpreting a barcode on a scanned page). As I do dislike the JAI and love the Ruby language (it’s all about the programmers happiness) it was an easy decision which language to use.

But analyzing a (roughly) 2000×3000 matrix, which is 6 million elements, is a computationally expensive task. Especially when doing stuff like matrix convolving operations or even just simple neighbourhood based decisions. So there is no question that threading has to be used, especially when running on a multi-core machine.

And this is where the problems start. Ruby (1.8) uses so called green threads which do not map to native threads but are controlled by the interpreter. So the application won’t scale over multiple cores. Furthermore, the MRI (Matz Ruby Interpreter) is not really slow, but also not really fast.
Ruby 1.9 comes to change those restraints. First of all threads are now native threads (even though being slowed down by the way they’re implemented), and secondly the code is now executed by something called YARV (Yet Another Ruby VM), which is indeed a bytecode based virtual machine. That massive architectural change improves the average speed of Ruby by roughly 1.5 (according to Matz).

My experience is that when doing simple list operations it’s way faster. When I ran my filter program which, includes a threshold and neighbourhood based average filter (and is spread over 18 threads), I was almost shocked by the performance improvement. Lets just see the numbers. They tell more than a thousend words:

Ruby 1.8:

real 163m48.059s user 158m57.742s sys 1m40.306s
Ruby 1.9:

real 11m7.155s user 9m44.076s sys 0m16.309s

So all in all Ruby 1.9 is roughly 16 times faster than 1.8 on this application (16.3296249118265 times to be exact).

Use Mylyn to build your commit log

Every heard of Mylyn? The absolutely awesome task focusing feature for Eclipse. With Eclipse Ganymede it became a part of the release train. To me, the two most interessting features are:

  1. the bug tracking system connectors (e.g. to Bugzilla). It’s just so awesome having the bugs/feature-requests you’re currently working on right in your Eclipse.
  2. the ability to create local tasks

These days I started using both to remember what I changed in my code since the last commit. But as I’m not (or at least not most of the time) using the Mylyn context, I don’t get to use the commit log integration. Just to have a workaround for this I wrote a small plugin. This plugin just runs thru all the tasks available and shows them in a text box (

Task Summary View

And just to have that mentioned, there something I don’t like about the plugins implementation. I had to use internal API of Mylyn to access the tasks. If someone knows a better way to implement this just write a comment.
There are a few more things I’d love to implement some time:

  • Use the JFace templates to have some neat summary template
  • The template should be editable in the preferences (include field assist)
  • Be able to filter the summary for more than just one category
  • Oh, and don’t rely on internal API

To get your hands on this stuff download the binary/source here (unfortunately WordPress messes up the filename), or the project’s source files here.

Limits to growth

There’s a book I read some time ago and found it extremly interesting. It’s called Limits to Growth published by the Club of Rome. The book is the latest update to Beyond the Limits.

What the authors did in this book is, they created a mathematical model/representation of the world (focusing on special features like material flow, agriculture, population size) called World3. Based on that model they ran several scenarios with different assumptions, e.g. that sustainable technology will dramatically improve in the future. But the bottom line stays the same (in most scenarios except for a very few): In a world with limited resources, there can’t be unlimited growth. The hard numbers are not usefull (as it’s not possible to build a model that precise), but the trends shown of the system we call society and our planet are extremely interesseting and well argumented.

I strongly endorse this book to anyone interessted in sustainability, system analysis and wants to have a scientific base for argumenting against wild and uncontrolled growth. If you do totaly disagree with the ideas of the last scentence you propably should give this book a try, too.

Limits to growth

Limits to growth

Fork me on GitHub