Ruby Objects, Class-Objects and MetaClass-Objects

After a while of evaluation I started over programming mainly in Ruby about two month ago.

Long time ago I learned for a short while object orientation programming in Smalltalk-80 but soon started to use C++, first with the AT&T preprocessor and later with the gcc. Since 1998 I am programming Java. All these years have left me with a certain idea of practical object orientation which was not really what I learned from Smalltalk-80.

But Ruby changed things a lot as I have to admit. In Ruby everything is an object and Ruby is interpreted like Smalltalk! What are the consequences. This is what my post will try to figure out.

From Ruby Core – Class documentation:

Classes in Ruby are first-class objects—each is an instance of class Class.

A big help for understanding Ruby Objects has been the Pickaxe Book.

In Ruby everything is an object. This includes as well Integers as Classes. So what happens if you write something like:

  a = "test1"
  b = "test2"

You get references a and b to your Objects a and b of class String which is an object too and has the class object Object as superclass. So far the only difference is that the Classes are realized as objects themselves.

But you can do things in Ruby which you cannot do in C++ or Java. For example you can add a method only to one object like:

  c = 'test'
  class < < c
    def double
      self + self
    end
  end
 
  c.double
  =>"testtest"

This piece of code generates a virtual class exclusively for the object c.

What happens if you try the same for integers? If you try the same for integers it should look like object b in this graph:

The code for this would be:

  b = 7
  class < < b
    def double
      self + self
    end
  end
 
  TypeError: no virtual class for Fixnum

So what is this? I thought that all objects can have virtual (or singleton) classes which hold the methods specially attached to this object?

The solution is quite simple. There are special classes like Fixnum which are called eigenclasses. Instead of a reference to an object these classes return the class object itself (for example as parameter for a method call). Eigenclass objects only have one single Object for example for each Fixnum value. This is why it is not possible to create singleton classes for eigenclass objects.

But what you can do is to extend an eigenclass with your own attributes like:

  class Fixnum
    attr_accessor :name
  end
 
  b = 5
  b.class
  => Fixnum
  b.name 'five'
  => "five"

The next thing I want to do is to define a class variable. I found a nice article about class variables in Ruby on John Nunemakers blog. At first I was really astonished about this:

  class Polygon
    @@sides = 10
    def self.sides
      @@sides
    end
  end
 
  puts Polygon.sides # => 10

This is a Polygon class with a class variable which holds the number of sides of the Polygon and a getter class method. Now we create a subclass which inherits from Polygon and holds its own number of sides:

  class Triangle < Polygon
    @@sides = 3
  end
 
  puts Triangle.sides # => 3
  puts Polygon.sides # => 3

What happens here? The Polygon sides have been set to 10 originally.

To understand this behavior you must have an understanding about the Ruby Meta-class and look-up mechanism for methods and variables. When you create a class variable or method Ruby actually creates the following Meta-Class for you:

The Meta-Class hold the Class level extensions of your class. If you subclass Polygon now you have the following image:

In Ruby everything, including class definitions, are executable code. The assignment to the class variable @@sides in the class Triangle leads the Ruby interpreter to search for an existing class variable @@sides which he finds in the Meta-Class of the superclass Polygon first and makes an assignment to this variable instead of creating a new meta-Class with the same variable for Triangle.

So what can we do if we want to have a variable for the sides of our class which is unique to the according class? As the class itself is an object you can assign a variable to the class object

You can do this with the following code:

  class Polygon
    @sides
    class < < self
      attr_accessor :sides
    end
  end

for the Class Polygon and the same for class Triangle. Be aware that you have to assign the accessors to the class object and not to the object itself.

I hope that my explanations are correct and can help other newbies in Ruby to understand the Class handling a little bit.

Posted in All, Ruby | Tagged , | Leave a comment

Tropical Thunderstorms

When I arrived in Haikou a year ago my only experience with a tropical region has been 6 month on Martinique between my studies in physics and the start of my computer science studies. On Martinique the rainy season is about 3 month and the rest of the year there is more or less sunshine.

The September in Haikou last year has been nice even though it was quite warm with around 38°C. In October the Taifun season began and I can tell you that we got drown in our apartment in the fourth floor. The wind pressed the gigantic amount of water which has been carried along with the Taifun directly through the windows into the apartment. This rainy period continued more or less until mid December. The rest of December and January have been dry but unusual cold, specially because there is no heating in the apartment.

