Planet Ka-Clique

May 13, 2012

Joachims Bilder

May 12, 2012

Joachim

10 years of using Debian

Today, it must have been exactly 10 years that I started using Debian. The story of how I came to Debian shows some of its strengths, so I’ll use this occasion to share it.

I spent the first half of 2002 as an high-school exchange student in Wenatchee, USA. I was already a user of Linux at that time: I made my first contact roughly in 1996 and did my first installation at home two years later, but all that time I was dual-booting and my main system was a well-arranged Windows 98. The machine was a regular tower PC, but nevertheless I put the computer into my trunk when I flew to the US. It took away most of the space, and I had to put some of my cloths inside the case.

So I was there, happily using my Windows and my manually set up “Linux From Scratch” until one day the inevitable happened; inevitable at least until you start doing backups: On April 30th, my hard drive crashed, and took the two systems together with 4 years of personal data with it.

Two weeks later I had a new hard drive and was pondering my options. I did plan to install Windows again; at that time Windows XP was just released. But I wanted a German version of Windows, which would be hard to get there. Also, I did not want to use Linux from Scratch any more, and wanted to make a well-founded choice of a distribution. On the other hand, I really wanted to get my machine up and running quickly, to be able to read my mail more comfortably. I had heard that Debian had good support for network installations (downloading a full 700MB CD was something to avoid at that time), so I grabbed some netinst images, burned a CD, and quickly installed Debian.

I was planning to use the system for about two weeks. I did not pay any particular attention to the setup. Heck, I even picked from my Simpsons sidekick machine naming scheme one that I would not miss being used up (“barney”). Nevertheless, I was using this installation for many years (and many upgrades), until I eventually switched to using laptops. In fact, that very installation is still on the machine somewhere and works. I did install Windows XP a few weeks later as well, but hardly used it. So May 12th of 2002 was when I turned into a full-time Linux and Debian user.

I soon became interested in Debian the project and started to contribute. But that is another story for another ten year anniversary blog post, most likely on October 21, 2013...


Flattr this post

by nomeata (mail@joachim-breitner.de) at May 12, 2012 10:00 AM

May 07, 2012

Joachim

Free Groups in Agda

I must say that I do like free groups. At least whenever I play around with some theorem provers, I find myself formalizing free groups in them. For Isabelle, my development of free groups is already part of the Archive of Formal Proofs. Now I became interested in the theorem prover/programming language Agda,so I did it there as well. I was curious how well Agda is suited for doing math, and how comfortable with intuitionalistic logic I’d be.

At first I wanted to follow the same path again and tried to define the free group on the set of fully reduced words. This is the natural way in Isabelle, where the existing setup for groups expects you to define the carrier as a subset of an existing type (the type here being lists of generators and their inverses). But I did not get far, and also I had to start using stuff like DecidableEquivalence, an indication that this might not go well with the intuitionalistic logic. So I changed my approach and defined the free group on all words as elements of the group, with a suitable equivalence relation. This allowed me define the free group construction and show its group properties without any smell of classical logic.

The agda files can be found in my darcs repository, and the HTML export can be browsed: Generators.agda defines the sets-of-generators-and-inverses and FreeGroups.agda (parametrized by the Setoid it is defined over) the reduction relation and the group axioms. Here are some observations I (disclaimer: Agda-beginer) made:

  • Fun fact: Free groups exist not only in classical logic.
  • Without any automation as in Isabelle, even simple things get quite complicated. A simple substitution of an equality with subst requires me to specify not only the equality and the term I want it to apply, but also to repeat the common part of the terms. Or when using the associativity of list concatenation, I have to pass all three sublists to the lemma. Maybe I am a bit spoiled by Isabelle, but I’d be worried that this would prevent large proofs.
  • The levels are also annoying. Although my theory stays within one level, I have to annotate it everywhere. I’d expect the type inference to figure this out for me.
  • Equality reasoning with begin ... ∎ is quite nice and surprisingly well readable.
  • Besides the additional work, it is nice to be able to do the proof in almost all detail. There is a limitation, though, as some steps are done automatically (if they happen to occur when evaluating/normalizing a term) and the others, even if similar-looking, are not.
  • It’d be great if one would be free in the choice of editor, but vim users generally have a hard time in the field of theorem provers.

If I were to extend this theory, there are two important facts to be shown: That there is a unique reduced word in every equivalence class (norm_form_uniq), and the universal property of the free group. For the former (started in NormalForm.agda) I’m missing some general lemmas about relations (e.g. that local confluence implies global confluence, and even the reflexive, symmetric, transitive hull is missing in the standard library). For the latter, some general notions such as a group homomorphism need to be developed first.

I planned to compare the two developments, Isabelle and Agda. But as they turned out to show quite things in different orders, this is not really possible any more. One motivation to look at Agda was to see if a dependently typed language frees me from doing lots of set-element-checking (see the “mems” lemma in the Isabelle proof of the Ping-Pong-Lemma). So far I had no such problems, but I did not get far enough yet to actually tell.

Thanks to Helmut Grohne for an educating evening of Agda hacking!


Flattr this post

by nomeata (mail@joachim-breitner.de) at May 07, 2012 01:24 PM

April 19, 2012

Wenzel

Motte

Since being a pup, my family’s dog Motte (German for “moth”) has had the most peculiar way of sitting down:

Motte split-style sitting


She seems to enjoy it very much though it looks tiresome!

by Wenzel Jakob at April 19, 2012 06:41 PM

April 11, 2012

Mareike

Auf Fahrt in der Auvergne - 6. Tag

Dieser Fahrtenberichtabschnitt wurde von Nick geschrieben.

11. April 2012, Mittwoch

Der letzte stark startete abrupt, als der Zug um 5.15 Uhr den Motor startete und uns aus dem Schlaf riss. Wir fingen gegen 5.30 Uhr an, uns fertig zu machen und verließen dann unser Beton gesäumtes Schlafgemach. Nach einstündiger Zugfahrt erreichten wir in noch nassen Schuhen den Gare de Volvic, wo sich Jens und Balli erbarmten, das letzte Stück zum Auto zu laufen und uns dann abzuholen. Ein letzter Kleiderwechsel um einen mehrstündigen Aufenthalt auf engem Raum erträglich, wenn nicht überhaupt erst möglich zu machen und los ging die Fahrt.
Der erste Stopp war nach ca. 10 Minuten, um an der Volvic-Quelle die Flaschen aufzufüllen. 10 Minuten später der nächste Halt im Zentrum von Volvic, wo wir in einer Bar die beim Bäcker erstandenen Croissants zusammen mit einem Kaffee bzw. einer heißen Schokolade frühstückten. Es folgte noch ein Abstecher zu zwei netten alten Damen, die Käse verkauften. Wir durften uns den Keller anschauen, in dem er reift und uns den Käse aussuchen, den wir zu kaufen gedachten. Die verkaufstüchtigen „Käse-Omas“ versuchten uns dann gegen Ende des Besuches teilweise erfolgreich noch die verschiedensten anderen Objekte anzudrehen.



Mit etwas leichteren Geldbeuteln ging es nun fix zurück ins Auto. Bevor wir losfahren konnten, mussten wir aber leider noch auf Mareike warten. Aufgrund einer aus uns unbekannten Gründen entstandenen Beinerlahmung brauchte sie immer etwas länger. Die nächste Pause erfolgte an einem einsamen Waldparkplatz, der direkt hinter einer hässlichen und überfüllten Autobahnraststätte lag. Dort wurde der Käse angeschnitten und es gab lecker Mittagessen. Vom Regen unterbrochen hüpften wir alle jung und sportlich ins Auto. Mareike stieg auch ein.
Eine Tankunterbrechung folgte noch, sonst lief die Fahrt bis jetzt stoppfrei. Mareike wird noch in Karlsruhe abgesetzt, der Rest fährt bis nach Waldbronn. Dort endet eine trotz Regen schöne Älterenfahrt in die Auvergne.

by Mareike (nospam@example.com) at April 11, 2012 06:58 PM

April 10, 2012

Mareike

Auf Fahrt in der Auvergne - 5. Tag

