Slide 1

Slide 1 text

A Nerves history from a non- embedded developers team, building a world-class IoT for AI product Alfonso Gonzalez a.k.a @phonnz [email protected]

Slide 2

Slide 2 text

A Nerves history from a non-embedded developers team, building a world-class IoT for AI product A history of embedded systems made easy by Elixir & Nerves! Actually neither Embedded nor Erlang/Elixir.

Slide 3

Slide 3 text

Embedded systems made easy with Elixir & Nerves! Go for it! Nerves-Project made super approachable Embedded systems!!!

Slide 4

Slide 4 text

Embedded systems made easy with Elixir & Nerves! Go for it! Nerves-Project made super approachable Embedded systems!!! No so technical talk

Slide 5

Slide 5 text

> Our Product > Team Scene > Iterations > Why Nerves ? > Nerves Process Agenda

Slide 6

Slide 6 text

the_magic_keys = Our Product |> Team Scene |> Iterations |> Why Nerves? |> Nerves Process Agenda

Slide 7

Slide 7 text

Phonnz - +10 yrs software development - ASM - Desktop Applications - Web Development - Building Teams & Embedded Applications

Slide 8

Slide 8 text

Elixir taught me about concurrency and fault tolerance 💟

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Team Scene The team didn’t know anything about embedded systems. - Hardware background - Web Development experience “Oh! We can communicate via SSH” … “Why not to write a webserver?”

Slide 12

Slide 12 text

Step 1 - Sensors & controllers via GPIO - Gstreamer video recorder - SSH management - SCP file uploading

Slide 13

Slide 13 text

Step 1 - Sensors & controllers via GPIO - Gstreamer video recorder - SSH management - SCP file uploading

Slide 14

Slide 14 text

Step 2 - Remote control over the network - Remote upgrades - POST data to main server

Slide 15

Slide 15 text

Reliable (?) Almost every exception results in reboot

Slide 16

Slide 16 text

Step 3 - Robust application manager - Robust remote upgrades *not easy for the team

Slide 17

Slide 17 text

Houston...!

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

> Elixir > OTP > Good Learning Resources > Community

Slide 21

Slide 21 text

Approachable! Was so easy to jump into Embedded applications. (Embedded systems as well)

Slide 22

Slide 22 text

> Elixir > OTP > Good Learning Resources > Community

Slide 23

Slide 23 text

def amazing_development_experience() do Elixir |> OTP |> Good Learning Resources |> Community end

Slide 24

Slide 24 text

Circuits GPIO fwup VintageNet Slipstream nerves console ring_logger

Slide 25

Slide 25 text

We really need to record video so we need GStreame r but not only that, we need our encoder

Slide 26

Slide 26 text

- Required omx encoder - Old Gstreamer version FAIL!

Slide 27

Slide 27 text

Stable Solution (?) - Raspbian - Docker - Omx encoder - Runtime tricks

Slide 28

Slide 28 text

This is not WORKING! we need to compile a Custom System

Slide 29

Slide 29 text

Stable Solution (again?) - Nerves 32 bits - Gstreamer - Omx encoder

Slide 30

Slide 30 text

Nerves 64 bits! - Last Linux kernel - Gstreamer - No more GPU encoder - Concurrent Encoding

Slide 31

Slide 31 text

Circuits GPIO fwup VintageNet Slipstream nerves console Ring_logger gstreamer muontrap docker Exqlite

Slide 32

Slide 32 text

Now we want to be SECURE! but now we need … Java ? CGroups ?

Slide 33

Slide 33 text

Circuits UART Circuits GPIO fwup VintageNet Slipstream nerves console Ring_logger gstreamer muontrap :observer cubDB poncho apps

Slide 34

Slide 34 text

Community 💟

Slide 35

Slide 35 text

Thanks Jose Vicente Rodriguez And all the community supporters Frank Hunleth

Slide 36

Slide 36 text

The magic keys! … and the most important Find your learning resources Docs, elixir school, video, blogs Embrace the community! Slack, elixir forum, meetups This is not magic

Slide 37

Slide 37 text

Lose the Hardware Fear! Start Now! Elixir ecosystem community is amazing!

Slide 38

Slide 38 text

Embedded systems made easy with Elixir & Nerves! Go for it! Nerves-Project made super approachable Embedded systems!!!

Slide 39

Slide 39 text

Embedded systems made easy with Elixir & Nerves! Go for it! Nerves-Project made super approachable Embedded Systems!!!

Slide 40

Slide 40 text

Go for it! Nerves-Project made super approachable Embedded Systems!!! Q&A @phonnz [email protected]