Writing
-
Specifying State Machines with Temporal Logic
When explaining how Quickstrom works, I've found that it's not obvious how to specify real-world systems using LTL. In this post I'm sharing some of my learnings and ideas.
-
The First Winter: Clearing Weeds and Planting Trees
In October 2020, we got our new house. When it was built, all the existing old trees were cut down and the weeds took over. It didn't take long before we made other plans for this place.
-
Introducing Quickstrom: High-confidence browser testing
Quickstrom is a new autonomous testing tool for the web. It can find problems in any type of web application that renders to the DOM. Quickstrom automatically explores your application and presents minimal failing examples. Focus your effort on understanding and specifying your system, and Quickstrom can test it for you.
-
The TodoMVC Showdown: Testing with WebCheck
WebCheck is a browser testing framework combining ideas from property-based testing, TLA+ and linear temporal logic, and functional programming. In this post I'll share my results of testing TodoMVC implementations using WebCheck.
-
My Experiences in Working Remotely
As I'm writing this, COVID-19 is spreading across the globe. Companies partly or fully shut down their offices, and have people work from their homes. Others might self-isolate by choice. In any case, you might now find yourself in a situation where your team is suddenly a remote-working team.
-
Time Travelling and Fixing Bugs with Property-Based Testing
A challenge in applying property-based testing in practice is coming up with useful properties. This tutorial shows some ways you can test and find bugs in business logic using PBT.
-
Property-Based Testing in a Screencast Editor, Case Study 3: Integration Testing
This is the final case study in the "Property-Based Testing in a Screencast Editor" series. It covers property-based integration testing and its value during aggressive refactoring work within Komposition.
-
Property-Based Testing in a Screencast Editor, Case Study 2: Video Scene Classification
In the last case study on property-based testing (PBT) in Komposition we looked at timeline flattening. This post covers the video classifier, how it was tested before, and the bugs I found when I wrote property tests for it.
-
Property-Based Testing in a Screencast Editor, Case Study 1: Timeline Flattening
This post is the first case study in the "Property-Based Testing in a Screencast Editor" series, covering the timeline flattening process in Komposition and how it's tested using PBT.
-
Property-Based Testing in a Screencast Editor: Introduction
This is the first in a series of posts about using property-based testing within Komposition, a screencast editor that I've been working on during the last year. It introduces PBT and highlights some challenges in testing properties of an application like Komposition.
-
Why I'm No Longer Taking Donations
Haskell at Work, the screencast focused on Haskell in practice, is approaching its one year birthday. Today, I decided to stop taking donations through Patreon due to the negative stress I've been experiencing.
-
Writing a Screencast Video Editor in Haskell
In dire need of better tools when producing screencasts for *Haskell at Work*, I started building *Komposition*, the video editor for screencasters. This desktop application automatically detects scenes in screen capture video, detects sentences in audio parts, and features and a high-productivity editing workflow keyboard-driven navigation.
-
Declarative GTK+ Programming with Haskell
Born out of the need in FastCut, a screencast video editor that I'm writing, the gi-gtk-declarative packages combines declarative GUI programming with GTK+. This post outlines the motivation and introduces the packages and their uses.
-
Fast and Fearless Evolution of Server-Side Web Applications
This is a blog post based on parts of my talk "Fast and Fearless Evolution of Server-Side Web Applications," about type safety and mature web technology that enables evolving software with greater confidence.
-
Finite-State Machines, Part 2: Explicit Typed State Transitions
In the second post of the Finite-State Machines series, we improve type safety around state transitions and their side effects, and make testing state machines without side effects easier, using an extended MTL style encoding.
-
Finite-State Machines, Part 1: Modeling with Haskell Data Types
Stateful programs often become complex beasts as they grow. This is the first post in a series about teaching the type system about possible states and state transitions in our programs.
-
Motor: Finite-State Machines in Haskell
While writing my talk for CodeMesh, I have worked on porting the Idris ST library to Haskell. I call it Motor.
-
Automating the Build of your Technical Presentation
Writing technical presentations with code and diagrams can be a tedious task of copying, pasting, and fixing errors. This article demonstrates a setup that lets you focus on your creative process.
-
Tagless Final Encoding of a Test Language
I have experimented with a test language encoded in tagless final style, instead of algebraic data types, to support the typed combinators beforeEach and beforeAll.
-
Hyper: Elegant Weapons for a More Civilized Page
Since laying Oden aside, I have been getting back into PureScript, and started working on a project called Hyper that I would like to introduce you to.
-
A Delayed Summary of My Trip to Cádiz and Lambda World
I spoke at Lambda World 2016 in the lovely town of Cádiz, in Spain, and wanted to share some of my experiences and photos.
-
Taking a Step Back from Oden
I decided to stop working on the Oden programming language, focusing my energy on projects that work together with my work situation and private life.
-
Generating Sight-Reading Exercises using Constraint Logic Programming in Clojure, Part 1
This is the first post in a series about generating sheet music for sight-reading exercises, using Clojure and core.logic.
-
Custom Formatting in HTML and LaTeX Code Listings using Pandoc
When working on the Oden User Guide I developed a way of including pre-formatted code listings in HTML and LaTeX.
-
Paramount Color Scheme for Vim
Introducing Paramount, a minimal color scheme for Vim, based on the "pencil" and "off" color schemes.
-
Software Evolution Without Fear
The software we create needs to evolve continuously. Let's find ways of reducing the fear in changing our code.
-
A Faster Test Workflow for Haskell
This post shows a way of running large Haskell test suites quickly using tmux and the send-keys command.
-
The Case for Case
Top-level pattern matching in Haskell leads to repeating the function name. Here we look at how case and LambdaCase can make your code more succinct.
-
So It Begins
The introductory post of this blog, setting the tone for future posts.