Dieser Fahrtenberichtabschnitt wurde von Balli geschrieben.

10. April 2012, Dienstag

Irgendwann in der Nacht rieselte es keine Tannennadeln mehr auf die Kohtenbahnen, sondern kalte, aber ähnlich klingende Tropfen. Der zweite Teil des Tiefdruck-Ostergebiets war angekommen. Also weiterschlafen. Zur gewohnten Zeit (ca. 12 Uhr) Mittags-Müsli mit der cremigen Bergbauernmilch, abgekocht und abgehangen. Als der Wind schließlich eine blaue Lücke in die Schauerwolken gerissen hatte, rissen wir uns am Riemen, ließen die Kohtenbahnen trockendampfen und –wehen und liefen links am See entlang dem braunen Hang hinauf, zusammen mit dem letzten Sonnenschimmer.
Der Wind heulte zunehmend wütender in den Tannen, an die wir uns drückten, weiter bergan. Es wurde alpin, genauer: massiv (central). Nun wehte der Sturm Hagel-, Regen- und Graupelschauer waagrecht über die Alm. Im Schutz der Tannen (noch) ein beeindruckendes Schauspiel. Doch bald wurden wir Teil der Show. Der GR bog jetzt rechts nach oben ab. Steil, direkt in den Westwind und krater-steil. Selbst Jens zog es nun vor, die waagrechte, eiskalte Dauer-Dusche mit einem Poncho zu nehmen. Seine Brille hätte Scheibenwischer gut gebrauchen können.



Auf dem Grat waren die Böen so laut, dass nur das Knallen der flatternden Ponchos sie übertönte. Jeder nicht abgedeckter Körperteil gefror, und der Regen sprühte von unten und von vorn in jede Ritze. Kurze Pause vor dem Winddruck bot ein letztes niedriges Kiefernwäldchen. Die Ponchokaputzenvisiere klappten kurz hoch: vor uns leuchtete das erste Schneefeld.



Dann hatte uns das Heulen wieder, der Matsch des steil nach oben traversierenden Trampelpfads, von oben wehen Wolkenfetzen mit Schnee über den Kamm, der Winddruck noch mal verdoppelt, sodass wir mit den Ponchos anfangen, Schachpferd zu werden: zwei Schritt vor, eins zur Seite. Hier oben auf 1400 m herrscht heute Königsturm.



Mehr Schneefelder. Immerhin schaffen es Daniel und ich noch, trotz steifer Finder Nick mit zwei Schneebällen zu empfangen, als er geduckt um die Ecke kommt. Der Pass ist erlaufen. Der Wind durch nichts mehr aufgehalten, weht uns nach links und rechts davon, trocknet immerhin trotz Regen die angeklebten Hosen. Wir steigen in Richtung Mont-Dore ab. Das vor uns liegende Massiv (1800m) ist vollständig von Wolken verschluckt. Jeder Meter runter zählt, um dem Wind zu entkommen. Kurz vor dem ersten Wald dann eine bizarre Begegnung: Eine französische Schulklasse in Turnschuhen kommt uns entgegen, wir spekulieren über mögliche Headlines in der Lokalzeitung von morgen…

Kalte Erschöpfungsrast am nächsten Pass, die Hütte zu. Der Himmel wird noch dunkler. Wir scherzen, dass das dann wohl das von Jens angekündigte lokale Gewitter sein müsste. Als Antwort donnert es. Schnell weiter, an der nächsten Seeseite steht ein Haus mit zwei Autos davor. Ein Gasthaus, offen, mit heißem Kaffee & Kakao. Nötig.
Draußen graupelt es den Abend ein, und wir sehen dem Außenthermometer des Gasthofs beim Fallen zu. Bei 4 Grad, einem nahen Donner und im Eisregen patschen wir die Straße nach Mont-Dore runter. Schnell weg hier. Doch die Temperatur sinkt so schnell wie wir absteigen, und als wir schließlich frierend in Mont-Dore einlaufen, nass und gefroren von Kopf bis in den Wanderschuh hinein, sind wir nicht sehr glücklich über die Auskünfte der SNCF-Beamtin: Nein, es führe kein Zug mehr in warme unten. Nein, sie kann uns nicht in der lauwarmen Schalterhalle schlafen lassen. Nein, sie kann uns keine Tickets mehr für den Zug am nächsten Morgen um 6 Uhr verkaufen, das ist erst wieder um 5.45 Uhr möglich. Doch, die Halle schließt jetzt. Mont-Dore, Dämmerung, 2 Grad, kalter Dauerregen. Wir sind bei unserer Restaurant-Wahl nicht mehr sehr wählerisch, die Wahl ist dennoch gut. Unsere Kneipe hat Platz für 6 nasse Rucksäcke, uns sechs nasse Säcke, zwei Elektroheizungen, ein Klo und große Pfannen mit geschmolzenem Käse-Gratin + 2 Pichets Hauswein. Langsam tauen die meisten Teile von uns wieder auf, nur Mareikes Füße weigern sich. Daher kehrt die Schnupfen-Fraktion nach dem Mahl (wieder zitternd) zum Bahnhof zurück, während Zäzi, Jens und Nick sich noch einen Pastis in der Hotel-Bar genehmigen. Am Bahnhof gehen gerade die Neonleuchten aus, als wir uns über den Zaun werfen und das Transport-Vordach des Güterbahnhofs entern. Kohtenbahn auf Betonboden, Füße mit Fieber auftauen, Tropfen auf Vordach zählen. Harte Nacht nach hartem Tag beginnt…

PS: Noch schwerer als der Übergang von Tannennadeln zu Graupel kann man übrigens den Übergang von Regen zu Schnee erhören. Es wird einfach still – und kalt

by Mareike (nospam@example.com) at April 10, 2012 06:57 PM

April 09, 2012

Mareike

Auf Fahrt in der Auvergne - 4. Tag

Dieser Fahrtenberichtabschnitt wurde von Zäzi geschrieben.

9. April 2012, Ostermontag

Heute Morgen haben wir alle bis halb 12 gepennt, danach raus aus den Federn und Kohte vom Baum runtergeholt um daraufhin in der üblichen Feuerstelle mit dem Top-Buchenholz noch mal Feuer zu machen. Wir spülen die Essgeschirre in der Wolfsquelle, was leichte Bedenken bei den älteren Mitfahrern hervorrief und Jens zu einer anzweifelbaren Desinfizieraktion (Essgeschirr 3s lang übers Feuer halten) brachte.
Wieder einmal starteten wir unseren Marsch um halb 2. Es ging durch die schöne Allee und dann eine Straße entlang zu einem kleinen Örtchen mit Chateau. Ach so, wohlgemerkt: an diesem Morgen war uns ein Kaffee und ein gemütlicher Wandertag ohne Berge versprochen worden. Es sollte sich nur das „ohne Berge“
bewahrheiten.



Es ging durch mehrere Örtchen bis Nebouzat, wo wir – weil Ostermontag – vor einem verschlossenen Supermärktchen standen. Milch, Wein und Brot hätten wir gebraucht. Die Frau von einem Restaurant hatte keine Milch und wollte uns keinen Wein verkaufen.



Daraufhin weiter durch ein liebliches Tal mit Bach. Balli O-Ton: „In solchen Tälern ist der Frühling nämlich immer schon viel weiter.“ Bei der Mittagspause gingen Jens und Mareike auf die Suche nach der in der Karte eingezeichneten Mineralquelle. Dort sprudelte es aus der Erde und blubberte und das Laub war vom Eisen ganz rot gefärbt. Diese Quelle heilte im Übrigen die Knieschmerzen von Nick und Balli! (Ein Osterwunder?)

Der Feueralarm von Neuville ließ uns die Nähe dieses wichtigen Scheidungspunkt wissen. Also weiter den Rauchschwaden entgegen, die sich dann aber doch als gewolltes Feuer entpuppten. An der Wasserstelle (die es im Übrigen in jedem Örtchen gab) Halt gemacht. Balli fragte eine Bäuerin nach Milch. Wir hatten Pech: Der Milchwagen, der nur alle 4 Tage kommt, hatte gerade die Milch abgeholt und der Sohnemann, der die Kühe gerade melken sollte, war unterwegs sich besaufen, weil Ostermontag war.

