Talks 2018
February 24
We will have two tracks in parallel. To get updates about the schedule, check our official twitter account.
Implementing Clojure on a new VM - A Walkthrough
by Juan Facorro
What does it take to implement Clojure on a new host? Where do we start? What challenges can we expect along the way? We will explore the answers to these and other questions, based on the implementation of Clojure for the Erlang VM (Clojerl). This talk will also help in understanding how our .clj/.cljs/.cljr/.clje files turn into compiled artifacts. All of this while we try to figure out what are the common features that make an implementation “a Clojure”.
About Juan Facorro
After working with ASP, C# and Java for years at the beginning of his professional career, Juan entered the world of functional programming (FP) through Common Lisp. Around that same time he found Clojure and he knew he had found something great. While looking for a job doing FP he ended up at Inaka learning and building systems in Erlang. Juan now lives in Stockholm with his wife, working for Klarna, building and maintaining Erlang applications.
Functional Calisthenics
by Jorge Gueorguiev Garcia
OOP habits die hard. Having trained my OOP skills through the years, I have applied unconsciously OOP techniques while writing code in functional languages. The quality of the code and test suffered because of it, leading to a very confused design and maintenance problems.
For OOP we have designed good guidelines to produce code that is readable and maintenable, like SOLID, DRY, … On top of it we have Object Calisthenics, for practicing the creation of good OOP Code. Functional Calisthenics have the same aim for the functional paradigm.
In this talk I will explain the rules, with examples in Clojure, on the hope that I can show how they lead to better functional code and to entice you to try them for yourselves.
About Jorge Gueorguiev Garcia
Although he started early (with QuickBasic and Turbo Pascal), it took him a while to center into the developer way of living. Nonetheless, he has more than 10 years experience as software developer at different levels. His main experience is around C# and .Net, but has a keen interest in other languages, especially around functional programming.
In his experience two maxims have been revealed, Simple is Beautiful and Make Everyone's Life Easy. Because of them, his personal goal is to improve the experience of fellow developers.
They'll have to pry the REPL from our cold dead hands!
by Christophe Grand
The REPL is central to the Clojure flow. However some frameworks or targets make us abandon it because of a save-compile-run cycle forced upon us.
We have to stand up for our REPL and code back! We have to hone and cherish it! We have to push it where it has never been before! Join us, join the replistance!
In this talk I’ll cover experiments in pushing the REPL forward.
About Christophe Grand
Christophe is a long-time Clojure enthusiast, independent software consultant/engineer, trainer. Co-author of Clojure Programming.
Reframing your next Single Page App
by Kenneth Kalmer
Building a rich single page app is really hard. re-frame, a ClojureScript wrapper over React, together with a beautifully simple flow of immutable derived data, makes this an absolute joy. It also sports a toolchain that is the envy of any developer who’s seen it, but can’t use it.
About Kenneth Kalmer
Kenneth is full stack web developer with nearly 20 years under the belt. He's currently enjoying the revitalizing experience of writing Clojure and valuing values. Outside of his day to day, he maintains and contributes to several open source projects, writes on his Open Sourcery blog, co-hosts the ZADevChat podcast and enjoys speaking at local meetups and conferences. He enjoys learning and sharing, meeting and connecting people and being involved.
Crunching Data with Onyx
by Vijay Kiran
About Vijay Kiran
Vijay is a functional programmer in Clojure/Scala and Defn Podcast co-host. Lead Dangineer working with Big Data and Machine Learning Werkspot, Amsterdam.
GraphQL: Making JavaScript Simpler Than ClojureScript
by Dom Kiva-Meyer
GraphQL is the worst form of API, except for all those other forms that have been tried from time to time. — Winston Churchill
GraphQL is an emerging standard for describing and querying APIs. In this talk, we’ll explore GraphQL, including its quirks and imperfections, and learn how, despite its copious flaws, it makes building user interfaces far simpler than REST (even with re-frame). GraphQL puts data, and operations on that data, first and foremost, and, like React, is a perfect fit for ClojureScript. If you’re building user interfaces with ClojureScript and React but not GraphQL, you’re doing it the hard way.
About Dom Kiva-Meyer
Dom is a partner at (paren), a small software consultancy that specializes in Clojure, React, ReactNative, and GraphQL.
Dom has been cursed to run into problematic edge cases in everything he touches. He tries to solve some of them but must make do with complaining loudly about most of them. This talk fits squarely in the latter category.
Maria: a beginner-friendly coding environment for Clojure
by Dave Liepmann
A recurring problem newcomers have with Clojure is that one must learn everything at once: the host language, and stack traces, and a new editor, and functional programming, and and and…. What if we shielded beginners from the complexity of tooling, stack traces, and programming language theory? What if we got out of their way and let them feel the power of programming for themselves, right away?
Our project, named for educational pioneer Maria Montessori, aims to delay as many of these obstacles as possible so that new coders can get right to playing, building, exploring, and sharing with code.
In this talk, we’ll demo our live „code playground“, explain its pedagogical philosophy, share how it worked with first-time coders at ClojureBridge Berlin, and brainstorm what’s next.
About Dave Liepmann
Writing tests that suck less - “What” vs “How”
by Torsten Mangner
Writing unit tests in Clojure is easy, since testing pure functions is trivial. But the more high-level our tests become, the more they have to deal with the state and side-effects of your application. It becomes harder and harder to write proper tests. And worst of all: they are harder and harder to understand and to maintain, greatly diminishing the value of those tests as a documentation of your software.
On the other hand Acceptance Tests can be seen as the most important tests of our systems. They should be easy to read and to reason about. These tests have to clearly communicate the intent of the code under test.
In this talk I want to show how you can use Clojure language features to write acceptance tests, that clearly separate what is tested from how it is tested. These tests will be easy to grasp and to reason about, providing great value as an executable documentation of your systems.
About Torsten Mangner
Torsten is an agile test consultant, who spent the last 12 years on projects as a Tester, Developer, Coach, Automation Engineer or Click Monkey.
He loves working in agile environments and is constantly trying to pivot his approach to quality, so he co-founded a consultancy agency dedicated to agile practices and software quality: @inoxio
On his current project, at one of Germany’s biggest online retailers, he is working in a cross-functional team. Together they are facing the challenges of developing, testing, monitoring and operating a polyglot microservices architecture.
Bear Traps: the Logging Edition
by Alexander Mann
Bear traps are those computer programming problems which are really, really tempting to dive into, but you know you just shouldn’t. They’re so common that we have multiple names for them: yak shaving, bikeshedding, bug lights, etc. These problems are especially troublesome because they generate so many solutions; we rarely approach them in organizations because we know they’re productivity cesspools.
In this talk we’ll go over one such problem: logging in Clojure/Java. We’ll cover the hoops, trials, and tribulations that CircleCI had to endure to arrive at a logging solution which… everyone in the engineering team still can’t agree on.
About Alexander Mann
Alex started hacking at a young age, just on wood and metal... under the supervision of his one-index-finger-shorter-than-the-other grandfather. In high school he learned how to program... pic chips operating the innards of a life sized pinball machine. In undergrad he used his theoretical computer science background and fine arts major to build datamining art... and rationalize watching old vaudeville movies. As a junior programmer he built his first microservices in Clojure... talking to PHP... running in a Hadoop JVM. He likes cooking, climbing, people, his dog, writing run on sentences, and building the absurd/beautiful.
Class of 2013 University of Toronto. Senior Developer at CircleCI.
defjoke
by Ray McDermott
Explaining jokes to people is tough and explaining them to a computer is even tougher. Join in the adventure as I live code a fully compliant spec for humour. Hilarity may ensue. Bring beer.
About Ray McDermott
Clojure programmer / architect, co-host defn podcast.
A Dynamic, Statically Typed Contradiction
by Andrew Mcveigh
The topic of static types in the Clojure community is often contentious, but why is that? Is it simply a matter of taste? Poor experience with other statically
typed languages? Or is there a deeper, underlying reason? If Clojure is such a powerful functional programming language, can we not have the choice?
And, what even is a type system anyway?
This talk will explore the Simply Typed Lambda Calculus, and it’s application in a „Hindley-Milner“ based type system with „full-program“ type inference. How it
can be mapped onto Clojure’s syntax, and how it can be used to „type-check“ a subset of Clojure code.
We’ll discuss how expressive static type systems compare to clojure.spec, and how they can be used as a tool to complement Clojure’s REPL driven workflow, not just to hinder the programmer. Finally we’ll discover strategies for mixing typed and untyped code.
About Andrew Mcveigh
Exploring Interactive Art
by Lisa Passing
Let’s take a look at the intersection of nature, basic AI and human-computer interaction. Can we be programming artists, using the browser as canvas and ClojureScript as our paint brush?
About Lisa Passing
Clojure and AI
by Michael Pershyn
Originally specified in 1958, Lisp became the favored programming language for artificial intelligence (AI) research.
Clojure is a dialect of Lisp. AI is booming today.
So what is the situation about AI and clojure?
Let’s look into history, current moment and …future?
About Michael Pershyn
Michael is a passionate software engineer with rich experiences in IT since 2005.
In his professional journey he contributed to linting engine for hardware description languages, analysed malware, ran a company, designed test-frameworks for implantable devices and worked in a technology incubator. Coming from C++/C#/Python background, he loves how Clojure shifted his paradigm and also how it helps him to tackle complex problems and provide elegant solutions.
Since 2013 he enjoys building BigData solutions using Clojure with Storm, Trident, Kafka, Hadoop and Aerospike.
DIY fast random generation of structured data
by Frederic Peschanski
Random generation of structured data is becoming a big thing in Clojure: think spec, test.check, etc. In this talk I will explain, in a maths-light livecode-heavy way, what makes a good random generator. I will livecode a simple DSL and a very fast random generator for tree-shaped structures in Clojure(Script). I will use a powerful technique known as Boltzmann sampling. Sounds hard? You’ll see … it’s beautifully simple and incredibly efficient!
About Frederic Peschanski
Frederic is a professor and researcher in theoretical computer science at the UPMC University in Paris. Despite all his efforts to become a true polyglot, ultimately he has to accept that he is and will remain a Lisper! He thinks that through live-coding anyone (with some Lisp background) can reach high levels of abstract thinking!
Teaching Clojure
by Michael Sperber
Clojure is a great language for just about everything. So, naturally, we want to teach it to others. How should we do this? Unfortunately, as natural as Clojure and its focus on functional programming feel to us, it is not easy to teach well. Moreover, Clojure itself is not the best tool for teaching – the language was designed for professional developers, as are its IDEs. So what to do when we want to enable a fellow developer to hack in your project, as a professional trainer, or to teach students? This talk will report on the insights gained by the Program by Design and DeinProgramm projects, the tools and materials they have produced, and how to apply them in your teaching. Three points will be important – effective teaching requires a didactic strategy built on systematic programming construction, languages that support that strategy, and tools and languages that have been adapted to the needs of beginners. With that in place, your students will be up to speed in Clojure in no time!
About Michael Sperber
Michael Sperber is CEO of Active Group in Tübingen, Germany. Mike is an internationally recognized expert in functional programming, with many publications and several books under his belt. Mike also maintains a strong interest in teaching programming: He's been teaching programming for 30 years, has designed introductory courses for several German universities, and has taught professional training in Clojure. He's a co-organizer of the annual BOB developer conference, which immediately precedes :clojureD in Berlin.
Introducing Structure
by Jan Stępień
Once you’ve got a couple of Clojure katas under your belt you start to wonder how to structure an entire application. Where does the logic go? Where do you respond to HTTP requests? Where to connect to the database and how to pass the connection to code which needs it? Let’s see what the best practices are and which Clojure libraries can help us.
About Jan Stępień
Jan is a senior consultant at innoQ, where he works with people and with computers. He's based in Munich but you can run into him in Berlin too. Jan enjoys community events, where he often discusses functional programming, architecture, and testing. He organises the Munich Clojure Meetup; swing by if you're in town, we're a really friendly bunch.
From Things to Apps: Building a Realtime IoT Data Pipeline
by Andrei Ursan
IoT platforms promise to connect thousands of „things“ to applications that enable users to take better decisions and control their daily activities. Building such platforms entails dealing with a set of new challenges, such as storing large amounts of device data and realtime data delivery to connected applications.
In this talk Andrei will cover how they built core parts of Geeny.io, an IoT platform, using Clojure. The talk will focus on how they store and realtime deliver large amounts of things data.
About Andrei Ursan
Andrei is a Software Engineer at Telefónica Next, part of the polyglot team that builds Geeny.io, an IoT platform for consumers. He’s now enjoying the world of microservices, solving scalability problems and the challenges of IoT data pipelines. Having worked with a number of programming languages he finds Clojure and its simplicity to be his preferred tool.
Lightning Talks
Omnia – An arguably better Clojure REPL
by Robert Avram
One of the most interesting aspects of Clojure and Lisps in general, is their apparent symbiosis with REPLs. Languages of the LISP family are generally
associated with REPLs or REPL-driven development. Just by themselves however, REPLs are rather extraordinary playgrounds for experimenting with code. If one were to have a vague idea about an implementation, a typical immediate reaction would be to „“try it in the REPL““.
Sadly however, they suffer from certain limitations that reduce their usability when one desires to use them with more structurally complex code. Multi-line code is an example of one such complexity.
The goal of this talk is to shortly present „“Omnia““, a new REPL that is explicitly tailored both for supporting structurally complex code, but also for enhancing the general idea of „“experimentation““.
About Robert Avram
Robert is a software engineer currently using Clojure at REWE Digital for building (hopefully) sane and (generally) functional microservices. Academically, he is a passionate functional programmer, advocate of the functional paradigm and equational reasoning.
You might also say that he is in a quantum superposition of sorts, being an avid interestee and user of both functional rivals of the JVM, namely Clojure and Scala.
Why Clojure on the Erlang VM?
by Juan Facorro
About Juan Facorro
After working with ASP, C# and Java for years at the beginning of his professional career, Juan entered the world of functional programming (FP) through Common Lisp. Around that same time he found Clojure and he knew he had found something great. While looking for a job doing FP he ended up at Inaka learning and building systems in Erlang. Juan now lives in Stockholm with his wife, working for Klarna, building and maintaining Erlang applications.
Debugging with re-frame trace
by Saskia Lindner
How often do you print something to the console? Your application does not behave as expected, so some piece of data has an incorrect value, but which one is it? Debugging is hard, but luckily, we can build tools to make it easier. The key is to present the application data in a clear and browsable form. We want coding to be more enjoyable so that we spend less time on fixing bugs and more on building things.
With re-frame trace, you can have a look inside of your application’s data. Information about events, subscriptions and renderings are being displayed while interacting with the application and it is possible to inspect the current app-state.
About Saskia Lindner
Saskia writes Clojure and ClojureScript at work and for fun. Her home of choice is Berlin and she finds her balance away from the computer through movement and music.
Self-care in tech
by Carolyn Stransky
Let’s face it, lack of self-care is a problem in the tech industry. We wear exhaustion like a badge of honor, promote unrealistic expectations about loyalty and often times we neglect our body, heart and mind’s most basic needs. In this talk, we’ll introduce the scope of the issue and explain how you can start building your own self-care toolkit.
About Carolyn Stransky
Carolyn is an American journalist and JavaScript developer based in Berlin, Germany. There, she works as a technical writer for Contentful and teaches front end development in the evenings at ReDI School of Digital Integration.
Sponsors
Thanks again to our sponsors in 2018:
Acrolinx software helps the world's greatest brands create amazing content: On-Brand, On-Target, and at Scale.
Acrolinx is the only AI platform that uses a unique linguistic analytics engine to “read” your content, score it, and guide you to make it better. Our technology is transforming how brands create high-performing content.
Nubank is Latin America’s no.1 financial technology company, that has recently opened its 1st international engineering office in Berlin. We rely on the most innovative solutions in the market to create simple and transparent products that will help our customers take control of their finances. Clojure is the core language that enables our technology that empowers our customers.