In February it started to rain again. First only sometimes and after a while more and more. Since two month now we have temperatures above 30°C and about one thunderstorm every day. The record has been three thunderstorms in a row during one afternoon. When you are outside in such a storm, there is no protection. When you wear a slicker you are wet from your own sweat, otherwise from the rain. The water in the road can easily raise to a torrent of more than 10cm depth. There is no sewer which can take that much water in such a short time even though the city of Haikou is cleaning them all the time. A gaze through the window shows me grey in grey during such a storm and I can hardly see the neighbour building which is only about 30m away.

I never imagined that on a tropical island like Hainan it could be more rainy than in northern Germany where I come from and which I once left because of the “bad weather”. I think life is really funny and we should enjoy this fact much more ! 😉

Posted in Around the World, China | Tagged , , | 1 Comment

Joke about EU request to stop internet filtering in China

This can only be a political joke!

I was pointed by the german netzpolitik.org and Die Neuen Menschen blogs to an article you can read in the news at N24 or Deutschlandradio about a statement from Viviane Reding, commissioner for media of the European Union, about the chinese internet filters.

“Das Blockieren oder Filtern bestimmter Internet-Inhalte ist für die Europäische Union völlig inakzeptabel.”

or in english translation:

“The blocking or filtering of certain internet content is completely inacceptable for the European Union.”

I mean the enforced distribution of the “Green Dam – Youth Escort” software is discussed in China as well and the installation is not mandatory any more as stated by the chinese government.

But I would suggest the European Union to first stop all internet filtering within the Union before pointing out that they think that internet filtering is inacceptable !!!

The internet citizens in Europe are laughing about this sentence. 😀

Posted in Around the World, China, Misc, Politics | Tagged , , | Leave a comment

Politik der verbrannten Erde

Was sich derzeit in der deutschen Politik so abspielt läßt sich nur noch schwer mit einem Generationenkonflikt erklären. Ich möchte hier nicht noch einmal auf die Argumente gegen eine Vorratsdatenspeicherung oder eine Netzzensur eingehen wie sie in der letzten Zeit beschlossen wurden.

Was mich erschreckt hat ist wie die regierenden Politiker mit den jungen Mitbürgern in Deutschland umgehen. Wahrscheinlich mit Blick auf die Demographie, die bestätigt, daß das Gros der Wähler bereits genauso überaltert ist wie die Kader der regierenden Politiker, wurden die Mitglieder der oppositionellen Bewegung als Sympatisanten wenn nicht gar selbst als Kinderschänder dargestellt. Die jungen Menschen die mehr als berechtigte Einwende gegen die Zensurgesetze haben und diese auch nüchtern argumentativ untermauert konnten, wurden wie kleine Kindern abgekanzelt und mit leeren Verbalien abgespeist. In der ganzen Debatte um das neue Internet-Zensur-Gesetz habe ich von keinem der befürwortenden Politiker gehört das er einmal direkt auf die Argumente der Gesetzesgegner eingegangen ist oder diese gar wiederlegen konnte.


Die größte Frechheit habe ich dann heute in einem Interview in der Zeit-Online mit Frau von der Laien und Franziska Heine gelesen.

Heine: … Die Unterzeichner der Petition haben gesehen, wie Entscheidungen in der Politik getroffen werden – und das wird sie nachhaltig prägen.

von der Leyen: Das ist doch etwas Tolles

Heine: Für uns war das nicht so toll.

von der Leyen: Das ist lebendige Demokratie.
… Natürlich kann Frustration entstehen, wenn man merkt, dass da auch andere demokratische Prozesse laufen, zum Beispiel Ausschussberatungen, in denen gewählte Vertreter Entscheidungen fällen, …

Ich möchte einmal fragen, was soll daran toll sein wenn einem auf den Kopf gekackt wird? Denn nichts anderes haben die Politiker gerade mit den meist jüngeren Gegnern des Zensurgesetzes gemacht. Gibt den Politikern der Fakt das sie einmal gewählt wurden tatsächlich für die gesamte Legislaturperiode das Recht die Bevölkerung bei den Entscheidungen die sie treffen total zu ignorieren? Na, da haben die jungen Leute ja wirklich den politischen Umgang in einer Demokratie gelernt.

Und dann wird da auch noch ganz frech gelogen:

