axelson

axelson

Scenic Core Team

11) ElixirConf 2017 - Its Better Unstated - TJ Stankus

ElixirConf 2017 - Its Better Unstated - @tjstankus

This is a story about transitioning an obsession with object-oriented software design to an obsession with functional software design. It’s about experimentation, learning, and play. It’s about what happens when you let go of sacred cows you’ve hung onto for nearly 20 years and insist on wiping the slate clean.

The story is told through a code kata. It starts with a Ruby example, the result of a rigorous application of OO principles. It’s thoroughly decomposed, free of conditionals, and contains small objects representing domain concepts, including state. The solution is all about state and it’s lovely, if a little overwrought.

But could I implement the same kata in Elixir entirely without state? It turns out that leveraging functional approaches and Elixir features like pattern matching, robust list processing, and guard clauses, a conditional-free solution emerged with an 85% reduction in lines of code.

This talked is aimed squarely at the developer thinking about or just starting to transition from an OO mindset to a functional one. I’ve had several jaw-dropping moments along my learning path and I hope to share my experiences and enthusiasm with others.

Audience: Beginner

All talks are available in the Elixir Conf 2017 Talks List or via the elixirconf2017 tag

Most Liked

tjstankus

tjstankus

Guilty as charged. :slight_smile: It’s hard not to talk shop and teach with her as much as I do and not be strongly influenced by her ideas and presentation style.

JEG2

JEG2

Author of Designing Elixir Systems with OTP

I completely understand that. Sandi is terrific. I keep hoping she’ll try Elixir someday! :slight_smile:

JEG2

JEG2

Author of Designing Elixir Systems with OTP

I could definitely tell that this talk was done by someone who has taught with Sandi Metz. It sounded like her at times.

Where Next?

Popular in Talks Top

AstonJ
Just starting to go up - here’s the first three: By @lpil By @Crowdhailer By Evadne Wu (Why aren’t you a mem...
New
CodeSync
Code Sync: Keynote: Gang of None? Design Patterns in Elixir - José Valim | ElixirConf EU 2024 Comments welcome! View the <span class="ha...
New
axelson
ElixirConf US 2018 – Behavior Trees and Battleship: Tapping into the Power of Advanced Data Structures – Jeff Schomay ...
New
axelson
ElixirConf 2017 - Keep an Eye on the Sky with Nerves and Phoenix - @electricshaman As part of the next gener...
New
axelson
Here’s the last ElixirConf 2017 video of day one! ElixirConf 2017 - Scaling up Elixir at TpT - by @shanti I...
New
axelson
Almost done with posting the Elixir Conf talks! ElixirConf 2017 - Realtime Vehicle Tracking with Elixir and Phoenix - @st23am ...
New
New
New
kokolegorille
Hi everyone, It seems Elixir conf 2018 are starting to pop up on Youtube… Not really an index file, but You can start here
New
ElixirConf
ElixirConf: ElixirConf 2023 - German Velasco - Using DDD concepts to create better Phoenix Contexts Comments welcome! View the <span cla...
New

Other popular topics Top

vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
AstonJ
Posting this to see if we can make things easier for people to get into Neovim. If you use Neovim and have a favourite distro please let ...
New
chrismccord
This release brings a number of exciting features, including integration with the new Phoenix LiveDashboard and Phoenix LiveView. There h...
New
gausby
I asked this very same question on twitter and got some interesting feedback, but I thought it would be a good question to ask here as we...
1207 39467 209
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
boundedvariable
I am going through the kafka architecture. All the features what the kafka is providing are already in Erlang. I would like hear your opi...
New
shijith.k
I am trying to start a new phoenix project with elixir 1.9, but mix phx.new does not work. It says that ** (Mix) The task "phx.new" could...
New
vegabook
I’m brand new to Phoenix and I have stripped one of the demo applications to the bone. I just want to get an svg up on the screen. Here i...
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New

Latest on Elixir Forum

Elixir Forum

We're in Beta

About us Mission Statement