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)
- 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 systems: 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): Codensity
A serie of article from Ed Kmett on the Free monad construction and how to make it more efficient, followed by: