Photo of Stefan Behnel

Dr. Ing. Stefan Behnel

Python Software Development and Consulting Services

    »making fast code easy«

Who am I?

I'm an experienced Open-Source software developer, consultant and trainer in the Python community and a founding member of the German association Python Software Verband e.V. 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.

What do I offer?

especially in topics related to

Trainings:

I'm currently based in München, in the south of Germany, but I don't mind travelling.
Please contact me at < consulting (AT) behnel.de >

Selected talks

Open projects

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 >.

My OpenSource projects

The two main projects that I have focussed on during the last years are lxml and Cython. Lupa is a new project that has yet to make its way.

Cython

http://cython.org

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.

lxml

http://lxml.de

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.

Lupa

https://github.com/scoder/lupa

Lupa is a thin Python wrapper for the fast Lua runtime LuaJIT2. It is implemented in Cython and makes it easy to call back and forth between Lua code and Python code.

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 cycle 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.

Publications

Imprint / Impressum