Slide 1

Slide 1 text

LEARNING ELIXIR AS AN IOS ENGINEER

Slide 2

Slide 2 text

FOREWORD

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

> Preferring polling over socket connections in a realtime app setting (chat, food delivery, ride sharing etc)

Slide 6

Slide 6 text

> Preferring polling over socket connections in a realtime app setting (chat, food delivery, ride sharing etc)

Slide 7

Slide 7 text

> Preferring polling over socket connections in a realtime app setting (chat, food delivery, ride sharing etc) > Pagination mechanisms based on page # in a mobile app

Slide 8

Slide 8 text

> Preferring polling over socket connections in a realtime app setting (chat, food delivery, ride sharing etc) > Pagination mechanisms based on page # in a mobile app

Slide 9

Slide 9 text

> Preferring polling over socket connections in a realtime app setting (chat, food delivery, ride sharing etc) > Pagination mechanisms based on page # in a mobile app > Dealing with the intricacies of Apple’s own server side APIs.

Slide 10

Slide 10 text

> Preferring polling over socket connections in a realtime app setting (chat, food delivery, ride sharing etc) > Pagination mechanisms based on page # in a mobile app > Dealing with the intricacies of Apple’s own server side APIs.

Slide 11

Slide 11 text

> Preferring polling over socket connections in a realtime app setting (chat, food delivery, ride sharing etc) > Pagination mechanisms based on page # in a mobile app > Dealing with the intricacies of Apple’s own server side APIs. > Other weird technical decisions.

Slide 12

Slide 12 text

> What makes a second language so hard? > The genesis of this choice > Why didn’t I go with Server Side Swift, which should’ve been a better fit? > What makes Elixir so good? > A brief history of the language > What parts of elixir really confounded me as someone coming from Swift

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

> Features in Elixir I absolutely would love if they came to Swift.

Slide 15

Slide 15 text

> Features in Elixir I absolutely would love if they came to Swift.

Slide 16

Slide 16 text

> Features in Elixir I absolutely would love if they came to Swift. > We’ll look at some really cool features in the Elixir ecosystem that make it really unique

Slide 17

Slide 17 text

> Features in Elixir I absolutely would love if they came to Swift. > We’ll look at some really cool features in the Elixir ecosystem that make it really unique

Slide 18

Slide 18 text

> Features in Elixir I absolutely would love if they came to Swift. > We’ll look at some really cool features in the Elixir ecosystem that make it really unique > Suggested QA - what is it like learning a second language?

Slide 19

Slide 19 text

> Features in Elixir I absolutely would love if they came to Swift. > We’ll look at some really cool features in the Elixir ecosystem that make it really unique > Suggested QA - what is it like learning a second language? > What’s a good way to deep dive into a new technology as a junior developer

Slide 20

Slide 20 text

> Features in Elixir I absolutely would love if they came to Swift. > We’ll look at some really cool features in the Elixir ecosystem that make it really unique > Suggested QA - what is it like learning a second language? > What’s a good way to deep dive into a new technology as a junior developer > career prospects etc

Slide 21

Slide 21 text

WHAT MAKES A SECOND LANGUAGE SO HARD? > One of the most challenging but rewarding things you can do as a developer > Idioms & Syntax - How do we do things? > Tooling > New ways of thinking

Slide 22

Slide 22 text

THE GENESIS OF THIS CHOICE:

Slide 23

Slide 23 text

NEW AND SHINY

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

MULTI CORE

Slide 26

Slide 26 text

THE BEAM VIRTUAL MACHINE IS ROCK SOLID AND HAS POWERED CELLULAR NETWORKS FOR YEARS

Slide 27

Slide 27 text

THE EARLY ADOPTER STORIES ARE RIDICULOUSLY POSITIVE

Slide 28

Slide 28 text

THE TOOLING

Slide 29

Slide 29 text

WHY DIDN’T I GO WITH SERVER SIDE SWIFT, WHICH SHOULD’VE BEEN A BETTER FIT?

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

> Tooling

Slide 32

Slide 32 text

> Tooling

Slide 33

Slide 33 text

> Tooling > Foundation is still immature

Slide 34

Slide 34 text

> Companies using server side swift in production are doing it sparingly

Slide 35

Slide 35 text

> Still very immature

Slide 36

Slide 36 text

> Companies that use it are never heard from again

Slide 37

Slide 37 text

WHAT MAKES ELIXIR SO GOOD? > Functional > Concurrent > Pragmatic

Slide 38

Slide 38 text

STRUCTS > Elixir Structs are a lot like Swift structs, except no methods allowed - pure functions only!!! > They're pure data - interesting emergent properties! > Want to update a property? It's as easy as updating a dictionary(because they're dictionaries underneath!)

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

NO DISTINCTION BETWEEN REMOTE AND LOCAL DATA > Distributed first - things like ETS can run on other computers or the same computer and your code won't know the difference. Erlang did docker-compose before it was cool > Same for structs, data, processes - makes it easy to horizontally scale your system

Slide 41

Slide 41 text

> Also works for tooling! iex, observer all run as natively locally and remotely! > (Remember our little video?)

Slide 42

Slide 42 text

SIMPLE THINGS ARE SIMPLE

Slide 43

Slide 43 text

SIMPLE THINGS ARE SIMPLE > Service calls out to x APIs, collects responses and does something with them?

Slide 44

Slide 44 text

ASYNC-AWAIT

Slide 45

Slide 45 text

WHY WAIT ?

Slide 46

Slide 46 text

THE ELIXIR VERSION

Slide 47

Slide 47 text

STUFF IN ELIXIR I FOUND CONFUSING > Recursively descending a list! [head | tail] = list

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

FEATURES IN ELIXIR I'D REALLY LOVE IF THEY CAME TO SWIFT

Slide 50

Slide 50 text

DOCTESTS

Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

PIPE OPERATOR!

Slide 53

Slide 53 text

COOL DEMOS > Remote debugging > Observer

Slide 54

Slide 54 text

CONCLUSION > Dynamic Typing/Languages aren't bad/inferior. > Learning a new language is often rewarding.