Verified Expert in Engineering
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.
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.
- 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.
- 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.
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.
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.
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).
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.
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 Gamehttp://jstimpfle.de/projects/puzzle/puzzle.html
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 Editorhttp://jstimpfle.de/projects/astedit/astedit.html
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 Languagehttps://github.com/jstimpfle/language
WSL - Whitespace Separated Literalshttp://jstimpfle.de/projects/wsl/main.html
Tetris on a Planehttps://github.com/jstimpfle/tetris-on-a-plane
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.
Xlib, POSIX, OpenGL
Git, Vim Text Editor, Make, Microsoft Visual C++
Imperative Programming, Functional Programming, Object-oriented Programming (OOP)
Debian, Linux, Win32, Debian Linux, Embedded Linux, Kernel
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
Bachelor of Science Degree in Computer Science
University of Freiburg - Freiburg, Germany
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