Skip to content
<Thierno DIALLO/>

About me

A little more about who I am.

My route into software was not a childhood master plan. I initially imagined studying mechanical or electrical engineering. A teacher at my high school encouraged me to pursue computer engineering because of the opportunities it offered and the promise it held around 2014, while a couple of technology-heavy TV shows had already made the field look intriguing. That practical choice became a genuine fit once I discovered that I enjoyed designing systems as much as coding them.

Today, as a Senior Software Engineer, I work mainly on Java and Quarkus backend systems for healthcare software. I am happiest when I can take a problem end to end: understand an ambiguous context, compare technologies, make the trade-offs explicit, shape the architecture, implement a reliable solution, and document it so others can use, maintain, and extend it. That approach has taken me through identity and security integrations, multi-country platform capabilities, unfamiliar healthcare technologies, and AI-agent workflows for developers. The technologies change; the part I enjoy is turning complexity into something coherent and useful.

I care most about finding the right balance for each context. Reliability comes first, followed by security, performance, maintainability, simplicity, and extensibility. No design can maximize all of these qualities at once. That is why I see the ability to find the right trade-off as one of the essential qualities of a good software engineer. Colleagues can expect me to think carefully, care about consistency, and treat their blockers as problems worth helping solve.

Looking ahead in my career, I want to grow into hands-on technical leadership and, over time, deepen my expertise in software architecture. I want to support that growth with strong cloud and platform engineering knowledge while continuing to code.

Away from the keyboard, I enjoy playing and watching football, as well as running outdoors to clear my head and stay fit. Want to know which club I support? Take a look around, then send me a message. I have a few solid arguments ready for that choice too. 😉

Senior Software EngineerMontpellier, France

Education

Engineering Degree (Diplôme d’ingénieur de l’École Centrale de Lyon)

September 2018 – October 2021

École Centrale de Lyon

Selected for the double-degree program with École Supérieure Polytechnique de Dakar through a competitive process. The multidisciplinary general engineering curriculum broadened my computer engineering background with a cross-disciplinary approach to engineering problems.

Engineering Degree in Computer Engineering (Diplôme d’ingénieur de conception)

October 2017 – October 2021

École Supérieure Polytechnique de Dakar

I completed ESP’s Engineering Degree program in Computer Engineering, where I built a strong foundation in computer science and engineering. This academic path later led to my selection to join École Centrale de Lyon through a double-degree program and laid the groundwork for my career as a software engineer.

University Diploma of Technology (DUT) in Computer Science

October 2015 – July 2017

École Supérieure Polytechnique de Dakar

Selected through an entrance examination and an academic-record review, I completed this two-year post-secondary program in Computer Science. It gave me my first technical foundation before I was selected to continue into ESP’s Engineering Degree program in Computer Engineering.

Experience

AI Agent Governance and Developer Enablement

January 2026 – Present

CompuGroup Medical (CGM)

As AI coding agents became part of our daily work at CGM, their rapid adoption exposed inconsistent quality, duplicated effort, unreliable outputs, and the absence of common standards. In my role as a Software Engineer with Senior Developer seniority, I responded by leading the creation of a shared framework for the team.

I authored a governance model covering ownership, contribution and review lifecycles, independent testing, preview rollouts, composability, non-overlapping activation rules, and recommended quality thresholds. To make evaluation repeatable, I designed a weighted scoring rubric and implemented a deterministic Python tool that evaluates skills and workflows, reports critical issues, and ranks improvements by impact.

I also built reusable agent skills for safe Kubernetes diagnostics, Jira issue management, GitLab pipelines and merge requests, local Git operations, feature-environment resolution, and automated quality evaluation. Two orchestration workflows combine these capabilities into structured troubleshooting and evaluation processes, with explicit contracts, reusable dependencies, safety guardrails, and failure handling.

These assets are used broadly across the team. I continue to review contributions, help colleagues create and debug their own workflows, support them when they encounter AI-agent or tool-integration issues, and evolve the framework based on practical feedback.

OIDC Federated Authentication

March 2026 – July 2026

CompuGroup Medical (CGM)

Company-wide Single Sign-On was the next step for a multi-tenant healthcare SaaS platform used in France and Italy. As a Software Engineer with Senior Developer seniority at CGM, I designed and implemented the enterprise identity-provider integration end to end.

The key architectural boundary was to delegate authentication while keeping roles, permissions, and organizational access under the platform’s control, without removing the existing username-and-password login.

I owned the architecture, stakeholder coordination, Java/Quarkus implementation, security model, and technical documentation. The integration uses the OIDC Authorization Code Flow with PKCE, Pushed Authorization Requests, state, and nonce validation.

