Senior Software Engineer at ThousandEyes (part of Cisco) with a wide range of interests, from designing distributed systems to tinkering with programming languages. I love sharing my passion and knowledge of mathematical foundations underlying functional programming languages. As part of the Endpoint team at Cisco ThousandEyes I work on scaling our systems to cope with the 25x growth that came over the last year.
What the ƒ is a Monad? If this question has kept you up at night, this talk is for you.
Monads are a key part of Functional Programming. They allow us to write clean, composable code and removes boilerplate.
Yet, monads are feared by many. Here I will debunk their mythical complexity.
In this talk we will explore two of the foundations of Functional Programming: functors and monads. We will look at Functional Programming from a theoretical perspective, but we won’t get lost in mathematical details. Using simple diagrams and practical examples we will build a clear understanding of monads. This is the perfect talk for anyone that feels baffled by functional programming!
Scala has Sealed Trait + Case classes; Kotlin has Sealed and Data classes, and Java recently joined the party with sealed interfaces and records; They are called Algebraic Data Types aka ADTs.
You may wonder, what is algebraic about those types? Can you add them? Can you multiply them? Are they useful? Spoiler alert, the answers are yes, yes, and yes!
In this talk you will be introduced to ADTs and learn how you can do basic arithmetic with them. We will see how they can be used in practice and why they are a natural fit with Functional Programming languages.
We will even explore how high school algrebra can give us insight about our code.
Since the beginning of 2020, the ThousandEyes (Cisco) Endpoint product has grown by a factor of 25! Scaling systems to support a high number of users while maintaining the same level of performance is a challenge that all high growth products will face.
In this session, we will present the lessons we have learned in our scaling journey so far, some of which were painful, all of which were enlightening. Along the way, we will deep dive on some of the architecture decisions that were made, and talk about the tricky art of uncovering scaling and performance bottlenecks.