Weekly Review - Week 35

This post is a summary of my activities related to coding and software in the past week. Its purpose is both to serve as a high-level personal log and as a potential source of interesting (or not so interesting) links. Entries are provided in no particular order with minimal comments...

Efficient Immutable Collections

: Immutables collections paves the way for efficient program transformations and parallelization, but they might lead to inefficiencies from garbage collection or repeated traversals. This thesis provides techniques to build efficient immutable collections on the JVM.

GitHub - ipfs/ipfs: IPFS - The Permanent Web

: Discovered this fascinating project which is the foundation of numerous other projects, like gx a package management tool.

End To End Testing With Hspec (Almost)

: How to (not) use Haskell and Hspec to write end-to-end testing using hspec and hs-webdriver . Looks like recent changes in webdriver broke Haskell's library...

Interactions of individual and pair programmers with an intelligent tutoring system for computer science | the morning paper

: tl;dr: We discovered that while both groups exhibited significant learning gains, pair programmers completed problems more quickly, relied less heavily on system-provided examples, coded more efficiently, and showed higher signs of engagement.

On the design of distributed programming models | the morning paper

: Another gem from Adrian Colyer's treasure trove: What's needed in languages to fully support distributed systems programming?

Growing a protocol | the morning paper

: This paper triggered some research on distributed systems testing, along with:

Lineage-driven Fault Injection | the morning paper : Analysing programs execution to inject interesting errors, e.g. ones that have high probability of triggering bugs

SAMC : A tool to drive testing through model-checking with specific techniques to reduce state explosion

osrg/namazu: 鯰: Programmable fuzzy scheduler for testing distributed syste ms: Fuzz testing of distributed systems

Parallel Data Lab Project: dbug: Systematic and Scalable Testing of Concurrent Systems : Another model-checking/testing tool interposing itself between processes and OS/libraries to catch system calls and inject errors

Concurrent Systematic Testing at Scale : Paper from the dbug project

The Mace Project | MaceSystems : A language and toolset to design and implement distributed systems

LMC : Solves the state explosion problem by analysing and tracking local state instead of the global state

Yet Another Visit to Paxos

: One the numerous Paxos papers, this time introducing crash-tolerance and Byzantine failure tolerance. Lead to PBFT-Smart algorithm.

Hire Like the Israeli Military

: Detailed article on practical application of Daniel Kahneman's hiring techniques from Thinking, Fast and Slow . In the book, Kahneman advocates the use of a simple rating system based on questions to identify observable behaviours of hired persons and objectivize their past experience.

haskell - The Pause monad - Stack Overflow

: One article from a series I read this weekend trying to acquire a deeper understanding of Free monad construction and how to implement pause/resume on top of Free

Coyoneda is just the Free Functor : haskelltil : Coyoneda functor reifies functor application...

From Hask Till Dawn: Coyoneda and fmap fusion : ... a technique that can be used to make traversal of functorial structures and repeated fmap applications more efficient

Applicative Effects in Free Monads

More on Applicative Effects in Free Monads

The Comonad.Reader » Free Monads for Less (Part 1 of 3): Codensit y

: A serie of article from Ed Kmett on the Free monad construction and how to make it more efficient, followed by:

The Comonad.Reader » Free Monads for Less (Part 2 of 3): Yoned a

The Comonad.Reader » Free Monads for Less (Part 3 of 3): Yielding I O