Binding to a C++ CORBA interface in Haskell

This post is mostly a reminder on how I did this, so that I have a place to look it up.

Ok, so basically, I work on the mission control system GECCOS for DLR (Deutsches Zentrum für Luft- und Raumfahrt), which is currently flying seven missions with it. The MCS is not an isolated system, but connected to a number of other systems around it (e.g. SSB –  network routing to the ground stations, SATMON for having pretty displays, mission planning, flight dynamics etc). In our company, we don’t have these systems available, so we need to somehow simulate them.

This is the point, where Haskell comes into play. Over the course of the last years I developed several tools in Haskell which help me with this (see blog posts: Architecture of a Real World Haskell Application and Architecture of a Real World Haskell Application part II

The Problem

I needed to implement a new interface from the MCS to SATMON. The interface is via the EXIF (external interfaces), which work via CORBA. So to be able to test the new interface, I needed an application which can interface CORBA. That’s where it starts.

Unfortunately, there is no CORBA implementation for Haskell available. The system uses omniORB, which is a C++ ORB but also provides a python implementation.

Creating a new CORBA implementation would be quite a lot of hassle, as this would involve an IDL parser, generating lots of Haskell code and so on. Just in case you are not familiar with CORBA: it is a middleware with remote method invocation. The interfaces are specified in an interface definition language (IDL), which are then translated by the IDL compiler into the used target language (in omniORBs case into C++ or Python).

So a direct binding to the existing C++ interface would be an option. After looking around a bit and playing sometimes with C++ binding generators like fcixx, I came across hoppy, which was used to generate the Haskell binding for the QT library. Ok, I thought, let’s give it a try.

But we are not ready yet. The MCS is compiled and running on a SuSE Linux Enterprise Server 11 system, which is really old. Even worse, the MCS uses legacy libraries, which can only be used with a gcc < 3.4.0, because with 3.4.0 there was a change in the ABI (application binary interface) and the code is not linkable with other stuff. Well, turns out, C linking is still possible, but C++ libraries not.

So, how get this working?

Continue reading

Line6 Helix Bass Patches

On Request, here are the bass patches I used in the video for Reamping Periphery’s Ragnarok with a Line6 Helix.

Some of the patches contain an Impulse Response which is the one which is recommended from Nolly in his Video about Nolly dials in a bass tone As this is a commercial IR I can’t include it. But you can exchange the IR with the Helix internal SVT8x10 simulation or use a free IR instead.

Keep in mind, that the used cabinet or IR drastically changes the sound as well as the used bass and pickups.

Patches: Nolly_Patches





Video series about a complete Music Production with Muse and Ardour

I created an in-depth tutorial about creating a complete cover song from the MIDI file to the final mastered song.

You can find it here:

or as a complete playlist on youtube:

Music Production Playlist


Creating a Drumgizmo kit from existing samples

This post is about the Drumgizmo plugin I use often under Linux as a drum plugin. It has some free drumkits on the homepage to download, but I also wanted to create a drumkit out of samples I already had. I bought a commercial multi-velocity sampled drum library from drumdrops (the Mapex Heavy Rock Kit to be precise), which I really like, and created a drumgizmo patch for it. You can hear drumgizmo with this kit in action e.g. here:

Continue reading

The Rise and Fall of Ken Wilber?

In this post I take a look at some critique from Mark Manson (this Article). I agree with a lot of what he says, but about some things I have a quite different view. This is strictly my personal opinion about a topic, which some see as the “fall” of Ken Wilber, which I simply don’t see this way. Ok, let’s start…

A first thing that comes into mind is that in this whole article Mark always refers to Version 4 (Wilber-IV) and not one single time to Wilber-V, which is the current version. Actually, this is done by a lot of critics. This is quite fundamental as Wilber-I to Wilber-IV concentrate more on ontological issues (where and how objects are), whereas Wilber-V concentrates on views and perspectives (a more epistemological variant if you like). This renders quite some critiques obsolete. But this is not the main point I want to highlight.

Continue reading

Ein Blick auf Spirituelle Methoden

Nachdem ich im letzten Artikel auf Entwicklungsstufen eingegangen bin (siehe hier), haben sich einige Fragen zu spirituellen Methoden ergeben, wie z.B.:

Werden bestimmte Praktiken nur auf bestimmten Stufen verwendet, z.B. ist jeder Schamanismus Magenta?

Was ist mit spiritueller Entwicklung (durch Einweihungen, Rituale etc)?

Was ist Spiritualität überhaupt?

Um darauf einzugehen, sind auch hier einige Hintergrundinfos notewendig.

Continue reading

Ist Religion wirklich so schlimm?

(English version is here)

Kurze Antwort: Ja. Und nein.

Für die (sehr) lange Antwort lesen Sie bitte weiter.

Ich wollte diesen Artikel nicht schreiben, aber wegen der jüngsten Terroranschläge in Paris habe ich mich dazu genötigt gefühlt. Eine Menge Scheiße passiert gerade da draußen. Fundamentalisten nutzen die Religion um ihre eigene Weltsicht durchzusetzen (die natürlich die gewaltsame Entfernung von anders denkenden Menschen enthält), Atheisten scherzen oft über Religionen und belächeln religiöse Ansichten oft als dumm, Diskussionen über die Umkehr der Trennung von Kirche und Staat ( zB in den USA), Menschen, die sich aus religiösen Gründen weigern, Hochzeitsurkunden für Gleichgeschlechtliche herauszugeben (gegen das Gesetz), Diskussionen über Frauen, Abtreibung, Zölibat und “Werte der Familie”, “gut” und “schlecht”, große Widersprüche über das, was in den “heiligen” Schriften steht und was die Leute, die sagen, danach zu handeln, wirklich tun etc. Machtmissbrauch, Kindesmissbrauch, Überkontrolle, Patriarchismus, Unterdrückung, Aberglaube, Kreationismus, was Sie wollen, alles, was” schlecht “ist kommt irgendwie in den Religionen vor.

So auf den ersten Blick gibt es da nicht wirklich viel positive Dinge. Auch auf dem zweiten Blick ist es immer noch sehr schlimm. Also lassen Sie uns ein bisschen tiefer graben und hinter einige der Mechanismen in Religionen blicken. Vielleicht sind wir dann in der Lage, ein bisschen mehr zu sehen, nicht alles in einen Topf zu werfen, aufzukochen und dann dieses giftigen Mischmasch in Menschen zu füllen, nur um sich besser zu fühlen, als diese bedauernswerten fehlgeleiteten Kreaturen, mit denen wir Diskussionen führen.

Continue reading

Is Religion really that bad?

(Find the german version: here)

Short answer: Yes. And No.

For the (very) long answer please continue reading.

I didn’t want to write this article, but because of the recent terrorist attack in Paris I think I have to. There is a lot of sh*t happening out there. Fundamentalists use religion to implement their own world view (which of course includes the forceful removal of other-thinking people), atheists often joke about religions and do present religious views often as stupid, discussions about reversing the dividing of church and state are happening (e.g. in the US), people refusing to follow the law in giving gay marriage licenses because of religion, discussions about women, abortion, celibate and “family values”, “good” and “bad”, big contradictions about what’s written in “holy” texts and what people who say to follow them really do etc. Power misuse, child abuse, control, patriarchism, oppression, suppression, superstition, creationism,  whatever you like, everything “bad” is somehow present in religions.

So on the first look, there are not really much positive things in there. Even on the second look it’s still very bad. So let’s get a bit deeper and get behind some of the mechanisms in religions. Maybe then we will be able to differentiate a bit better instead of throwing all into the same pot, cook it up and then feed this poisonous mish-mash into people just to be able to feel better than these pitiable misdirected creatures we are discussing with.

Continue reading

Back from ICFP and CUFP

Back from my first ICFP and CUFP, where I had my first talk in the functional languages domain. Here is a link to the recorded talks, mine was “Haskell in the Mission Control Domain”:

Unfortunately, I could not find the recording from Björn’s talk right after me (Edit: Björn sent me a link, here is it:

It was a very good experience and also quite impressive, to see all the creme-de-la-creme from the Haskell community in one place! Also it was nice to get an association from names to actual faces.

Continue reading

Architecture of a Real World Haskell Application part II

OK, did take some time since the last post, but I am really busy now.

Last time we looked at the general structure of the application in terms of threads and model/interface separation. For this post, I want to write a little bit about the protocol handling and parsing and how it evolved. While this is not the most central part of the application, it is the oldest and therefore I think good to show some historical development.

Ok, so the tool began as a command line application which could only receive telecommands and send back correct responses (which on itself is not as simple as it sounds). Also at that point in time I just more or less started learning Haskell while my main language at that time was C++, so of course the first solution was a lot C++ like. So let’s see how it goes.

Continue reading