von der Leyen: … Diese Daten werden jetzt sofort gelöscht. So steht es im Gesetz.

Hat Frau von der Laien das Gesetz zur Vorratsdatenspeicherung wieder abgeschafft? Also stehen die Daten ohnehin bereits gespeichert zur Verfügung und müssen “bei Bedarf” nur noch angefordert werden.

Ich würde diese Art Politik zu betreiben als Politik der verbrannten Erde bezeichnen. Die Kontrollmechanismen werden heute unter Beteuerung sie nie zu missbrauchen eingeführt, populistisch ausgeschlachtet und gepusht mit dem Killer-Argument gegen Kindesmissbrauch zu kämpfen und wir alle haben dann in Zukunft damit zu leben. Diese Zukunft kann für einen jungen Menschen noch ziehmlich lange dauern! Aber was interessiert das schon einen Politiker der bereits an der Grenze des Rentenalters ist (oder bereits darüber hinaus) und noch ein letztes Mal in den Bundestag gewählt werden möchte!

[Nachtrag]
Ein guter Artikel über die Situation auf Spiegel-Online. Ich denke die Politiker, die die ganze Zeit fälschlicher Weise behaupteten das Internet wäre ein Rechtsfreier Raum, werden in Zukunft feststellen müssen das die Proteste gegen ihre Politik nicht nur auf das Internet beschränkt sind sondern direkte Auswirkungen auf ihre Wiederwahl haben werden weil dort wirklich Menschen im richtigen Leben dahinter stehen!

[Nachtrag]
Hier noch ein sehr interessanter Artikel auf Heise-Online über den Umfang der Informationen die bei der Vorratsdatenspeicherung gesammelt werden. Im Internet sind die Bürger längst transparent! Wann kommt die Forderung das sie dies im Leben ausserhalb des Internet ebenfalls werden müssen?

Posted in Germany, Politics | Tagged , | Leave a comment

SPD und CDU wenden sich gegen ihre jungen Wähler

Eigentlich hatte ich meinen Blog begonnen weil ich meine Freunde und Verwandte in der ganzen Welt ein wenig auf dem Laufenden halten wollte wie es mir in China so ergeht und sie mit Bildern und Geschichten vom anderen Ende der Welt versorgen wollte.

Leider haben die aktuellen politischen Ereignisse aus Deutschland mich eingeholt und ich bin fast Sprachlos was die grosse Koalition da gerade anrichtet. Ich hatte diese Koalition sogar einmal befürwortet da sie in meinen Augen damals die einzige reelle Chance darstellte in dieser sich gegenseitig blockierenden politischen Landschaft noch einen Schritt nach vorne zu tun und gemeinsam die wirklich notwendigen Reformen anzustossen. Stattdessen ist der Kleinkrieg hinter dem Vorhang weitergegangen und die Ergebnisse dieser Politik sind eher erschreckend als positiv.

Es war in meinen Augen schon immer etwas zweifelhaft wenn Menschen plötzlich Ressorts regieren von denen sie überhaupt nichts verstehen. Da gab es Verkehrminister die nicht einmal einen Führerschein besaßen, Lehrer die plötzlich Finanzminister wurden und ähnliche Dinge. Trotzdem haben sich diese Politiker in meinen Augen noch wacker geschlagen da sie auf ihre, auf diesem Gebiet spezialisierten, Berater gehört haben.

Diese Legislaturperiode ist allerdings gekennzeichnet von einer absoluten Sinnfreiheit, besonders der Massnahmen um das Internet. Da brockt uns eine Justizministerin die Vorratsdatenspeicherung ein die nicht einmal weiß was ein Browser ist und die Familienministerin besiegelt dieses Tun dann durch die Einrichtung einer Zensur Infrastruktur für das Internet. Dem Wirtschaftsminister, dem eigentlich bei diesem Tun die Haare zu Berge stehen müssten, begreift scheinbar die langfristigen Folgen dieser Maßnahmen ebensowenig wie die meinsten Mitglieder des Bundestages und unterstützt diesen Unsinn auch noch.

Die Politiker scheinen zu glauben das eine Zensur des Internet zu Stabilität führt, wobei sie sich wahrscheinlich die plötzliche Einführung von Recht und Ordnung im Internet darunter vorstellen. Die Geschichte sollte ihnen allerdings gezeigt habe das solche Maßnahmen im besten Fall zur Stagnation führen. Wenn sie dies als Stabilität definieren haben sie natürlich Recht. In einer sich rasch vorwärts bewegenden Welt bedeutet Stagnation allerdings stetiger Rückschritt!

