clojuTRE & Small FP Conf 2017

Clojure & FP event for programmersTampere, September 1-2nd 2017

:about

clojuTRE is a Clojure conference organized by Metosin. The event has single track, late start, short talks (20 minutes and 5 minutes Q&A) and a funky after party for networking, discussions and craft beer. We welcome both newbies and seasoned Clojurists. Main event is held on Saturday 2.9.

Small FP Conf is a small conference, dedicated for presentations about other languages than Clojure, held on Friday 1.9. Talks will start at 3-4PM and and the event lasts about 3 hours. There will be a joint after-party with clojuTRE on Saturday evening.

:location

:coming-from-abroad

You can fly either directly to Tampere-Pirkkala airport (TMP) or Helsinki-Vantaa (HEL). Tampere airport is quite small so you might have better luck finding flights to Helsinki.

From Tampere airport there is a public transport bus connection to Tampere center which takes about 40 minutes and costs 3€. Another option is to take a taxi which takes about 25 minutes and costs about 19€.

From Helsinki airport it is possible to take a train to Tampere. This trip has one transfer and should take about two hours and cost 21€. Tampere railway station is just next to the venue and several hotels.

:staying-at-tampere

Nearly all hotels at Tampere center are within walking distance to the venue.

:program

Friday - Small FP conf

Friday is dedicated for presentations about other languages than Clojure. Are you interested about Elixir, Haskell, TypeScript or something?

The venue is open from 15:30. Be on time so you have time to get your badge.

:talks

The software industry is awash in folk wisdom. The "rule of three" tells us that we should only create a generic implementation once we've solved a problem three times. The Knuth quote about "premature optimization" either tells us that optimization is always bad, or bad 97% of the time, depending on how much of the quote we bothered to read.

None of these prescriptions describe a context in which they might not apply. Taken literally, most are wildly misleading. To use them properly, we must already have a nuanced understanding of software.

This talk presents a framework to intuit these same insights, but also their boundaries. It provides concepts and vocabulary that enable the viewer to not only explain how a problem should be solved, but why.

Getting stuck in battle with command line Sed, AWK, Perl and friends? Trying to provision your cloud environment using good old JSON, and just wish you had some.... you know, data manipulation ability on hand? Do you secretly love Make and just wish you could run adhoc ClojureScript tasks without having to dwell on packages and namespaces, depedencies and requires?

We would like to introduce how we do DevOps and Cloud Provisioning, using Mach - a ClojureScript replacement of Make built on Lumo - and Roll, a ClojureScript wrapped Terraform setup for building you a Blue/Green custom PaaS.

We will also discuss our approach to config - one config to rule them all!

Jon Pither is a development team leader by trade, having led several high profile Clojure projects including introducing Clojure at multiple Investment Banks, an online newspaper website, a major property portal, and an international public electric bikes scheme. Jon is a co-founder of JUXT, a consultancy specialising in using Clojure and other best of breed technologies.

Last year I've released Keechma - a frontend micro framework for ClojureScript. Since then we've built a bunch of apps with it, and in this talk I'll talk about our experiences and challenges we encountered along the way. I will also cover how Keechma's architecture allowed us to tackle these challenges and the supporting libraries that were written as a result of our experience.

Mihael Konjevic is the author of the Keechma framework. He's been working as a web developer for over a decade, and currently works as a CTO of http://floatingpoint.io - a company he started to be able to work with technology he likes. In his free time he's practicing martial arts and likes to travel.

Develop AWS lambdas right from the comfort of your repl: no edit-package-deploy cycle, just plain blissful and glorious repl experience. (This talk is unfit for tree-hugging audiences as some violent tree-shaking is depicted.)

