2012-01-25

Gebrannte Mandeln

Man bringe 1/8 Liter Wasser, 160g Zucker, ein Päckchen Vanillezucker und Gewürze nach Belieben (z.B. Zimt und Chili) zum Kochen, gebe 200g ungeschälte Mandeln zu und rühre alles bei großer Hitze mit einem Holzlöffel so lange um, bis der Zucker trocken wird. Dann so lange bei mittlerer Hitze weiterrühren, bis der Zucker die Mandeln karamellisiert. Nun muss es schnell gehen: Die heiße Masse auf einer hitzebeständigen Fläche auf Backpapier verteilen, und sofort mit zwei Gabeln die Mandeln auseinanderziehen. Ergebnis:
Nun gut auskühlen lassen und die Mandeln ggf. noch vereinzeln. Und dann: Genießen!
Das Rezept habe ich aus der Süßen Werkstatt Julia von einem Pralinenkurs mitgenommen - Danke an Julia!

2012-01-15

Some MongoDB "hackin'"

I recently wanted to know, which databases and collections exist in a running MongoDB. That's what I came up with:
var mongodb_conn = db.getMongo();
var admin_db = mongodb_conn.getDB("admin");


var role = "(MASTER)";
if (!admin_db.isMaster().ismaster) {
  mongodb_conn.setSlaveOk(true);
  role = "(SLAVE)";
}
var db_list = admin_db.runCommand("listDatabases").databases;
for (var db_index in db_list)  {
  var curr_db_name = db_list[db_index].name;
  var curr_coll_list = admin_db.getSiblingDB(curr_db_name).getCollectionNames();
  print(role + " " + curr_db_name + " " + curr_coll_list);
}
Just save the above lines of Javascript to a file, e.g. getCollections.js and run it against the MongoDB, which may produce an output similar to the following:

$ mongo --quiet getCollections.js
(MASTER) map_reduce_example myresults,system.indexes,things
(MASTER) test_database posts,system.indexes
(MASTER) graylog2 alerted_streams,blacklists,filtered_terms,historic_server_values,hosts,jobs,message_counts,messagecomments,messages,server_values,settings,streamcategories,streams,system.indexes,system.users,users
(MASTER) admin
(MASTER) local
(MASTER) test

Having got so far I wanted to know the (top level) properties of all documents stored in the MongoDB. As all documents are schema-less, I ended up in using MapReduce:
var mongodb_conn = db.getMongo();
var admin_db = mongodb_conn.getDB("admin");

var role = "(MASTER)";
if (!admin_db.isMaster().ismaster) {
  mongodb_conn.setSlaveOk(true);
  role = "(SLAVE)";
}
var db_list = admin_db.runCommand("listDatabases").databases;
for (var db_index in db_list) {
  var curr_db_name = db_list[db_index].name;
  var curr_db = admin_db.getSiblingDB(curr_db_name);
  var curr_coll_list = curr_db.getCollectionNames();
  for (var coll_idx in curr_coll_list) {
    var mapred = curr_db.runCommand({"mapreduce" : curr_coll_list[coll_idx], "map" : function() { for (var key in this) { emit(key, null); } }, "reduce" : function(key, anything) { return null; }, "out" : "myoutput" });
    var key_list = curr_db.myoutput.distinct("_id");
    for (var key_idx in key_list) {
      print(role + " " + curr_db_name + " " + curr_coll_list[coll_idx] + " " + key_list[key_idx]);
    }
    curr_db.myoutput.drop();
  }
}
So, in the map phase all documents of all collections in all databases are looked at and all top level properties of those documents are emitted as keys. In the reduce phase no further aggregations are performed, as we already got what we want - a result collection with all top level properties.
Again, save that code to a file, e.g. getAllKeys.js and run it against the MongoDB, which may produce an output similar to the following:
$ mongo --quiet getAllKeys.js
...
(MASTER) test_database posts date
(MASTER) test_database posts tags
(MASTER) test_database posts text
(MASTER) graylog2 historic_server_values _id
(MASTER) graylog2 historic_server_values created_at
(MASTER) graylog2 historic_server_values type
(MASTER) graylog2 historic_server_values value
(MASTER) graylog2 hosts _id
(MASTER) graylog2 hosts host
(MASTER) graylog2 hosts message_count
(MASTER) graylog2 message_counts _id
(MASTER) graylog2 message_counts hosts
(MASTER) graylog2 message_counts streams
(MASTER) graylog2 message_counts timestamp
(MASTER) graylog2 message_counts total
(MASTER) graylog2 messages _id
(MASTER) graylog2 messages _original_level
(MASTER) graylog2 messages _thread_name
(MASTER) graylog2 messages created_at
...
It's not optimized so far, but it does what I needed. The result is somehow a simulation of what you get on relational databases when running select ... from all_tab_columns ... (Oracle) or select ... from information_schema.columns ... (MySQL).

2011-12-27

Tilt-Shift ...

Da muss man erst in die alte Heimat fahren, um von einem neuen Video aus und über die neue Heimat zu erfahren - mein Dank geht an Dagmar, Dietmar und Olli. Hier nun das Video:
... und hier gibt's eine Kurzreportage darüber. Und hier die Homepage des Schöpfers.

2011-12-16

Broilers

So, wahrscheinlich das letzte Konzert des Jahres: Die Broilers aus Düsseldorf im Huxleys Neue Welt. Nachdem sie bereits Ende Oktober dort gastierten, haben sie auch gestern wieder den Laden voll bekommen. Stilrichtung: irgendwas aus Oi, Punk, Rockabilly, Ska ... also sehr nett ... hier ein ruhigeres Lied:
Support waren Sonic Boom Six aus Manchester, UK - nett, nur die Stimme der Sängerin war auf Dauer etwas nervig ...

2011-11-28

Rodrigo y Gabriela

Und das nächste Konzert! Wie der Titel schon sagt, ging es heute zu Rodrigo y Gabriela in den Postbahnhof. Die beiden verstehen ihr Handwerk wirklich und haben mittlerweile eine treue Fangemeinde um sich geschart. Das Konzert war also gut besucht und die Stimmung auf und vor der Bühne mitreißend. Leider gab es ein paar technische Probleme mit dem Sound und der einen oder anderen Gitarre. Auch fehlte ein wenig die Stimmung wie bei ihrem letzten Konzert vor vier(!) Jahren im Lido oder im vergangenen Jahr in Dublin im Grand Canal Theatre. Dies ist aber eher Ausdruck dafür, wie hoch Rodrigo y Gabriela die Latte gelegt haben - es war nämlich trotzdem ein sehens- und hörenswertes Konzert!
Und hier mein "favourite" als Video:

2011-11-22

Flogging Molly

Heute Abend waren Flogging Molly aus den USA zu Gast im Astra Kulturhaus. Support waren The Minutes und The Mighty Stef - beide aus Dublin. Während erstere ordentlich rockig daherkamen, haben letztere eher die Folk-Elemente betont. Beide haben aber gut für die Hauptband eingeheizt.
Alles in allem eine schöne Vorbereitung für die Dropkick Murphys im Januar ...

2011-11-20

Google Developer Day 2011 Berlin

I've been to the Google Developer Day 2011 Berlin ... together with more than 2000 other people.
Right before the keynote ...
It's been a "Google brainwash", but nevertheless very cool ... at least because of the free drinks and food ;-). Maybe you find some video of the different talks around somewhere - here are the talks, I can recommend: