At the core of our business is high-quality Software Engineering. It does not matter whether we apply it to data science, big-data crunching, or business applications, our high standards apply to all these domains equally.
We work with the best tools available, we can cover the full spectrum of a Software project — from planning and conceptual stage, to the project setup and bootstrapping, and production readiness.
We believe that full transparency is the only way for a mutual understanding of the various stakeholders and that fast feedback-loops are critical to successful Software projects.
Data is at the heart of any Software project; we have built several data processing pipelines of various levels of complexity: From simple pipelines that ran in one process on one machine to fully distributed pipelines spanning over multiple programming languages, servers, and even data-centers.
We’ve seen products come and go, but we know the concepts that work and the techniques that are required to solve even the most challenging requirement.
Through data engineering, we employed big machine learning tasks (analyzing and classifying documents) in a scalable and cost-effective manner.
Architecture and Concept
The most important part of a Software project is to get the foundation right. We have seen many good teams fail because the foundations were not up to the task. Unfortunately, changing the architecture of a project in a later stage is either very painful or as expensive as a full rewrite.
Having a thorough analysis of the requirements and the scaling demands of a Software project beforehand saves time and money in the long term.
Bootstrap a Team
Good practices and a good team culture don’t happen by accident. Creating an open, welcoming environment, proper supportive processes, and a professional environment takes time and experience. We learned that the hard way.
When bootstrapping a project together with a team, we start to develop the foundation of the project or even the first production-ready version, while onboarding a team to hand it over. In-housing the accumulated know-how during an out-sourced project is the most neglected step when working with contractors, we actively want you to take charge of the project as quickly and professionally as possible.
Our Technology Stack
We believe that the choice of “the best tool for the job” is a balance between technological and social aspects. It does not make sense to introduce a new technology for each new project as the team that’s working on it needs to maintain and work with that piece of Software for a very long time.
R is an excellent tool for exploratory data analysis too, it has its place in our rotation, yet we prefer Python’s way of doing things.
For storing and working with large amounts of data, we rely on PostgreSQL as a general purpose database with strong consistency guarantees and amazingly powerful features. Of course, in an enterprise context, working with Oracle is quite common too, so we know our way around Oracle also. When it comes to search and large-scale data analysis, we usually rely on Elasticsearch to store, index, and process (semi-) structured data. We’ve built systems that store terabytes of data in PostgreSQL, and order of magnitudes more data in Elasticsearch.
For the services we operate on our own, we like to use Hetzner for bare metal, raw power, infrastructure. The price and quality provided by Hetzner are astonishing, and they proved to be a reliable partner over the last decade. If the infrastructure requirements are less demanding, we use Heroku on top of Amazon AWS to run and operate our services. Data analytics is done on Microsoft Azure as they provide powerful analytics APIs ready to use.
We do not shy back from other languages and tools if they are necessary (like Swift/Objective-C for iOS development) or when they provide value or are part of our client’s request. We live and breath Linux and the Unix philosophy every day, it is not only the basis of our infrastructure, it even powers our desktop computers as well.