Behind the High-Performance Solutions: An Interview with Tronel’s Performance Solutions Architect

Designing advanced embedded systems can be quite a challenge, but it is nothing compared to the satisfaction that comes with successfully completing a project. No one understands it better than Łukasz Wątor – Tronel’s Performance Solutions Architect and the leader of one of our teams.

Łukasz and his team are responsible for providing cutting-edge embedded systems for one of our clients based in the telecoms sector. The rapid growth of this industry makes it necessary for them to constantly innovate while staying up to date with current advancements, and ensuring that their project meets the highest quality standards.

Together with Łukasz, we delved into the exciting world of high-performance solutions and learned more about the perks and challenges of his job, what inspired him to pursue a career as a software engineer, and what to keep in mind when developing such solutions.

Can you tell us a bit more about your role at Tronel?

I’m taking care of Tronel’s protocol agnostic team. We are working purely on a core component for one of Tronel’s customers. This component is responsible for managing all the incoming data and providing it to the client. My role at Tronel consists of two parts. On the one hand, I look after the team members and ensure the customer is satisfied with our service. On the other, I’m responsible for providing quality high-performance embedded solutions which are up to date with the latest technologies.

Łukasz Wątor, High-Performace Solutions Architect, working in Tronel's office in Kraków

Łukasz Wątor at Tronel’s Kraków office

How did your passion for software engineering start? What inspired you to pursue the career you have today?

It’s been a while. I began my journey with computers about 25 years ago. I started with CGI, but soon realised, that my PC couldn’t handle the burden of this kind of tasks. As a result, I quickly moved to the software aspect of CGI and focused on writing optimised plugins. This led me to delve into CGI development, databases and persisting of data, technologies for developing high-performance servers for network communication, and even game servers. Eventually, I gravitated towards projects related to the gaming industry, which I found to be a very challenging area.

I’ve always enjoyed developing high-performance systems. I like when things work in their best version, so when the whole solution is not only performing well inside but also works well with other components. This is what attracted me to Tronel in 2016. During my interview, I expressed my passion for developing quality solutions, which was also shared by the CEO at the time, Marcin. It felt like we had found common ground and understanding, and that is how it all began. My passion was recognised, and I was given the chance to be part of the team. Initially not as a team leader, but it evolved that way.

What do you love most about your role?

I suppose being able to design innovative embedded systems that are capable of handling a lot and working with very clever and intelligent people who share my passion. We have a very small team of engineers, but all of them are incredibly clever and devoted, and know what to do and how to do it.

One of the greatest achievements of your team was developing a new version of an application for analysing test scenarios for our client based in the telecommunication sector. Can you tell us a bit more about this project?

The application consists of two parts – the core data handler and the presenter. The former processes incoming data to a persistent state and provides raw data to clients. The latter showcases gathered data in various forms – through UI client and access via API. The application is constantly evolving because the market never sleeps. We are continuously improving the solution, so what I share today may not necessarily be applicable tomorrow.

Essentially, the server is responsible for handling the incoming traffic data. It effectively stores it to disk, at a fast pace of 200,000 messages per second. This is considered small traffic, but it is increasing every day. Currently, we are not deploying the solution into the cloud as it is not welcomed by the customer. Therefore, we have to deal with limited resources and make sure that all CPU cycles, memory bytes and IOs are effectively used.

Ultimately, data is presented in various ways – tabular and graphical. This includes filtering, slicing and drill down of static and predefined shapes, as well as allowing the customer to define custom-defined graphs and other visualizations.

High-performance servers

What were the biggest challenges you encountered throughout the project and how did you overcome them? How did the solution benefit the client?

It is very difficult to pinpoint a single obstacle that stands out. Our customer is a leader in the telecom industry. Therefore, they expect not only to provide innovative embedded solutions but also to be ahead of the competition. This means we are constantly challenged to introduce solutions that are better to the extent that may initially seem impossible to reach. And this is very good because it requires us to come up with clever ideas.

As developers or designers, we encounter algorithmic or design problems, many of which have been previously addressed with best practices or patterns. While we are familiar with most of these, given the fast-paced nature of the field, we often need to think outside the box to meet the required level of performance expectations.

One specific challenge we faced was indexing very large files to be able to deliver necessary data and process filtering and searches. During preprocessing, we encountered several challenges related to reducing memory usage while still being able to deliver the necessary data to make the functionalities work as expected or perhaps even faster. We had some ideas about optimising and managing memory usage using available patterns, such as flywheel or other custom approaches. Due to architectural limitations and memory addressing issues our 32-bit application was able to open around 5 to 10 million records. The requirement was to have the ability to handle an unlimited number of records, or high enough to be perceived this way, without sacrificing the performance or relying on persistent storage.

