Functional Programming

Trainings

Advanced Scala

Scala is for better or worse is considered a difficult language. Often it is because of highly technical blog posts or instructions that confuse more than enlighten. This Advanced Scala course it to take this supposed "hard material" and simplify it for audiences so that the language becomes within reach.

Apache Spark

Apache Spark is a data analysis and aggregation tool built atop Scala. It is also a distributed calculation tool across multiple worker machines in a cluster. What makes the relationship of Spark and Scala so special is the ability to perform data analysis with functional programming or SQL.

This course is tailored for data analysts and engineers looking to harness their data workloads and develop solutions.

RXJava

RxJava is a Java VM implementation of Reactive Extensions: a library for composing asynchronous and event-based programs by using observable sequences.

It extends the observer pattern to support sequences of data/events and adds operators that allow you to compose sequences together declaratively while abstracting away concerns about things like low-level threading, synchronization, thread-safety and concurrent data structures.

This class introduces you to the history of RXJava, what purpose it serves, using marble diagrams, and using it in a production environment.

Talks

Understanding JVM Futures

Starting with JDK 5, we have had Futures, and they mostly went ignored. Now with concurrency and reactive technology in demand, it is essential that we understand what futures are, and how to handle them and make use of their power in asynchronous systems.

What's new in Scala 3 "Dotty"?

In the alternative JVM Language arena, Scala has come out with a new feature set under the code name "Dotty", now called Scala 3. Let’s take a look at some of the cool new stuff that we can use. This presentation will assume basic Java knowledge and no Scala knowledge is required.

Introduction to Vavr.io

Java 8 is pretty great, but mix in JavaSlang (now called Vavr) and get ready for some functional programming excitement.

TypeLevel Cats

Imagine toString, equals, and hashCode in a single class. Can you change implementations on the spot? Probably not, there may be too many dependencies on your implementation. Time to break out an adapter pattern, a utility class, or better yet, a type class! A type class is a kind of template in very static functional programming languages. Imagine a template that can read, write information as a side effect as well? Type classes are powerful.

Functional Reactive Programming on the Front-End using Elm

The silent and deadly competitor to React and Angular. Meet Elm. All functional and client language. Absolutely Clean.

Nix: Sandbox and Reproducible Builds

We have gone through a lot when configuring our computers with a language, with an editor, and maybe even setting up Git. For every project, though, we may need a different set of tools. In one, you may require Java 17 with a particular version of Kotlin. Another will require an npm of a specific version. You could use something like SDKMan for Java or a node version manager for Node. The problem is that you must install it and ensure you do it correctly for every project. The global installation won’t cut it; the more complex your project dependencies, the more tedious it will get. Nix provides consistent installation of tools so that it gets right every time and for every project. It manages all project dependencies so you can consistently build your project.

Reactive Streaming with RXJava

ReactiveX is a set of Reactive Extensions developed by Netflix, and is developed for various programming languages, like Java, Scala, and Clojure. ReactiveX overhauls the observable design pattern to achieve reactive goals. This presentation will solely focus on the Java version of ReactiveX, RXJava.