I designed server-side management of authentication state and external tokens, including refresh and session-coupled cleanup, as well as a provider-agnostic identity-mapping model that rejects ambiguous account matches. I also solved callback routing for dynamic test environments without weakening redirect validation.

The integration is now in production and actively used by healthcare professionals, providing secure federated authentication while preserving internal authorization boundaries.

Dynamic Integration Configuration

January 2026 – March 2026

CompuGroup Medical (CGM)

Third-party integrations did not all use the same connection settings: endpoints varied by deployment environment and user profile, while the relevant configuration was scattered across files and application code. As a Software Engineer with Senior Developer seniority at CGM, I took ownership of replacing that fragmented model with a centralized configuration-resolution system.

Routing a test or pilot user to a non-production endpoint while healthcare professionals continued using the production endpoint often required a code change and redeployment, with no simple way to create an isolated exception for one user.

I replaced this with a three-tier resolution model evaluated for each user and integration: an explicit user override takes priority, an integration-specific strategy applies routing rules, and a database-managed default provides the fallback. This made routine endpoint changes and individual overrides configurable without redeploying the application.

I used Strategy and Factory patterns to keep custom routing logic isolated and extensible. I also designed the JPA data model, implemented the Java/Quarkus service and API, and documented the architecture through a formal RFC and technical diagrams. The system is actively used in production.

OAuth 2.0 Token Exchange

September 2024 – February 2025

CompuGroup Medical (CGM)

CGM products in multiple countries needed to reuse selected platform services on behalf of already authenticated users without requiring another sign-in or introducing multiple external token formats into the platform.

To create that secure bridge, I designed and implemented an OAuth 2.0 Token Exchange capability end to end as a Software Engineer with Senior Developer seniority at CGM.

I chose RFC 8693 and owned the full lifecycle, from protocol architecture and security design to the Java/Quarkus implementation, OpenAPI contract, and consumer documentation. I designed a Strategy and Factory architecture that isolates partner-specific token validation, allowing new integrations to be added without changing the core exchange flow.

Requested scopes are constrained by partner-specific permissions before a uniform internal platform token is issued, enforcing least privilege across downstream services. The capability is now in production and actively used by CGM products, providing a single, auditable security boundary for cross-product service access.

Healthcare Smart-Card and DMP Integration Investigation

October 2023 – March 2024

CompuGroup Medical (CGM)

French healthcare smart cards and the DMP introduced an entirely new integration surface for the platform: physical readers, workstation-local software, real-time card events, regulated transactions, and unfamiliar healthcare protocols all had to work together.

As an Intermediate Software Engineer at CGM, I led the initial technical investigation and built a working proof of concept for CPS and Carte Vitale readers and France’s DMP shared medical record system.

I mapped and tested the end-to-end ecosystem, including reader sessions, practitioner and patient card access, asynchronous insertion and removal events, and key DMP document workflows. I created reproducible Postman examples and comprehensive technical documentation, and helped define an architecture separating frontend event handling from backend transactional operations.

My role was to make the integration path actionable, not to build the final production feature: I delivered working examples, architecture diagrams, live demonstrations, knowledge-transfer sessions, and implementation support to the delivery teams. Those teams used this foundation to complete the production capability, which is now heavily used by doctors.

Graph-Based Classification and Feature Variation

June 2023 – September 2023

CompuGroup Medical (CGM)

A single healthcare codebase had to vary services, interface components, and business behavior by country, region, practitioner type, and specialization without becoming a maze of conditional branches. As an Intermediate Software Engineer at CGM, I helped investigate and implement the classification system designed to solve that problem.

A colleague and I led the initial technology spike. I evaluated Apache AGE against the previously proposed Neo4j solution, reproducing the critical taxonomy and traversal queries in both technologies. Apache AGE retained Cypher-based graph modeling while running inside the platform’s existing PostgreSQL infrastructure, avoiding another database technology to deploy and operate.

After the decision was approved, I contributed substantially to the shared Java/Quarkus implementation, documentation, developer guidelines, demonstrations, and onboarding support.

The resulting production system combines graph-based resolution, Redis caching, and a Gizmo-powered Quarkus extension that lets services select context-appropriate implementations declaratively. It is actively used across the platform, supporting multi-country behavior from one codebase while keeping variation logic isolated and maintainable.

Software Engineer Internship – Digital Credit Platform

March 2021 – July 2021

KimiaPay

KimiaPay wanted to validate a digital salary-advance product for employees with limited access to traditional credit, with partner employers participating in request approval and repayment assurance. During my final-year engineering internship, I served as the Software Engineer Intern and sole technical owner within the small startup team.

