Clojure.spec allows us to generate test data based on our specifications. But what about generating a clojure.spec program based off of data? With genetic programming, we’ll explore creating clojure.spec creatures that consume data for food. Then, we’ll breed, mutate, and evolve them until we have a perfect fitting spec for our data. Finally, we'll take a step back and think about how clojure.spec gives us the ability to have our programs describe themselves and what that means to AI and self-repairing code.
About the keynote speaker: Carin Meier is a developer at Cognitect. She organizes the Cincinnati Functional Programmers Group and is also the author of the O’Reilly book, "Living Clojure".
If you have read Michael Nygard's "Release it!" you know that a downstream service going down is just one of the many modes of failure that your new service will need to handle in production, and it is not even the worse one.
To make your system resilient, you also have to worry about networks going slow, disks getting full or third party services disappearing.
But how can we test those scenarios and make them part of our build pipeline?
During the presentation you will learn how to create a Clojure test suite that will use Docker to automate your resilience testing.
About the speaker: Daniel Lebrero works as a technical architect at IG on the Big Data team. With more than 15 years of Java experience and 4 of Clojure, he is now a big advocate of the functional approach.
Today's hot topics, data science and machine learning, offer many algorithms that can turn lifeless data into useful information. Based on math-heavy theory, relying on number crunching, often billions and billions of raw operations must be performed quickly. Clojure can be teamed up with hardware accelerators or GPUs to offer both a cozy dynamic REPL environment and the speed and power of low-level hardware optimizations for numerical computations. In this talk, I present a few libraries tailored by the Clojure's measure, that can help achieve state-of-the-art performance: ClojureCL to direct the GPU, Neanderthal to help with vectorization and linear algebra, and Bayadera's incredibly fast MCMC engine. Clojure may not be able to compete with R and Python in the off-the-shelf machine learning, but for high-performance customized algorithms - it can be THE secret sauce.
About the speaker: Dragan Djuric is an associate professor at the Department of Software Engineering, FON, University of Belgrade, Serbia. He passionately uses Clojure as a primary language since 2009, and teaches Clojure-based courses at the university since 2010. He published his Clojure-based research in leading scientific journals, but does not skip contributiong to the community through open-source Clojure projects (www.uncomplicate.org). His main interests are in the area of software engineering and intelligent systems, but programming in Clojure is the activity he enjoys the most. When he is not working in Emacs, he likes doing his daily dose of long-distance running, gym, and Cuban salsa dancing. He also has a black belt in Taekwondo, but is a very calm and friendly person :)
Machine learning has become an incredibly popular field of research in the last few years. While there's no shortage of libraries and tutorials in languages like Python and Java, there's relatively little in the world of Clojure. In this talk, we'll dive into machine learning with Clojure and Apache Spark! We'll start out comparing the Flambo and Sparkling libraries by building a binary classifier, then move on to exploring image recognition with a convolutional neural network developed with DeepLearning4J. You'll come away with a solid grasp of introductory theory as well as practical approaches to developing models and neural networks in Clojure.
About the speaker: Eric Weinstein is a senior software engineering lead at Hulu, where he works on internal tools, as well as a masters student at Georgia Tech, where he studies machine learning. He enjoys writing Clojure, Elixir, Idris, Ruby, and Swift.
Have you heard about the lambda-calculus, dependent types, intuitionistic v.s. classical logic, or the Curry-Howard correspondence?
During this talk you will learn much about these, but not presented in the usual academic way... No! Clojure and Emacs/Cider will serve as learning vehicles, throughout a gently-paced live-coding Mathematics session !
For this we will use LaTTe, an open source proof assistant library for Clojure, probably one of the most addictive single-player puzzle game ever!
NB: no greek letters were harmed during the preparation of this talk.
About the speaker: Frederic is a professor and researcher at the UPMC University in Paris. Instead of making his students program for him, he program for his students, who can then (surprisingly) focus on the core science.
He speaks a few extinguished or not so extinguished Lisp dialects (he considers most programming languages as Lisp dialects).
And his favorite number is 42.
This is the story on how we moved to a Single Page Application using ClojureScript for our new payment checkout at Zimpler (a mobile payment company), the challenges we faced along the way, and how we setup the (optimal?) tooling for devs and designers alike. A tale of Figwheel, Amazon, re-frame, gulp, cache-busting, time-traveling debuggers, Honeybadgers, REPL-driven tests and broken iOS JIT compilers.
About the speaker: Clojure fan, emacs adept, Haskell neophyte. Typing random stuff on a keyboard for a living. Organizer of Got.λ meetup group in Göteborg, Sweden (http://www.meetup.com/got-lambda/)
While Clojure is not a very popular choice for a language in which to implement natural language processing (NLP) tools, in this talk I'll show that it’s not only a feasible choice, but also a practical and pragmatic one.
I'll present two Clojure-based utilities, Smyrna and Skyscraper, that together allow to convert a series of texts in a morphologically rich language (Polish) to an easily and efficiently searchable corpus and to perform statistical analyses on this corpus. I'll also demonstrate a fairly large (>100M words) corpus built with these tools, the Polish Parliamentary Proceedings Processor (P4). I'll describe each of the tools in turn, how they fit together, and how Clojure allows for having the code concise and expressive while remaining performant.
I'll put the talk in context by comparing Skyscraper and Smyrna to other similar tools, and also look briefly at Smyrna’s ClojureScript and re-frame-based UI.
About the speaker: Daniel has been working with Clojure since its early days (around 2009). His interests in linguistics and NLP date back even further: he was a core team member of the IPI PAN Corpus of Polish (2004) and developed one of the supplementary tools for National Corpus of Polish (2007). He writes Ruby for a living, and hacks on Clojure in his spare time. When not coding, he can be found playing Scrabble, cycling or petting cats.
ClojureBridge are fun, free and, welcoming workshops for learning programing and getting started with Clojure for groups of people that aren't well represented in our sector. Many workshops have been held around the world, including Europe. They inspire people to realize tech or art projects or switch careers. The Berlin chapter is especially active, with a workshop happening every six months. We love to share some of our experiences, both the challenges and the successes.
About the speakers: Malwine is a cornerstone of the Berlin tech scene. She's helped to organize conferences, workshops, study groups, she's a member of the ClojureBridge Berlin core team and the ClojureBridge Board. As student of computer science she is currently working part time at Microsoft.
Arne loves to share his knowledge, whether as a coach for RailsGirls workshops, as core organizer of ClojureBridge Berlin or at his company Lambda Island. He is an active member of the Clojure and Ruby communities in Berlin. Extensive traveling has given Arne a deep appreciation of cultural variety and human individuality, something that influences his work daily.
Clojure provides powerful abstractions and dynamic typing, and its high performance is enabled only through the amazing optimizations provided by the powerful JITs in JVM, V8 et al.
Using Clojure's new spec and gen features, it's possible to generate specialized versions of Clojure code for constrained specifications, eliminating much of the boilerplate and branch heavy code, which can then be translated into efficient C.
This talk follows optimization of the humble (fn fib [n]) in its most naive form, using a series of generally applicable techniques to transform it from a O( 2n ) to a O( log n ) algorithm, generating efficient C that would be difficult to match by hand.
About the speaker: I dropped out of uni and started an indie games company, which I did for ten years, with my games having over half a billion plays between them.
For the past few years I've been branching out into more serious development; currently I'm doing full stack Clojure development at Bookwell.
Priority Search Queues are an interesting abstract data type that simultaneously supports sorted map and priority queue operations in such a way that an entry's position in the map's sort order depends on its key, but its priority, as used by the priority queue operations, depends on its value. Additionally, these aspects of PSQs mesh together, so that one can iterate over precisely those entries whose keys fall in between a certain pair of keys and whose values are less than some particular value, in effect performing a 1.5-dimensional search of the PSQ.
PSQs have been given a particularly elegant presentation and implementation - in Haskell - by Ralf Hinze in his 2001 paper "A Simple Implementation Technique for Priority Search Queues". This talk aims to examine the main ideas behind Hinze's concrete realization of PSQs, to briefly compare it to Edward M. McCreight's original PSQ implementation from the "Priority Search Trees" paper of 1985, and finally to place PSQs in a Clojure context.
About the speaker: Long-time contributor to all parts of ClojureScript, including the compiler and the core library; most notably, author of the ClojureScript ports of the persistent map and set types and PDS-related functionality such as transients. Author and maintainer of core.rrb-vector, data.avl and ctries.clj.
An experience report on how Clojurescript, React and Rum helped develop a project that started as a medical animation of risk adjusted mortality data, and rapidly morphed into a single page web site tackling some controversial and tricky issues. It's a story of researchers learning the needs of users and changing how they communicate, and of one programmer trying to keep up.
As an appendix, I shall add some thoughts and demonstrations of custom plots written in clojurescript for researchers who use R.
About the speaker: Mike is a developer supporting communications from the Mathematics Faculty over the web to school teaching and more recently to health communities. Much of his work has involved interactive educational animations.
What happens if you use Datomic from a non-Clojure application? How well do Datomic's concepts and its advertised strengths hold up when used from a Scala application? Expect an experience report from the battlefield of the day-to-day. I will talk about mistakes we made, benefits we reaped and explore what foreignness means when talking about technological solutions.
About the speaker: Peter is a historian turned software developer. He is currently working at Cisco where he develops software mostly in Scala. After work he enjoys programming in Clojure and organises the Vienna Clojure user group.
We instrumented 15k LOC codebase with spec so you don't have to (but probably should). Validation; testing; destructuring; composable "data macros" via conformers; we've tried spec in all its multifaceted glory. This talk is a distillation of lessons learned interspersed with musing on how spec alters development flow and one's thinking.
About the speaker: Built my first computer out of Lego bricks and learned to program soon after. Emergence, networks, modes of thought, limits of language and expression are what makes me smile (and up at night). Currently working at GoOpti making the company data-driven; setting up our analytics infrastructure (end goal: provide any answer stemming from data in 2 min or less); and building our predictive-realtime-superduper pricing engine.
Music synthesis is commonplace in Clojureland. However, modeling Carnatic (south indian classical) music, then generating and machine-learning it has been attempted by only a few, and is a very interesting problem to solve.
This talk is the story of my journey in bridging the gap between machine and human music. We will teach machines the fundamental concepts, create models that identify Carnatic music, and then build models that allow the machines to learn music themselves, and in the process, teach us.
The talk will (obviously) include demos of comparisons of machine and human (my) music, code snippets of implementation in Clojure/Overtone, and pretty melographs.
About the speaker: Srihari is a FOSS enthusiast. He has contributed to Gimp, Eclipse, Diaspora and is excited about opportunities to give back. Over the last couple of years, he has worked on building an experimentation platform, delving into a particularly dense domain, meeting tight latency SLAs, and engineering assembly lines in software using Clojure.
He has recently found a deep interest in Computational Musicology, and spends his weekends mining the internet for Carnatic Music data, and tries to solve the problems in modeling, synthesizing, and generating it.
He is a partner at nilenso, a hippie tree hugging bicycle riding software cooperative based in Bangalore.
GeoRepl is an OpenSource software written entirely in Clojure using Quil as basic GUI framework. GeoRepl is an interactive geometry application which lets you examine and manipulate the symbolic representations of the geometric constructions in a Clojure Repl as well. GeoRepl follows a concept of user interaction allowing the user to draw intuitively and "menue-less" using freehand symbol recognition, snapping, dragging and dashing.
About the speaker: Thomas Neuhalfen, born 1960 in Bonn, Germany Mathematician, professional software developer since 1985 Clojure Enthusiast since 2014