Close

Teiva Harsanyi



Senior Software Engineer - Go & Java


About Me

I am specialized in backend development, distributed systems and concurrent programming.

I have extensive experience in designing and implementing resilient, responsive, scalable and maintainable systems.

I love challenges, learning and sharing. Last but not least, I am also an open-source enthusiast.

Languages: 🇬🇧 🇫🇷




Interests

I am interested in complex projects facing technical challenges such as low-latency/high-throughput, scalability, data consistency, etc.

My main programming language has been Go since 2017.
I enjoy writing pragmatic, clean and maintainable code (or at least finding the right balance).

Experience

Utility Warehouse - London 🇬🇧

Senior Software Engineer

Software engineer on the company's communication platform:
• Proposition, design, and implementation of the v2 (moving from a distributed monolith to a microservice architecture)
• Development quality & testing improvements
• Observability
• SLA

Result: Average latency reduced by +90%, elastic architecture, resiliency improvements

Environment: Go, NATS, gRPC, CockroachDB, etcd, Redis, Elasticsearch, Prometheus, Jaeger, Docker, Kubernetes, AWS

SkySoft-ATM - Geneva 🇨🇭

Software Engineer

• Proposition, design, and implementation of a safety-critical flight data repository based on CQRS and Event Sourcing

Main challenges: concurrent accesses, responsiveness, resiliency

Result: Repository deployed and used by the Swiss air traffic control center (blog post)

Environment: Java, Spring Boot, Axon, Elasticsearch, Event Store, CQRS, Event Sourcing


• Lead developer of a migration project from a monolith to a microservice architecture

Result: Project & business scoping (event storming workshops), technical stack evaluation, development of the first microservices (e.g. flight trajectory prediction)

Environment: Go, Kafka, Elasticsearch, Travis, Docker, Kubernetes

Axa - Paris 🇫🇷

Integration Architect

• Member of the Integration Design Authority: expertise and support to the different entities of Axa Group
• Leader of the Axa integration framework: distributed caching, NoSQL connector, reactive library, monitoring, etc.

Result: Delivery of the new major version to Axa Group entities

Environment: Java, Vert.x, Couchbase, Hazelcast, Elasticsearch, Docker, webMethods

Airbus Helicopters - Marseille 🇫🇷

Integration Technical Leader

• 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

Atos - Toulouse 🇫🇷

Software Developer

Software developer then technical leader (8 developers)

Result: Industrialization and improvement of the quality

Environment: Java, webMethods, Jenkins

Writing

I enjoy writing (~40 posts published). Here are some examples:



1 Year of Event Sourcing and CQRS

I designed and implemented a system based on CQRS and Event Sourcing principles. This post was my one-year anniversary on the project.

Read on Medium

The Top 10 Most Common Mistakes I’ve Seen in Go Projects

This post is my list of the most common mistakes I’ve seen in Go projects (pointers, error management, Go contexts, etc.).

Read on Medium

A Closer Look at Go’s sync Package

A deep dive into the synchronization primitives from the Go sync package: Mutex, RWMutex, WaitGroup, Map, Pool, Once & Cond.

Read on Medium

Parallel Merge Sort in Go

An implementation of the merge sort algorithm using Go. It's a way to dive in the concurrency primitives of the language.

Read on Medium

Understanding the LMAX Disruptor

Understanding the principles of LMAX Disruptor, an inter-threads communication library.

Read on Medium

A 10-Minute Introduction to Scala

An overview of the Scala programming languages in 10 minutes: types, methods/functions, closures, classes, objects, traits, etc.

Read on Medium

Solving Algorithmic Problems: Find a Duplicate in an Array

Given an array of n + 1 integers between 1 and n, find one of the duplicates. If there are multiple possible answers, return one of the duplicates.

Read on Medium

Why is a Canonical Data Model an Anti Pattern

A post to describe why, in my opinion, a unified data model is a bad approach for a company.

Read on Medium


Find out more on medium.com/@teivah

Open Source

ReactiveX/RxGo

2.4k ⭐

Reactive Extensions for the Go Language

Project leader of the v2

Algo Deck

3k ⭐

An open-source collection of +200 algorithmic cards.

Helping the developers in preparing their algorithmic & data structure interview.

gosiris

183 ⭐

An Actor Framework for Go

golang-good-code-bad-code

114 ⭐

Making a Go code idiomatic

bitvector

61 ⭐

Static Bit Vector Structures in Go

onecontext

21 ⭐

A Library to Merge Existing Go Contexts

multilock

5 ⭐

A Go Library to Efficiently Store a Set of Mutex or RWMutex


Find out more on github.com/teivah


Mentoring

Codementor



I am available on Codementor (an online platform providing instant one-on-one help for software developers) if you need some help 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."

Soft Skills



Technical Skills