Jens Stimpfle
Verified Expert in Engineering
Software Developer
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
Experience
Availability
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
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.
Software Developer
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.
Embedded Software Developer
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.
Software Developer
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.
Software Developer
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.
Systems Administrator
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).
Software Developer
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.
Experience
3D Viewer/Simulation
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
Jigsaw Puzzle Game
http://jstimpfle.de/projects/puzzle/puzzle.htmlThe 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.htmlAlso, 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/languageGitadmin
https://github.com/jstimpfle/gitadminAlgorithmic Programming
Newsticker-gl
WSL - Whitespace Separated Literals
http://jstimpfle.de/projects/wsl/main.htmlTetris on a Plane
https://github.com/jstimpfle/tetris-on-a-planeThe 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
Learn-compiler
Education
Bachelor of Science Degree in Computer Science
University of Freiburg - Freiburg, Germany
Skills
Libraries/APIs
Xlib, POSIX, OpenGL
Tools
Git, Vim Text Editor, Make, Microsoft Visual C++
Languages
C++, C++11, Sh, C, Python, JavaScript, Embedded C, Delphi, Embedded C++, Java 8, Haskell, CSS, SQL
Paradigms
Imperative Programming, Functional Programming, Object-oriented Programming (OOP)
Platforms
Debian, Linux, Win32, Debian Linux, Embedded Linux, Kernel
Storage
SQLite
Frameworks
Qt
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
How to Work with Toptal
Toptal matches you directly with global industry experts from our network in hours—not weeks or months.
Share your needs
Choose your talent
Start your risk-free talent trial
Top talent is in high demand.
Start hiring