ClojuTRE 2019

Functional Programming conference

Helsinki, Finland

Sept 26–27, 2019

:what

ClojuTRE 2019 is a Clojure and Functional Programming conference organized by Metosin. ClojuTRE 2019 will be held in Helsinki, Finland, on Thursday 26th and Friday 27th of September, 2019.

The event has single track, late start, short talks and a funky after-party for networking.

  • On Thursday, we have talks on both Functional Programming and general interest Clojure topics.
  • On Friday, we focus mostly on Clojure, while spicing it up with other FP content.

:about

We welcome both newbies and seasoned Clojurists, and other FP enthusiasts.

Free student and diversity tickets are also available.

For discussion about event Clojurians Slack has #clojutre channel.

Past events: 2018, 2017, 2016, 2015, 2014, 2013 and 2012.

The talks will be recorded and will be available on YouTube.

:location

In Helsinki, Finland.

Tapahtumakeskus Telakka
Henry Fordin katu 6
00150 Helsinki
Finland

:coming-from-abroad

You can fly to Helsinki-Vantaa (HEL). There is a train connection to Helsinki Central Railway Station.

:registration

ClojuTRE registration is open

:student-and-diversity-tickets

For free student and diversity tickets fill out this form.

:program

Thursday

Thursday is dedicated for presentations about other languages than Clojure. For those of you interested in Elixir, Haskell, PureScript and the rest.

Thursday - Talks - 12:30-19:40

Thursday - Afterparty

The afterparty will take place at Nitor.

Friday - Main Event

The venue is open from 9:30.

Friday - Talks - 12:30-19:40

Friday - Afterparty

The afterparty will take place at Gofore

:trainings

Trainings are organized on Thursday and Friday mornings before ClojuTRE 2019 starts. You can attend either a single morning of a training, a training on both mornings, or a different training on each morning.

From functions to AsyncIterables, without the magic

André Staltz
André builds open source software, teaches programming, and writes articles. He is enthusiastic about reactive programming, functional programming, frontend, mobile, and the decentralized web. André has authored the Cycle.js framework, the Callbag spec, and has been a core contributor to RxJS. Currently, he’s helping build an open source peer-to-peer social network with Scuttlebutt.

In this two-day training, André Staltz walks us through layers of abstraction in JavaScript. We start from plain values and functions. Then, we build higher and higher level abstractions, such as Getters, Setters, Callbacks, Promises, Iterables, Observables, and AsyncIterables, as a progression where each is based on another. This intermediate-level training is suited for all programmers who wish to gain deeper insight into the benefits and motivation of abstractions.

Learn how to Elm

Richard T. Feldman
Richard is a member of the Elm core team, the author of Elm in Action from Manning Publications, and the instructor for the Intro to Elm and Advanced Elm courses on Frontend Masters. He's been writing Elm since 2014, and is the maintainer of several open-source Elm packages including elm-test and elm-css packages.

Learn how to build a Web application using the Elm programming language! In this course, you'll learn how to render a web page using Elm's virtual DOM system, make it interactive using the Elm architecture, and perform async communication with a server over HTTP. Throughout the course, Richard will discuss tips and tricks for getting the most out of the language. Come see what the Elm experience is like!

Registration

prices
  • One morning (Thursday or Friday): 300 €
  • Two mornings: 500 €

VAT not included. Includes lunch and ticket to ClojuTRE on the day of training. Questions? Send us an email!

Sign up for trainings

:talks

#Topic TBA

Photo of Alex Miller

Alex MillerCognitect@puredanger,

Alex Miller works on maintaining Clojure and supporting the Clojure community at Cognitect. He co-authored the books Clojure Applied and the 3rd edition of Programming Clojure, both on Pragmatic Press. Alex is the founder of the Strange Loop, Clojure/west, and Lambda Jam conferences. He writes regularly at insideclojure.org.

#Dealing with unanticipated needs

Photo of Dave Snowden

Dave SnowdenCognitive Edge@snowded

Founder and chief scientific officer of Cognitive Edge. His work is international in nature and covers government and industry looking at complex issues relating to strategy, organisational decision making and decision making. He has pioneered a science based approach to organisations drawing on anthropology, neuroscience and complex adaptive systems theory. He is a popular and passionate keynote speaker on a range of subjects, and is well known for his pragmatic cynicism and iconoclastic style.

