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.

For discussion about event Clojurians Slack has #clojutre channel.

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

Videos for the event are 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 is sold out!

:program

Thursday

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

The venue is open from 11:30.

Talks - 12:30-19:40

Speakerparty

The afterparty for speakers will take place at Nitor. Join us for food, drinks, music, and sauna! Charter bus leaves from Telakka venue to the afterparty at 9 PM.

Venue afterparty

Afterparty at the venue, sponsored by Siili.

Friday

The venue is open from 11:00.

  • 11:30-12:00 Crux tutorial in the Workshop room. Entrance to the room is located in the sponsors' area.

Talks - 12:30-19:40

Afterparty

The afterparty will take place at Gofore. Charter buses take us from Telakka to the afterparty at 8 PM.

:attendee-guide

Pocketmod

We have prepared an 8-page mini-booklet which you can fold into a convenient little conference guide! See folding instructions on Youtube.

Getting around

You can plan your travel and buy tickets to public transport using the HSL app for iPhone (App Store) or Android (Google Play). The public transport web site can be found at https://www.hsl.fi/en.

How to get to the venue

ClojuTRE2019 venue Telakka at Henry Fordin katu 6 is in South Helsinki. Helsinki is a nice city, and walking through the city to the venue is a great option. If the walk is too long, it's not very expensive to take a taxi either.

Finnish public transportation is top notch, and two bus lines, 14 and 17 go really close to the venue. Helsinki trams number 6 to Hietalahdentori and number 3 to Eira are good options too, but they don't go as near with about 15 minutes walk from the stop to the venue. Public transportation tickets can be bought from the Helsinki Central Station or straight from the driver for about four euros. Tickets are valid for 80 minutes. There are also tickets that are valid for a certain number of days and for example a three day ticket costs 16 euros, which is the same price as four seperate tickets. Check out the Helsinki public transport website here.

How to get to the afterparty

Friday's afterparty is at Gofore, Urho Kekkosen katu 7B, in the Kamppi shopping center. A charter bus will take us from Telakka venue to the afterparty. Gofore is about 10 minutes on foot and 5 minutes by tram number 7 from the Central Station.

Things to see and do

Downtown Helsinki is quite nice with public transportation going anywhere in less than 30 minutes. There are three shopping centers to the South and Esplanadi to the South East of the Central Station. East from the Central Station is the Botanical Garden of Kaisaniemi. There are also a lot of nice restaurants and cocktail bars in downtown and because Finns drink a lot of coffee, there are nice coffee shops in almost every corner.

Helsinki is a home for many artists and you can check them out at museum of modern art Kiasma (website) or Finnish National Museum (website), both along Mannerheimintie and close to the Central Station. Close to the Station is also art museum Ateneum (website). One of the most popular places to visit is Suomenlinna (website), which is a fortress off the coast in Helsinki.

:talks

#Lessons Learned; the Nice and Accurate Counsel of Alex Miller, Programmer

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.

#Elixir Sightseeing Tour

Hey friends, welcome to Elixir! In this talk, you'll get a whirlwind tour of what Elixir has to offer. You'll finally learn more about the buzz (is there a buzz? I hope there is!) around resiliency, concurrency, supervision trees, and much more. You'll get to see some of the practical applications of Elixir, because as it turns out, you can even build stuff with it. The main goal of this talk is to get you hyped!

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.

#Why Isn't Functional Programming the Norm?

Photo of Richard Feldman

Richard Feldman@rtfeldman,

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.

#Music performance: Do Computers dream of Electric Beats?

Since the early days of our species, humans have always created music, rhythms and chants. This is an interesting antropological tangent to go on, but today we'll focus on the fact that since the Computer Age, humans did not really exploit the full potential that machines have to offer us.

But this has to stop. We'll take computers back to where they belong: as musical instruments. And AUTOMATED ones. This is Algorave. Let's all dance together to the sound of bits and beats.

Photo of CASSALPOPOLO

CASSALPOPOLO@fabferrai, ,

More open source 4/4 beats for the peoples

#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 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.