Oskar Wickström
  • Writing
  • Talks
  • Projects
  • Work
  • About

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.

    May 3, 2021 Programming
  • 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.

    February 26, 2021 General
  • 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.

    August 27, 2020 Programming
  • 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.

    July 2, 2020 Programming
  • 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.

    March 13, 2020 General
  • 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.

    November 17, 2019 Programming
  • 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.

    June 2, 2019 Programming
  • 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.

    April 17, 2019 Programming
  • 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.

    March 24, 2019 Programming
  • 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.

    March 2, 2019 Programming
  • 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.

    December 29, 2018 Programming
  • 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.

    October 26, 2018 Programming
  • 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.

    September 4, 2018 Programming
  • 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.

    December 18, 2017 Programming
  • 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.

    November 19, 2017 Finite State Machines
  • 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.

    November 10, 2017 Finite State Machines
  • 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.

    October 27, 2017 Programming
  • 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.

    September 24, 2017 Programming
  • 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.

    June 5, 2017 Programming
  • 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.

    January 6, 2017 Programming
  • 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.

    December 4, 2016 General
  • 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.

    October 10, 2016 Programming
  • 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.

    August 7, 2016 Generative Music
  • 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.

    July 10, 2016 Programming
  • Paramount Color Scheme for Vim

    Introducing Paramount, a minimal color scheme for Vim, based on the "pencil" and "off" color schemes.

    May 15, 2016 Programming
  • Software Evolution Without Fear

    The software we create needs to evolve continuously. Let's find ways of reducing the fear in changing our code.

    April 23, 2016 Programming
  • 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.

    April 19, 2016 Programming
  • 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.

    April 14, 2016 Programming
  • So It Begins

    The introductory post of this blog, setting the tone for future posts.

    April 14, 2016 General

Subscribe the blog via RSS

Copyright © 2015-2021 Oskar Wickström — License