Boulder, May 26-28 2016

A celebration of functional programming and community

Moonconf is a three-day conference for the functional programming community to learn and celebrate together. There will be single-track talks on Thursday and Friday and an all-day openspace unconference on Saturday. Moonconf is offered with love, and we'd love to see you there.

Three full days

Talks & Talks

Thursday & Friday will get your brain buzzing with talks about functional programming and community. See the concise schedule here and detailed descriptions here.

Hands-on Openspace

Day 3, Saturday will be an opportunity to explore the topics more deeply. We'll start our openspace with a facilitated opening session, in which we decide together how we will spend or time. The rest of the day will be full of pairing sessions, lighting talks, hackathons, whatever you need to get the most out of what you're learning.

Beginner Workshops

Also on Saturday, parallel with the openspace, we'll have beginner workshops running all day. Anyone with coding experience is welcome.

Three Days of
Functional Community

View Schedule

Code of Welcoming Conduct

We are coming together, in everything we do, with an intent to care for ourselves and one another. We want to nurture an empathetic culture. This "code of conduct" is the structure for our work together, the foundation. To us, a code of conduct is a affirmation that we are responsible, together, for maintaining this culture, and it's a clear statement that we will take action to protect it, including limiting who we invite into (and exclude from) our spaces.

Please read the full Code of Conduct.


Our venues are ADA compliant, accessible for the mobility impaired. (Note that the Hotel Boulderado is historical, so only some rooms are accessible. They work around any problems.)

Please let us know if you require other accomodation. We intend to be accessible to everyone who wants to come. Twitter DMs are open, or email any organizer (

Location – Boulder, CO

eTown Hall 1535 Spruce StreetA block from the Pearl Street pedestrian mall, eTown will be our venue for talks on Thursday and Friday.

Galvanize 1035 Pearl Street, 5th FloorSaturday, we will be at the tip of the mall at Galvanize, for a hands-on day of openspace and workshops!

Hotel Boulderado 2115 13th StreetIt's a busy weekend, so reserve early. Call 303.442.4344 and give them "rate code" SP2016. (Code doesn't work online.)


Our Sponsors

Talks and Talks

On Thursday & Friday, May 26th & 27th you will learn from an array of amazing speakers who cover a slew of interesting topics ranging from mathematics to language design, from career advice to actual astronomy.


"Well, Actually..." or, How to Empathy

with Alex Harms

Thursday @ 10 | Functional programmers have a reputation for being hard to work with. Ever wondered why?

You've heard empathy is a learned skill. Let's really talk about it. What does it mean to have empathy? Why does it matter, anyway? And if empathy is useful (I hope to show you how it is), how do you get better at it?

In this session, you'll learn real stuff about what's in your own heart, and how to connect to the people you encounter. Less feeling shitty, more enjoying projects!

Hacking Web Apps with Clojure(Script) @ Code for Denver

Thursday @ 10:30 | Over the past year, Code for Denver has embraced Clojure and ClojureScript as key technologies for civic hacking projects. This talk will draw on real-life stories from our experiences to discuss the challenges of bootstrapping devs into the Clojure ecosystem, the pros and cons of picking Clojure as a technology for web apps, and unexpected joys of building Clojure APIs and ClojureScript front-ends for good in our community. We will cover the libraries, tools, and principles you’ll need to start hacking web apps and making an impact.

Break & Conversations | 11:00 - 11:30

Architecture, Front End and a Bit of Front-End Architecture

Thursday @ 11:30 | “Lisp isn’t a language, it’s a building material.” —Alan Kay.

Architecture teaches us that there is strong connection between the history of building materials and the actual structures that are built. Introducing philosophers Walter Benjamin and Peter Sloterdijk’s thoughts on the influence of materials on the practice and theory of building, I will draw a parallel between historical buildings (such as the Sagrada Família and the Chrysler Building) and the way we build front-end applications. We will discuss how using different languages and techniques leads to different artifacts, and explore specific patterns and principles from back-end development that we can use to build better architected front-end software.

After my talk, attendees will know: why and how front-end structures become increasingly complex, what software designers can take from the history of architecture, and a set of principles from back-end and distributed architecture to introduce into front-end architecture

Tulip: A Well-Balanced Language

Thursday @ 12:00 | There are a lot of competing ideas about what makes a language “good”. This is because we as language designers still have no idea what we’re doing. The design of Tulip is based on careful study of a wide variety of popular and esoteric programming languages over about 4 years. Its runtime takes cues from Erlang, and its syntax is slightly like ML, but with a few key innovations designed for repl ergonomics. Tulip is one of the new languages to come out of the language community Snek, emphasizing languages by minority designers and implementers.