He holds visiting Chairs at the Universities of Pretoria and Hong Kong Polytechnic University as well as a visiting fellowship at the University of Warwick. He is a senior fellow at the Institute of Defense and Strategic Studies at Nanyang University and the Civil Service College in Singapore. His paper with Boone on Leadership was the cover article for the Harvard Business Review in November 2007 and also won the Academy of Management award for the best practitioner paper in the same year.

He has previously won a special award from the Academy for originality in his work on knowledge management. He is a editorial board member of several academic and practitioner journals in the field of knowledge management and is an Editor in Chief of E:CO. In 2006 he was Director of the EPSRC (UK) research programme on emergence and in 2007 was appointed to an NSF (US) review panel on complexity science research.

He previously worked for IBM where he was a Director of the Institution for Knowledge Management and founded the Cynefin Centre for Organisational Complexity; during that period he was selected by IBM as one of six on-demand thinkers for a world wide advertising campaign. Prior to that he worked in a range of strategic and management roles in the service sector.

#Topic TBA

Photo of Andrea Leopardi

Andrea Leopardi@whatyouhide, ,

Andrea is a human born in the ancient lands of central Italy. He loves functional programming, beautiful code, and learning stuff. He's a software architect, speaker, and member of the core team of the Elixir programming language. His weak spot is having red hair.

#A package manager? I could write that in a weekend

Maybe not, right? It turns out that in practice package managers have to deal with a variety of different problems: security, CLI-design, UX, performance, cross-platform-compatibility, computer-science-hard problems, and so on.

However it also turns out that managing packages for a language with a powerful type system means that it’s possible to skip many hard bits and get something useful and usable while also staying sane!

In this talk we’ll embark on a trip about what “package management” means, how people usually do it, why it’s terribly painful to use most package managers, and how we tried to not repeat the same mistakes in making Spago, a new package manager and build tool for PureScript projects.

Photo of Fabrizio Ferrai

Fabrizio Ferrai@fabferrai,

Fabrizio is a Software Engineer from Sardinia (Italy), currently helping good journalism with good functional programming at KSF Media in Helsinki, Finland. Lately he's into distributed systems, DevOps, programming languages and developer UX.

If you'd like to get him excited come talk and mention Dhall, PureScript, Haskell, fractals, electronic music, rockets, coffee or food.

#Keeping sites accessible with types

Accessibility on the web takes effort. The responsibility is split amongst development, design, and really anything that touches the product. On development and design, many of the common issues (color contrast, semantic markup and forms) have known practices and patterns.

However, there is a problem: HTML is permissive of anything and the semantic patterns often require expertise and research. On a bad day, or a tight deadline, even the most diligent person can miss things.

The rise of typed functional languages on the frontend affords us an opportunity. We have a chance to encode the values of accessibility in our system, in a way that our coworkers and future selves can avoid these issues automatically, as well as learn about them in a practical way.

In this talk, I will give a brief introduction to web accessibility, as well as concerts examples that help preserve it in our codebases. After the talk, I hope you'll have issues for your backlog, as well as the confidence to tackle them!

Photo of Fotis Papadogeorgopoulos

Fotis Papadogeorgopoulos@isfotis,

In another life, a student of languages and photographer. Greek, living in Finland and helping to build an inclusive web at Futurice. Frequently found testing name inputs and yelling at clouds. Aspires to disseminate knowledge, and ensure that the things we build serve people as best as possible. Wants to foster an environment in which people feel comfortable and excited to discuss, collaborate, and share their thoughts.

#Programming IS(!) Philosophy

What is it about philosophy that, even today, makes people sit and debate about seemingly "nothing"? How can these vague notions and abstractions have any relevance in today's world of hard facts and cold logic? In my talk, I'll try and show how philosophy, with emphasis of linguistic philosophy, relates closely to what we do in our everyday lives as programmers. How simple things like programming language selection and trying to define a bug or name a service, are all issues that carry a much more significant meaning and context than we usually give them - I'll try, for 30 minutes, to give a glimpse behind the curtain of some of our (mis)conceptions about our world of software engineering.

Photo of Nir Rubinstein

Nir RubinsteinAppsFlyer