Christophe is an independent dev and trainer, working from the french countryside. He has been clojuring for so long that he remembers when there was no multimethods and core.clj was called boot.clj. He is least known for suggesting the ^:keyword shorthand to Rich and mildly known for some libs and coauthoring Clojure Programming (O'Reilly).

ClojureScript ships with optional compiler self-hosting since late 2015. Although a feature unbeknownst to many, bootstrapping the compiler represents the next giant leap in Clojure’s reach, raising the number of platforms where it can execute to a new maximum. Lumo is a new, cross-platform, standalone ClojureScript environment that boots instantly and has out-of-the-box access to the entire Node.js ecosystem. Lumo serves many purposes: a fast booting REPL, scripting, build tools, IDE connection through its socket server, and more recently, the ability to compile entire ClojureScript projects with optimizations (thanks to Google Closure Compiler's JavaScript port). This talk covers the lessons learned from building the fastest starting Clojure(Script) environment in existence, shares some of the tricks it employs, and the hurdles that future endeavors intend to overcome. You will discover how easy compiling ClojureScript in ClojureScript actually is , learn about common myths around bootstrapping the ClojureScript compiler, and what Lumo can do for you.

We think in words, we talk with words, we understand the world thanks to words. Metaphors take words to the next level explaining concepts that were escaping our understanding before. In 1980 George Lakoff revolutionised the Linguistic and Philosophic worlds when he studied how metaphors affect our thinking, how they influence our actions and even shape who we are. What happens with the metaphors that we use in the Software Industry?

In this talk we are going to review the importance that metaphors have in our code quality, in the algorithms we choose, and the products we ship.

Alvaro Videla used to work at Apple as a Distributed Systems Engineer and previously was a Core Developer for RabbitMQ. Before moving to Europe he used to work in Shanghai where he helped building one of Germany biggest dating websites. He co-authored the book "RabbitMQ in Action" for Manning Publishing. Some of his open source projects can be found here: http://github.com/videlalvaro. Apart from code related stuff he likes traveling with his wife, listening/playing music and reading books.

The author demonstrates the fun and value of experimentation and learning through doing, by presenting key features of the Heresy programming language and how they implement functional programming concepts in unique and possibly questionable ways. Heresy is a BASIC-inspired dialect of Lisp designed originally as a learning tool for functional programming, with a focus on immutability without expense to ease of use.

John Berry is a largely self-educated writer, comedian, and software engineer with a special passion for functional programming and Lisp languages. Formerly a Clojure developer at our esteemed hosts, the author now toils in the Scala mines deep within the bowels of a local food delivery app.

Most developers allegedly hate writing documentation. On the other hand, pretty much everyone considers good project documentation to be a strong indicator of the project's quality. Go figure!

In this session we'll examine the state of the current documentation initiatives and practices in Clojure, some overall problems with documentation in Clojure and some potential solutions. Here's a few topics will touch upon:

the various Clojure documentation projects

the quality of the official Clojure documentation

lessons we can learn from other Lisps when it comes to documentation

adopting a common convention for structuring docstrings

additional documentation metadata

Documenting things can be fun and extremely rewarding! Join us and find out how!

Bozhidar is the maintainer of CIDER and the editor of the community Clojure style guide. Most people would probably describe him as an Emacs zealot (and they would be right). He's also quite fond of the Lisp family of languages, functional programming in general and Clojure in particular.

Believe it or not, Bozhidar has hobbies and interests outside the realm of computers, but we won't bore with those here.

Last year David Nolen gave a presentation about history and future of ClojureScript here. My presentation is one contributor's view of what has happened during the last year, and some ideas what might happen next. I will introduce the latest features, why they exist, why the are important and what are we still missing.

Juho Teperi is a Clojure programmer at Metosin. He works on enterprisey Clojure projects, but doesn’t yet (anymore) know what is the best solution to building complex Clojure(Script) applications. Still, he is aware that low-level tools and libraries, are important part of a good ecosystem.

As programmers we build increasingly complex software by creating abstractions and composing them. While this method is good for programmer productivity it comes at a performance cost and usually results in slower programs.

In functional programming, and Haskell in particular, there is a popular idiom to compose abstractions using an intermediate data structure: a producer function generates some piece of data which handed over to a consumer function. This form of composition suffers from having to allocate the intermediate data.

To deal with the cost of composition, the Haskell community has adapted an optimization, called fusion, which can eliminate intermediate data structures and fuse together a producer and a consumer into one function. The net result can often be as good as hand-tuned code. This talk will cover various forms of fusion and how they enable programmers to create and use guilt-free abstractions which don't come with a performance cost. It's like having your cake and eating it too.

Josef Svenningsson

Josef Svenningsson splits his time between being a consultant at HiQ and an Assistant Professor at Chalmers University of Technology. At HiQ he's currently stationed as a designer and systems manager for Ericsson. On the academic side he has a broad range of interest in computer science and has published papers on wide variety of topics, including: program analysis, constraint solving, security, programming language design, testing and high-performance computing. His programming language of choice is Haskell.

Scala.js allows developers write robust and scalable web frontend apps purely in Scala. This talk gives an introduction to Scala.js and what it brings to frontend development. We will use as examples two Scala libraries, Suzaku and Diode, that allow developers write clear, concise and (mostly) functional UI code purely in Scala.

Reagent is a framework used to create React applications in native ClojureScript. Re-frame offers a state container framework that is often used with Reagent.

In this talk we'll go through some basics of developing functional web applications with ClojureScript. This talk will also cover some common Reagent/re-frame design problems using a real-world example.

Esko Lahti

Esko is a programmer at Reaktor. He loves solving complex problems where both deep technical understanding and interaction with people are involved, although best thing in his work is that he gets to write Clojure and ClojureScript daily.

The practical experience of many FP enthusiasts says that function purity and data immutability are good for you and your program. In order to gain some theoretical support to this intuition, we take a mathematical look at a simple sorting algorithm, in both imperative and functional implementations. They both achieve the same thing, but the formal tools needed to explain why and how they exactly work, are quite different in style and complexity.

Juhana HelovuoAtostek

Juhana Helovuo programs at Atostek, nowadays mostly for mobile robots. Previous experience includes the design of a highly parallel functional programming language, implementing a compiler for it in Haskell, and several pieces of mobile robot control and planning software, mostly in F# and Haskell.

This talk will go over the RowList type-level structure in PureScript and how it can be extracted from row types for applications such as JSON serialization, type constraints, working with sophisticated record types, and more.