Python Software Development and Consulting Services
»making fast code easy«
I'm an experienced Open-Source software developer, consultant and trainer in the Python community, a founding member of the German association Python Software Verband e.V. and Fellow of the Python Software Foundation (PSF). Most of my projects deal with high-performance tools and fast code. I do them because I like making performance critical code run fast, and because I like writing tools that enable software developers to write fast code quickly and easily. Writing fast code isn't hard if you have the right tools.
I received my doctor's degree from Technische Universität Darmstadt at the Databases and Distributed Systems Group lead by Professor Alejandro Buchmann. My doctoral thesis on efficient, model driven software development for Internet scale, self-maintaining distributed systems is available online.
I'm currently based in München, in the south of Germany, but I don't
Please contact me at < consulting (AT) behnel.de >
The following is a list of interesting software development projects that I would like to work on. If you are interested in financing them, please contact me at < consulting (AT) behnel.de >.
The Cython programming language is a dialect of the Python language that offers optional static type declarations and compiles to fast C code. It has been used in numerous areas as a general purpose programming language and takes part in a major drive to make Python the leading language in scientific computing. Not in the sense that it necessarily replaces Fortran, but in the sense that it's easier to write the majority of your code in a high-level language and connect it to small chunks of low-level, hand-optimised code.
Cython is a perfect 80/20 language that bridges the gap between the speed of development for the majority of your code and the optimisation of its performance critical sections. In addition to the ease of development known from Python, it allows for major code speedups by simply adding static types just in the right places, and by making it trivial to interface with external code written in C, C++ or Fortan.
My achievements as a founder and core developer of the Cython project involve compiler optimisations at all levels as well as substantial design decisions, major feature implementations known from the Python language, and the design and implementation of several language features that make Cython unique in its integration of Python and C.
After several years of progressive development, lxml has long turned into the leading high-performance XML library for Python. It offers a unique combination of advanced XML features, high performance and ease of use. It builds upon the well-known C libraries libxml2 and libxslt, and binds them together in a high level, object oriented XML API written in Cython.
As project lead of the lxml project, I am responsible for the major developments in the code base in terms of design and project management as well as implementation. I contributed the major features and performance optimisations that make lxml so useful for Python XML processing.
Lua complements Python very well. It is a language as dynamic as Python, but LuaJIT compiles it to very fast machine code, sometimes faster than many statically compiled languages. The language runtime is extremely small and carefully designed for embedding. The complete binary module of Lupa, including a statically linked LuaJIT2 runtime, is only some 500KB on a 64 bit machine.
However, the Lua ecosystem lacks many of the batteries that Python
readily includes, either directly in its standard library or as third
party packages. This makes real-world Lua applications harder to write
than equivalent Python applications. Lua is therefore not commonly
used as primary language for large applications, but it makes for a
fast, high-level and resource-friendly backup language inside of the
Python runtime when raw speed is required and the edit-compile-run
of binary extension modules is too heavy and too static for agile
development or hot-deployment.
As project lead of the Lupa project, I am responsible for the major developments in the code base in terms of design and project management as well as implementation.