T O U S E P R O M I S E S F R P F U N C T I O N A L R E A C T I V E P R O G R A M M I N G F U N C T I O N A L P R O G R A M M I N G O V E R T I M E H AV I N G E M PAT H Y W H I L E T E A C H I N G P R O G R A M M I N G @holtbt
N D S D I F F E R E N T • Talk is posted here: nho.lt/promise • Slides are posted here: nho.lt/promise-slides • The talk isn’t very empathetic • I’ll still address the main points at the end
T O G O O D T E A C H I N G I S H AV I N G C O M M O N D E F I N I T I O N S O F T E R M S (also the best marital advice I ever got: when arguing, argue about the same thing)
Y O U D O N ’ T K N O W • You know the thing exists, you have the vocabulary to Google it and learn it • It’s within reach, just not yet grasped • Example: You understand while loops, you know do loops exist. With a bit of time and Googling, you could understand do loops
T K N O W Y O U D O N ’ T K N O W • What you don’t even know exists • Knowledge totally out of reach • You can’t Google it because you don’t have the terminology to describe what you’d be looking for • Example: A person just learning about if statements doesn’t have the vocabulary to describe free monads
R I E N C E • A polar plunge is when you dive into freezing water. For some dumb reason ¯\_(ϑ)_/¯ • Micha was excited to do the polar plunge but chickened out at the last moment. Felipe isn’t sympathetic since he’d done it before. Felipe is an asshole. • People who had previously done a polar plunge were less sympathetic than those who had never done it
friend goes to his brother who doesn’t code and says he’s having trouble with for loops, a concept in programming. • His brother’s answer answer: “Oh, that sounds hard. I’m impressed you know so much.”
P • Bridging the empathy gap is a learned and practiced skill • You have to acknowledge that you no longer know what it feels like to learn a skill you already know • Learning to peel back the layers of what you know to teach someone using vocabulary they know is hard
P R I V I L E G E • Unlike gender, racial, ability, or other inherited trait privilege, your information privilege fluctuates constantly based on what the subject is
P R I V I L E G E • In two slides I went from a privileged perspective to a bottom of the information pyramid • You must learn to recognize your information privilege and overcome it
P R O G R A M M I N G • Oh, you need to use pure functions • Oh, you need a function without side effects • Oh, you need a function that doesn’t keep or modify any state • Oh, you need a function that given input(s) gives output • Oh, you need to use Haskell
D A N A R R AY T H AT J U S T A P P E A R E D O V E R T I M E ? • Instead of an array, where all your data is there, available already, your array is filled over time • Since we’re only applying a function, we can apply this function now or later • An observable is an array that appears over time
I S E S • Promises are great for representations of single, one-time async values, like AJAX requests • Promises suck for orchestration, chaining, multi-event, cancellation, or anything besides one-time, simple values • Suck to debug
I S E S . N E X T ? • Yes • Maybe ES2018 if I had to take a guess • TC39 wants (cancelable) promises, observables, async/await, generators, and async iterators all to play nice with each other