Oskar Wickström

Software design, testing, functional programming, and other delightful things.
https://wickstrom.tech/ (RSS)
visit blog
How I Built The Monospace Web
25 Sept 2024 | original ↗

Recently, I published The Monospace Web, a minimalist design exploration. It all started with this innocent post, yearning for a simpler web. Perhaps too typewriter-nostalgic, but it was an interesting starting point. After some hacking and sharing early screenshots, @noteed asked for vertical alignment, and down the rabbit hole I went.

A Flexible Minimalist Neovim for 2024
11 Aug 2024 | original ↗

wickstrom.tech In the eternal search of a better text editor, I’ve recently gone back to Neovim. I’ve taken the time to configure it myself, with as few plugins and other cruft as possible. My goal is a minimalist editing experience, tailored for exactly those tasks that I do regularly, and nothing more. In this post, I’ll give a brief tour of my...

Statically Typed Functional Programming with Python 3.12
22 May 2024 | original ↗

Lately I’ve been messing around with Python 3.12, discovering new features around typing and pattern matching. Combined with dataclasses, they provide support for a style of programming that I’ve employed in Kotlin and Typescript at work. That style in turn is based on what I’d do in OCaml or Haskell, like modelling data with algebraic data...

Specifying State Machines with Temporal Logic
4 May 2021 | original ↗

Quickstrom uses linear temporal logic (LTL) for specifying web applications. When explaining how it works, I’ve found that the basics of LTL are intuitive to newcomers. On the other hand, it’s not obvious how to specify real-world systems using LTL. That’s why I’m sharing some of my learnings and ideas from the past year in the form of blog posts.

Introducing Quickstrom: High-confidence browser testing
26 Aug 2020 | original ↗

In the last post I shared the results from testing TodoMVC implementations using WebCheck. The project has since been renamed Quickstrom (thank you, Tom) and is now released as open source.

The TodoMVC Showdown: Testing with WebCheck
1 Jul 2020 | original ↗

In this post I’ll share the results from testing TodoMVC implementations using my new testing tool named WebCheck. I’ll explain how the specification works, what problems were found in the TodoMVC implementations, and what this means for my project.

Time Travelling and Fixing Bugs with Property-Based Testing
16 Nov 2019 | original ↗

Property-based testing (PBT) is a powerful testing technique that helps us find edge cases and bugs in our software. A challenge in applying PBT in practice is coming up with useful properties. This tutorial is based on a simple but realistic system under test (SUT), aiming to show some ways you can test and find bugs in such logic using PBT. It...

Property-Based Testing in a Screencast Editor, Case Study 3: Integration Testing
1 Jun 2019 | original ↗

In the last article we looked at how Komposition automatically classifies moving and still segments in imported video media, how I went from ineffective testing by eye to finding curious bugs using property-based testing (PBT). If you haven’t read it, or its preceding posts, I encourage you to check them out first:

Property-Based Testing in a Screencast Editor, Case Study 2: Video Scene Classification
16 Apr 2019 | original ↗

In the previous 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
23 Mar 2019 | original ↗

In the first post of this series I introduced the Komposition screencast editor, and briefly explained the fundamentals of property-based testing (PBT). Furthermore, I covered how to write testable code, regardless of how you check your code with automated tests. Lastly, I highlighted some difficulties in using properties to perform component and...

Property-Based Testing in a Screencast Editor: Introduction
1 Mar 2019 | original ↗

This is the first in a series of posts about using property-based testing (PBT) 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
28 Dec 2018 | original ↗

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
25 Oct 2018 | original ↗

For the last six months I’ve been working on a screencast video editor called Komposition, and it’s now released and open source. This is an experience report, based on a talk from Lambda World Cádiz 2018, that’ll give an overview of Komposition’s design, implementation, testing, and planned future work.

Declarative GTK+ Programming with Haskell
3 Sept 2018 | original ↗

This post introduces a declarative GTK+ architecture for Haskell which I’ve been working on during the journey with FastCut, a video editor specialized for my own screencast editing workflow. It outlines the motivation, introduces the packages and their uses, and highlights parts of the implementation.

Finite-State Machines, Part 2: Explicit Typed State Transitions
18 Nov 2017 | original ↗

In the first part of this series, we left off having made states explicit using Haskell data types. We concluded that state transitions were implicit, and that a mistake in implementation, making an erroneous state transition, would not be caught by the type system. We also noted that side effects performed at state transitions complicated...

Finite-State Machines, Part 1: Modeling with Haskell Data Types
9 Nov 2017 | original ↗

Stateful programs often become complex beasts as they grow. Program state incohesively spread across a bunch of variables, spuriously guarded by even more variables, is what I refer to as implicit state. When working with such code, we have to reconstruct a model mentally, identifying possible states and transitions between them, to modify the...

Motor: Finite-State Machines in Haskell
26 Oct 2017 | original ↗

While writing my talk “Finite-state machines? Your compiler wants in!”, I have worked on porting the Idris ST library to Haskell. I call it Motor.

Automating the Build of your Technical Presentation
23 Sept 2017 | original ↗

Writing technical presentations that include code samples and diagrams can be really tedious. In mainstream presentation software, such as Keynote and PowerPoint, your workflow is likely to manually copy-and-paste source code from your editor into your slides. If you’re not using the drawing capabilities of your presentation software, you have to...

Tagless Final Encoding of a Test Language
4 Jun 2017 | original ↗

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. Although the intended use is for PureScript Spec, I want to share the Haskell prototype I ended up with, and explain how I got there.

Hyper: Elegant Weapons for a More Civilized Page
5 Jan 2017 | original ↗

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.

Taking a Step Back from Oden
9 Oct 2016 | original ↗

I have decided to stop working on Oden.

Custom Formatting in HTML and LaTeX Code Listings using Pandoc
9 Jul 2016 | original ↗

I have worked intensively on the Oden User Guide lately, primarly on improving content, but also on providing high-quality PDF and HTML output formats with detailed control over typesetting.

Paramount Color Scheme for Vim
14 May 2016 | original ↗

Having tried a lot of color schemes for editors, especially for Vim, I have gotten quite picky. All right, very picky. Most of the time Vim has been configured to use Tomorrow Night or Gruvbox. Although they’re great, they have felt a bit over the top. Also, depending on where I’m sitting at the moment I use both dark and light backgrounds for...

↑ these items are from RSS. Visit the blog itself at https://wickstrom.tech/ to find other articles and to appreciate the author's digital home.