Avanscoperta
Applied Functional Programming

Applied Functional Programming

Functional Programming made simple

The next edition of the workshop will be in Italian. Please visit the Italian page of the workshop for the most up-to-date information.

The workshop Applied Functional Programming by Matteo Baglini is structured to put functional programming into practice. It is aimed at those who have already tasted this paradigm and want to take a leap forward in its adoption.

Even if we deal with abstract and mathematical topics, including the famous Monads, the workshop maintains an extremely practical approach: the right level of theory and lots of coding sessions. We will work with TypeScript.

Objective of the course: understanding in a simple and pragmatic way how to concretely apply pure functional programming techniques and principles using Typescript.

Target audience

The workshop is aimed at professional software developers, both in the back-end and front-end, with a medium/high level of experience with mainstream languages ​​such as Java/Kotlin/C#, and obviously TypeScript, and who have already come into contact with the functional world (and concepts such as immutability, high-order functions, List manipulation via map/filter/reduce/etc functions).

We will make use of concepts considered advanced in the aforementioned programming languages ​​(such as Generics). Therefore this course is not suitable for those who are starting their journey in the world of programming.

Topics

Some of the topics we will cover:

  • understanding the impact of working with referential transparency
  • designing large systems as the sum of small compostable units
  • model behaviors, constraints and domain data using functions and algebraic data types
  • obtaining an understanding of the main functional structures: Functor, Applicative, Monad, Foldable and Traversable
  • building a complete application with infrastructure, domain and testing.

Program

The workshop aims to provide participants with a practical mastery of the main concepts and principles underlying pure functional programming, to make the most of these techniques in everyday life with their own programming language and technology stack.

Together, we will study and use functional structures while building a complete application, following good design patterns and a separation of responsibilities.

Each session is supported by the code that will be written during the workshop working in small autonomous groups and reviewed together with the support of the trainer.

Agenda

Session 1 – Let’s lay the foundations

  • Functional Programming – Introduction and benefits
  • Building blocks – modules, functions and algebraic data types
  • Pattern matching and multiple dispatch.

Session 2 – Let’s build an application from scratch (part 1)

  • Introduction to the application
  • Let’s see the different architectural layers
  • Type-driven design of the domain – bottom-up approach
  • Let’s implement the domain behaviours
  • Micro testing – testing the domain only.

Session 3 – Side-effects

  • Side-effects – how to introduce them in a side-effect-free system
  • Functor and Monad – mastering the key combinators
  • Custom Monad – developing a not-built-in monad from scratch
  • Catalogo Monadi – vediamo le differenti semantiche
  • Applicative, Foldable and Traversable – other combinators.

Session 4 – Let’s build an application from scratch (part 2)

  • Exposing the domain via infrastructure
  • Macro testing – acceptance test of the application
  • Run it – let’s see it running
  • Wrap up – final notes.

Learning objectives – What are we gonna learn

  • Put Functional Programming concepts into practice
  • Define domain constraints using the type system
  • Choose whether and which Monad to use for a specific use case
  • An in-depth knowledge of various concepts orthogonal to the programming language that you can immediately exploit in your current application stack
  • Warning: This is not a course to learn Typescript or a particular framework/library.

Expect to get your hands dirty – How it works

The key word of this workshop is “practice”: the theoretical moments will be few, but essential. The split will be more of less 30% theory and 70% practice.

We will build an application from scratch and use the difficulties we will gradually encounter as leverage to introduce and delve deeper into the various building blocks.

The course will take place online and live streaming for a maximum of 12 people: the trainer and all participants will be in a video conference and will have a series of digital tools available to interact with each other and work hands-on.
Despite the online mode, the course maintains its interactive and participatory approach.

For this reason, it is required that all participants have their cameras turned on for the entire duration of the workshop for better communication.
It will not be a passive course, made only of slides and pre-recorded videos.

We will apply some principles of the Training from the back of the room method, which emphasizes activities over lectures.
Finally, sharing between participants and the support of the trainer complete the training framework.

Why should I buy a ticket?

This workshop will allow you to delve deeper into the principles underlying functional programming and experience software development in a functional style, thanks to exercises, examples, and group discussions.

Matteo will give you the tools to help you evaluate the pros and cons of functional programming in a more objective manner: the final decision on whether or not to make the leap is up to you!

Programming language – TypeScript

We will use Typescript (TS) during the workshop, and we will use the following libraries:

An intermediate knowledge of TypeScript is required to participate in this course. Participants must be familiar with:

  • tool chain tsc, ts-node, ts-jest, npm/yarn, etc.
  • primitive types: string, number, any, Array, etc.
  • define custom type alias and interface.
  • spread operator and restructuring.
  • the many ways to define a function.
  • use high-order functions (come array map or filter).
  • union, literal and tagged union types.
  • type narrowing.
  • generic types and functions.

A good starting point is the following e-book, which you can download for free: Typescript Handbook.

Programming language – TypeScript

During the workshop, you will need to work on your laptop, therefore please make sure you instal the following:

  • Git (and graphic client, if needed) to clone the repo https://github.com/doubleloop-io/applied-fp-workshop-ts or one of its forks,
  • NodeJs, an LTS version of the 16.x or 18.x series,
  • Yarn, a version of the 1.22.x series,
  • an IDE, such as WebStorm, or an editor like Sublime, Visual Studio Code, Vim or Emacs, with their plugin/language server protocol installed.

F.A.Q.

Pre-requisites: Are there any minimum requirements to join this workshop? Is there anything I need to install?
It is required that participants have an intermediate knowledge of Typescript. Check the paragraph “Programming language – TypeScript” for further info.

Level of experience: Is it a workshop for beginners or experts?
The balance tips towards “medium/expert level software developer”.
You must have a good level of knowledge of the language. Check the paragraph “Programming language – TypeScript” for further info

I develop software in Java/Kotlin/C#/JavaScript/PHP/ecc, how can I benefit from this workshop?
To date, we do not believe there is a language that does not have functional programming constructs. In the past, we have hosted Java, Kotlin, C#, PHP, JavaScript, TypeScript, Erlang, Elixir, Scala programmers among the participants.
By participating in this workshop you will take home in-depth knowledge of various concepts orthogonal to the language and which you can immediately exploit in your current application stack.
However, remember that, as already mentioned, you need to have a good level of knowledge of TypeScript. Check the paragraph “Programming language – TypeScript” for further info.

Is there anything I must do before I buy a ticket for this online workshop?
If you have a computer/tablet, a stable connection (at least 20 Mbps in download and 10 Mbps in upload), earphones, a microphone, and a webcam, then you’re ready to join the workshop.
You’ll get detailed information on what tools we’ll be using and how to get ready a couple of weeks prior to the workshop.
Check out your connection’s speed.
The workshop will keep its highly interactive and hands-on spirit despite being online. This is why we require that all participants keep their webcam on for the whole duration of the workshop: this will enhance the quality of the communication and of the workshop as a whole.

N.B.

This workshop will be confirmed upon reaching the minimum number of participants. We’ll send an official confirmation to all registered attendees 10-15 days weeks prior to the workshop dates.

LAST CHANCE! Are you interested in this course? Please purchase your ticket by Friday 7 June 2024, to help us confirm it as soon as possible.
If we do not reach the minimum number of participants required to activate it by this date, the course will not be confirmed and will be postponed… don’t wait until the last minute to buy your ticket!

The sooner we reach the minimum numbers necessary for its activation, the sooner we can confirm the course and guarantee its execution.
If the course is confirmed, you will see a green tick on this page that says “confirmed/guaranteed to run”, and you will be able to buy tickets even after this date.

About the workshop

Language: English.
Laptop: Yes, check out the FAQ section.
Maximum number of attendees: 12 participants.
Tools and Workstation: The workshop will take place online and in live streaming by using digital tools. You’ll get detailed information on how to join the online workshop, how to get ready for it and how it will work once the workshop will be confirmed.
It is highly recommended that each participant joins the workshop from their own workstation: not sharing one same laptop and/or room with other people will improve the remote experience.

Book it for your company

Contact us using the form at the bottom of this page if you wish to arrange a private custom edition of the Applied Functional Programming Workshop (available in TypeScript, Scala and Kotlin).

Testimonials

Il workshop perfetto se vuoi entrare nel mondo del functional programming.Filippo De Pretto

Un corso per chi desidera sfatare il mito secondo cui la programmazione funzionale è difficile: due giornate con Matteo sono sufficienti a mostrare come, al contrario, sia “facile”, una volta adottata la giusta prospettiva, sfruttare le tecniche di FP per scrivere codice più testabile e con meno bug.Pietro Martinelli

Hai letto e studiato parecchio su Functional Programming ma fai fatica a unire i puntini (teoria e “progetti reali”)? Questo workshop crea nella tua testa questo “ponte” e ti accompagna nei primi passi. Sta a te continuare a percorrerlo!Emanuele Rabino

Functional Programming made simple and human.Luca Zulian

Il paradigma funzionale è affascinante ma anche di difficile comprensione nei suoi aspetti più teorici. Questo workshop è perfetto per superare quello scoglio.Marco Damiani

Durante questo corso Matteo mi ha finalmente dimostrato che i concetti alla base della programmazione funzionale non sono “puramente teorici”, ma possono essere applicati nel lavoro di tutti i giorni.
Con esempi mirati, il corso è un tour “da zero a cento” nel mondo funzionale.
Alessandro Melchiori – Software Architect Codice Plastico

Matteo non delude mai e anche questa volta ha preparato un corso denso di concetti della programmazione funzionale accompagnati da numerosi esempi “real-life”.
Tre giorni in un crescendo continuo! Partendo dai piccoli mattoncini di funzioni fino ad arrivare a interi programmi in cui prevale l’armonia: tutto cio’ che vale per il piccolo vale anche per l’intera applicazione senza eccezioni (nel vero senso della parola :-)).
Insomma se vuoi davvero, una volta per tutte, capire il pensiero funzionale non puoi perderti questo corso.
Emanuele DelBono – Software Engineer

 

Matteo Baglini

He’s been focused on simplicity and cost of change to create codebases that better adapt to the ever-evolving business world. Matteo has gained experience in multiple domains and environments (web, desktop, embedded, mobile) with a strong focus on clean code, design and architecture.

Approfondimenti

Video

Onion Architecture with Functional Programming sauce, talk di Matteo Baglini

Refactoring Legacy Code, intervista a Matteo Baglini con Alberto Brandolini.

Articoli

Let’s Get Functional (Programming)!: Gabriele Lana intervista Matteo Baglini.

I don’t like complicated codeintervista di Matteo Baglini a Michael Feathers.

Come e perché riprendere il controllo di Legacy Code, intervista a Matteo Baglini sul nostro blog.

About us

Avanscoperta is a growing community of professionals learning together, exchanging experiences and ideas, exploring uncharted territories.

We carefully select the most relevant topics and the best trainers and thought leaders worldwide with an eye to the most engaging teaching techniques.
Are you ready to learn with us?

Are you interested in this course?

If you have any specific questions, or if you want to receive more information on dates, content or offers about this course, drop us a line. We'll gladly get back to you!







    NEWSLETTER

    Get exclusive content from experts in software development, technology, business and design!



    SUBSCRIBE TO OUR NEWSLETTER!
    :-)

    Subscribe to our newsletter!