Slide 1

Slide 1 text

How I Learned Haskell by Writing Tiny Games 1 / 77

Slide 2

Slide 2 text

Moss Collum Cyrus Innovation makingcodespeak.com [email protected] @moss 2 / 77

Slide 3

Slide 3 text

Introduction 3 / 77

Slide 4

Slide 4 text

What? 4 / 77

Slide 5

Slide 5 text

Haskell 5 / 77

Slide 6

Slide 6 text

Roguelike Games 6 / 77

Slide 7

Slide 7 text

7 / 77

Slide 8

Slide 8 text

8 / 77

Slide 9

Slide 9 text

9 / 77

Slide 10

Slide 10 text

10 / 77

Slide 11

Slide 11 text

Tiny Release Cycles 11 / 77

Slide 12

Slide 12 text

Why Haskell? 12 / 77

Slide 13

Slide 13 text

Brief but Fragile 13 / 77

Slide 14

Slide 14 text

Correct but Verbose 14 / 77

Slide 15

Slide 15 text

Brief and Correct 15 / 77

Slide 16

Slide 16 text

Why This Exercise? 16 / 77

Slide 17

Slide 17 text

"Work Tiny!" –Kim Wallmark 17 / 77

Slide 18

Slide 18 text

Game 1: InstaPermaDeathHack 18 / 77

Slide 19

Slide 19 text

19 / 77

Slide 20

Slide 20 text

20 / 77

Slide 21

Slide 21 text

Learn IO... Before you learn the IO Monad... Before you learn Monads 21 / 77

Slide 22

Slide 22 text

22 / 77

Slide 23

Slide 23 text

One Problem at a Time 23 / 77

Slide 24

Slide 24 text

Game 2: Wanderer 24 / 77

Slide 25

Slide 25 text

How to Read a Haskell 25 / 77

Slide 26

Slide 26 text

How to Read a Haskell 26 / 77

Slide 27

Slide 27 text

How to Read a Haskell vs. Python 27 / 77

Slide 28

Slide 28 text

How to Read a Haskell vs. Java 28 / 77

Slide 29

Slide 29 text

Laziness is Magic 29 / 77

Slide 30

Slide 30 text

Laziness is Magic 30 / 77

Slide 31

Slide 31 text

Laziness is Magic vs. 31 / 77

Slide 32

Slide 32 text

Ask for Help 32 / 77

Slide 33

Slide 33 text

Game 3: Robot Finds Kitten 33 / 77

Slide 34

Slide 34 text

Isolate IO and Randomness 34 / 77

Slide 35

Slide 35 text

Isolate IO and Randomness 35 / 77

Slide 36

Slide 36 text

Isolate IO and Randomness vs. 36 / 77

Slide 37

Slide 37 text

Doctest 37 / 77

Slide 38

Slide 38 text

Doctest 38 / 77

Slide 39

Slide 39 text

Doctest 39 / 77

Slide 40

Slide 40 text

Doctest 40 / 77

Slide 41

Slide 41 text

Doctest 41 / 77

Slide 42

Slide 42 text

Continuous Feedback 42 / 77

Slide 43

Slide 43 text

Game 4: The Orc and The Pie 43 / 77

Slide 44

Slide 44 text

Retrospectives 44 / 77

Slide 45

Slide 45 text

Retrospectives "design suffering from having everything in the world tied together" 45 / 77

Slide 46

Slide 46 text

Retrospectives "design suffering from having everything in the world tied together" "my functions are nice and decomposed, but my data types are a big mess" 46 / 77

Slide 47

Slide 47 text

Modules 47 / 77

Slide 48

Slide 48 text

Modules 48 / 77

Slide 49

Slide 49 text

Modules 49 / 77

Slide 50

Slide 50 text

Record Types 50 / 77

Slide 51

Slide 51 text

Record Types 51 / 77

Slide 52

Slide 52 text

Record Types 52 / 77

Slide 53

Slide 53 text

Record Types 53 / 77

Slide 54

Slide 54 text

Functions 54 / 77

Slide 55

Slide 55 text

Functions 55 / 77

Slide 56

Slide 56 text

Functions 56 / 77

Slide 57

Slide 57 text

Functions 57 / 77

Slide 58

Slide 58 text

Functions 58 / 77

Slide 59

Slide 59 text

Functions 59 / 77

Slide 60

Slide 60 text

Typeclasses 60 / 77

Slide 61

Slide 61 text

Typeclasses 61 / 77

Slide 62

Slide 62 text

Typeclasses Compare Java: 62 / 77

Slide 63

Slide 63 text

Stop and Reflect 63 / 77

Slide 64

Slide 64 text

Conclusion 64 / 77

Slide 65

Slide 65 text

Places to Find Help 65 / 77

Slide 66

Slide 66 text

Places to Find Help Learn You A Haskell 66 / 77

Slide 67

Slide 67 text

Places to Find Help Learn You A Haskell Hoogle 67 / 77

Slide 68

Slide 68 text

Places to Find Help Learn You A Haskell Hoogle HaskellWiki 68 / 77

Slide 69

Slide 69 text

Places to Find Help Learn You A Haskell Hoogle HaskellWiki Haskell Now / #NotHaskell 69 / 77

Slide 70

Slide 70 text

Advice to Remember 70 / 77

Slide 71

Slide 71 text

Advice to Remember Work Tiny 71 / 77

Slide 72

Slide 72 text

Advice to Remember Work Tiny One Problem at a Time 72 / 77

Slide 73

Slide 73 text

Advice to Remember Work Tiny One Problem at a Time Ask for Help 73 / 77

Slide 74

Slide 74 text

Advice to Remember Work Tiny One Problem at a Time Ask for Help Continuous Feedback 74 / 77

Slide 75

Slide 75 text

Advice to Remember Work Tiny One Problem at a Time Ask for Help Continuous Feedback Stop and Reflect 75 / 77

Slide 76

Slide 76 text

End 76 / 77

Slide 77

Slide 77 text

Moss Collum Cyrus Innovation makingcodespeak.com [email protected] @moss 77 / 77