For a software company the technology we use is critical to ensure that we can continue to deliver innovative and value-adding products. We catch up with Przemyslaw Klosiewicz, our CTO, to understand a little more about how we manage such a key component of our offering. Przemek (as we all know him) offers his views on a typical day, what technology we work with and how we stay at the forefront of technological development.
“Varied” would be a good word to summarise it in a single term. A healthy dose of urgent operational challenges, mixed with supporting other team members in technical and less technical questions and decisions. Add to this some bits of overall system architecture design and thinking how to future proof our technology stack and how to keep making improvements every day. I like to keep my “sleeves rolled up” so it’s important for me to allocate time for writing & reviewing code, discussing technical issues with the team and exploring new technologies and ideas.
Choosing the right tool for the job is crucial. We constantly have to balance performance, speed and ease of development, maintainability, stability and current best practices. Different parts of the system are using different technology stacks with these goals in mind.
Our core computational components use a magic mix of highly optimised Python, Julia and C/C++ code. It helps that much of our technical team have a strong scientific background in numerical mathematics and high performance computing to squeeze out the last bits of performance.
Other infrastructure and tooling bits rely highly on Python and its broad ecosystem of libraries. User-facing applications are designed in Typescript with modern web technologies in mind.
In terms of keeping everything up and running, most of our workload is containerised. This alleviates operational pains, makes development easy and deployment & product life cycles smooth and predictable.
I’m amazed by how fast our team routinely comes up with creative solutions to very complex problems. On a daily basis we rely on a steady foundation of applied mathematics and computer science enforced with business and analytical skills. In technical terms this spans the entire range of translating business logic into mathematics and algorithms, understanding the intricacies of mathematical techniques combined with precise implementation details, designing, building and testing the software to make it all work and being able to interpret and communicate the results.
Combined with our strong expertise in the aviation industry, it’s remarkable how much added value our relatively compact team can bring to the table.
At our core, we operate at the crossroads of advanced mathematics and computer science. Both fields move quickly which means that we must keep quite an “academic” approach to how we work. Frequent sessions and knowledge exchanges, technical deep-dives, literature reviews, strong connections with academia and the freedom to experiment are key factors in our weekly schedule. Equally important, we carefully listen to our customer’s feedback to come up with the best possible solutions to the challenges they face in their daily operations. This gives us a wide view on where the industry is heading, how we can improve and where the next challenges are.
We rely heavily on smooth information flows. Therefore focusing on standardised integration protocols, openly available tools and well-documented technologies helps us tremendously in achieving our goals. Most of our foundational tools and technologies are rooted in the Open Source world which means we’re able to build on top of the experience of a very active community. This openness vastly helps in objectively comparing different tools and approaches and making the best possible choices. It also allows our team to focus on the essence of what we do, without being distracted or frustrated by the surroundings or introducing unnecessary risks and dependencies.
Specifically for daily operations, our infrastructure and systems must be stable, secure, easily serviceable and quickly replaceable. Adopting technologies that automate these processes, helps in providing an uninterrupted service to our customers and makes our life significantly easier.
It comes as no surprise that I’m actively intrigued by the application of AI to our solutions. What I find intriguing is the question of explainability of decisions. An AI system can make recommendations, generate valuable output and insights and automate parts of decision making. However, in a highly regulated environment the question “why” a particular conclusion was drawn is essential. I’m curious to explore the future in that direction.
And of course I’m still waiting for that robot to do the dishes and clean up the house!