## Elm Stuff - Luke Westby
Elm stuff. Elm for things. For hardware!
Elm’s conceptual representation of a user interface is simple and lovely – and very different from the browser’s DOM API used internally by Elm to display our programs to the user. Elm and elm-lang/html hide the low-level complexities of the DOM API from users by using it as a protocol rather than directly as an API. The HTML renderer places a broker between us and the actual DOM API that asks our program for information about our view and provides it with messages from the outside world. As this broker interacts with our program it also feeds updates to the DOM and listens for events to send back. It turns out that this is a very generic way of understanding a UI system.
If we can cut off the part of elm-lang/html that chooses to write and listen specifically to the DOM and instead plug in our own renderers then the possibilities for what can be accomplished by Elm become limitless. If we accept that to Elm, the DOM is a protocol we can start to explore other protocols like MIDI, DMX512, and Firmata. In this talk I will explain what properties of Elm’s conceptual model make this possible and how we can take advantage of them to run Elm for goals other than browser UIs. Most importantly, I’ll show an Elm application I wrote to run in a music performance device over the MIDI protocol.
After seeing this talk and demo it is my hope that we can form a community around using Elm for things from music hardware to IoT applications by rendering to and accepting messages from all manner of devices. Join me in the #hardware channel of the Elm Slack for continued discussion after the talk as well!
## Collections and equality: Challenge Accepted - Robin Heggelund Hansen
How to implement performant collections in nothing but Elm.
CollectionsNg is a library that reimplements the core collection types (Set, Dict and Array) in pure Elm, with working equality and a more stable Array type. The library is available in elm package, and should work as a drop in replacement.
In this talk I, as the author of the library, will explain why the core collections don’t work with equality and how this is fixed in CollectionsNg. I will also explain how the underlying implementation works, and what future plans of the library will look like.
## The current state of Elm - Noah Hall
I’ll go through the survey results from a couple of months ago, talking about things that people felt were their biggest problems with Elm, and how that looks like the current state of the world.