ElixirConf advances the elixir programming language and the communities and companies surrounding it by bringing together the technically minded to establish relationships for work, collaboration, and entrepreneurship. We learned from over 40 speakers, trainers, and keynotes on how top companies and developers are taking advantage of Elixir’s ability to build resilient distributed systems, secure embedded systems, and modern real-time UI with Phoenix LiveView.
There were 111 attendees at the conference, according to the Whova app. The crowd was diverse and welcoming with passionate developers from all over North America and the world.
The Gaylord Rockies
The first impression of the Gaylord Rockies resort was The Shinning meets convention center. It’s right next to the airport, so getting there was easy. The long hallway that connects the main lodge to the convention center offered a distant view of the Denver skyline with a Colorado Rockies backdrop. Wednesday night there was a power outage from about 5:30 pm. I took that time to go into Denver and check out 16th street. 16th street is Denver’s pearl necklace, a gentrified street with local boutiques next to Taco Bell expresses. I got back to the resort around midnight; the power was still out. The power came back on around 2 am. Then there was a fire alarm at 5 am for one hour. The rest of my stay was pretty uneventful. I am not used to the Colorado climate, so I took it easy.
Build Performant, Real-Time UIs with Phoenix LiveView
Elixir in the Jungle
The second day of training was the highly anticipated by me, “Elixir in the Jungle.” It started with building a “Rube Goldberg machine” (think The Goonies opening scene) out of stuff like cardboard, twine and pipe cleaners. We all got the analogy of how AWS is complicated and is a house of cards.
The next two days were talks. The first day of talks got off to a rough start due to the power outage and fire alarm, and I missed the morning keynote and the first quarter talks.
How LiveView Handles File Uploads
Beyond LiveView: Building Real-Time Features with Phoenix LiveView, PubSub and Presence
The next talk I went to was Sophie DeBenedetto’s “Beyond LiveView: Building Real-Time Features with Phoenix LiveView, PubSub and Presence.” It was a tough call choosing between Sophie’s talk and GraphQL Based Microservices, it’s such a great thing to have all the talks available on youTube the next day. Sophie’s talk was a great refresher from the Phoenix LiveView course on the first day of training. Her talk goes over her implementation of live updates using presence and channels, all to find out the day of the conference that what she gallantly did with presence and channels, can now be done with Hooks with much fewer lines of code. Which she says she was totally ok, as she bitterly took a sip of water. Reminded me of the adage that when using bleeding-edge technology, it is the developer that bleeds.
Elixir + CQRS – Architecting for Availability, Operability, and Maintainability At PagerDuty
The next talk I went to was Jon Greiman’s talk on CQRS, which stands for Command, Query, Response, Segregation. The best definition he says is by Martin Fowler: “At its heart is the notion that you can use a different model to update information than the model you use to read information.” Alternatively, as he puts it: “Separate code that changes state from code that evaluates state.”
I took a power nap and missed the 3:15 pm to 3:55 pm talks and most of Andrea Leopardi’s “Mint – Disrupting HTTP Clients” talk because you know, sleep deprivation from 5 am fire-drill.
Platinum Messages by Pleroma and Erlang Solutions
The pre keynote “Platform Message” by Pleroma and Erlang solutions was next. According to Pleroma website, its “a free, federated social networking server built on open protocols. It is compatible with GNU Social, Mastodon, and many other ActivityPub and OStatus implementations.” Pleroma looks like a great option to look into for a federated social network. I find most interesting that Pleroma has a notion of themes and something to research further.
José Valim Keynote
Jose’ Valim keynote was most importantly, reassuring in that Elixir has no definitive timeline for 2.0, and there are no new features to be added. The goals of Elixir have been met and now its time to build things!
The last day I was energized and took notes.
Justin Schneck Keynote
Justin Schneck keynote was on the state of the Nerves project, and an impressive demo of the game snake across multiple screens, live code updated across all devices.
The next talk I went to was Randall Thomas “(UN) Learning Elixir.” I was pretty excited about this one once I connected that Randall was the person who led an interesting discussion during the Elixir in the Jungle training break. Key takeaways from his (Un)Learn Elixir talk were how to learn:
- Study it
- Teach it
- What didn’t you know?
- Fill in the gaps
furthermore “Learn how you learn.” However, don’t forget, learn the basics, learn Elixir (He recommends “Programming Elixir” by Dave Thomas). His other book recommendations are:
- Thinking, Fast and Slow
- Functional Programming For The Rest of Us
- Programming Elixir
- Designing Elixir Systems with OTP
Photogenic: Building a Photo Booth with Beginners Using Nerves, LiveView and Scenic
Bruce Tate, co-author of many books in the Elixir community, the talk was titled “Photogenic: Building a Photo Booth with Beginners Using Nerves, LiveView and Scenic,” It was more about learning by breaking problems down into functions. It was a good follow-up to (Un)Learn Elixir talk right before, in the same room. The highlight for me was hearing Dave Thomas asking a question. Yes, I am that much of a fanboy. Links from his talk:
Crawling The Web With Elixir
Next talk was “Crawling the Web with Elixir” by Adam Mokan. Bullet points were:
- ~Nightmere.js~ puppeteer.js (for Headless crawling)
- Floki for parsing
- Use Genserver
- Redis for job queue
Kubernetes at Small Scale
The next talk I enjoyed quite a bit, it was titled “Kubernetes at Small Scale” by Phil Toland. Phil does the thing he does at a small company called Hippware that is currently working on a location messaging mobile app called TinyRobot. Being a messaging app; building a robust, scalable platform is a must. His talk is about his journey doing just that. His distro journey stared with Rancher OS and Tectonic (until it got bought by Redhat). He settled on using Amazon EKS. Alternatively, if using Google Cloud Platform, you could use GKE. Highlights of using Kubernetes:
- VMs in cluster improve resource efficiency
- Ease of maintenance
- Worker VMs are easier to manage than VMs
World shortest Kubernetes tutorial
- Pod: One container per pod. Think of them as a tiny server
- Service: Exposes pods to the outside world
- Config Map: key-values to decouples artifacts from image content to keep containers portable
- Outsource as much as possible; Use something like AWS, GCP
- Automate all the things! Use Terraform
- Pods are ephemeral!
- Automatic Clustering: Use Swarm, Peerage
- Deploying: Use Shopify Kubernetes Deploy, point to YAML manifests and deploy
- One instance per node
- It’s worth the work
ETS Versus ElasticSearch for Queryable Caching
In David Schainker from Adobe talk “David Schainker “ETS Versus ElasticSearch for Queryable Caching.”
He goes over the pros and cons of Elastic search vs. Elang Term Storage (ETS). ETS is a key-value table containing tuples. ETS is built on top of OTP and has no garbage collection. Data is concurrently accessible. David also went over a tool called ETSO, which enables using Ecto schemas with ETS tables and handles ETS table supervision.
Full-text search is the “gorilla in the room”. In his search, he checked elib1, the late Joe Armstrong library that uses what he calls an inverted tree, Lucence which is built in Java, RediSearch or Riak. Choosing one depends on your team.
UI Testing is Ruff; Hound Can Help
Finally made it to the last talk of the day, Vanessa Lee’s “UI Testing is Ruff, Hound Can Help”. Hound is an Elixir library for writing integration tests. Hound offers Helper functions of which Vanessa uses Navigation, Page, Element, JS execution, and screenshot. Hound is fast, sometimes too fast. To remedy, Hound has the Matchers helpers element? , visible_in_page? and visible_in_element? . Other helpful helpers:
Vanessa’s talk progresses up the slippery slope of property-based testing, using generators and StreamData. Property-based testing is
- describing your system in a set of its most basic properties & testing them
- fuzzing: throwing massive quantities of random data at those tests
- finding problems in the system design based on the failures. Knowledge was gained by the book Property-Based Testing with Proper Erlang and Elixir by Fred Hebert and feedback given to her after giving a smaller version of her talk at CODE ELIXIR LDN
Ahh, Finally to the final day Platnim Message and Keynote.
EEF – Miriam Pena & Desmond Bowe
First up was Miriam Pena & Desmond Bowe. Miriam Pena is a board member and founder of the Erlang Ecosystem Foundation (EEF) and organizer of the Elixir meetup in San Francisco. Desmond Bowe is also a founding member of the EFF, is cohost of one of my favorite Elixir podcast, ElixirTalk and also hosts another great Elixir Conference, EMPEX. The EFF website, erlef.org/, has been moved from WordPress to Phoenix (I would love to pick their brains on this). The EFF now has a grant proposal process . Other ways to get involved are:
- find a working group
- request a grant
- become a member
- ask your company to be a sponsor
Chris McCord Keynote
Finally made it to the final talk, Chris McCord’s keynote. If you have read this far, you know who Chris McCord is. Guess what Chris’s keynote was on? No, not his dog, it was on LiveView. Chris’s first announcement was his excitement for Phoenix Phrenzy. With each new entry into Phoenix Phrenzy, Chris receives even more superpowers to put into Phoenix, so keep those entries coming! Deadline for entries is September 30th. So glad I took notes, because I jotted down this gem: https://live-view-collection.herokuapp.com/. Your welcome.
Goals for LiveView v0.1.0
- Live navigation
- prepend/ append updates
- File uploads (soon): its going to be like five lines of code
- IE11 Support
- live_redirect/live_link (push state, that updates the url in browser bar)
The key feature added to LiveView is updating the dom with just one data item instead of all of them from the server. Single item updating was released the day of the conference and was a causation of havoc of LiveView training classes and talk.
Bold Claim by Chris McCord…
- better load times than the best-written SPA
- “Elixir, It feels like cheating.” — Jim Freeze
- Blows his mind, even though he developed it