Wer glaubt das eine Zensur des Internet keinen Einfluss auf die Wirtschaft haben wird, der glaubt wahrscheinlich auch noch an den Weihnachtsmann. Zumindest auf die Software Industrie wird diese Maßnahme einen Einfluß haben, wie mir ein Jahr in China deutlich gemacht habt. Die vorderste Front in Technologien wird heutzutage in Blogs und Foren diskutiert und allenfalls noch in Wiki’s festgehalten. Von China aus habe ich täglich mit dem Kollateralschaden der Internetzensur zu kämpfen. Ungefähr jeder zweite Blog und Forum sind gesperrt und wenn ich an die Informationen heran kommen möchte muss ich erst einige technische Tricks nutzen. Geht man nach den Politikern hier in China suche ich anscheinend permanent nach Porno Inhalten oder extremistischen politischen Ansichten! Wie die praktischen Auswirkungen sind kann jeder sehen der die Analysen der “Green Dam” Filter Software der Firma Jinhui gelesen hat! Die Programmierer dieser Firma sind in die typischen Fallen geraten die schon seit Jahren in Foren und Blogs diskutiert werden und inzwischen als nicht nur überholte sondern sogar gefährliche Programmiertechniken angesehen werden.

Und der Unsinn geht sogar noch weiter! Natürlich sind die nächsten Schritte bereits Forderungen nach Zensur von Gewaltspielen oder das die Netzsperren Europaweit eingeführt werden. Gleichzeitig stellen einige Politiker einmal deutlich klar das sie unfähig zu seinen scheinen logisch zu denken und von sich ausgehend dies scheinbar auch bei ihren Wählern vermuten.

Besonders geschockt hat mich allerdings das Verhalten der SPD die ich seit über 20 Jahren wähle. Ich habe mich schon gefragt wie es mit dem rechtstaatlichen Verständnis innerhalb der SPD aussieht als die Anzeige gegen Herrn Tauss erhoben wurde. Eigentlich gilt in unserem Rechtstaat die Unschuldsvermutung. Davon war allerdings bei den Genossen des Herrn Tauss in der SPD wenig zu sehen. Und dann diese Katastrophe mit der Vorratsdatenspeicherung und der Internetzensur.

Ich muss gestehen, auch wenn ich nach wie vor nicht weiss wem ich im September noch guten Gewissens meine Stimme geben kann, für die SPD werde ich nach über 20 Jahren diesmal nicht stimmen.

Bewundernswert ist für mich die junge Generation von Demokraten die jetzt die Konsequenzen zieht und der SPD den Rücken kehrt wie Torben Friedrich und Julia Reda. Aber auch eingefleischten Demokraten wie Jörg Kantel kehren der SPD gerade den Rücken. Da verbleibt eigentlich kaum technischer Sachverstand in dieser Partei das diese noch zukunftsorientierte Politik betreiben kann.

Wie eigentlich mit dem Thema Kinderpornographie umgegangen werden sollte kann sich Frau von der Laien vielleicht einmal in Italien beispielhaft anschauen. Dort wird etwas dagegen getan anstatt den Mantel des Schweigens über diese absheulichen Verbrechen zu hängen. Bezeichnender Weise scheint ein nicht unerheblicher Teil des strafbaren Materials von einem deutschen Server herunter geladen worden zu sein. Wo waren Frau Zypries und Frau von der Laien denn da wieder? Im Wahlkampf?

[Nachtrag]
Hier noch ein kleiner Ausblick drauf was als nächstes aus dem Internet gefiltert wird.

[Nachtrag]
Der nächste Austritt aus der SPD, Manuela Schauerhammer.

Solange es Menschen gibt die erkennen das die Politik der großen Parteien mit einem demokratischen Verständnis längst nicht mehr vereinbar ist und daraus die Konsequenzen ziehen gebe ich die Hoffnung nicht auf! Die Politiker in Deutschland, die auf so einem hohen moralischen Ross gegenüber den politischen Systemen hier in Asien sitzen, sind gerade dabei diese System auf der äußerst rechten Spur zu überholen.

Posted in Germany, Politics | Tagged , , | 5 Comments