Chief Architect for AppsFlyer. For the last 7 years, been working mostly in Clojure and Functional Programming in order to build and model a system that processes hundreds of billions of daily events. Trying to spread the word about the value-proposition of Functional Programming - mainly via Clojure

#The power of lenses

Ever had to access or modify deeply nested JSON documents in a typed language? Did it feel unnecessarily painful? There is a better way!

Lenses allow you to conveniently navigate and modify nested data structures in a functional way. Clojure is also known for convenience when dealing with nested data. How do these compare? Let’s take a look at how the same things can be achieved using lenses. And while we’re at it, let’s also take a look at some other tricks that lenses can provide.

Photo of Juhana Laurinharju

Juhana Laurinharju@fingerzam,

Juhana is a functional programming enthusiast from Helsinki working as a data engineering consultant. He is a frequent speaker at local meetups and has co-authored University of Helsinki’s online Clojure course (iloveponies.github.io).

#Clojure and R: a love story of two Lispy souls

The R language offers beautiful ways to do statistics; Clojure has charming ways to work with data. What happens when they meet?

Each holds its own opinionated vision towards functional programming, Lisp, metaprogramming, data driven programming and interactive workflow. Can they have some common ground to reason about these ideas together?

It turns out that interop may bring some joy on both parties: For R users, Clojure allows for elegant, powerful ways to process data and to access JVM libraries; for Clojurians, R opens a huge collection of libraries and tools for statistical computing and data visualization. When used wisely, interop could potentially be transformative for both cultures: R may learn something about Simple; Clojure may learn something about Easy.

In the talk we will review old ways, as well as a new library, for R-Clojure interop. We will demonstrate some of its uses and potentials, and discuss several of the conceptual challenges that arise.

We will argue, that R could be an important ally on Clojure's quest to become a great platform for data science.

Photo of Daniel Slutsky

Daniel Slutsky@daslu_

Daniel is a mathematician-Clojurian, working in the field of urban geography at Localize.city. He is part of the organizing team of Scicloj, a community of people promoting Clojure in the field of data science.

#Clojure as a first professional language

In this talk we go through the experiences about Siilis junior program that has been ongoing for 3,5 years. The weapon of code has been Clojure. Siili has used Clojure in our Master & Apprentice program from the beginning and has created few successful projects and few crash and burns. I will tell you the ups and downs about the use of functional programming in a context that you come straight from school or have few years of coding experience.

Photo of Eetu Kaivola

Eetu KaivolaSiili Solutions@eetuseta,

IT-consultant and head of .core at Siili Solutions. I'm a Scrum Master / Agile coach for agile teams and a tribe leader for a group of IT professionals.

I have also been working with Siili junior program for n+1 iterations.

My interest are mainly on agile software production, development methodologies and helping people find their potential.

I started my career with Clojure and even though my role has changed a lot in the way I still work with Clojure developers.

#Declarative Domain Logic

Domain logic is the unique core of our applications, but it's often entangled with the implementation details of our application: scattered throughout http-handlers, database functions, and UI templates. In the object-oriented world, MVC prescribes a separate place for domain-logic: the model; but as functional-programmers, how should we separate our domain-logic from the rest of our application?

In Clojure, we have some good functional and data-driven solutions for various problems, but domain-logic solutions are home-grown and often not very idiomatic.

In this talk, Rafal examines the problem of domain-modeling in Clojure, reviews existing approaches, and introduces a new library for data-driven domain modeling, that could become a common-ground for the Clojure community to build shared tooling around.

Photo of Rafal Dittwald

Rafal Dittwald

Rafal is a web developer, programming teacher and entrepreneur from Toronto. He used to work with PHP, Ruby and Javascript, but he's spent the last 7 (blissful) years working almost exclusively in Clojure and ClojureScript. He teaches web development at Lighthouse Labs, and as part of Cognitory, he works on various "learn-to-program" resources, including a book that teaches non-programmers functional and data-driven programming with Clojure, and occasionally does Clojure training. At Bloom, Rafal works on multiple ventures, including Braid, an open-source group chat application (written in Clojure).

#Do you have a problem? Write a compiler!

Imagine you are writing a cool game to be played in a browser. You will need a random number generator, because you know that procedural game content means infinite amount of fun. But you are a functional programmer, so Math.random is not good enough. No way to replay.