Eventually, we were able to surpass this limit and significantly reduce memory footprint. It allowed us to process even very large files with minimal memory usage. For example, processing 150 million records requires only around 3 gigabytes of memory for pre-processed data to work on the file acceptable fast – below 2s.

What, in your opinion, plays a crucial role when developing high-performance solutions?

Being open and not getting too attached to a proposed solution. We often face situations when during our discussions and brainstorming sessions, somebody suggests an idea and we expand on it, analyse it and realize that this is not going to work. That’s why you cannot become overly attached to the concept that you propose because it may not necessarily fit our needs – or maybe it is now, but may not be the best option in the long run.

Łukasz Wątor, Performance Solutions Architect at Tronel's office in Kraków

Łukasz Wątor at Tronel’s Kraków office

Your team regularly organizes internal training sessions called “Technology Overview”. Where did the idea for this initiative come from? How does it support innovation and knowledge sharing within your team?

I don’t exactly remember. I believe I came up with this idea, but if one of my colleagues recalls it differently, then I’m sorry. It started back in 2021. It was initially just about sharing interesting developments in technology, not necessarily related to coding or the area of our expertise (C++, NET/C#, WPF, cloud, etc.). I encouraged team members to share whatever they find engaging. For instance, I’m myself interested in gaming. I used to play games and still do occasionally. Meanwhile, one of our teammates, in his free time, is actively developing a game.

This idea evolved into a series of sessions. They are not mandatory, we don’t require you to share, but it is your privilege. I’ve been sharing some of my interests, architectural aspects and game-related stuff and my colleagues have also shared some pretty interesting facts related to machine learning, AI, gaming, advanced physics, development tricks, techniques and practises.

All team members can benefit from it in their own way. Maybe they will never use that knowledge, but I believe that having these discussions and spending time together, focusing and trying to understand the one who is sharing currently, is good for team spirit and bonding.

Even if I will never write my own physics engine for a game, it’s fine. But I understand my colleagues’ perspective and the level of effort, obstacles, and problems they face. For instance, developing shaders or how the rendering pipeline works in different game engines. If someone works with passion on a subject, then I believe they will benefit from our sessions. After all, we all share the same passion – creating innovative solutions.

And how often do you organize those sessions? Are they regular meetings?

At first, I thought that there would be enough topics to share to have them every week. We started with having sessions every Tuesday or Thursday. But then I realized, I didn’t want to push or make this uncomfortable – like we were doing something just to fill a calendar slot. So now, we hold those series when people want to share something and we have interesting topics to discuss. You don’t need to be an expert on a given subject. You can share whatever you know and find useful for others. Usually, each year we have those sessions every few weeks, perhaps 5 to 10 weeks.

Łukasz Wątor at Runmageddon

Łukasz Wątor at Runmageddon

Most people at Tronel know you as an enthusiastic runner. How do you relax in your free time?

I used to ride a bike very often, but it was quite some time ago. Somewhere back in 2013, I was literally riding a bike every day, even after work or during the nighttime doing some downhill sessions. Now I ride a bike, but not that often, and not that reckless.

I prefer enduro riding, which involves riding up and down the hill. I like riding in the forest, among the trees and hills, and even on mountains. And often when you train one sport, you become naturally interested in doing some other, related activities. That’s why I also started running. And whatever I do, I always do it in the best possible way. I don’t like doing things partially or “just enough”, so maybe that’s why people say I am an enthusiastic runner. I even have a photo from Runmageddon on my profile picture. It was a nice time, running for a couple of hours in a difficult terrain, about 13 kilometres around the city of Myślenice and Mount Chełm. This is also an area where I used to ride my bike, and there are very nice tracks and areas to ride.

I recently had to reduce the time I spend on these activities, but I hope I will be able to get back to enduro at some point, maybe without the late-night forest rides.

Portrait of Łukasz Wątor

Łukasz Wątor

Performance Solution Architect at Tronel

The leader of a protocol agnostic team specializing in developing high-performance embedded solutions. Łukasz’s extensive experience and passion for software engineering drive him to consistently surpass expectations and deliver innovative solutions that push the boundaries of what’s possible in the industry.

By Anna Kazarnowicz