The central challenge was architectural: translating a financial product with several actors, approval stages, security requirements, and future extension needs into a coherent system that one developer could deliver within four months.

I designed a service-oriented architecture comprising a cross-platform mobile application for borrowers, a web back office for administrators and employer monitors, backend business services, and a centralized data layer connected through REST/JSON APIs. I then carried that architecture through implementation, testing, and deployment.

The product included token-based authentication, identity and employment-data collection, role-based access, multi-level approval, loan tracking, and a complete request lifecycle from submission through repayment or dispute. I deliberately selected AppGyver and Backendless to accelerate delivery under the project constraints while retaining custom JavaScript integrations where needed. The completed product was deployed and ready for a pilot phase.

Software Engineering Internship – Quarkus Migration Feasibility Study

May 2020 – August 2020

Amadeus

Amadeus wanted to understand whether migrating a flight-search application server from Spring/JBoss to Quarkus was technically feasible and worth the investment. My second-year engineering internship focused on that evaluation. The goal was not to change the application’s business behavior, but to determine how it could run on Quarkus and document the implications for future migrations.

Embedded in an agile engineering team, I created the Quarkus-based application and investigated compatibility issues involving external dependencies, CDI, unsupported Spring annotations, and class loading. Depending on the constraint, I used CDI producers, adapted selected components, developed Quarkus extensions, and compared both applications side by side in debug mode. I also escalated genuine framework limitations to the Quarkus community.

The migration was intentionally left incomplete when its scope exceeded the four-month placement. I instead delivered a decision-ready technical reference documenting blockers, solutions, trade-offs, and migration costs. Early measurements indicated substantial startup improvements, while I clearly documented their limitations.

The study gave Amadeus a reusable basis for evaluating future migrations and strengthened my judgment around framework compatibility and migration ROI. Working entirely in English within an international team also strengthened my professional communication through daily collaboration, meetings, technical discussions, and documentation.

Computer Lab Monitor Coordinator

September 2019 – April 2020

École Centrale de Lyon

École Centrale de Lyon kept its computer rooms open at night so students could study after regular staff had left. A team of paid student monitors supervised the rooms; as their coordinator, I organized the group and served as the administration’s primary contact.

I collected monitor availability, prepared schedules, handled last-minute absences, and balanced monthly hours so the workload and compensation remained broadly equitable. I also helped ensure that the rooms were used appropriately, responded to user incidents, escalated unresolved problems, and kept the administration informed when operational issues arose.

This role developed my ability to coordinate people fairly, maintain continuity when plans changed, and act as a reliable link between a team and institutional stakeholders.

Computer Science Reinforcement Instructor

October 2019 – January 2020

École Centrale de Lyon

École Centrale de Lyon’s intensive curriculum sometimes left students needing more time and another way into difficult concepts. Based on my computer-science background, the school selected and paid me to lead the computer-science reinforcement sessions for that subject area.

I prepared lessons and exercises, re-explained difficult concepts, reviewed assignments, ran practical workshops, and provided one-to-one support. The sessions focused on algorithms taught through Python, UML and application design, and broader computer-science engineering concepts.

This role taught me to identify where understanding breaks down, adapt an explanation to the student rather than repeat the original course, and translate technical ideas into clear, practical steps.

Software Developer Internship – Collaborative Skills-Sharing Platform

June 2017 – July 2017

SUITE

SUITE was exploring a collaborative mobile application that could make niche and local know-how easier to share and discover through training content, help requests, service offers, and online or in-person events. During my DUT internship, I worked as the Software Developer Intern and sole developer of the mobile client.

I owned the mobile work from requirements analysis through architecture and implementation. I modeled the user roles and domain with UML, then built the cross-platform application in React Native and integrated it with an existing Django REST Framework API provided by the SUITE team. The client consumed REST/JSON endpoints and supported distinct visitor, learner, trainer, and administrator capabilities.

By the end of the internship, I had implemented and presented the core mobile views and end-to-end flows, including browsing training content, authentication, posting help requests, and publishing trainings, events, and offers. This was my first substantial experience owning a mobile product lifecycle, from object-oriented design and technology selection to API integration and product demonstration.

Projects

Laajal Sa Diine

Laajal Sa Diine is a live short-form audio Q&A platform I designed and built independently to make practical Islamic guidance easier to find. The product combines a React and TypeScript client with a Node.js and Express REST API, MongoDB, and Amazon S3.

A central application challenge was content discovery: a French-language weighted full-text index ranks matches across multiple fields, while combinable filters and infinite scrolling make the library easier to explore. I also implemented JWT-protected administration with separate permissions for content, administrator management, and backups.

