Advanced Functional Programming with Scala - Notes

Copyright © 2017 Fantasyland Institute of Learning. All rights reserved.

1. Mastering Functions

A function is a mapping from one set, called a domain, to another set, called the codomain. A function associates every element in the domain with exactly one element in the codomain. In Scala, both domain and codomain are types.

val square : Int => Int = x => x * x

The Why and When of Choosing Elm

What is Elm?

  • Language (and "framework") for building web frontend applications
  • Can be used in place of HTML, CSS and JavaScript
  • Compiles into the above
View Easy-Peasy-Lemon-Squeezy, Statically-Typed, Purely Functional Programming

The Easy-Peasy-Lemon-Squeezy, Statically-Typed, Purely Functional Programming Workshop for All!

John A. De Goes — @jdegoes


  • Functions
  • Types, Kinds, & More Functions
  • FP Toolbox
View index.js
import React from 'react';
import { render } from 'react-dom';
import yup from 'yup';
import Form from 'react-formal';
const schema = yup.object({
test: yup.string()

Isn't it crazy

That motherfucking Beatport doesn't let you download tracks in bulk? Why Beatport WHY?


Installing Ghost is much more complicated than it is described in the docs. Here are a few additional steps needed do get it up and running.

Clone the git repository

I cannot get to work any of the random releases files I've downloaded, so start off with a fresh repo and follow the few steps that the guide actually provides.

git clone ghost
cd ghost
npm install
npm start
View nearestGitFolder.js
// .bash_aliases
// alias cdg='cd `node /path/to/script/nearestGitFolder.js`'
var fs = require('fs');
var hasGitDir = function(path) {
return fs.existsSync(path + '/.git');
View ROADMAP.markdown

xpathr – first iteration

In this first iteration, unauthenticated users should be able to test xslt code, save snippets and eventually come back to edit them without signing up. xpathr will work without javascript enabled, so client side code shouldn't be taken in consideration for now.


  • XML textarea
  • XSL textarea
  • RESULT read-only textarea
View master.xml
<?xml version="1.0" encoding="utf-8" ?>
<view />
<section id="1" handle="projects">Projects</section>
<entry id="2">
<project-name handle="sample-project-2">Sample Project 2</project-name>
View README.markdown

Authenticating users against mysql

I couldn't find any relevant information for getting this to work on ubuntu precise, so I'm writing my founds here.
It's actually pretty simple, this approach doesn't involve PAM but just NSS. The implications are clearly explained in the FAQ of the nss-mysql module:

NSS stands for NameService Switch. NSS allows you to implement access to various data using any number of modules. This means that when the operating system wants to look up the user "cinergi", it doesn't have to know how - it calls upon the NSS system to perform the task. In turn, we can now configure NSS to look for users in traditional places like /etc/passwd, NIS, LDAP, and now (using this module), MySQL. The NSS