The website of Martin Kühl

Martin Kühl is a software developer from Germany with an interest in computer languages and development tools. He is currently a student of informatics at the University of Bremen, specializing in formal methods of software development and working on his thesis project.

He thoroughly enjoys using—and developing for—both Linux and Mac OS X, learning about and using interesting technologies, and searching for the Quality Without a Name.

Martin believes that less is more and worse is better. He appreciates test-driven and behaviour-driven development. To him, code must speak for itself.

His favourite monospaced fonts are Terminus and Inconsolata.

He can be contacted by email via <>.


For details, choose from the above categories [Note that this requires JavaScript to be enabled in your browser], or download this plain text version.

Maude Bundle for TextMate

Developed a bundle for TextMate that adds support for the Maude system. The bundle is currently under review for inclusion with the editor. The source is available from the Macromates public subversion repository.

Rubinius

Contributed numerous specs and fixes to Rubinius's core libraries. A list of commits is available via the public git repository.

Changes.app

Contributed a man page for chdiff, the command line interface to Changes.app.

Samba

During the Summer of Code 2006, worked on integrating support for using OpenLDAP as an LDB backend into Samba 4. A summary of that work is available separately.


SXEmacs

Contributed Python-like raw strings and recursive keyboard macros to SXEmacs. The sources to these are available from the sxemacs-patches mailing list

Pabbrev

Co-maintained the pabbrev package and ensured its compatibility with XEmacs.

Google Summer of Code 2006

Worked on integrating support for using OpenLDAP as an LDB backend into Samba 4. Implemented an LDB module to perform structured transformations of arbitrary LDB messages, which enabled the translation of Active Directory messages into OpenLDAP messages and back. All code was reviewed and accepted into the main Samba 4 branch.

Student Assistant for the research group BKB

Wrote subversion commit-hooks to automatically synchronize the subversion repository with a connected MMiSS repository, and a set of scripts to export the groups research literature database to BiBTeX and back it up via subversion.

Student Developer for Univention GmbH

Worked on both the frontend and backend sides of the LDAP-based server administration infrastructure and on integration of the experimental Samba 4 with the aforementioned LDAP infrastructure, and implemented a revised unit testing-based automated test suite for the command line administration frontend.

Student Assistant on the Hets project

Implemented a command line interface and argument parser for Hets, integrated a bridge to the graph visualization tool uDraw(Graph), and designed and implemented an algorithm for resolving overloaded sorts, predicates and functions.

Integration of Hets and Maude

For my diploma thesis, I'm currently working on integrating Maude with the Hets toolset. Maude will be integrated either as an additional logic, Rewriting Logic, or as a theorem prover, using the maude engine to either simplify proof goals or brute-force their derivations. The bridge to Hets will be written in Haskell.

Production scheduling system

For a software engineering course, a team of six students developed the production scheduling and route planning system for an imaginary bread roll delivery service. My responsibilities were the multi-threaded server component, written in Java, and an automated test suite, written in Python.

Web Service and frontend for MMiSS

For a four-semester software engineering project, a team of two students developed an XML messaging client for MMiSS repositories, a web service facading its intricacies, and an interactive web frontend to the web service. The implementation was developed simultaneously in Microsoft .NET (by my fellow student) and Mono (by myself), and written in C# and ASP.NET.

BSP tree-based OpenGL renderer

For an advanced graphics programming course, I developed an application that analysed a description of a 3D scene, translated it into a BSP tree, and rendered the translated scene. It was written in C and developed in parallel Linux and Mac OS X.

Languages

Experienced with C, C#, Haskell, Java and Python.

Proficient with Applescript, Bash, Emacs Lisp, JavaScript, Objective-C and Ruby.

Familiar with C++, Common Lisp, K, O’Caml, Perl, Scheme and Smalltalk.

Technology

Some of the techniques and technologies I have employed in the past: multi-threading, XML documents, SOAP web services, hierarchical databases (LDAP), type systems, 3D rendering (OpenGL), parser generation.

Tools

I feel at home in both Vim and Emacs (while favouring the latter), but currently find myself liking TextMate a lot. Usually, I choose all of these over Eclipse, NetBeans or IntelliJ.

My login shell is zsh, but for scripting I prefer Python and Ruby.

As a source code management system, I use is git, although I think Mercurial has the better interface.

Both static and dynamic typing systems have their place, only I find the former without type inference can be obnoxious.

I understand the purpose of XML, but I prefer lightweight alternatives like Plists or JSON.

Where do we go from here?

My first goal is, of course, to defend my thesis and graduate. Once that is accomplished, I’ll be actively looking for opportunities to work on interesting problems with an engaging team. If you think you know where to turn, please do get in touch! [Keep in mind though that I am based in Germany; as things are looking, I’ll be moving to Saxony very soon.]

Apart from that, I plan to keep contributing to open source projects. Rubinius still isn’t “done”, there’s still a lot of unused potential in TextMate, and then there’s also the MacPorts project, which I have kind of a love/hate relationship with.

I will also definitely keep learning new programming languages and tools. My current locus of attention is on Cocoa, Objective-C and F-Script. DTrace looks very powerful and handy as well. I’m also fascinated by the Io and Scala programming languages and mean to pick them up soon.


If any of this sounds interesting to you, and even if it doesn’t, please feel free to contact me. My email address is <>.