Speaker notes more or less done
authorCameron Ball <cameron@moodle.com>
Thu, 26 Mar 2020 03:13:38 +0000 (11:13 +0800)
committerCameron Ball <cameron@moodle.com>
Thu, 26 Mar 2020 03:13:38 +0000 (11:13 +0800)
index.html
notes.html

index 48c2400..48df5e9 100644 (file)
@@ -153,7 +153,8 @@ function readFileAndAdd2(string $filePath) : int {
     return $number+2;
 }</code></pre></div>
                         is impure because it could be called with the same input and give different outputs (if the contents of the file at $filePath change).</li>
-                    <li>I/O can be pure, but that's beyond the scope of this talk (maybe another dev training?)</li>
+                    <li>So how can you possibly do I/O in a pure functional language?</li>
+                    <li>It is possible, but that's beyond the scope of this talk (maybe another dev training?)</li>
                 </ul>
             </ul>
         </div>
@@ -402,7 +403,7 @@ function readFileAndAdd2(string $filePath) : int {
             </div>
         </div>
         <div class="notes">
-            <h1>Hot tip!</h1>
+            <h1>Interactive Slide!</h1>
             <ul>
                 <li>Hover over the "this" words in the text box! Notice that the code which hangs is flipped in each paradigm!</li>
                 <li>This code is not any specific language. It's one I made up although it looks similar to other languages</li>
@@ -654,7 +655,7 @@ threeFs = repeat("f").substr(0,3);
             </div>
         </div>
         <div class="notes">
-            <h1>Hot Tip!</h1>
+            <h1>Interactive Slide!</h1>
             <ul>
                 <li>Hover over "one", "two", and "three" to see the promises highlighed</li>
                 <ul>
@@ -724,7 +725,7 @@ threeFs = repeat("f").substr(0,3);
     <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">
-            <h1>Hot Tip!</h1>
+            <h1>Interactive Slide!</h1>
             <ul>
                 <li>Hover over the language elements to see how they pair up in each language!</li>
                 <li>Promises are very similar to a type in Haskell called "Either". "Either" can be instantiated with `Right` or `Left` which correspond to `resolve` and `reject`, respectively</li>
@@ -779,7 +780,7 @@ threeFs = repeat("f").substr(0,3);
             <div style="text-align:center; font-size:60px; text-shadow: 4px 4px #000; padding:20px;" >Composition</div>
         </div>
         <div class="notes">
-            <h1>The section on composition!</h1>
+            <h1>The Section on Composition!</h1>
             <ul>
                 <li>This gets its own section because it is not just important to programming, it's important to life in general</li>
             </ul>
@@ -821,11 +822,11 @@ threeFs = repeat("f").substr(0,3);
             </div>
         </div>
         <div class="notes">
-            <h1>Coins and pipes!</h1>
+            <h1>Coins and Pipes!</h1>
             <ul>
                 <li>Keep in mind the the composition of A->B and B->C is not gauranteed to exist!</li>
                 <li>I'm using coins and pipes to demonstrate, but the coins and pipes could be anything... Functions, promises, etc.</li>
-                <li>Stop reading here!! After reading the next slide come back to this one pls :)</li>
+                <li><span class="highlight">Stop reading here!!</span> After reading the next slide come back to this one pls :)</li>
                 <ul>
                     <li>We want to go from A to C - but maybe that's really hard (I accidentally illustrated that in the diagram! The pipe from A to C is really long! But the A->B->C route is short!)</li>
                     <li>Perhaps someone worked out how to go from A to B, and someone else worked out how to go from B to C</li>
@@ -836,7 +837,7 @@ threeFs = repeat("f").substr(0,3);
                         <li>You probably do it when you're writing software at Moodle!</li>
                     </ul>
                 </ul>
-                <li>Stop reading here!! After getting to the "What's this got to do with FP" slide, come back pls :)</li>
+                <li><span class="highlight">Stop reading here!!</span> After getting to the "What's this got to do with FP" slide, come back pls :)</li>
                 <ul>
                     <li>Maybe A->B has a side effect, this means when we call B->C with the result from A->B, it may not be the same as calling A->C. The point of composition is that the outcome of calling both should be indistinguishable.</li>
                     <li>Procedures in imperative languages (what most programmers call functions) are a short sighted attempt at composition, we wanted a way to break things up, and sure... You can put functions together in imperative languages and it kinda works, but it's not the same as true composition</li>
@@ -852,9 +853,7 @@ threeFs = repeat("f").substr(0,3);
             <div class="textbox" style="width: 60%; margin: auto;">Big problems can often be chopped up in to smaller, easier to solve problems. If we can be clever about how we chop them up, such that the solutions to the individual problems can <span class="highlight">compose</span> together to form a full solution, then we can infinitely speed up the process by adding more workers!</div>
         </div>
         <div class="notes">
-            <ul>
-                <li>Remember to go back to the previous slide!</li>
-            </ul>
+            Remember to go back to the previous slide!
         </div>
     </div>
     <div id="slide-43">
@@ -871,6 +870,7 @@ threeFs = repeat("f").substr(0,3);
             </div>
         </div>
         <div class="notes">
+            <h1>Composition Power!</h1>
             <ul>
                 <li>The pyramids were build by having loads of peope work in parallel</li>
                 <li>Same with the LHC - I don't believe there is a single person in the world who fully understands it</li>
@@ -895,11 +895,7 @@ threeFs = repeat("f").substr(0,3);
             </div>
         </div>
         <div class="notes">
-            <ul>
-                <li>Do we get one ultimate developer to smash out the whole thing?</li>
-                <li>idk about you, but I wouldn't be keen to work with this person</li>
-                <li>Check out <a href="https://www.freecodecamp.org/news/we-fired-our-top-talent-best-decision-we-ever-made-4c0a99728fde/">this story</li>
-            </ul>
+            Do we get one ultimate developer to smash out the whole thing? idk about you, but I wouldn't be keen to work with this person. Check out <a href="https://www.freecodecamp.org/news/we-fired-our-top-talent-best-decision-we-ever-made-4c0a99728fde/">this story</a>.
         </div>
     </div>
     <div id="slide-45">
@@ -933,6 +929,7 @@ threeFs = repeat("f").substr(0,3);
             </div>
         </div>
         <div class="notes">
+            <h1>Teamwork!</h1>
             <ul>
                 <li>Of course not, we do it as a team!</li>
                 <li>This is why it's worth spending the time to plan things and figure out how to "chop up" the work</li>
@@ -946,9 +943,9 @@ threeFs = repeat("f").substr(0,3);
             <div class="textbox" style="text-align:center; font-size:40px; text-shadow: 4px 4px #000; padding:20px;" >Composition is nature's greatest hack</div>
         </div>
         <div class="notes">
-            <h1>Why was all that relevant?</h1>
+            <h1>Why Was All that Relevant?</h1>
             <ul>
-                <li>My goal here was to try and convince you that composition really is important and is fundamental to the way we think</li>
+                <li>My goal here was to convince you that composition is fundamental to the way we think</li>
                 <li>Humans are amazing for our ability to break down problems in to manageable chunks and then compose them together - I don't think other animals do that</li>
                 <ul>
                     <li>Which is probably a big part of how we dominated this planet so fast</li>
@@ -975,35 +972,30 @@ threeFs = repeat("f").substr(0,3);
                 <li>In a procedural language, things don't necessarily compose</li>
                 <li>The building blocks we use for our compositions matter (whether it be programs, teamwork, whatever)</li>
                 <ul>
-                    <li>The restrictions that the funcational paradigm places on you means you cannot work with blocks that do not compose</li>
+                    <li>The restrictions that the functional paradigm places on you means you cannot work with blocks that do not compose</li>
                     <li>So by taking away our "instruction words" we have gained another powerful tool: composition</li>
-                    <li>Remember that slide I said to go back to? Do that now pls! Then comeback here cos there's a few more slides after this one.</li>
+                    <li>Remember that slide I said to go back to (the coins and pipes diagram)? Do that now pls! Then come back here cos there's a few more slides after this one.</li>
                 </ul>
         </div>
     </div>
     <div id="slide-48">
         <div class="slide-title">=<< Closing Notes >>=</div>
         <div class="slide">
-            <h1>Very big brain thoughts:</h1>
+            <h1>FP is awesome because:</h1>
             <div class="textbox" style="width: 60%; margin: auto; text-align: left;">
-                <h1>Functional programming is awesome because:</h1>
-                <div class="textbox" style="width: 60%; margin: auto; text-align: left;">
+                <ul>
+                    <li>By taking away convenient, but dangerous tools we are left with tools that are incredibly powerful, but more difficult to wield</li>
+                    <li>In particular</li>
                     <ul>
-                        <li>By taking away convenient, but dangerous tools we are left with tools that are incredibly powerful, but more difficult to wield</li>
-                        <li>In particular</li>
-                        <ul>
-                            <li>Atemporality: The ability to express things independant of time</li>
-                            <li>Infinity: Infinite recursion can't stop you now!</li>
-                            <li>Composition: The fundamental way humans solve problems is available to you at all times</li>
-                        </ul>
+                        <li>Atemporality: The ability to express things independant of time</li>
+                        <li>Infinity: Infinite recursion can't stop you now!</li>
+                        <li>Composition: The fundamental way humans solve problems is available to you at all times</li>
                     </ul>
