SoftwareArchitekTOUR Podcast
I just wanted to let you know about a new (german language) podcast on software architecture called
SoftwareArchitekTOUR. It is hosted at heise.developer, supported by Microsoft, IBM, itemis, innoQ and Siemens.
The shows are hosted by
Stefan Tilkov,
Michael Stal,
Christian Weyer and myself.
In contrast to
SE Radio, we won't do many interviews, but we'll try to build a real community by encouraging feedback and audience interaction.
Go, give it a try and let me know what you think!
Microsoft Axum: "Erlang for .NET"
Microsoft has just started talking about a new .NET language called Axum. People have described it as "Erlang for .NET". To stick with this classification, one could also call it "Erlang with a more mainstream syntax".
It is an agent based language, which means that communication is asynchronous and message-based, and agents (cf, the Actors model) are considered active, i.e. they have their own thread or process. Data in messages is typed and can be (deeply) serialized to make remote message sending (i.e. agent distribution) possible and more or less transparent. Axum comes with integration into WCF.
Communication between agents happens via Channels. A channel is a kind of "asynchronous interface", i.e. channels define which messages can be sent into it and received from it. Agents "implement" Channels as a way of defining the kinds of messages it can handle.
Since the timing and sequencing in asynchronous applications can be hard to understand, Axum supports the definition of protocol state machines (yeah!!) for channels. So if you send something in the wrong order, you don't get a strange crash or a deadlock, but rather a meaningful error message. I *love* that part!
Axum comes with powerful operators to define dataflow networks. You can say things like: "wait until a message arrives in this channel and in that other channel, then combine the two messages in an array, forward them to the agent xyz and forward the result to these other two channels, in an alternating way". You can define things like that with concise expressions. Very cool!
Axum has a controlled way of handling side effects. Specifically, the "units of functionality" can be declared as functions, which means they have no way of accessing state (this is checked by the compiler). The point of this is, of course, to be able to run parts of dataflow networks in parallel. This is where the big benefit of agent-based/dataflow-oriented systems comes in.
I have to say, this stuff looks *really* interesting! Because it is based on the .NET platform you get interop with other .NET stuff more or less for free. There's also an integration with VisualStudio. It is really interesting to see how Microsoft, after "renovating" and "mainstreaming" Haskell to F# they now adress Erlang and pimp it up to Axum. Very cool!
Afrikanische Ostern
(sorry for the German language...) An Ostern 2009 war segelfliegerisch das absolute Hammerwetter. Das kam so unerwartet und hat mich derart begeistert, dass is beschlossen habe, mal ein paar Eindrücke zu Papier zu bringen. Das 9 Megabyte
PDF ist jetzt fertig. Viel Spass beim Lesen :-)
Cool Customers, Part 2
More work with interesting customers. Recently I was working with the folks at
Schlumberger. They develop and operate oil drilling equipment, specifically directional drills. It's amazing what goes into such seeminly simple devices...
Today I am returning from
DFS, the German air traffic management organization. I did some MDSD and PLE consulting with their R&D branch. Since I am a pilot myself, and consequently a "DFS customer" (a little bit, at least...) it was very interesting to talk to the people there and the future challenges of air traffic control. I also did an interview for
omega tau.