C++ Developer

Employment Type:Permanent
Job Location:Germany
Job Function:

Location: Berlin, Germany


Do you believe in beauty when it comes to programming? Do you have a vivid interest in elegant algorithms? Are you fluent in C++? If so, their client would like to meet you. Here is what our client offers in a nutshell:

·       A wide array of extremely challenging C++ development tasks

·       An international team of brilliant minds

·       A working environment that makes this team stay and grow

·       Enough time to make sure that every detail of your solution is perfect

·       A flat organization and plenty of room for your ideas

·       No scheduled meetings

·       Family-friendly working hours, no deadlines, no overtime

·       Support for relocation


About our client

Our client is a fast-paced software company in Berlin, Germany, with a focus on developing graphics products that stand out from the crowd. They are willing to go the extra mile of developing sophisticated algorithms and refining their user interface, and they are proud of their many happy customers. The fact that the company is owned and managed by seasoned computer scientists certainly contributes to a working environment that makes exceptional developers come and stay.


About their software

Their focus is on business slides (as opposed to more artful applications) because they offer great potential for automation of layout tasks that are traditionally performed by PowerPoint users themselves.


Language

Everything they do is C++. Even their customer portal is written in C++. There is some Assembler glue code where it is necessary, and their build scripts are written in Python, but other than that the company is all about C++.

Naturally, they use C++ features like lambdas references throughout their code base and have switched to C++17 where their compilers support it.


Library

They use Boost throughout their code, e.g., Boost.Spirit for parsing.

They have their own range library, in the same spirit as Boost.Range or Eric Niebler’s range-v3, but going further, for example, by unifying internal and external iteration. They gave a talk about it, and most of the code is public.

They develop their own cross-platform library to support Mac and Windows with a single code base.

They have their own reference-counting and persistence libraries to save and restore whole object trees.

They have an extensive bug reporting infrastructure. Assertions and error checks stay in the release code, and their software automatically reports bugs to their server. The server analyzes the bug, categorizes it and files it in a database that all developers can access. If an update fixes the bug, the user can download the update directly from a bug response web page.


Algorithms

The company was founded on the idea for an algorithm for automatic slide layout, and they are still on an exciting journey towards that ambitious vision. You can see their most recent release in action!

They developed a new algorithm for automatic point cloud labeling that allows labels to be positioned away from the actual points.

They developed a new algorithm for automatic column chart labeling.

They are working with John Forrest – author of the linear solver CLP – to make his simplex code faster on their kind of problems.

They developed many generic data structures that are not in C++ or Boost, for example partitions.

Their software not only produces charts, it is also able read them back from paper. For their chart recognition tool, they rely on OpenCV and the Leptonica Image Processing Library.


Reverse Engineering

They do lots of reverse engineering with the disassembler IDA from Hex-Rays, in order to achieve things that are not possible via the documented Microsoft Office API.

They wrote probably the best function hooking engine out there. On each start of their software, they patch the Microsoft Office executables in memory. Rather than hard-coding patch addresses, they search for small chunks of assembly code to be robust against minor changes in the executables.


Even more details on their DevOps

·       Visual Studio

·       Windows

·       Xcode

·       Clang

·       OpenGL

·       DirectX

·       Request tracker

·       Subversion

·       Jenkins