Descripción
Algorithmic highlights
• We developed a new algorithm for automatic point cloud labeling that allows labels to be positioned away from the actual points.
• We developed a new algorithm for automatic column chart labeling.
• We are working with John Forrest - author of the linear solver CLP - to make his simplex code faster on our kind of problems.
• We developed quite a few generic data structures that are not in C++ or Boost, for example partitions.
Hacking highlights
• To do things that are not possible via the documented Microsoft Office API, we do lots of reverse engineering with the disassembler IDA from Hex-Rays.
• We wrote probably the best function hooking engine out there. On each start of our software, we patch the Microsoft Office executables in memory. We search for small chunks of assembly code rather than hard-coding patch addresses to be robust against minor code modifications.
• We redirect PowerPoint's and Excel's window contents into offscreen buffers and use Direct3D 9.0 to render our user interface on top.
Other highlights
• We fund the working group for programming languages of the German Institute for Standar¬dization (DIN). Some of our employees are members of this committee and vote in the international standar¬dization process of ISO/IEC C++.
• We use C++11 features like lambdas and rvalue referen¬ces throughout our codebase, and have switched to C++14 where our compilers support it.
• We use Boost throughout our code, e.g., Boost.Spirit for most of our parsing needs.
• We wrote our own ranges library (similar to boost::range, but with less overhead). Check out the talk by Arno and get the code.
• We have our own reference-counting and persistence libraries to save and restore whole object trees.
• We wrote a parser and writer for the Excel .xls format.
• We have an extensive bug reporting infrastructure. Asser¬tions and error checks stay in the release code, and our software automatically reports bugs to our 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.
About this job
We are looking for smart, creative developers with a solid theoretical background. You should be able to look at a problem from the user's perspective, discuss abstract concepts with fellow developers, as well as produce an elegant implementation. Developers we have hired in the past mostly hold an exceptional master's degree in computer science or even a doctorate.
-
Tipo de contrato
Sin especificar
-
Salario