evancz Mar 23, 2017 00:43
Just so folks are aware, one of the hard things about having ports just be a Task is the following. Right now, a Task is guaranteed to terminate with an error or a result. The only way it could be otherwise is if you have something of type Task Never Never Now, if you are calling out to random JS that is written by anyone, that guarantee goes away. You have to call some callback to give the value back to Elm, but what if that is never called? Maybe there's an error, maybe there is a weird code path. Now Elm code can "leak" tasks that never get completed because of problems in JS code. One way to protect against this is to have timeouts, such that there is some guaranteed end. My point here is just that it is more complicated than "what if it was a task?" and then everything would be nice.


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>