Außerdem musste die wichtige Entscheidung des weiteren Weges geschlossen werden:



Alternative A: Durch ein kleines Tal 4km Richtung Westen und 1 km vor Orzival schlafen, um am nächsten Morgen ein schönes Frühstück mit Pain au Chocolat, Baguette und Kaffee zu genießen.
Alternative B: 8km Richtung Süden auf 1200 m (150 m hoch) zu einem Bergsee und auf dem Weg in Vernines Milch besorgen.
B hat gewonnen, die sich angesichts des Wetterwechsels, der sich in der Nacht vollziehen sollte, auch als besser bzw. gut herausstellte.

Also schleppten wir uns mehr oder weniger die Straße entlang, die stetig bergauf ging. Balli O-Ton: „In einer Stunde sind wir am See!“ (Es war 18.10. Balli wollte uns aber auch am Tag vorher schon weiß machen, dass Reinhold Messner 80 km pro Tag läuft!) In Vernines verhalf uns eine nette Frau zu frischer Bauernmilch. Auf dem Weg nach oben in Richtung See gab es in unserem Rücken einen wundervollen Blick auf den Puy de Dome, den wir am Tag vorher bestiegen hatten und die Eben, die wir an nur einem Tag durchquert hatten.



Die Lagerplatzsuche gestaltete sich entscheidungsfreudig. Mareike und ich froren uns im eisigen Wind den Arsch ab. Eben dieser Wind ließ uns, weise wie wir sind, die Kohte windgeschützt im Wald aufbauen. Es gab Nudeln mit Pesto (grün+rot), Käse, einem Schälchen Butter und Knoblauch. Lecker. Dann noch schnell ein bisschen Earl Grey mit frischer Milch, danach die Milch abgekocht, teilweise ein Besuch des Sees mit Schaumkronen auf den Wellen und so starkem Wind, dass auch unsere guten Klapplaternen erloschen. Dann schnell nach einem anstrengenden Tag in den Schlafsack. Der Wind heulte nur so durch die Tannen und erschwerte einigen von uns das Einschlafen.

by Mareike (nospam@example.com) at April 09, 2012 05:59 PM

April 08, 2012

Mareike

Auf Fahrt in der Auvergne - 3. Tag

Dieser Fahrtenberichtabschnitt wurde von Jens geschrieben.

8. April 2012, Ostersonntag

Diesmal kein Regen, der morgens auf die Kohtenplanen fällt, sondern strahlender Sonnenschein!



Das richtige Wetter für ein Ostersonntagsfrühstück!
Müsli, noch ein paar Käsenudeln von gestern Abend, Tee und Ballis Kaffe (Original-Direktimport aus Kenia!). Gemütlich packen wir alle inzwischen völlig trockenen Kohtenplanen und unsere sonstigen Habseeligkeiten zusammen. Noch ein Schluck an der Fontaine de Père und dann wandern wir Richtung Puy de dome. Schnell kommen wir den imposanten Vulkankegeln näher. Nach einem Hohlweg durch einen niedrigen sonnendurchfluteten Wald führt uns ein steiler Weg auf einer Art Vulkanaschegeröllfeld nach oben. Einen der Vulkane, den „Petit Suchet“ besteigen wir noch ganz, um dort Mittagspause zu machen.



In einer sonnigen, windgeschützten Grasmulde lassen wir uns nieder. Vor uns ein toller Ausblick auf den Puy de Dome und andere Vulkane. Balli, der kurz weggegangen war meinte, er hätte in einer der Grotten den Osterhasen gesehen. Und tatsächlich findet schließlich jeder bei einer Grotte sowie auf einem davorstehenden Baum ein Milka-Löffelei.
Nach einer Pause geht es weiter zum Puy de Dome. Zuerst ein steiler Aufstieg auf einen Vorberg und dann eine Holztreppe mit 250 Plattformen und über 500 Stufen fuhrt uns nach oben.



Der Wind ist eiskalt. An einigen Sträuchern ist die Feuchtigkeit aus den Wolken gefroren. Oben angekommen erwartet uns eine große Baustelle. Für die Touristen wird anstatt eines Autoparkplatzes eine Bergbahnstation gebaut. Von hier oben haben wir noch einmal einen guten Ausblick über alle Vulkane.
Gemeinsam mit zahlreichen französischen Tagesausflüglern machen wir uns auf der anderen Bergseite an den Abstieg.



Nick war kniebedingt schon auf der Straße nach unten gelaufen. Unser Ziel für den Abend ist nicht mehr weit. Auf der Karte verspricht die „Wolfsquelle“ (Source de Loup) einen guten Platz für die Nacht. Leider entpuppt sich die Quelle als ein stehender trüber Tümpel. Da der Platz ansonsten genial ist (alte Buchenallee, bestes Brennholz, Blick auf den Puy de Dome), entschließen wir uns trotzdem zu belieben und drei von uns gehen noch einmal ein großes Stück zurück, um Wasser zu holen. Die anderen bauen währenddessen die Kohte auf (sie wird an einem dicken Buchenast aufgehängt) und machen Feuer im Zelt. Mit einer gemütlichen Singerunde am Kohtenfeuer klingt der Tag aus.

by Mareike (nospam@example.com) at April 08, 2012 05:55 PM

April 07, 2012

Mareike

Auf Fahrt in der Auvergne - 2. Tag

Dieser Fahrtenberichtabschnitt wurde von Daniel geschrieben.

7. April 2012, Karsamstag

Der Regen weckte uns, und wie es so ist, wenn’s draußen schüttet, dreht man sich um und schläft weiter. So kams dann, dass erst gegen halb 11 die Motivation aufgebracht werden konnte, aus dem gut vorgewärmten Schlafsack in die kalte, graue Welt herauszukriechen. Es tropfte zwar nur noch von den Bäumen, war aber saukalt, weshalb das Frühstück in der Kohte zelebriert wurde. Nachdem wir uns an Müsli und verschimmelten Brot gestärkt hatten, wurden die Rucksäcke gepackt und die nasse Kohte, die aber perfekt dichtgehalten hatte, verstaut.



So gings dann schwer beladen in den Krater und daraus wieder hinaus, wo wir uns oben dann direkt falsch entschieden und fast wieder in den Krater zurückliefen. Balli nutze die Gelegenheit aus und ging sich mal eben ein stilles Örtchen suchen, während Jens den möglicherweise richtigen Weg erkunden ging. Bergab gings dann runter vom Vulkan, um den nächsten Hügel in Angriff zu nehmen.
Bei einer kurzen Pause sorgte ich dann für ein bisschen Panik, da mir auffiel, dass mein Geldbeutel verschwunden war, den ich aber glücklicherweise in der Schlafsackhülle wieder entdeckte. Kurz darauf entscheiden wir uns dagegen, 2 weitere Vulkane zu erklimmen und wanderten durch einen „schön“ systematisch angepflanzten Fichten- zur einen und einem wild gewachsenen Buchenhain zur anderen, bis wir die Bergkette hinter uns ließen. Dort machten sich Balli und Jens auf die Suche nach der auf der Karte eingezeichneten Source, während wir anderen die hervorbrechende Sonne genossen. Nach erfolgloser Suche gings nach nem kleinen Müsliriegel/Schokoladen Snack 200 m weiter, wo uns ein Schild dann doch über Stacheldraht zur Quelle lotste.



Dort breiteten wir unser nasses Zeug aus, während sich die Flaschen langsam füllten. Und wie wir da sin der Sonne lagen, entschieden wir uns zum Leidwesen von Balli, der heute wieder in einem Krater schlafen wollte, uns auf einer Wiese nahe der Quelle auszubreiten. Routiniert gings ans Kohte aufbauen, einrichten, Holz holen, Feuer machen und Käsenudeln kochen.



