The event has single track, late start, short talks and a funky after-party for networking.
We welcome both newbies and seasoned Clojurists, and other FP enthusiasts.
Call for Speakers is now open! All kinds of talks, performances, rants and artistic contributions are welcome, as long as they are somewhat related to Clojure(Script), Functional Programming, or Other Cool Things.
We provide support for speakers' travel and accommodation. Free student and diversity tickets are also available.
For discussion about event Clojurians Slack has #clojutre channel.
For free student and diversity tickets fill out this form.
Thursday is dedicated for presentations about other languages than Clojure. For those of you interested in Elixir, Haskell, PureScript and the rest.
The afterparty will take place at Nitor.
The venue is open from 9:30.
The afterparty will take place at Gofore
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.
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!
VAT not included. Includes lunch on the day of training. Questions? Send us an email!
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.
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.
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.
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.
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.
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!
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.
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.
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
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 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.
Michiel Borkent is a software developer and Clojurian. He can be found as @borkdude in various places on the web.
An exploration of the ways in which computation can aid creativity and vice versa, with many examples.
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.
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.
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!
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.
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.
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.
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.
Programmer at Metosin
How we built complex autosaving forms in a simple way with just the power of ClojureScript, Reagent, and no extra libraries.
Senior Software Engineer at HalalBooking — a UK-based company, providing hotel reservations in a niche travel sector, backed by Ruby on Rails and ClojureScript
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.
Proposals are rated with a blind review in the first round.
We provide support for speakers' travel and accommodation.
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).
If you are interested in sponsoring the event, please contact firstname.lastname@example.org for information.