Posted on July 29, 2014
I’ve made my slides and demos available on GitHub.
The second third, which explains @EveryMNLake, is about stuff I had done but hadn’t written up, and the final third, on combinator bots, was entirely new for Lambda Jam.
I also made a number of changes to restore compatibility with the latest Elm release.
The presentation itself was written with Markdown, HTML, and CSS, and converted into a slideshow using the Remark library. I usually use Keynote (because it has nice built-in themes!),3 but for this talk I wanted to show Elm demos during my presentation without awkwardly switching to and from a browser window. With Remark, my slideshow just compiles into an HTML page, and I can embed demos as iframes.
One new kind of demo I made up is a side-by-side comparison of the events of a signal and a transformed version of that signal. For instance, I can compare a signal that ticks with the timestamp every second (
every second) to a signal that counts up every second (
count (every second)):
To me, part of the promise of functional reactive programming is that you can do this kind of analysis without having to constantly surface the code like in the essay Learnable Programming. In Learnable Programming, showing data is coupled with showing code, because the data changes when mutation commands happen in the code, and those commands are in arbitrary places. In Elm, the data the program manipulates has this signal structure, independent of
if statements and
for loops and function blocks, so you don’t need to show the code to show the data.
I had a lot of fun writing and giving the talk, and I liked getting the chance to revisit this project. It was a ton of work to get it back up and running and add the new stuff, but it was worthwhile.
I’d like to write up the last two-thirds of the talk’s material (@EveryMNLake and combinators) as blog posts. I’d also like to write some more interesting bots using the new combinator tools! The ability to take information from existing Twitter feeds, including other bots’ feeds, opens up a lot of cool possibilities. We could have bots which track hashtags and retweet relevant stuff, or multiplex together a few users, or bots that act like circuits or logic gates, or bots that are interfaces to games and simulated worlds.
if you have questions or thoughts (or if any of this inspires you to do something). You can also keep up with my work by following @rsnous on Twitter.
Click on the slide and press the right and left arrow keys to move between slides.↩
The logic of using Remark instead of Keynote or PowerPoint is sort of like the logic of using LaTeX instead of Word. Either you use this awkward but versatile and unambiguous language and compile it to something displayable, or you use this nice all-in-one tool that lets you preview and directly manipulate your presentation, but edge cases mess you up.
(I know that you can use Beamer to actually make LaTeX presentations, but I feel like that system encourages totally the wrong kinds of presentations—making math, writing, and symbols easier, and layout, interactivity, and graphics harder.)↩