I'm a software engineer specializing in backend development and distributed systems. I have extensive experience in designing and implementing resilient, responsive, scalable, and maintainable systems. I love learning, sharing, and facing challenges. Last but not least, I am also an open-source enthusiast.
• Clean code 🧽
• Reliability 🧱
• Performance / Scalability ⚡
• Observability 👀
Languages: Go, Rust, Java
Spoken languages: 🇬🇧, 🇫🇷
Software engineer in the registry team (Docker Hub & Docker registry)
Environment: Go, PostgreSQL, Prometheus, Jaeger, k8s, AWS
Staff engineer in the matching domain (matching driver with passengers):
• Design, implementation, and operation of business-critical services with a strong focus on reliability and observability
• Reliability advocacy: SLO and reliability experimentations
Result: Delivery of new company-decisive features, quality & reliability improvements
Environment: Go, Kafka, Mongo, MQTT, Prometheus, Jaeger, k8s, AWS
Migration of a distributed monolith platform (customer communication) to microservices:
• Proposition, design, and implementation of the v2
• Focus on improving development quality & testing coverage (from unit to end-to-end tests)
• Observability improvements: business monitoring with Elasticsearch and distributed tracing with Jaeger
• SLA: SLO definition, SLI development, dashboards & alerting using Prometheus/Grafana
Result: Average latency reduced by +90%, elastic architecture, resiliency improvements
Environment: Go, NATS, gRPC, CockroachDB, etcd, Elasticsearch, Prometheus, Jaeger, Docker, Kubernetes, AWS
• Lead developer on the migration of the company's monolith to microservices
Result: Project & business scoping (event storming, DDD), technical stack evaluation, development of the first microservices (e.g. flight trajectory prediction)
Environment: Go, Scala, DDD, Kafka, Elasticsearch, Travis, Docker, Kubernetes
• Proposition, design, and implementation of a safety-critical flight data repository based on CQRS and Event Sourcing
Main challenges: concurrency, responsiveness, resiliency
Result: Repository deployed and used by the Swiss air traffic control center (blog post)
Environment: Java, Spring Boot, Axon, CQRS, Event Sourcing, Elasticsearch, Event Store
As a member of the Integration Design Authority:
• Expertise and support to different entities of Axa Group (Asia & Europe)
• Leader of the Axa integration framework: distributed caching, NoSQL connector, concurrency implementation library, monitoring, etc.
Result: Delivery of the new major version to Axa Group entities
Environment: Java, Vert.x, Couchbase, Hazelcast, ELK, Docker
• Technical leader of the Integration Competency Center
• Technical manager of multiple SOA projects
Result: The company became the most mature entity of Airbus Group in regards of its integration platform
Environment: Java, TIBCO platform, Informatica Data Quality, Jenkins
Software developer then technical leader of the development team (8 developers)
Result: Industrialization and improvement of the deliverable quality
Environment: Java, Jenkins
I'm currently writing a book with Manning that will be published in August/September 2022: 100 Go Mistakes
The main idea is to list 100 of the most common mistakes made by Go developers in various aspects of the language: code and project organization, data structure, loops, error management, concurrency, testing, optimizations, etc.
Meanwhile, I enjoy writing on my blog (+40 posts). Here are some examples:
I designed and implemented a system based on CQRS and Event Sourcing principles. This post was my one-year anniversary on the project.
This post is my list of the most common mistakes I’ve seen in Go projects (pointers, error management, Go contexts, etc.).
How understanding the processor architecture can help us in optimizing performance?
An overview of the Scala programming languages in 10 minutes: types, methods/functions, closures, classes, objects, traits, etc.
What is consistent hashing? How is it different from a standard hashing algorithm?
Find out more on blog.teivah.io
A few examples of open-source repositories that I maintain:
An open-source collection of +200 algorithmic cards to help developers in preparing their algorithmic & data structure interviews
An open-source collection of +200 algorithmic cards to help developers in preparing their system design interviews
Source code of 📖 100 Go Mistakes
Notification broadcaster in Go
A RISC-V virtual processor, written in Rust
I am available on Codementor, an online platform providing instant one-on-one help for software developers. I am working with engineers and students on the following topics:
"Fantastic engineer. Well spoken. Extremely helpful."
"Very knowledgable, smart guy with a very solid understanding of microservices and system design. Also very keen to help, clearly cares about doing a good job."
"Excellent engineer, extremely knowledgeable."
"Teiva is a really nice mentor. He solved my problems in few minutes and spent time with me to gave me additional explanations. His way of explaining things really appealed to me. I strongly advise Thanks you a lot."