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.
Talks & Talks
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.
Also on Saturday, parallel with the openspace, we'll have beginner workshops running all day. Anyone with coding experience is welcome.
Three Days of
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 (firstname.lastname@example.org).
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.)
Comcast Cable is one of the nation's largest video, high-speed Internet and phone providers to residential customers under the XFINITY brand and also provides these services to businesses. Comcast has invested in technology to build an advanced network that delivers among the fastest broadband speeds, and brings customers personalized video, communications and home management offerings. Comcast Corporation (Nasdaq: CMCSA) is a global media and technology company. Visit http://www.comcastcorporation.com for more information.
Jet.com is a shopping site dedicated to saving you more money. Combining a revolutionary pricing engine, a world-class technology and fulfillment platform, and incredible customer service, we’ve set out to create a new kind of e-commerce experience — and driven by our core values of trust, transparency, and fairness, we want to make that experience more human, too.
Learn more at jet.com/careers
At Simple, doing right by our customers is the heart of our business. Simple customers receive a Simple Visa® debit card that's tied to an FDIC-insured account. This account offers no surprise fees, and provides powerful budgeting and savings tools right in our mobile and online apps. We are headquartered in Portland, OR and support a large group of remote engineers across the US. http://www.simple.com/
Interested in building the future of personal banking with a group of kind, funny, smart people who love music, food, design, coffee, and code, Simple is the place for you. https://www.simple.com/careers
Postmates is transforming the way local goods move around a city by enabling anyone to get any product delivered in under one hour. Postmates' revolutionary urban logistics & on-demand delivery platform connects customers with local couriers, who purchase and deliver goods from any restaurant or store in a city.
Making the world a little gentler for developers & tech teams.
In addition to technical and communication coaching for effective dev teams, Maitra offers resources for devs, including The Little Guide to Empathetic Technical Leadership, and workshops for growing in empathetic leadership. We also host the conversational Geek Joy Podcast.
PaperCall enables event organizers to easily manage their call for papers and talk submissions, without relying on tools such as Google Forms, WuFoo Forms, and other less than perfect systems.
Pobox provides email services that you'll love, whether you're one person or organization of thousands. There's no lock-in, no ads, and no algorithms trying to uncover your secret desires — unless your secret desire is to get helpful, human customer support. Pobox is for people who love email, by people who love email.
Polycount is one of the oldest resources on the internet for video game artists. The community is well known in the industry for its competitions, critiques, advice, and experienced veterans.
Given our age we're fortunate to have polycounters working in most game studios, large and small, with our logo often being an easter egg in their games.
Position Development is a worker-run software development company, with a focus on independent media, cultural institutions and socially minded organizations. We're dedicated to building quality software to help expand the breadth of discourse, culture, and thought available to English-speaking audiences.
We're also proud to be the team behind Wayland, a magazine subscription and fulfillment platform used by Jacobin Magazine and other publications, which is built in Haskell.
Every generation has its own dreams. And its own ideas about success. But the only path to happiness is the one built on your individual goals and values. The first step toward achieving your dreams? Giving them a name. That’s why everything we do at Society of Grownups is designed to discover what you really want.
Our curriculum includes classes, chats, supper clubs, guest speakers, special events, and presentations—all arranged around the things that matter to you. From good food and fine wine to advancing your career, building a home, being a good parent, or simply finding balance.
Become a Sponsor
If you're interested in supporting Moonconf, take a moment to read the Sponsorship Prospectus!
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.
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!
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
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
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
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.
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
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.
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
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?
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.
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.
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.
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
Friday @ 11:30 | tbd
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
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.
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
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.
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
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.
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:
- Whoever comes is the right people
- Whenever it starts is when it starts
- Whatever happens is the only thing that could have
- When it's over, it's over.