concurrency-184.108.40.206 and dejafu-0.5.0.1 release
Published on February 21, 2017
35 changed files, 1660 additions, 2335 deletions, two big new features.
Subconcurrency in Deja Fu
Published on February 2, 2017
Contemplating concurrency with continuations.
Published on September 10, 2016
23 commits since 0.3.2.1, 68 since 0.3.0.0.
Three Months of Go (from a Haskeller's perspective)
Published on August 25, 2016
A summary of my feelings of Go, after being paid to write it for the summer.
Some Thoughts on Distributed Systems
Published on May 18, 2016
A few thoughts on applying SCT to distributed systems.
Systematic Concurrency Testing and Daemon Threads
Published on May 13, 2016
There's a subtlety in a family of SCT techniques when daemon threads are involved which has caught me out a couple of times.
Published on April 3, 2016
Refactoring, performance improvements, tweaks, "93 commits to master since this [0.2.0.0] tag". Let's see what changed.
Strict-by-default vs Lazy-by-default
Published on February 12, 2016
In every discussion of Haskell, the issue of strict vs lazy evaluation comes up. I compare the pros and cons (one of which is really bad) of laziness, and justify why I think it's still a better default.
cabal-info: get information from cabal files.
Published on February 2, 2016
Have you ever needed to get information from a cabal file in a shell script? Now you can! `cabal-info` exposes a simple command-line interface to the cabal file format.
C is not Turing-complete
Published on January 9, 2016
Because of how pointers are defined in the C standard, an isolated C program is equivalent in computational power to a pushdown automata.
Finite Maps in Isabelle
Published on December 15, 2015
A whirlwind tour of theorem proving in the Isabelle/HOL proof assistant.
Breaking the Law: Verifying Typeclass Laws with QuickCheck and Deja Fu
Published on November 29, 2015
Testing typeclass laws with QuickCheck has been done to death, but what about when we add concurrency to the mix?
Paper Summary: Secure Communications Over Insecure Channels
Published on October 4, 2015
Review of (Merkle 1978), one of the first public-key cryptosystems.
Published on September 23, 2015
Looking back at ICFP nearly one month later.
Published on August 27, 2015
Overloadable primitives for testable, potentially non-deterministic, concurrency.
Reducing Combinatorial Explosion
Published on August 21, 2015
Concurrent programs have too many legal schedules to try all of them, but fortunately we don't need to.
Identity Monads Ahoy!
Published on August 9, 2015
Reduce code duplication with Identity monads.
Debugging an Allocation Issue
Published on August 1, 2015
A seemingly-innocuous change resulted in some extra heap churn, and we went down to Core to figure out why.
Weekend Project: Writing a Gopher Server in Erlang
Published on July 26, 2015
How better to learn Erlang than by writing a server?
Continuous Integration with Jenkins and Stack
Published on July 18, 2015
Playing around with the cool new Haskell build tool.
Published on January 10, 2015
Implementing pre-emption bounding in monad-conc.
Haskell Systematic Concurrency Testing
Published on December 26, 2014
What systematic concurrency testing (SCT) is, and how we can apply it to Haskell.
Published on January 7, 2014
An overview of the major different types of garbage collector.
A Gentle Introduction to Parsec
Published on May 27, 2013
Introduction to Parsec by constructing a parser for CSV files.