You find a simple algorithm, you think that would be easy to implement. Oh noes, you realise: there are no proper fixed width integers in JavaScript, all numbers are IEEE-754 doubles underneath. Your implementation works, but produces some not-random-enough garbage!

Luckily code is data, data is code. Let's write a little macro. It will take a piece of data, which looks like simple arithmetic and bit-wiggling code; do some transformations, like: make it correct and maybe even faster, and give it back to the outer compiler.

Once you have written a compiler, you'll never miss an opportunity to write another one. I'll show you how to write a very small compiler, but an optimising one. It would be lie to say it will fit on the slide; but it will fit in the deck.

Photo of Oleg Grenrus

Oleg Grenrus@phadej

Oleg is a programmer from Finland (i.e. he's a humble person). He gets paid for writing Haskell, but on free time he does play with other languages too. Sometimes even untyped ones.

#Computer Mathematics, AI and Functional Programming

This talk will take us through (some of) the history of artificial intelligence since its birth in the 1950’s. We’ll see how the dream of developing intelligent computer programs for mathematics is closely linked to the birth of functional programming.

Photo of Moa Johansson

Moa JohanssonChalmers University of Technology@BaraMoa,

Moa Johansson is an Associate Professor at Chalmers University of Technology in Gothenburg, Sweden. She interested in AI with applications in mathematics and reasoning about functional programs. She’s also a keen cyclist and has recently also done some work on machine learning for sports data.

#clj-kondo: a linter for Clojure code that sparks joy

Clj-kondo is a linter for Clojure code that sparks joy. It analyzes your code without evaluating it and detects arity errors, redundant expressions, unused requires, missing test assertions and more. It provides fast editor feedback because it runs instantly as a native binary, not depending on a REPL in a JVM. In this talk we will see what it can do, how it is implemented and how it compares to other Clojure linters.

Photo of Michiel Borkent

Michiel Borkent@borkdude, ,

Michiel Borkent is a software developer and Clojurian. He can be found as @borkdude in various places on the web.

#Creative Computation

An exploration of the ways in which computation can aid creativity and vice versa, with many examples.

Photo of Jack Rusher

Jack Rusher@jackrusher,

Jack Rusher has done research at some of the most prestigious facilities in the world (Bell Labs/AT&T Research, &c). In his spare time he has built and sold eight technology companies, and he currently works as a digital artist.

#How I created my own Clojure job

Many would like to work full-time with Clojure / ClojureScript but finding a job may not be easy. There aren't that many open positions to start with and even fewer for beginners. Relocating to a new city or country may not be a feasible option for everyone. A recurring discussion on Clojurians Slack is someone having angst that they love Clojure but can't find a full-time job in their area so they'll have to return to their mundane day job disappointed.

In this talk I want to share my story how I managed to create my own first full-time Clojure job and how it worked out. I'll also describe how Clojure and ClojureScript helped our extremely small team to deliver a real-life software project.

The goal of the talk is to encourage people to consider taking the leap from safe and certain to uncertain and exciting when chasing their dreams.

Photo of Valtteri Harmainen

Valtteri Harmainen

Valtteri is a senior software developer who likes problem solving, functional programming and panda bears. His honeymoon with Clojure began in 2017. Currently Valtteri is changing the world at Firstbeat Technologies.

#How I Supercharged Learning Clojure through Gamification

Mastering a new programming language can seem like a daunting task. As a person who has had to learn a number of new programming languages in a short amount of time, I’ve found gamification to be an excellent way to learn how to port knowledge from one language to another. This talk will dive into how through a simple game - I went through a journey of learning to code, and then was able to gain hands-on experience in a diversity of languages multiple times, when learning new languages. By applying concepts I formerly learned for Java to learn how to code in Clojure, and specifically by finding the similarities such as libraries, classes and types across languages, and then rebuilding this simple game in the new language, I quickly learned how to apply knowledge gained in other programming languages to the new language I was looking to learn. This talk will demonstrate how you can create a pet app that can teach you to too!

Photo of Mey Beisaron

Mey BeisaronAppsFlyer@ladymeyy

Mey Beisaron is a public speaker, a Node.js, Clojure and Java developer and a software engineer at AppsFlyer. When she is not spending her weekends at hackathons, she experiments with algorithms or learns languages such as russian, french and italian. Mey is also a sworn star wars fan. May the force be with you.

#How to do Stateful Property Testing in Clojure 🤖

An overview and quick tutorial of how to do stateful property testing in Clojure.

Sometimes bugs don't occur until a particular sequence of calls to the system has been made. Stateful property testing is a way to create programs that generates large, random sequences of commands, running them against a system and making sure that each call produce an expected result. If any unexpected results occur then the sequence is automagically shrunk showing you the smallest sequence of commands needed for the test to fail.✨

In this talk you'll learn what stateful property testing is, and you will see examples from a real system. You'll discover which commands makes sense to run against the system, and how to define a model for it. Lastly, you'll see how we can put it all together and actually run it as a test.

Photo of Magnus Kvalevåg

Magnus Kvalevåg

Coming from the windy west coast of Norway, Magnus' first and current developer job is doing Clojure at an Oslo based startup called Vilect. If the amount of software expertise over time is a logarithmic function he is still on the steep part, but he has found a passion for both functional programming and squashing bugs.

#Naked Performance (with Clojure)

Clojure is a modern dynamically typed lisp. Dynamical typing is ofter associated with poor performance and runtime failures. In this talk, I'll present some of the lessons learned on building Clojure/Script systems that are both ridiculously fast and will fail fast on errors. Will compare the performance of mutable, persistent & zero-copy data structures and show how we can use interpreters and compilers to build beautiful and performant abstractions. A quick demo on how to build a simple non-blocking web server that runs idiomatic Clojure to serve millions of requests per sec.

Clojure is awesome, and it can be fast too.

Photo of Tommi Reiman

Tommi ReimanMetosin@ikitommi,

Programmer at Metosin

#⚡ Reduxed

How we built complex autosaving forms in a simple way with just the power of ClojureScript, Reagent, and no extra libraries.

Photo of Simon Perepelitsa

Simon Perepelitsa@semaperepelitsa

Senior Software Engineer at HalalBooking — a UK-based company, providing hotel reservations in a niche travel sector, backed by Ruby on Rails and ClojureScript

#The Design and Implementation of a Bitemporal DBMS

Bitemporality allows you to modify, enhance and correct the view of the past while also keeping all versions for audit and repeatable reads.

We see this as a missing piece of the puzzle to scale up functional programming, as time and time again we have encountered similar problems in projects. Problems concerning competing timelines in different systems, a desire for immutability and purity, and a messy reality of delays and information that matures over time.

While popular as a research topic in the 90s, bitemporality is only now starting to become practical due to cheap cloud storage. There's a close kinship to modern event sourcing architectures and functional programming, and we can now start rephrasing the earlier ideas in this newer light.

At JUXT we decided to build Crux, a schemaless bitemporal database which uses Kafka for its commit log. It provides Datalog queries served by disposable index nodes powered by RocksDB or LMDB, each being a function of the log.

This talk will look at the approach we took to build Crux, what design decisions we made and how we reached them. Crux aims to be an "unbundled" database of several pluggable components and layers adhering to "The UNIX philosophy", a bit akin to how the Clojure community favours composing smaller libraries. At the same time, there are significant technical challenges involved in making bitemporality practical, often in tension with the idea of neatly composing components.

Photo of Håkan Råberg

Håkan RåbergJUXT

Håkan Råberg is a Swedish programmer living in a small village by the sea north of Stockholm and an associate of JUXT, the company behind Crux.

:call-for-speakers

ClojuTRE 2019 Call for Speakers is closed.

Proposals are rated with a blind review in the first round.

Important Dates
  • May 31st: Call for Speakers closes.
  • June 7th: We inform the submitter if their talk fits in ClojuTRE 2019.
  • June 14th: Deadline for confirming the presentation.
Travel and Accommodation

We provide support for speakers' travel and accommodation.

:code-of-conduct

ClojuTRE uses the Berlin Code of Conduct.

We, the organizers, want everybody to be able to enjoy ClojuTRE. We hope that everybody, regardless of gender, gender identity and expression, age, sexual orientation, disability, physical appearance, body size, race, ethnicity, socioeconomic status, or religion, can feel welcome and respected at ClojuTRE.

If you notice any wrong doing please contact any organizer. You can also call or send an SMS to number +358 50 326 2280 (Mikko).

:sponsors

If you are interested in sponsoring the event, please contact clojutre2019@metosin.fi for information.