Zum Essen wurde dann noch der Kraterwein kredenzt, der Ballis Enttäuschung über den Lagerplatz lindern sollte. Nahtlos ging der Abend in die Singerunde über, bei der Nick den guten Kraterwein samt Tasse ins Feuer fallen ließ, was eine erstaunlich hohe Stichflamme entstehen ließ. Als der Mond sich samt Sternelein mal aus den Wolken schälte und die Kerzen zur Neige gingen, wars Zeit fürs Bett. Nach Aufräumen, Zähne putzen und bettfertig machen quetschten wir uns zu 6t auf eine Kohtenbreite und bei einem einsetzenden Schauer schliefen wir ein.

by Mareike (nospam@example.com) at April 07, 2012 05:43 PM

April 03, 2012

Joachims Bilder

Paris

79 photos from 31.03.2012 11.29 to 3.04.2012 11.41

by Joachim Breitner (mail@joachim-breitner.de) at April 03, 2012 09:41 AM

March 27, 2012

Joachims Bilder

March 24, 2012

Wenzel

Netherlands and Belgium (Part 5: Amsterdam)

Today was the last day of my vacation, which I spent in Amsterdam. I only had a little bit of time to walk through the Grachtengordel (canals) past the Bloemenmarkt (flower market). One can buy all sorts of specialty flower bulbs there.

On the way, I came across a specialized store which basically just sells three different types of gouda: young, medium, and extra-old. What a great idea! Of course I immediately fell for it and left with a noticeably heavier bag.

I finally ended up in Amsterdam’s shady corner, which was certainly interesting. As predicted by Olesya, I saw several school classes exploring the area. Crazy!

IMG_6812 IMG_6814 IMG_6820 IMG_6853 IMG_6854 IMG_6858 IMG_6871 IMG_6877 IMG_6887

by Wenzel Jakob at March 24, 2012 11:03 PM

Netherlands and Belgium (Part 4: Bruges)

On Thursday, I took the train to Bruges in the topmost corner of Belgium. This gem of a city was once a very rich and thriving trade outpost. Almost all of the medieval architecture in Bruges is intact to this day, which seems unbelievable. It is truly gorgeous — I had trouble deciding where to point my camera.

This place of course attracts many visitors. I would not recommend going there on the weekend.
IMG_6648 IMG_6658 IMG_6659 IMG_6663 IMG_6669 IMG_6671 IMG_6685 IMG_6689 IMG_6711 IMG_6715 IMG_6730 IMG_6736 IMG_6738 IMG_6739 IMG_6668 IMG_6758 IMG_6761 IMG_6772

by Wenzel Jakob at March 24, 2012 11:02 PM

March 23, 2012

Wenzel

Netherlands and Belgium (Part 3: Brussels)

I did a quick day-trip to Brussels on Monday. It was unfortunately quite rainy, but I still took some pictures. The square with the pretty buildings is the famous “Grote Markt”, whose current architecture is from around 1400. Nearby, there was an shop with beautifully arranged arabic sweets.

IMG_6606 IMG_6593 IMG_6626 IMG_6632 IMG_6608 IMG_6609

by Wenzel Jakob at March 23, 2012 10:32 AM

Netherlands and Belgium (Part 2: Maastricht)

Over the weekend, I had some time to walk around in Maastricht (where the fair is located). It’s a cute little town with a well-preserved old city core and many churches. There are so many of them, that two were repurposed: Maastricht has a famous church bookstore and a church hotel. Some pictures:

IMG_6520 IMG_6522 IMG_6525 IMG_6537 IMG_6549 IMG_6541 IMG_6565 IMG_6556 IMG_6563 IMG_6575

by Wenzel Jakob at March 23, 2012 10:28 AM

March 13, 2012

Joachim

ghc-heap-view: Complete referential opacity

During the last week, I created ghc-heap-view, a library to investigate the actual memory representation of Haskell values. It is inspired by vacuum and the GHCi debugger, but goes beyond them by allowing the user to look inside thunks and functions and see what other values they refer to. Let me demonstrate it by running the included demo:

ghc-heap-view-demo

Here are a four different lists, where the first three are already evaluated.
The first one, l, was defined as a top level constant as

> l = [1,2,3]

and is now found at 0x00000000006d1750/2 (where the /2 is the pointer tag information) and fully evaluated:

    ConsClosure {info = StgInfoTable {ptrs = 2, nptrs = 0, tipe = CONSTR_STATIC, srtlen = 1}, 
                 ptrArgs = [0x00000000006d16e0/1,0x00000000006d1730/2],
                 dataArgs = [], descr = "ghc-prim:GHC.Types.:"}

The second one, l2, is locally defined

> let l2 = 4:l

and now found at 0x00007fdce19fe4b0/2. See how the cons-cell references l!

    ConsClosure {info = StgInfoTable {ptrs = 2, nptrs = 0, tipe = CONSTR_2_0, srtlen = 1},
                 ptrArgs = [0x00000000006dca50/1,0x00000000006d1750/2],
                 dataArgs = [],
                 descr = "ghc-prim:GHC.Types.:"}

And the binding

> args <- map length `fmap` getArgs

evaluates to the “one”, global empty list at 0x00000000006db640/1:

    ConsClosure {info = StgInfoTable {ptrs = 0, nptrs = 0, tipe = CONSTR_NOCAF_STATIC, srtlen = 0},
                 ptrArgs = [],
                 dataArgs = [],
                 descr = "ghc-prim:GHC.Types.[]"}

And now we have, at 0x00007fdce19fe4c8, the concatenation of them, but unevaluated:

> let x = l ++ l2 ++ args

The thunk keeps a reference to l2 and args, but not l, as that is at a static address, unless you are running this in GHCi:

    ThunkClosure {info = StgInfoTable {ptrs = 2, nptrs = 0, tipe = THUNK_2_0, srtlen = 1},
                  ptrArgs = [0x00007fdce19fe4b0/2,0x00000000006db640/1],
                  dataArgs = []}

Now to some more closure types. m and m' locally bound of type the unboxed type Int#, with values 42 resp. 23.

