About ===== 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][uni-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][worse]. He appreciates [test-driven][tdd] and [behaviour-driven][bdd] development. To him, code must [speak for itself][code-read]. His favourite monospaced fonts are [Terminus][terminus] and [Inconsolata][inconsolata]. He can be contacted by email via `ROT13()`. Projects ======== Maude Bundle for TextMate ------------------------- Developed a bundle for [TextMate][mate] that adds support for the [Maude][maude] system. The bundle is currently under review for inclusion with the editor. The source is available from the [Macromates public subversion repository][mate-svn]. Changes.app ----------- Contributed a man page for `chdiff`, the command line interface to [Changes.app][changes]. Rubinius -------- Contributed numerous specs and fixes to [Rubinius][rbx]'s core libraries. A list of commits is available via the [public git repository][rbx-git]. Samba ----- During the [Summer of Code 2006][gsoc06], worked on integrating support for using OpenLDAP as an LDB backend into [Samba 4][samba]. A summary of that work is [available separately][socsummary]. SXEmacs ------- Contributed Python-like raw strings and recursive keyboard macros to [SXEmacs][sxe]. The sources to these are available from the [sxemacs-patches mailing list][sxe-patches] Pabbrev ------- Co-maintained the [pabbrev][pabbrev] package and ensured its compatibility with [XEmacs][xemacs]. Career ====== [Google Summer of Code 2006][gsoc06] ------------------------------------ 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 Developer for [Univention GmbH][univention] --------------------------------------------------- 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 for the [research group BKB][agbkb] ----------------------------------------------------- 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 Assistant on the [Hets][hets] project --------------------------------------------- Implemented a command line interface and argument parser for Hets, integrated a bridge to the graph visualization tool [uDraw(Graph)][udraw], and designed and implemented an algorithm for resolving overloaded sorts, predicates and functions. Studies ======= Integration of Hets and Maude ----------------------------- For my diploma thesis, I'm currently working on integrating [Maude][maude] with the [Hets][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. 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][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. 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. 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. Skills ====== 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. 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. Technologies ------------ 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. Plan ==== 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][rbx] still isn't "done", there's still a lot of unused potential in [TextMate][mate], and then there's also the [MacPorts][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][cocoa], [Objective-C][obj-c] and [F-Script][fscript]. [DTrace][dtrace] looks very powerful and handy as well. I'm also fascinated by the [Io][io] and [Scala][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 `ROT13()`. [agbkb]: http://www.informatik.uni-bremen.de/agbkb/index_e.htm [bdd]: http://behaviour-driven.org/ [changes]: http://changesapp.com/ [cocoa]: http://developer.apple.com/cocoa/ [code-read]: http://mitpress.mit.edu/sicp/front/node3.html [dtrace]: http://www.sun.com/bigadmin/content/dtrace/ [fscript]: http://www.fscript.org/ [gsoc06]: http://code.google.com/soc/2006 [hets]: http://www.informatik.uni-bremen.de/agbkb/forschung/formal_methods/CoFI/hets/index_e.htm [inconsolata]: http://levien.com/type/myfonts/inconsolata.html [io]: http://www.iolanguage.com/ [macports]: http://www.macports.org/ [mate-svn]: http://macromates.com/svn/Bundles/trunk/Review/Bundles/Maude.tmbundle/ [mate]: http://macromates.com/ [maude]: http://maude.cs.uiuc.edu/ [mmiss]: http://www.informatik.uni-bremen.de/mmiss/ [obj-c]: http://www.otierney.net/objective-c.html [pabbrev]: http://homepages.cs.ncl.ac.uk/phillip.lord/emacs.html [rbx-git]: http://git.rubini.us/?p=code&a=search&h=HEAD&st=author&s=Martin+Kuehl [rbx]: http://rubini.us/ [samba]: http://www.samba.org/ [scala]: http://www.scala-lang.org/ [socsummary]: http://www.informatik.uni-bremen.de/~mkhl/socsummary.html [sxe-patches]: http://sxemacs.org/list-archives/html/sxemacs-patches/ [sxe]: http://sxemacs.org/ [tdd]: http://c2.com/cgi/wiki?TestDrivenDevelopment [terminus]: http://www.is-vn.bg/hamster/jimmy-en.html [udraw]: http://www.informatik.uni-bremen.de/uDrawGraph/en/index.html [uni-bremen]: http://www.informatik.uni-bremen.de/ [univention]: http://www.univention.de/english.html [worse]: http://www.jwz.org/doc/worse-is-better.html [xemacs]: http://xemacs.org/