-                </div>
+                </ul>
             </div>
         </div>
         <div class="notes">
-            <ul>
-                <li>New super powers!</li>
-            </ul>
+            New super powers!
         </div>
     </div>
     <div id="slide-49">
@@ -1020,7 +1012,7 @@ threeFs = repeat("f").substr(0,3);
                         <li>Or we'll make life hard for ourselves real fast</li>
                     </ul>
                     <li>Maybe quantum mechanics is so damn confusing because at a certain point we can't decompose things anymore?</li>
-                    <ul><li>After all... why should the universe conform to the way our brains want it to be...</li></ul>
+                    <ul><li>After all... why should The Universe conform to the way our brains want it to be...</li></ul>
                 </ul>
             </div>
         </div>
@@ -1043,7 +1035,7 @@ threeFs = repeat("f").substr(0,3);
             <ul>
                 <li>If nothing else, I really hope you're now just a little bit more curious about functional programming</li>
                 <li>And even though functional programing is not incredibly relevant to our roles just now, learning more about it will make you a better programmer, and that benefits everyone :)</li>
-                <li>If you have any questions please message me, I'm always happy to talk about this stuff</li>
+                <li>If you have any questions please message me, I'm always happy to talk about programming</li>
                 <li>I'd suggest going to the pub to talk about it, but, well, we can't do that just now</li>
                 <li>Bas mentioned that Haskell has a reputation for being academic</li>
                 <ul>
@@ -1059,8 +1051,8 @@ threeFs = repeat("f").substr(0,3);
                 </ul>
                 <li>And here's some resources!</li>
                 <ul>
-                    <li>https://haskellbook.com/</li>
-                    <li>http://learnyouahaskell.com/introduction</li>
+                    <li><a href="http://learnyouahaskell.com/introduction">Learn You a Haskell for Great Good</a></li>
+                    <li><a href="https://haskellbook.com/">Haskell Book</a></li>
                     <li>Me! I'm no master, but I'll always be happy to talk about Haskell and functional programming - send me a mesage!</li>
                 </ul>
                 <li>And remember, you can't spell "Functional Programming" without "Fun"!</li>
@@ -1155,8 +1147,7 @@ threeFs = repeat("f").substr(0,3);
 
      }
 
-     document.location.hash = currentSlide;
-     if (currentSlide == 1 || currentSlide == numSlides) {
+     if (currentSlide == 1 || currentSlide == numSlides-1) {
          confetti.start();
      } else {
          confetti.stop();
@@ -1213,8 +1204,9 @@ threeFs = repeat("f").substr(0,3);
      "All of Back to the Future happened in the past.",
      "Everything is in the future.",
      "We owe functional and procedural programming to the pre-Socratics, Heraclitus and Anaximander respectively.",
-     "Preservative has a very different meaning in many European languages",
-     "There are more stars in our galaxy than there are atoms in The Universe"
+     "Preservative has a very different meaning in many European languages.",
+     "There are more stars in our galaxy than there are atoms in The Universe.",
+     "One of these facts is a complete fabrication. Oh no, what if it's this one?"
  ];
 
  cgq = document.getElementById("cgquotes");
@@ -1225,7 +1217,6 @@ threeFs = repeat("f").substr(0,3);
          currentQuote++;
      } else {
          currentQuote = Math.floor(Math.random()*(cloudGuyQuotes.length - 3)) + 3;
-         console.log(currentQuote);
      }
 
      cgq.innerText = cloudGuyQuotes[currentQuote];
index 1145af2..fe6b4c4 100644 (file)
          #notes h1 {
              width:100%;
          }
+
         </style>
     </head>
     <body>
         <div id="slide-0" style="display: block">
             <div class="slide-title">=<< Speaker Notes >>=</div>
             <div class="slide flexotron">
-                <div class="textbox flexotron" id="notes" style="position: relative; margin-right:20px; padding: 20px;">
+                <div class="textbox flexotron" id="notes" style="position: relative; margin-right:20px; padding: 20px; max-height:80%; overflow: scroll; overflow-y: auto; overflow-x: unset;">
                     <div id="cloudguy">
                         <div style="text-align: center;">
                             <img style="height: 200px; display: block; margin-left: auto; margin-right: auto; margin-bottom: 10px;" src="img/cloudguy.gif" />