> let f = \x n -> take (I# m + I# x) n ++ args
      t = f m' l2

So here is (0x00007fdce1937d50/2), referencing its free variables args and 42:

    FunClosure {info = StgInfoTable {ptrs = 1, nptrs = 1, tipe = FUN_1_1, srtlen = 65553},
                ptrArgs = [0x00000000006db640/1],
                dataArgs = [42]}

And t is a thunk that applies f (also referenced here) to an unboxed value (23) and l2:

    ThunkClosure {info = StgInfoTable {ptrs = 2, nptrs = 1, tipe = THUNK, srtlen = 0},
                  ptrArgs = [0x00007fdce19fe4b0/2,0x00007fdce1937d50/2],
                  dataArgs = [23]}

Lastly, here is the standard example for self reference:

> let x = id (:) () x

This is what x (0x00007fdce1947940) looks like, at least without -O:

    ThunkClosure {info = StgInfoTable {ptrs = 0, nptrs = 0, tipe = THUNK, srtlen = 1},
                  ptrArgs = [],
                  dataArgs = []}

So it is unevaluated. Let us evaluate it using seq. Now we have, still at 0x00007fdce1947940:

    IndClosure {info = StgInfoTable {ptrs = 1, nptrs = 0, tipe = BLACKHOLE, srtlen = 0},
                indirectee = 0x00007fdce194cc98/2}

The thunk was replaced by an indirection. If we look at the target, 0x00007fdce194cc98/2, we see that it is a newly created cons-cell referencing the original location of x:

    ConsClosure {info = StgInfoTable {ptrs = 2, nptrs = 0, tipe = CONSTR_2_0, srtlen = 1},
                 ptrArgs = [0x00000000006db620/1,0x00007fdce1947940],
                 dataArgs = [],
                 descr = "ghc-prim:GHC.Types.:"}

After running the garbage collector (performGC), we find that the address of x is now 0x00007fdce19f30d0/2 and that the self-reference is without indirections:

    ConsClosure {info = StgInfoTable {ptrs = 2, nptrs = 0, tipe = CONSTR_2_0, srtlen = 1},
                 ptrArgs = [0x00000000006db620/1,0x00007fdce19f30d0/2],
                 dataArgs = [],
                 descr = "ghc-prim:GHC.Types.:"}

Future plans

The output of ghc-heap-view is not really pretty yet; even the indentation in this blog post was added manually by me, so this really needs a pretty printer providing a nicer, possibly more compact representation, including something like what vacuum provides. Maybe vacuum can be ported to use this library, and also include the thunk’s and function’s references in the output. Maybe also the GHCi debugger can be extended to show more information about unevaluated expressions using this. Internally, the library is not very polished yet either. It only handles those closures types that I have seen so far, and is likely to break horribly if run in a threaded or debugging enabled runtime.

How it works

Obviously, this is not standard Haskell 98 code, but rather deep trickery involving the GHC API and some C code. Initially I tried to use the API that vacuum and the GHCi debugger rely on, which is an operation

unpackClosure# :: a -> (# Addr#, Array# b, ByteArray# #)

which takes any Haskell value and returns the address to its info table, the pointers and the non-pointer-data in the closure. Unfortunately, it was not complete in that it was meant only for data closures and will for other closure types, e.g. thunks, return no data and no pointers (as can be seen in the code). So I implemented my own version of this operation:

foreign import prim "slurpClosurezh" slurpClosure# :: Any -> (# Addr#, ByteArray#, Array# b #)

where the returned ByteArray# contains the complete closure, including extra information fields such as the arity of a function. The Array# is again the list of pointers in the closure. At first glance, this is a duplication, as the pointers are of course also contained in the ByteArray#. But as soon as the GHC runtime reigns again, a garbage collector run can happen, the referenced values will move somewhere else, and the words that once were pointers in the ByteArray# become useless. But the corresponding entries in the Array# are updated by the garbage collector, as it knows that these are pointers, and not just words. This way, we get both a faithful copy of the closure on the heap and useful references to the contained data. Here is a demonstration of this effect:

$ ghci -XMagicHash -package ghc-heap-view
GHCi, version 7.4.1: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
[..]
Loading package ghc-7.4.1 ... linking ... done.
Loading package ghc-heap-view-0.1 ... linking ... done.
Prelude> let {a = [1,2,3,4]; b = 5:a}
Prelude> :m + GHC.HeapView 
Prelude GHC.HeapView> rawHeapData <- getClosureRaw b
Prelude GHC.HeapView> rawHeapData 
(0x000000004080d658,[1082185320,140040739366568,140040739365928],[0x00007f5dc68626a8,0x00007f5dc6862428])
Prelude GHC.HeapView> System.Mem.performGC
Prelude GHC.HeapView> rawHeapData 
(0x000000004080d658,[1082185320,140040739366568,140040739365928],[0x00007f5dc41b3ad8,0x00007f5dc41b3b28]) 

The function rawHeapData is a thin wrapper around slurpClosure# which turns the primitive array in normal lists. Note that the second component of the triple is unchanged, but the third is updated by the garbage collector. Of course this means that the Show instance for the data type that ghc-heap-view uses to reference values is not referential transparent either.

The foreign function import above is of type “prim”, i.e. does not call a C function but rather a Cmm function. Cmm is a reduced C that GHC uses internally to compile the Haskell code to, and most primitive operations are implemented in this language – although I do quickly call regular C from my Cmm code to do the more complicated stuff, mainly figuring out what words of the closure are pointers.

The knowledgeable reader might notice that I am passing a boxed value of type Any to the foreign function. This is currently not possible with foreign prim functions, and to actually use that code, you need the patch in GHC ticket #5931. But you can use ghc-heap-view without that as well (and the Cabal package will by default use that path), using the following hack to obtain the pointer to a Haskell value on the Heap as an unboxed type that can pass to the primitive operation:

foreign import prim "slurpClosurezh" slurpClosure'# :: Word#  -> (# Addr#, ByteArray#, Array# b #)
data Ptr' a = Ptr' a
aToWord# :: Any -> Word#
aToWord# a = case Ptr' a of mb@(Ptr' _) -> case unsafeCoerce# mb :: Word of W# addr -> addr
slurpClosure# :: Any -> (# Addr#, ByteArray#, Array# b #)
slurpClosure# a = slurpClosure'# (aToWord# a)

This works because a Word and a Ptr' have the same closure layout, only differing in the fact that one stores an a, and the other stores a Word#.

Once we obtained the raw representation of the closure, we do the parsing in Haskell. Using the info table and the raw closure, we have enough information to tell which words have to be replaced by the appropriate pointer (which might already have been updated by the garbage collector) in the pointers list.

This work was supported by a scholarship from the Deutsche Telekom Stiftung.


Flattr this post

by nomeata (mail@joachim-breitner.de) at March 13, 2012 09:52 AM

March 04, 2012

Joachims Bilder

February 26, 2012

Joachim

GHC 7.4.1 speeds up arbtt by a factor of 22

More than two years ago I wrote arbtt, a tool that silently records what programs you are using and allows you to do statistics on that data later, based on rules that you define afterwards, hence the name automatic rule based time tracker. I wasn’t doing much with it recently (the last release has been half a year ago), but it nevertheless was running on my machine and by now has tracked a total time span of 248 days in 350000 records.

Yesterday, I had a use for it again: measuring the time spent creating a certain document with LaTeX. So I added a rule to my categorize.cfg and ran arbtt-stats. I knew that it was not very fast, and that my data set has grown considerably since I last used it. And indeed, it took more than 6 minutes to process the data and spit out the result.

Since I’m currently working on the GHC 7.4.1 transition in Debian anyways, I decided to check what happens if I compile the code with that version of the Haskell compiler, instead of the previous version 7.0.4. And behold: The whole process took merely 17.3 seconds to complete! At first I did not believe it, but the result was identical, both binaries were built with the same option, i.e. no profiling enabled or anything like that. Wouldn’t you also like to have such speed ups for free, just by waiting for someone else to improve their work?

I tried to find out the reason for the speed up and created profiling output from both the old and the new binary. The old binary spends 83% of the time in Categorize.checkRegex, which basically just call Text.Regex.PCRE.Light.match. Since the version of pcre-light is the same in both binaries, I conclude that the Foreign Function Interface that GHC provides to interact with C libraries (libpcre in this case) is much faster now, although I do not find any mention in the release notes. And even if I do not count the 83% time spent in checkRegex, the code from the new compiler is still 2.7 times faster. Thanks, GHC devs, great work!


Flattr this post

by nomeata (mail@joachim-breitner.de) at February 26, 2012 04:25 PM

February 15, 2012

Joachim

Including full LaTeX documents in another LaTeX document

Assume the following situation: You set problem sheets for a class, and at the end of the semester, you have 13 individual LaTeX files, including the preamble (the stuff from \documentclass to \begin{document}). Now you want to provide a file that contains all problems, followed by all problems with solutions. You could just concatenate the resulting PDFs, but that would waste quite a bit of paper, as most problem sheets do not fill the whole page. You could just copy’n’paste the LaTeX code, but that is not neat either.

So you want to include the 13 individual documents in one LaTeX document. LaTeX provides \include and \input commands, but these would require that the content of the individual files, i.e. the stuff between \begin{document} and \end{document}, is put in a file of its own. You cannot just \input the full problem sheet document, as there must be only one \documentclass command, and a few preamble commands are invalid within the document.

There are various solutions suggested, e.g. on Wikibooks and StackOverflow, and there are packages helping with that functionality, such as combine or subfiles. I chose a rather rough, hands-on solution that worked great in my case: The idea is to simply re-define all commands that you have in your preamble to do nothing, including the document environment, before including the other files and constraint to a group. In my case, the preambles were relatively small, as the common definitions of the problem sheets were in a file of their own. I am also using the \foreach command provided by the TikZ package for a convenient loop over all problem sheets:

\foreach \x in {0,...,13} {
  {
    \excludecomment{solution}
    
    \DeclareDocumentCommand{\documentclass}{om}{}
    \DeclareDocumentCommand{\usepackage}{om}{}
    \newcommand{\Blattnummer}[1]{}
    \DeclareDocumentCommand{\FirstDueDate}{mmm}{}
    \DeclareDocumentCommand{\ThisDueDate}{mmm}{}
    \newcommand{\SkippedWeeks}[1]{}
    \renewenvironment{document}{}{}
    \section*{Problem Sheet \x}
    \setcounter{problem}{0}
    \input{GraphTheoryProblems\x}
  }
}
\clearpage
\label{sols}
\foreach \x in {0,...,13} {
  {
    \newenvironment{solution}{
      \par\addvspace{1em}
    }{
    }
    \DeclareDocumentCommand{\documentclass}{om}{}
    \DeclareDocumentCommand{\usepackage}{om}{}
    \newcommand{\Blattnummer}[1]{}
    \DeclareDocumentCommand{\FirstDueDate}{mmm}{}
    \DeclareDocumentCommand{\ThisDueDate}{mmm}{}
    \newcommand{\SkippedWeeks}[1]{}
    \renewenvironment{document}{}{}
    \section*{Solution Sheet \x}
    \setcounter{problem}{0}
    \input{GraphTheoryProblems\x}
  }
}

To redefine commands taking optional arguments, using the xparse package is convenient. You can see how I include every file twice, first with the solution environment turned into a comment and then again with the solution environment actually showing its content. I create a section header based on the counter of the foreach loop, but I could have easily redefined \title and use that for a header, if my problem sheets had used that command (They don’t, as they calculate the problem sheet number and the due date based on the number in the filename – very convenient, and maybe worth a blog post of its own). The problem counter is reset for each file, so that the problems are numbered individually. I could have left this out, then the problems would be numbered consecutively across all included problem sheets.

The individual and resulting files can be found on the Graph Theory course website.


Flattr this post

by nomeata (mail@joachim-breitner.de) at February 15, 2012 01:45 PM

January 29, 2012

Joachims Bilder

January 19, 2011

Felix’ Blog

Müde?

Ich sehe ja ein, dass die Entfernungen hier etwas länger sind und auch, dass man auf langen Fahrten Pausen einlegen soll. Aber die Aussies übertreibens ein bisschen mit der Werbung für das Pause machen. Alle paar Kilometer auf dem Highway steht ein Schild, welches einen zur Pause oder zum kurzen Nickerchen auffordert. Für letzteres gibt es auch extra ausgewiesene Powernap-Areas *süß*.



Irgendwie erinnern die ganzen Sprüche an die "Werbung" auf Zigarettenschachteln, die auch keiner so wirklich ernst zu nehmen scheint.







Ach ja, und aus aktuellem Anlass noch ein anderes "Schild", welches anzeigt wie tief die Straße unter Wasser steht. Momentan sind wir ja noch in Victoria unterwegs (morgen gehts nach New South Wales) und die Nachrichten verbreiten immer mehr beunruhigende Pegelstände. Aber wir haben wieder mal Glück. Der gesamte Regen fällt im Westen von Victoria und den Teil haben wir ja die letzten beiden Wochen schon bereist, ab jetzt gehts nur noch nach Osten bzw. Norden gen Sydney.



by Felix Brandt (nospam@example.com) at January 19, 2011 11:53 PM

January 11, 2011

Felix’ Blog

Putzige Tierchen voraus!!!

So, nachdem es bisher nur langweile Sand- und Strandbilder von uns gab, kommt jetzt etwas Abwechslung. Seit wir von der Küste weg sind, begegnet uns nun auch deutlich mehr typisch australische Fauna. Fangen wir also an mit Platz 1 auf der Putzig-Skala, dem Koala. Leider sitzen die Kollegen meist ziemlich gelangweilt auf ihren Bäumen und mümmeln Eukalyptus. Daher sind unsere Fotos noch nicht so besonders gut.



Besser sind da schon die Wallabys, welche Platz 1 auf der Knuffig-Skala belegen. Sie sind etwas kleiner als Kängeruhs und haben nicht so kräftige "Arme". Die Fortbewegungsart hat mich doch etwas überrascht. Es gibt zwei Betriebsmodi. Der erste ist das allseits bekannte Hüpfen. Der zweite dient der langsameren Fortbewegung. Das Wallaby oder Kängeruh stützt sich dabei auf beide Vorderpfoten und den Schwanz und hebt die Hinterbeine nach vorn, danach werden Vorderpfoten und Schwanz nach vorn gesetzt. Es läuft also quasi auf 5 Pfoten ... sehr ulkig.



Das schöne an den Hüpfern ist, dass man ohne Probleme bis auf 5 Meter oder sogar weniger an sie rankommt. Sie lassen sich nicht wirklich beeindrucken. Andersherum funktioniert das schon. Als ich gestern Abend Feuerholz im Wald holen wollte tauchte auf einmal 5 Meter vor mir der Kopf von einem recht großen Kangeruh auf (ich werd das Gefühl nicht los, dass die Tiere ein weing wie Hunde aussehen). Ich bin dann lieber mal einen Bogen gelaufen.



Ansonsten gibt es noch jede Menge Vögel hier, die man zwar nicht sieht aber seehr seehr gut hört. Der eine nennt sich wohl Kakuru (und macht Geräusche als würde er sich totlachen) und die anderen sind auch nicht viel leiser. Nur sehen tut man sie recht selten.

Den ersten Platz auf der Nicht-Mein-Lieblingstier-Skala hat sich auf jeden Fall das Emu gesichert. Insbesondere der Kollege der uns vorgestern vors Auto laufen wollte. Wir fahren recht gemütlich die Straße entlang und auf einmal fällt keine 20 Meter vor uns ein Emu aus dem Gebüsch. Da er etwas hilflos auf die Straße torkelte, vermute ich mal, er hat an der Böschung das Gleichgewicht verloren. Jedenfalls drehte er etwas hektisch seine Runde auf der Straße, nahm Anlauf und rannte wieder die Böschung rauf - während ich voll auf der Bremse stand. Fotos gibt es aus diesem Grund leider auch keine.

P.S.: Und keine Sorgen machen, wir haben zwar auch grad Mistwetter, aber der Dammbruch in Toowoomba ist mehr als 1300km weit weg.

by Felix Brandt (nospam@example.com) at January 11, 2011 04:09 AM

January 04, 2011

Felix’ Blog

Wandern in den Otways



Einen großen Vorteil hat das Campen ja, man ist abends nicht ewig wach und kommt daher am nächsten Morgen gut mit der Sonne aus dem Bett. So waren wir heute um 8:30 Uhr schon eine Bucht weitergefahren, haben lecker gefrühstückt und sind dann direkt auf zum Wandern und Wasserfälle ankucken (Sheoak Falls). Zwischendurch kann man nur immer wieder begeistert sein, wie die Aussies ihren Barbeque zelebrieren. Da stehen mitten im Wald (oder auch am Strand) kleine Grillhäuschen mit eingebautem Gasgrill: man drückt aufs Knöpfchen, wartet 5 Minuten und grillt dann einfach sein mitgebrachtes Fleisch - kostenlos!



Auf dem Rückweg unserer Wanderrunde hat dann noch eine zusammengebrochene Brücke unseren Weg versperrt, aber der Bach darunter war nicht allzutief :-)