Lunch | 12:30 - 2:00

loop while (“profit”) — Gambling, Software, and How To Win At Everything

Thursday @ 2:00 | If baseball is America's Pastime, then surely poker is America's Game. An iconic game of the Wild West, today it has emerged as a preeminent game of skill and intellect, dominated by mathematicians, stock brokers, and developers. What has software development brought to this American tradition, and what lessons does poker have to offer us in return? In this talk, I'll give you a crash course in poker, discuss statistics and odds, the psychological aspects of the game, how I've used poker to improve my development practices and my career, and how the skills of one profession can help us understand another.

Fetching Moths from the Works: Correctness Methods in Software

Thursday @ 2:30 | We live in a nice world. There’s a wealth of historical thought on achieving correctness in software–shipping code that does only what is intended, not less and not more–and there are a whole bunch of methods available to us as practitioners. Some of these are hard to apply, some are easy. For instance, case testing is widely used and considered standard practice. Property testing is understood to exist but not widely used. The application of advanced logics? Way out there.

If you look around you’ll find a lot of software fails a lot of the time. Why is that?

In this talk I’ll give an overview of the methods for producing correct systems and will discuss each in its historical context. With each method, we’ll keep an eye out for present applications and the difficulty of doing so. We’ll discuss why there’s so much buggy software in the world. I expect there will be talk of spaceships a bit. By the end of this talk you ought to be able to make reasoned decisions about applying correctness methods in your own work and have a good shot at building better software.

Break & Conversations | 3:00 - 3:30

The J Language: Consistency, Adjacency, and Solution-Oriented Programming

Thursday @ 3:30 | Programmers without array-language experience are often shocked by J programs because they look so different.

What lets J code be so short are consistencies that let many things go unsaid. Among these consistencies is a tight syntax in which adjacency of tokens has immediate semantic power.

Experience for yourself the way terse expression comes from this minimalism. Glimpse why those who learn this language tend to prefer it so strongly ever after.

Zombie-pocalypse: Epidemic Gossip in Haskell

Thursday @ 4:00 | Zombies are scary because they’ll eat your brains. Epidemic gossip protocols are awesome because they’re like a zombie apocalpyse—minus the cannabalism. See what it’s like to be a zombie by learning about a Haskell implementation of SWIM, an epidemic gossip protocol.

When a zombie eats your brains, it becomes infected with a virus that spreads effectively in a biological community. By understanding how zombies will destroy humanity, we’ll see how a cluster of nodes knows when new members join or die, and how that state is propagated in a system.

Distributed systems are hard, and many Haskell-naysayers think IO is difficult. I’ll show that non-trivial distributed systems can be developed and tested in Haskell with all of its wonderful benefits: reasoning, safety, correctness, and maintainability.

Break & Conversations | 4:30 - 5:00

Program Derivation for Functional Programs

Thursday @ 5:00 | Despite what your boss thinks, programs don’t just appear straight out of specifications. But…what if they did?

In this session I will show you how to systematically and step-by-step derive a program from a specification. Functional languages especially are very suited to derive programs for, as they are close to the mathematical notation used for proofs.

You will be surprised to know that you already know and apply many techniques for derivation, like Introduce Parameter as supported by Resharper. Did you know that is actually program derivation technique called generalization?

Planet 9 from Other Space, and Other Things Found in Big(ger) Data

Thursday @ 5:30 | Modern all-sky surveys are enabling new kinds of discoveries by allowing statistical studies to trace out the locations of hidden planets, pressures, and exoplanets. The most exciting of these discoveries is Planet 9, a new world predicted by the orbits of icy Kuiper Belt Objects and defined by where it isn’t in all-sky surveys. It follows on the heels of projects that map out invisible dark matter and describe Dark Energy’s expansion of the universe.This talk will look at how massive data collections have allowed us to detect these and other things that can’t be seen, and how future data sets will make today’s Big Data seem small.


with everybody

We'll have games and ice cream and conversations and connections!

The party will be at Galvanize, which is the same place as Saturday's openspace.


Safe, Humane Environments Are Major :key:

Friday @ 10:00 | Software development requires trusting your team. Attending conferences requires trusting attendees, speakers, and organizers. Those who are under-represented require different or emphasized forms of safety and trust that dominant culture takes for granted. Multiple spaces necessitate equity if the tech industry truly is dedicated to “diversity” and “inclusion.” In this talk, we’ll discuss and share experiences of dominant spaces and how they have discouraged safety. Most importantly, we’ll examine how to shift to safe, humane environments and discover how they look, feel and benefit.

Embarking with Elm

Friday @ 10:30 | Elm touts itself as “the best of functional programming in your browser,” so we’ll explore that assertion via the language’s syntax, semantics, and ecosystem through the eyes of a relatively newcomer to the language. We’ll see how its strong types allow us to code and refactor with confidence. We will leverage the power of Elm’s impressive asynchronous task handling. And of course, we’ll enjoy some of the famously helpful compiler suggestions along the way!

Break & Conversations | 11:00 - 11:30

Recursion: Where Functional Programming Hits Bottom

with Greg Pfeil

Friday @ 12:00 | What are the problems with recursion? How can they be resolved while improving both the performance and clarity of your code? In this talk, we’ll learn how to separate recursion from the semantics of our program using generalized recursion schemes. We’ll discover the benefits that come from that approach and identify some pitfalls that may seem helpful at first. We will also see how to adopt this style gradually in existing projects, gaining the benefits incrementally without disrupting code that already works. Most of the content is language agnostic (but typed), with specific examples given in Haskell and Scala.

Lunch | 12:30 - 2:00

Point-Free or Die: Tacit Programming in Haskell and Beyond

with Amar Shah

Friday @ 2:00 | Point-free syntax allows you to define functions without naming their arguments. But is “point-free” just point-less? Ostensibly, tacit definitions can calibrate code to the appropriate level of abstraction. But which level is most appropriate? When is a point-free definition better than its “pointed” variation? And when is it spectacularly worse?

Let’s be explicit about tacit programming. Let’s apply eta-reduction to produce it. Let’s develop our intuition for its expressive power. Let’s speak at length, about the unspoken.

Session Types for Me and You and Everyone We Know!

Friday @ 2:30 | Concurrent and distributed systems are unwieldy, and many of the patterns we program them with are informally characterized. How can we provide safety mechanisms at runtime and structure inter-process communication? One approach is session types, a formalism to model distributed communicating processes, describing protocols as type abstractions. This talk will cover the basics of what session types are and how they provide a safety net for asynchronous interaction across our increasingly complex platforms and networks.

The flow of this talk will start with the motivation for the need to formalize communication patterns across actors/channels/processes. Then, I’ll define what session types are and briefly describe their ongoing history. Finally, I’ll describe a couple specific approaches, geared around functional dynamic languages as a form of runtime rejection, for which session types can be applied.

Break & Conversations | 3:00 - 3:30

Negotiating Salary for Women in Tech

Friday @ 3:30 | I’ve been negotiating salary and rate with and on behalf of IT consultants for years, and firmly believe that a major contributor to the wage gap is that women don’t negotiate their salaries. So from the first job we take, we’re behind the curve and never catch up.

I’ll present the theories behind how to negotiate and demonstrate how it should actually sound. We’ll cover how to understand your worth, when to stick to your guns and how to use benefits and flexibility to build a great package for yourself. I’ll give an insider’s look into negotiating with recruiters, and give you the tools to establish a firm footing for a great salary negotiation.

Bracer: Transforming Real-World Languages with Coproducts and Recursion Schemes

Friday @ 4:00 | Curly-brace languages won the syntax war: the pattern of delimiting scope with curly braces appears in countless programming languages, data interchange formats, and configuration files. However, the small but significant syntactic differences between these languages means that APIs for transforming, filtering, and modifying said languages are, when they exist at all, very specific and inextensible. Bracer is a Haskell-based toolkit for parsing various curly-brace languages that seeks to change this. I’ll outline the challenges associated with building an extensible language workbench, and how borrowing seemingly-abstract concepts (recursion schemes and coproduces) from the functional-programming literature enables us to parse and transform source code safely, concisely, and efficiently.

Break & Conversations | 4:30 - 5:00

Openspace Session Proposals: Lightning Talks

with You!

Friday @ 5:00 - 5:30 | In preparation for the openspace on Day 3, this is your chance to present (for five minutes or less) on a session you'd like to lead, or at least host.

Did a project idea come to you during the conference that you'd like to hack on? Maybe you want to find folks who'll learn a new language together. Or talk about your favorite project. Or maybe you'd like to have a session about job searching, empathy, or communication!

It could be a session about something you want to learn, rather than teach. See if you can entice the speaker who inspired you to come and dive deeper during openspace.

Saturday Openspace

Openspace: Hacking Sessions & Deep Discussions

with everybody

All day at Galvanize | We'll plan the schedule together in the morning, and spend the day in the sessions we've created, working on what we're most excited about. Create the session you want, join other folks, or just hang out.

Traditional openspace rules:

  1. Whoever comes is the right people
  2. Whenever it starts is when it starts
  3. Whatever happens is the only thing that could have
  4. When it's over, it's over.