Jens Stimpfle, Developer in Freiburg, Baden-Württemberg, Germany
Jens is available for hire
Hire Jens

Jens Stimpfle

Verified Expert  in Engineering

Software Developer

Location
Freiburg, Baden-Württemberg, Germany
Toptal Member Since
September 3, 2017

Jens writes programs that are maintainable and at the same time effortlessly performant. He has experience writing GUI and 3D applications, multithreaded and networked systems, as well as compilers. He prefers working with C, although he has a solid proficiency in many programming languages such as C++ and Python. Jens has a solid Unix and Linux background and is currently at home both on the Win32 and Linux platforms.

Portfolio

ThinkParQ
C++, C, Linux, Kernel, Networking, Storage
MTS AG
Microsoft Visual C++, Win32, FreeType, OpenGL, C++, C
Artidis AG, Basel
Embedded Linux, Embedded C++

Experience

Availability

Part-time

Preferred Environment

C++, C

The most amazing...

...program I've worked on was one where I knew the correct large-scale design, and after writing it down and only a little debugging the program worked perfectly.

Work Experience

Software Engineer

2021 - PRESENT
ThinkParQ
  • Maintained the Linux kernel module that implements the client side for the BeeGFS filesystem, a distributed filesystem used in HPC. That involved fixing bugs and considerable porting work to stay compatible with developments in the Linux kernel.
  • Designed and implemented a persistent event queue. I designed a file format and worked on integrating the code with an existing codebase that generates events. The queue buffers up potentially huge amounts of data for future network transfer.
  • Reviewed bug fixes and participated in technical discussions.
Technologies: C++, C, Linux, Kernel, Networking, Storage

Software Developer

2019 - PRESENT
MTS AG
  • Created a service GUI and dashboard for industrial automation. The app was hand-coded in C, using only FreeType2 and OpenGL as dependencies, to create a custom look and feel and achieve platform independence.
  • Created a networked application that takes a description of a grinding machine—meshes, relative positions, axis movements—and provides visualization of movements (streamed network or GUI manipulated axis positions) from scratch (C, OpenGL, FreeType).
  • Wrote a parser, compiler, and interpreter for multi-dialect CNC language (G-code) to simulate the effects of a grinding program from scratch in C as an almost completely isolated component. Now working on the integration with the above monitor app.
  • Cleaned up 100s of project descriptions (.vcxproj) scattered across a large SVN repo. 1000s of C/C++ files were referenced from the .vcxproj's, with disorganized build settings. Was able to automate parts, but it was a multi-month effort.
  • Started introducing build abstractions to achieve more modularity while not losing knowledge and control over dependencies. This requires moving build descriptions from the .vcxproj to a custom format, which is a tough cleanup problem at scale.
Technologies: Microsoft Visual C++, Win32, FreeType, OpenGL, C++, C

Embedded Software Developer

2019 - 2021
Artidis AG, Basel
  • Designed and developed an application that reads input signals from various sensors connected to an FPGA and an I2C bus.
  • Designed a little protocol on top of TCP/IP to provide data to connected network clients.
  • Worked on the low-latency and high-performance requirements. Due to high bandwidth and relatively small buffer size between the FPGA and software, a new FPGA buffer transfer has to be scheduled reliably, once every around 8ms.
  • Designed the system using non-blocking and asynchronous I/O and statically allocated threads to pump data, guaranteeing timely data delivery to multiple connected clients and satisfying the low-latency requirements on the I2C and FPGA sides.
Technologies: Embedded Linux, Embedded C++

Software Developer

2018 - 2018
IRM Management Network GmbH, Berlin
  • Contributed to refactoring a more than one million SLOC codebase for an assets management application written in Delphi.
  • Replaced some old code for user authorization, written in an entangled object-oriented style, with simple procedural code.
  • Removed useless abstractions, improved clarity, and achieved speedups of 100 to 1000 times, reducing the application's startup time from sometimes minutes to almost instant.
Technologies: Delphi

Software Developer

2017 - 2018
Isys Vision, Freiburg
  • Designed and implemented software architecture for an application that coordinates multiple parts of a computer vision system: Image Processing, Motor control, Service GUI.
Technologies: Delphi, Microsoft Visual C++, Qt, Win32, Python, C++, C

Systems Administrator

2008 - 2017
Math. Institute, University of Freiburg, Germany
  • Developed a number of smaller applications to automate and accelerate internal processes including student assignment tasks, data entry applications, and reports, or student schedule generation.
  • Scripted the installation and administration of > 100 Debian-based servers and clients. Created data schemas and tooling for user account management and documentation.
  • Designed and or maintained backup methods for various servers and clients.
  • Encountered and resolved a large number of bugs in open-source software, and maintained a repository of modified or locally created Debian packages for our in-house installations.
  • Designed and prototyped practical approaches to design GUI interfaces, especially asynchronously updated ones (such as single-page web apps).
Technologies: SQL, JavaScript, X11, Python, Networking, Debian Linux

Software Developer

2012 - 2013
TWC Treuwert Computer GmbH, Freiburg, Germany
  • Designed and implemented software that displays news and advertisements on consumer displays. Display clients download new content and display schedules from a content server. The screen can be tiled to display different media simultaneously.
  • Created a database schema to support a web interface for administering clients and for uploading new data to the content servers.
  • Developed a number of small in-house tools (data transformation) in Perl.
  • Evaluated various JavaScript technologies to support the web interface.
Technologies: OpenGL, X11, C, Python, Linux

3D Viewer/Simulation

I'm working on a client-server architecture and GUI App that runs on Linux and Windows. It allows the definition of "skeletal" machines for industrial applications. The machines are composed of moving parts composed into a hierarchy (linear and rotational movements are supported). The GUI App needs to subscribe to the server and allow the streaming of axis data over the network. It needs to update the 3D view in real-time. There is also some light interactive editing of the skeletal configurations.

