<div id="slide-1">
<div class="slide-title">=<< Welcome to the Talk Called >>=</div>
<div class="slide flexotron" style="flex-wrap: nowrap;">
- <img class="cloudguypower" src="img/cloudguy-power.gif" />
+ <img class="cloudguypower" style="margin-left: 70px;" src="img/cloudguy-power.gif" />
<div style="text-align:center; font-size:60px; text-shadow: 4px 4px #000; padding:20px;">Wide-Eyed Crazy Functional Programming</div>
- <img class="cloudguypower" style="transform: scaleX(-1);" src="img/cloudguy-power.gif" />
+ <img class="cloudguypower" style="margin-right: 70px; transform: scaleX(-1);" src="img/cloudguy-power.gif" />
</div>
</div>
<div id="slide-2">
<div id="slide-24">
<div class="slide-title">=<< Big Brain Moment >>=</div>
<div class="slide flexotron">
- <div class="textbox" style="text-align:center; font-size:40px; text-shadow: 4px 4px #000; padding:20px;" >Programming languages <span class="shake-slow shake-constant" style="color: #f98012">ARE</span> human languages.</div>
+ <div class="textbox" style="text-align:center; font-size:40px; text-shadow: 4px 4px #000; padding:20px;" >Programming languages <span class="highlight">ARE</span> human languages.</div>
</div>
<div class="notes">
<ul>
<div id="slide-28">
<div class="slide-title">=<< Why is declaritive mood good? >>=</div>
<div class="slide flexotron">
- <div style="text-align:center; font-size:50px; text-shadow: 4px 4px #000; padding:20px;" >Declarative programs express what <span class="shake-slow shake-constant" style="color: #f98012">they actually do</span> Leaving more "brain space" to focus on solving the problem.</div>
+ <div style="text-align:center; font-size:50px; text-shadow: 4px 4px #000; padding:20px;" >Declarative programs express what <span class="highlight" style="display: block;">they actually do</span> leaving more "brain space" to focus on solving the problem.</div>
</div>
<div class="notes">
<ul>
<li>A declaritive program expresses its operation in terms of relationships.</li>
- <li>In an imperative paradigm, thinking about the program means thinking about changes over time</li>
- <li>In a declaritive one, thinking about the program means thinking about relationships</li>
+ <li>In an imperative paradigm, thinking about the program means thinking about changes over time => keeping track of changes</li>
+ <li>In a declaritive one, thinking about the program means thinking about relationships => look at what the thing is, how it relates to the other thing, and move on</li>
</ul>
</div>
</div>
<div id="slide-35">
<div class="slide-title">=<< Big Brain Moment >>=</div>
<div class="slide flexotron">
- <div class="textbox" style="text-align:center; font-size:40px; text-shadow: 4px 4px #000; padding:20px;" >Programming languages <span class="shake-slow shake-constant" style="color: #f98012">ARE</span> human languages.</div>
+ <div class="textbox" style="text-align:center; font-size:40px; text-shadow: 4px 4px #000; padding:20px;" >Programming languages <span class="highlight">ARE</span> human languages.</div>
</div>
<div class="notes">
<ul>
<span class="code-friends3" onmouseenter="activateFriends(3);" onmouseleave="deactivateFriends(3);" style="display: inline-block">>>=</span> (<span class="code-friends4" onmouseenter="activateFriends(4);" onmouseleave="deactivateFriends(4);" style="display: inline-block">\x -> </span><span class="code-friends5" onmouseenter="activateFriends(5);" onmouseleave="deactivateFriends(5);" style="display: inline-block">Right</span> (<span class="code-friends6" onmouseenter="activateFriends(6);" onmouseleave="deactivateFriends(6);" style="display: inline-block">x ++ " then get here"</span>))
<span class="code-friends7" onmouseenter="activateFriends(7);" onmouseleave="deactivateFriends(7);" style="display: inline-block">>>=</span> (<span class="code-friends8" onmouseenter="activateFriends(8);" onmouseleave="deactivateFriends(8);" style="display: inline-block">\x -></span> <span class="code-friends9" onmouseenter="activateFriends(9);" onmouseleave="deactivateFriends(9);" style="display: inline-block">Right</span> (<span class="code-friends10" onmouseenter="activateFriends(10);" onmouseleave="deactivateFriends(10);" style="display: inline-block">x ++ " and finally here!"</span>))</code></pre>
</div>
+ <div class="notes">
+ <ul>
+ <li>It does not matter what order the promises resolve in, the final promise will always be resolved with "We start here..."</li>
+ <li>In this specific example, there is nothing asynchronous happening, but it's not much work to adapt it so there is. I just wanted to really highlight the similarities with haskell</li>
+ </ul>
+ </div>
</div>
<div id="slide-47">
<div class="slide-title">=<< Promises >>=</div>
</div>
<div class="notes">
<ul>
+ <li>Likewise, we can put a failure anywhere in the chain. It doesn't matter if the failure happens first, last, or anywhere in between. The result is always a failed promise of "Oh noes!"</li>
<li>So, if you've ever used promises, you've been doing declaritive style programming without even realising it!</li>
<li>They give us some new powers, we can now write atemporal code, which explains why they emerged in JS, a place where people are constantly dealing with requests that can finish in any order</li>
<li>So it's super cool that people using a language very far removed from haskell ended up solving the problem in the same way</li>