Taking the product live became another major challenge. Rather than use a fully managed hosting service, I deliberately provisioned and configured a Hetzner Cloud server, deployed the services with Docker, routed them through Traefik, and configured DNS through Cloudflare.

This gave me hands-on experience with deployment and operations across the application’s full path to production. The platform remains live, used by listeners, and maintained as an evolving side project.

  • React
  • TypeScript
  • Node.js
  • Express
  • MongoDB
  • Amazon S3
  • Docker
  • Traefik
  • Cloudflare
  • Hetzner Cloud

Waste-Container Fill-Level Alert System

GSF wanted collection teams to know how full waste containers were before planning their routes. For an ECL academic project carried out from September 2019 to April 2020, I served as technical lead as we designed a connected system to measure fill levels and transmit periodic data.

I led the electronics design and implementation, defining the communication path from an ultrasonic sensor and Arduino board to a LoRa gateway connected to GSF’s servers. I wrote the Arduino/C++ firmware and configured measurements and transmissions at 30-minute intervals to limit device activity and conserve battery power.

I coordinated with the mechanical team, which used ECL’s FabLab to manufacture a protective enclosure suitable for dirty and demanding conditions. We delivered a working, field-tested system and validated it in several waste containers. Without an intermediate relay, the LoRa communication reached approximately 100 metres.

The project strengthened my experience in embedded systems, low-power design, long-range communication, and multidisciplinary technical leadership.

  • Arduino
  • C++
  • LoRa
  • Ultrasonic Sensor

French Robotics Cup 2019 – Atom Factory

The 2019 French Robotics Cup challenged teams to design and build autonomous robots for Atom Factory, a 100-second match with several possible scoring actions and no prescribed order. Representing École Centrale de Lyon, I worked on our entry from September 2018 to June 2019, where strategy mattered as much as reliable execution.

As technical lead of the electronics team, I contributed extensively to the Python embedded software running on LEGO EV3 controllers. I worked closely with the mechanical team to align match strategy, physical capabilities, and software behavior, while coordinating the electronics work through implementation and integration.

We also applied closed-loop control concepts from our ECL coursework to regulate robot movement and position. Our robots passed official homologation and competed in the event. The project strengthened my experience in embedded programming, control systems, cross-disciplinary integration, and technical coordination.

  • Python
  • LEGO MINDSTORMS EV3
  • Embedded Systems
  • Closed-Loop Control

Persistence-of-Vision LED Display

For Polytechnique Day in 2018, the Robotech Club at École Supérieure Polytechnique de Dakar created a 60 Hz persistence-of-vision LED display that showed text sent from a smartphone over Bluetooth. Its LED assembly was mounted on a coil rotating 60 times per second; as it turned, the controller lit the appropriate LEDs at each angular position so the eye perceived stable text.

The completed system was successfully demonstrated at Polytechnique Day. As head of the club’s IT department, I developed the native Android application in Java, defined the communication format with the electronics team, and handled Bluetooth connection failures and retries.

I also divided the software work into tasks, set deadlines, and followed delivery to keep the IT stream aligned with the other teams. The project gave me practical experience coordinating software and electronics work around a shared interface and integration schedule.

  • Java
  • Android SDK
  • Bluetooth

Classroom Booking Desktop Application

A school in Senegal needed a clearer way for staff and teachers to view classroom schedules, find available rooms, and reserve them for upcoming courses. During my DUT, a friend and I volunteered to build a Java desktop application for that purpose.

I designed the MySQL database and implemented the Java backend using JDBC, while my friend developed the Swing interface. The backend checked room availability before saving a booking to reject schedule conflicts.

As my first substantial collaborative software project, it also challenged me to define the boundary between frontend and backend work, coordinate development, and integrate separately built components. The experience gave me a practical understanding of the problems Git solves in team development. We completed the application and handed it over to the school with its source code.

  • Java
  • Swing
  • JDBC
  • MySQL
  • Git

Technical Skills

Backend & JVM

  • Java
  • Quarkus
  • Python
  • Maven
  • JPA / Hibernate

Identity & API Security

  • OAuth 2.0
  • OpenID Connect
  • JSON Web Tokens
  • OpenAPI

Data & Messaging

  • PostgreSQL
  • MongoDB
  • Redis
  • Liquibase
  • RabbitMQ
  • MinIO

Cloud & Operations

  • Docker
  • Kubernetes
  • Helm
  • Microsoft Azure
  • AWS

Web Engineering

  • TypeScript
  • JavaScript
  • Node.js
  • React

Testing, Tooling & AI

  • JUnit 5
  • Apache JMeter
  • Postman
  • Git
  • GitLab
  • UML
  • GitHub Copilot
  • Windsurf
  • Claude Code