Insgesamt sind wir heute nur 40km weit gekommen. Der Strand in Apollo Bay sah einfach zu einladend aus. Außerdem gibt es auf der nächsten ~100km wohl keine bewirtschafteten Campingplätze mehr, so dass wir diese Nacht nutzen um die Akkus und den Wassertank aufzuladen.

by Felix Brandt (nospam@example.com) at January 04, 2011 11:00 AM

January 03, 2011

Felix’ Blog

Great Ocean Road

Unser nächstes Fahrziel nach Melbourne soll die Great Ocean Road sein, eine 300km lange Küstenstraße von Melbourne aus gen Südwesten. Mit unserem Bus haben wir uns so langsam angefreundet, insbesondere Blinker und Scheibenwischer werden nicht mehr verwechselt.



Als erstes Ziel hatte Mareike Queenscliff auserkoren. Ein kleines Dörfchen auf einer Halbinsel dessen größte Attraktion die Fähre ans andere Ende der Bucht zu sein scheint. Mareike hatte jedoch herausgefunden, dass es hier wilde Delfine gibt und man sich die im Wasser anschauen kann. Also sind wir Montagmorgen pünktlich um 08:30 Uhr am Bootssteg gewesen, haben unseren Neoprenanzug und Schnorchelzeug bekommen und raus gings mit dem Boot in die Bucht. Zuerst haben wir auf einem kleinen Atoll Schnorchelübungen gemacht. Erste Feststellung: Salzwasser schmeckt *bäh*. Zweite Feststellung: Da schwimmen ziemlich dicke Fische keine 2 Meter unter uns - toll (und jede Menge Quallen auch :-)