The app is written from the ground up with minimal dependencies: LibC, OpenGL, and platform APIs (Linux/Windows - for file access, networking, and window context creation). It also includes a small custom written GUI widget toolkit.

(Contracted work; no further details can be shared).

Networked Embedded Devices for a Medical Application

Server software written in C for a medical device that exposes data read in real time from many sensors and an FPGA mapped to physical memory. Some low-latency architecture work is involved since the FPGA has only 8ms worth of buffer (an unfortunate setting), and the data needs to be continuously streamed out over the network to subscribed clients. (This is a contracted project; no further details can be shared.)

Jigsaw Puzzle Game

http://jstimpfle.de/projects/puzzle/puzzle.html
I'm building a jigsaw puzzle game that runs on Linux and Windows. It is designed to efficiently handle many pieces (more than 1,000) that are rendered in real time. The pieces can be "designed" in-game using Bezier curves and a simple triangulation algorithm. They are initially created by adding some randomness to default shapes. The pieces can be rotated in all four orientations, with smooth in-betweens for animation. There are free zooming and grouping to improve ergonomics. I'm currently working on low-latency networking for an excellent cooperative multiplayer experience.

The game also features a minimalistic Widget UI to build the menus. There are no dependencies except OpenGL and platform APIs—Win32, X11, and libc for file access, window context creation, and networking.

Astedit - High Performance Syntactical Editor

http://jstimpfle.de/projects/astedit/astedit.html
I'm building a high-performance, ultra-low latency text editor that can edit even huge files (gigabytes) without breaking a sweat. It typically takes on the range of 5 to 30 microseconds for editing operations to complete even for huge files, leaving plenty of headroom for advanced operations like syntax highlighting and other IDE features which I'm currently working on (for interactivity typically a few milliseconds are available before the user can notice).

Also, the memory overhead is low - about 5% of the size of the edited text.

The performance and efficiency are achieved through the implementation of a custom Red-Black Tree and a Textrope data structure, which is a nontrivial engineering effort. These are already performing as advertised, although I might make further improvements to support particular requirements.

The Blunt Programming Language

https://github.com/jstimpfle/language
I'm working on a programming language (including a compiler) for systems-level programming. The language is designed to be as minimal as C but to have a cleaner syntax, to include a few tiny features missing from C, and to offer much faster compile times. The compiler is developed in C with no dependencies except for reading and writing files.

Gitadmin

https://github.com/jstimpfle/gitadmin
This is a little project that manages git repositories for groups of developers. User and authorization data is stored in an SQLite3 database. Users can create new projects and give permission to other users. A very lightweight alternative to Gitlab, similar to Gitolite.

Algorithmic Programming

I've spent considerable time on algorithmic programming platforms like SPOJ.com and HackerRank.com and developed a good feeling for asymptotic complexity and constant-factor optimizations. I invented some nifty ad-hoc tricks, like replacing a hash map by a low number of stacks in graph searches with integer costs and good locality, to drastically improve performance with very low overhead in code complexity.

Newsticker-gl

I created a desktop application that periodically downloads RSS feeds from the network and displays them in a newsticker. I employed OpenGL for good visual quality. It was only partly a success because bitmaps turned out not an optimal choice for scrolling on common resolutions (~100dpi). I have since learned more about graphics programming and plan to write my own vector font rendering shaders.

WSL - Whitespace Separated Literals

http://jstimpfle.de/projects/wsl/main.html
I've spent some time designing a plain text format for relational databases (and also a Python library for reading and writing). WSL competes against the widespread CSV and tries to improve on canonical data representation and low-noise lexical syntax. The problems I've encountered: It's very hard to come up with meaningful, canonical, universal data types. Focusing on practicality I didn't want to push in the direction of abstract syntax notations (very complex). On the other hand, providing the database schema beforehand turned out to be a very good idea, because it enables a much cleaner and unambiguous syntax.

Tetris on a Plane

https://github.com/jstimpfle/tetris-on-a-plane
I developed a Tetris game based on plain HTML, CSS, and JavaScript (rendering with styled DOM elements).

The challenge was to do this in < 3 hours, on a plane without internet access (and crammed in a way too small seat). I'd never done a Tetris game before and wanted to prove to myself that I'm able to focus on results and get things done quickly.

Learn-opengl

This is a project where I learn about the OpenGL API and Game Engine related topics, such as 3d math, Polygon meshes, serialization, network, evens systems, and generally simple non-OO data structure design.

Learn-compiler

This is my first attempt at implementing a parser and data structures for a C-like language. I've explored avoiding creation of an AST, which is a lot of boilerplate, and that worked beautifully. In the meantime I've improved on these ideas, and created a more complete Pascal parser (not public code).

Languages

C++, C++11, Sh, C, Python, JavaScript, Embedded C, Delphi, Embedded C++, Java 8, Haskell, CSS, SQL

Libraries/APIs

Xlib, POSIX, OpenGL

Tools

Git, Vim Text Editor, Make, Microsoft Visual C++

Paradigms

Imperative Programming, Functional Programming, Object-oriented Programming (OOP)

Platforms

Debian, Linux, Win32, Debian Linux, Embedded Linux, Kernel

Storage

SQLite

Other

X11, Networks, Data Structures, Operating Systems, Algorithms, Embedded Development, Embedded Software, Networking, FreeType, Low Latency, Performance, Graphical User Interface (GUI), Widgets, UDP, TCP/IP, 3D Graphics, Debian Packaging, Software Architecture, ARM Embedded, Storage

Frameworks

Qt

2010 - 2016

Bachelor of Science Degree in Computer Science

University of Freiburg - Freiburg, Germany

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring