EMPEX is a sophisticated conference series for functional programming languages and ecosystems held in New York City. We present a single track of technical talks in a jazz club. Our goal is to bring a sense of aesthetic and fun to the growing functional community. We'd love for you to join us!
Training courses will be held on May 17th, the day before the EMPEX conference. The location will be announced soon.
Device to the Cloud with Nerves and NervesHub
The Elixir language and Erlang runtime provide a uniquely robust and productive environment that runs well from embedded to server. This class extends on previous Nerves training to the cloud for device/server communications and device management with NervesHub. Attendees will assemble real devices and build out the software step-by-step for a simple multi-user game with the help of the authors of Nerves.
We’ll spend the first half of the day building the device and getting comfortable with developing and debugging on Nerves. If you’ve attended previous Nerves courses, this one will have greater emphasis on networking and device provisioning. The second half transitions to managing devices with NervesHub and developing a simple companion Phoenix application.
The workshop is appropriate for beginners and expert Elixir programmers alike since it focuses more on embedded development than pure coding. Since the Nerves development is rapidly improving, even veteran embedded Elixir programmers will learn new ways of making their development cycle better. Beginners to Elixir are highly encouraged to create a couple toy projects and learn about GenServers and OTP releases beforehand.
We will be providing Raspberry Pi’s and accessories to use during the class. It is unnecessary to buy hardware. We know from past classes that many people want to use hardware that they can take home. If you would like to do this, you can buy class materials beforehand:
- Adafruit OLED Bonnet Pack for Raspberry Pi Zero - Includes Pi Zero W
- 4 GB or larger MicroSD card
- MicroUSB cable to connect the Raspberry Pi to your laptop
- NervesKey - We will have extra NervesKeys for the class
Note that the Adafruit OLED Bonnet Pack requires you to solder a header onto the Raspberry Pi Zero. The Raspberry Pi Zero WH may be available with a pre-soldered header. Rest assured, if your hardware fails, we will provide a kit for the class.
Thinking In Types
In this one-day workshop, we'll explore the distinguishing features of Haskell's type system. Haskell has several varieties of types: sum types, product types, newtypes, as well as functions over types (aka "HKTs" or "type constructors"). There is no "any" type, no "null" value, no "subtype" relationships.
This workshop is intended for people who do not have much experience with the Haskell language, and the goal will be to give a practical understanding of some of Haskell's most important features and how to start thinking in types. Please come prepared to write code. It is recommended that you have GHC installed before the workshop begins.
Julie Moronuki is an author of books about Haskell and co-founder of Type Classes, a Haskell education and consulting company. Before learning Haskell, Julie had been a linguist, librarian, and teacher. She lives in Montana.
Crash Course in Elixir, for (Ruby, Java, JS, etc) Developers
Are you interested in Elixir, but you haven't yet learned the language?
Are you an imperative language programmer who's finding it tricky to get a handle on the functional approach?
Do you find yourself wishing that Elixir had a "for loop"?
We've all been there, and we've developed a one-day workshop to get you past the learning curve. Starting with the absolute fundamentals of Elixir's datatypes, we'll take you through every aspect of the language that tripped us up when we were learning.
By the end of the day, you will be able to confidently solve complex business problems faster and more reliably than you'd have ever believed possible. Learning to build solutions on top of immutable data structures requires a new way of thinking, and we've designed our workshop to get you thinking that way quickly.
We will cover:
- All the built-in datatypes: numbers, binaries (strings), lists, maps, structures, tuples, and atoms.
- Functions: anonymous functions, named functions, and higher order functions.
- Pattern matching: This is a hugely powerful technique, and is probably the one thing most developers miss when they find themselves coding in another language after experiencing it in Elixir.
- Elixir tooling: How our projects are organized, the build system, the dependency management system, the test framework, and the rich documentation system.
- How to model problems using functional patterns instead of Object Oriented patterns.
Our aim is to provide a mentally challenging, but enormously rewarding day. Every segment will include hands-on exercises and challenges, and we will have two instructors helping you if you get stuck.
Who should come? The course is not for complete beginners. You should be comfortable programming in some language, but what language is unimportant. People whose proficiency lies outside the functional paradigm will probably get the most out of the course, but functional programmers who are new to Elixir will find the course to be a useful survey of the main features of the Elixir ecosystem.