Danach ging es auf Delfinsuche, in freier Wildbahn ... konnte also etwas dauern. Die Skipper der umliegenden Schiffe haben aber wohl mitgesucht und so fanden wir recht schnell eine Gruppe mit 6 Tieren. Die hopsten dann fröhlich vor unserem Bug um die Wette order schwammen nebenher. Das angepriesene "mit Delfinen schwimmen" hieß dann für uns, sich mit dem Schnorchel und Taucherbrille ausgestattet an einem Seil hinter unserem Boot herziehen zu lassen. Da die Delfine immer schön nebenher schwammen, kam man ihnen so schon sehr nahe (anfassen ist nicht!) und einmal zog die ganze Sechsergruppe direkt quer unter uns vorbei ... sehr schick.

Danach ging es noch zu einer Stelle mit Seehunden, um nochmal zu schnorcheln. Die Seehunde sind nicht ganz so flott aber dafür sehr verspielt. Also ab ins Wasser, mit den Flossen vorwärtspaddeln und hoffen das einer aus Neugier mitkommt. Hat funktioniert - genial. Aber danach war's auch gut kalt, trotz 5mm Neopren, Zeit für eine heiße Schoki an Board :-)

Auf dem Heimweg gabs dann noch ein bißchen Spaß am Boot, z.B. bei guter Fahrt am Seil hinterherziehen lassen und mit dem Körper surfen. Zusammengefasst ein toller Vormittag, kein ganz billiges Vergnügen, aber dafür inkl. allem Material, Essen, heißen Getränken ... achja und Delfinen, Seehunden und Fischen.



Danach gings weiter in Richtung Süden zur Great Ocean Road. Ab nun wechselten sich tolle Sandstrände mit Steilklippen und kleinen Buchten ab. Da es vermutlich die nächsten 50-300km so weitergehen wird, versuchen wir nicht an jeder Stelle anzuhalten.

Abends haben wir dann endlich unseren Bus dazu genutzt, wozu er da ist - einfach an einer tollen Stelle in der Pampa stehen zu bleiben und zu übernachten. Eine kleine Bucht hinter Lorne bot sich dafür an und obwohl die Gegend für australische Verhältnisse wohl gerade sehr stark frequentiert ist, wollte niemand sonst auf unserem Parkplatz übernachten.

by Felix Brandt (nospam@example.com) at January 03, 2011 11:00 AM

December 31, 2010

Felix’ Blog

Sylvester - Wir sind die ersten !!!

Erstmal allen ein frohes neues Jahr!

Wir haben hervoragend geschlafen, das erste Mal seit zwei Tagen wieder in einem Bett und der Jetlag ist schon fast ganz weg. Unser erster Ausflug heute ging zum Einkaufen, denn wir haben ja 'nen Stapel Sachen in Deutschland gelassen (v.a. Duschbad, Sonnencreme und sowas). Danach haben wir uns noch eine Prepaid-SIM-Karte besorgt um hier auch mal nicht zu Mondpreisen telefonieren zu können. Mareike hats dann nach bestimmt 10 Minuten an der Hotline auch geschafft die Karte zu aktivieren. Die Details haben wir zwar nicht ganz kapiert, aber das Guthaben sieht gut aus :)

Danach sind wir direkt los um unser Auto abzuholen. Eigentliche sollten wir 24h vorher nochmal anrufen um die Übergabe klar zu machen, aber das haben wir total verpeilt. Aber so locker wie die Aussies sind, war das kein Problem. Das Vehikel hat zwar schon etliche Kilometer auf dem Buckel (>400.000km), die Schaltung ist ziemlich ausgeleiert, aber es ist alles vorhanden und die Reifen sind neu *yay*. Es gibt nur ein Problem: Das Lenkrad ist auf der falschen Seite!

Ein Falschfahrer? Hunderte!

Nagut, Linksverkehr halt. Das strengt das Hirn schon erstmal mächtig an. Ich glaube an der 3 Kreuzung bin ich das erste Mal in den Gegenverkehr abgebogen, habs aber direkt gemerkt, weil mir ein LKW entgegen kam :-) Naja, und dann geht unser Scheibenwischer ständig an. Der Hebel ist halt links und der Hebel rechts vom Lenkrad ist für den Blinker ... Ich glaub das dauert noch ein bisschen, bis ich den Kampf mit mir ausgetragen habe.

Ansonsten war es heute das erste Mal richtig brütend heiß, sicher >30 Grad. Der Wind war wie aus einem Fön, jetzt kann ich mir auch vorstellen, warum Waldbrände sich so schnell ausbreiten können, daheim sieht sowas ja immer nicht so schlimm aus.

Heute abend gehts zur Sylvesterfeier in die Stadt, es soll synchrone Feuerwerke von den Hochäusern geben und der öffentlicher Verkehr for free :)

by Felix Brandt (nospam@example.com) at December 31, 2010 10:59 PM

August 02, 2010

Jenny

Virtual Design - Bewerbung

Für meine Bewerbung im Studiengang Virtual Design an der FH Kaiserslautern musste ich meine künstlerische Eignung mithilfe einer Mappe und einer Hausarbeit unter Beweis stellen. Beides wurde angenommen und im folgenden könnt ihr meine Arbeiten sehen.

Die Bewerbungsmappe habe ich aus einem B1 Passepartout-Karton, Klebe-, und Scheifenband gebastelt. Die fertige Mappe und alle Arbeiten darin hatten dann das Format B2. Der Großteil der Arbeiten ist schon in meiner Schulzeit entstanden. Nur einige der gegenständlichen Zeichnung und ein paar Aktbilder, die ich beim freien Aktzeichnen des BBK Karlsruhe erstellt habe, sind extra für die Mappe entstanden. Zu sehen ist sie hier:



Für die Hausarbeit gab es die Themenvorgabe "(R)evolution". Weiter nichts, keine Vorgabe an zu verwendender Technik, nur eine Maximalgröße von A2.Ich bin über den Wortursprung (revolvere - zurückdrehen, evolvere - aufrollen) gegangen und habe zusammen mit meinem Freund eine Konstruktion gebaut mit links und rechts ner Rolle, sodass man von einem Bild zum nächsten wickeln kann. Auf den Bildern wollte ich die Entwicklung kreativer Berufe im Vergleich zu lebenserhaltenden Berufen (hier immer beispielhaft der Weizenanbau) aufzeigen.



Das erste Bild, mit Bleistift gezeichnet, spielt im 16. JH: Der brotlose Künstler, der nur Auftragsarbeit macht und die Hauptfläche des Bildes von Feldarbeit eingenommen.

Bild 2: Industrielle Revolution, in Kohle gezeichnet, im Vordergrund ein Wiener Kaffeehaus. Die Kreativen gehen nach draußen, fangen an sich in die Politik einzumischen, Wissenschaft gewinnt an Stellenwert (Benjamin Franklin rechts, der einen Drachen steigen lässt) im Hintergrund den ersten Traktor überhaupt: die Lokmobile.

Bild 3: Heute. Bleistiftzeichnung, mit Fineliner nachgezeichnet, gescannt, vektorisiert, mit GIMP coloriert und wieder ausgedruckt. Hier durchzieht die neue Technik schon alles. Im Hintergrund durch die Monitore in Fragmente zerstückelt der total automatisierte Ackerbau und der Großteil des Bildes dominiert vom Spiel in der virtuellen Welt.

