Clean architecture & C++20 concepts at XM


Details
We are happy to announce our first meetup that will be held physically at XM, in Athens.
We will have two talks, one about C++20 concepts and another about software design and clean architecture. After the talks there will be time for Q&A, food and networking.
π Location π
- Michalakopoulou 80 street, 1st floor.
- Attendees should say they are there for the XM meetup.
β° Date & Time β°
- 15th of January 2025, 19:00
π Prerequisites & Target audience π
The talks are aimed at developers who are interested in C++.
Some knowledge of templates is required to follow the first talk.
The second talk is more general and can be followed by anyone working with software, but may use C++ examples.
π¬π· Language π¬π§
- Greek unless there are non-Greek speakers in the audience.
π JetBrains license ruffle π
- At the end of the event we will ruffle out 2 yearly licenses for a JetBrains IDE.
π Agenda π
- 19:00 - "Intro, Agenda of meetup" by Dimitris Platis
- 19:05 - A message from our sponsor - XM
- 19:10 - "Let's get comfortable with concepts in C++20" by Dimitris Platis
- 19:55 - 5' break
- 20:00 - "Software Design & Clean Architecture" by Lefteris Eleftheriades
- 20:45 - Pizza, kindly offered by XM π
π€ About the talks π€
Let's get comfortable with concepts in C++20
In this talk we will introduce a powerful new feature in C++20: Concepts.
Concepts are a way to specify requirements on template parameter types and to make templates more expressive and easier to understand.
We will show how to:
- Use concepts to create "interfaces" for your template types
- Simplify your code instead of using SFINAE
- Display better error messages when a constraint is not satisfied
By the end of this talk, you will know how to use `requires` to create "contracts" for your templates and apply `concept` to constrain the acceptable types.
Software Design & Clean Architecture
A well-architected system is one that focuses on maintainability, testability, and loose coupling.
To achieve this, developers need to layer their code. Layers are loosely separated by defining clear input and output interfaces.
Clean architecture suggests the following layers (from higher to lower):
- Domain layer: Contains entities and business objects.
- Application layer: Includes use cases & orchestrates the flow of data.
- I/O layer: Encompasses user interfaces, Web API endpoints, databases, and system calls.
The interfaces are defined by the higher-level layers in a way that makes them agnostic to the lower-level implementations. This means the chosen API (interface methods and exceptions) must not expose implementation details of the lower layers.
Object-oriented principles βsuch as single responsibility, open-closed, interface segregation, and dependency inversionβ serve as a guide for evaluating software design. As with any engineering problem, a perfect solution may not always be possible. In such cases, compromises must be made by revisiting the priorities of a well-architected system.
π About XM π
XM is a leading international fintech company, committed to shaping the future of online trading through innovative solutions. Established in 2009, the XM Group has grown exponentially with a global team of over 1,400 employees around the world.
Headquartered in Cyprus, XM operates from offices in Greece, UK, UAE, USA, South Africa, Belize, and Uruguay, delivering innovative, reliable, and comprehensive services in currency trading in more than 30 languages to over 10 million clients worldwide.
Guided by its core values, Big. Fair. Human., XM consistently ranks as a top-rated workplace, having received Platinum accreditation from Investors In People, alongside consistent recognition as one of the top Best Workplacesβ’.
![Photo of [GRCCP] - Athens C++ Meetup group](https://secure-content.meetupstatic.com/images/classic-events/492130825/56x56.jpg?w=56?w=128)
Clean architecture & C++20 concepts at XM