Wenn man die Bilder in einer Reihe betrachtet zieht sich eine diagonale Linie durch sie.

by Jenny (noreply@blogger.com) at August 02, 2010 11:26 AM

Ein neuer Beginn

Nach nun doch einigen Jahren der Stille hier möchte ich meinen Blog wieder aufnehmen. Einerseits weil ich nächsten Monat nach Kaiserslautern ziehen und so mehr im Kontakt mit allen aus Karlsruhe bleiben möchte, andererseits weil ich mit Virtual Design bestimmt oft schicke Sachen machen werde, die ich dann gerne rumzeigen würde. Ob ich die alten Beiträge auch wieder mit aufnehmen werde? Ich würde gerne, aber ich weiß nicht, ob ich so einfach von Serendipity importieren kann. Also lassen wir uns überraschen wie sich hier alles entwickeln wird :)

by Jenny (noreply@blogger.com) at August 02, 2010 09:42 AM

October 08, 2008

Pascal

I was just writing an extensive article describing my studies in Paris, detailing each course, but when I clicked on "Save" everything vanished because I was not logged in anymore, *sigh*. I won't write everything again, so I just tell you that I enjoy very much my study programme and that I am learning a LOT about stochastic processes and more. I am very happy of my choice of changing university as I am really benefiting from a first-class programme that entirely suits my interests. I am now almost sure that I am going to stay here after this Master to work on a thesis. Nevertheless, don't wait if you want to come visiting me, maybe I will change my mind :-). And please, if I haven't heard from you for some time, drop me a message here on the board or in some other convenient way.

by Pascal Maillard (nospam@example.com) at October 08, 2008 06:18 PM

September 12, 2008

Pascal

In the city of love....

Since Tuesday, my new home, at least for the next year but maybe even longer, is Paris! When I first got into our cosy apartment, it was a light shock for me, for I knew it was small but that small? 25 m² for two persons isn't that much, is it? But it is really cute and lovely and beautiful and situated in a very lively area of Paris, called Belleville, so I am very happy to be here. My sweetheart is currently in Brussels but will arrive on the 18th, then we will be able to test if we can live together in one room for a whole year... Luckily we have plenty of places to go out to, first of all the university of course but then bars, clubs, theaters, casinos, coffee shops (no, not here) etc, etc, etc...

By the way, I have to take a picture of the university campus of Jussieu (my university), it is really ugly! Huge buildings in 70s-style with a lot of metal, dirty windows and walls, high concrete pillows... Fortunately, the math department has moved because of the construction works on the campus, they actually found a quite appealing building not far from it. My courses there will start on the 22nd, but next Monday I will already attend a course in physics: Introduction to Quantum Mechanics. Hopefully, I'll be able to understand a bit :-)

by Pascal Maillard (nospam@example.com) at September 12, 2008 05:42 PM

August 31, 2008

Pascal

Back in France!

We are now back in France, in Pierrepont at Pauline's place to be exact. We got back by airplane: From Constanta to Beauvais via Pisa, both flights with Ryanair. They have an option to take bikes on the plane, which costs 30 EUR per bike and flight, we just had to take off the pedals and the steering bar. Thanks to them "taking care" of our bikes they were a bit damaged, though: my gear shift was bent inside, probably because the bike wasn't put upright but lain onto the floor, but this is more of a minor problem. All in all, we are happy to be back and after recovering from yesterday's birthday party of Pauline's aunt, we will "throw ourselves into work again" (German). Indeed, Pauline has to finish her master's thesis until the 15th of September and I will start university at this time. So holidays are definitely over now.

by Pascal Maillard (nospam@example.com) at August 31, 2008 09:53 AM

August 24, 2008

Pascal

Angekommen!

Wir sind nach 1991 km harten schweisstreibennden Radeln endlich an unserem Ziel angekommen: Constanta am Schwarzen Meer! Gerne wuerde ich euch ein Bild von uns zwei am Strand schicken, aber hier haben sie kein Kartenlesegeraet. Kommt aber natuerlich nach. Bis Freitag goennen wir uns nun ein bisschen Ruhe am Strand sowie im Donaudelta, wohin wir morgen fahren werden.

Ich kann es kaum erwarten euch in Ruhe von unserer Tour zu berichten, wir haben einfach unglaublich viel erlebt und kennen gelernt und auch etwas darben muussen. Wir haben natuerlich fleissig Fotos gemacht und es warten viele Panoramafotos darauf zusammen geklebt zu werden :-)

Liebe Gruesse und bis bald,
Pascal

by Pascal Maillard (nospam@example.com) at August 24, 2008 04:41 PM

August 11, 2008

Pascal

Mit nem Bier schreibt sichs leichter

Hallo ihr! Ich befinde mich in einer Belgrader Herberge und trinke das echt leckere Jelen (Hirsch) Bier. Wir sind hier heute angekommen und fahren auch morgen wieder weiter, schliesslich duerfen wir nicht zu sehr troedeln. Vor allem aber haben wir auf Stadt gar nicht so viel Lust sondern eher auf Land, in den Doerfern treffen wir auch die tollsten Menschen, z.B. gibt es hier haufenweise Obstverkaufer, die uns staendig reich beschenken :-). Auch wenn wir uns eine Melone fuer 50 cent wirklich leisten koennten...
Auf der Reise durch Kroatien und Serbien hat sich das bestaetigt, was wir vorher schon wussten: Die Kroaten sind Angeber, die dich uebers Ohr hauen wollen und Turisten verabscheuen, die Serben sind total verrueckt aber unglaublich liebenswuerdig und gastfreundlich. Eine Serbin hat uns sogar auf die Autobahn geschickt um nach Novi Sad zu kommen! (Wir haben das zum Glueck rechtzeitig gemerkt....). Was in Serbien fuer uns allerdings bisher am auffaelligsten war, waren die alten Autos auf den Strassen, naturlich alle ohne Katalysator... In Rumaenien werden die Autos wohl auch nicht moderner sein, so dass wir bis ans schwarze Meer wohl mit Dreckschleudern die Strasse teilen muessen.

So, ich muss bald schlafen, viele Gruesse!!

Pascal

by Pascal Maillard (nospam@example.com) at August 11, 2008 08:27 PM

May 27, 2008

Viola

Back home! :-)

Hallo, so ich bin heute morgen sicher in Frankfurt gelandet und auch wieder in Karlsruhe daheim angekommen :-) Da ich in Washington etwas Zeit hatte, habe ich mir überlegt mal ein Gesamt-Fazit zu schreiben. Also, man stelle sich vor ich sitze ...

May 27, 2008 02:52 PM

May 24, 2008

Viola

Loli und die Blubbel oder Yellwostone Park!

Hallo alle miteinander, und so berichte ich nun von meinem letzten Trip in den USA. Mein Papa und meine Schwester sind am 14.5. zu Besuch gekommen und nach einem Shopping-Donnerstag und Unischau-Freitag sind wir Samstag losgefahren in Richtung Ye...

May 24, 2008 08:00 PM

May 14, 2008

Viola

Und die Uni is rum...

Hallihallo, so, nun ist es also vorbei (also fast). Zumindest ist für mich die Uni nun vorbei. Ich hatte gestern meine letzte Klausur.... Heute muss ich noch meine Klasse beaufsichtigen und dann die Noten machen, mein Büro räumen und das war's d...

May 14, 2008 01:34 PM

May 11, 2008

Viola

Das Letze Mal....

Hallo allemiteinander, tja, nun starten also wirklich die "letzen Male". Am Donnerstag war das letzte mal Uni, also Vorlesungen vor der "finals week". Ich hatte das letzte Mal unterricht bei meiner Lieblingsprofessorin, Prof. Pasik-Duncan :-(....

May 11, 2008 01:10 PM

May 05, 2008

Viola

Graduate Probability Conference in Madison

Hallo allezusammen, ich bin wieder gut in Lawrence angekommen nach einem Wochenende in Madison, Wisconsin. Was hab ich da gemacht? Eine Graduate Probability Conference besucht :-) Juhu. Mit zwei anderen Grad Students, Lori und Heather, hab ...

May 05, 2008 03:36 AM