Dealing with flaky tests

  Thursday, June 26, 2025

In my work I’m often dealing with flaky tests due to race conditions. Here are a few things I’ve picked up along the way that can help to deal with them.

The Debug Adapter Protocol is a REPL protocol in disguise

  Monday, June 23, 2025 » Neovim Lua

A couple months back I created nluarepl. It’s a REPL for the Neovim Lua interpreter with a little twist: It’s using the Debug Adapter Protocol. And before that, I worked on hprofdap. Also a kind of a REPL using DAP that lets you inspect Java heap dumps (.hprof files) using OQL.

As the name might imply, a REPL isn’t the main use case for the Debug Adapter Protocol (DAP). From the DAP page:

The idea behind the Debug Adapter Protocol (DAP) is to abstract the way how the debugging support of development tools communicates with debuggers or runtimes into a protocol.

But it works surprisingly well for a REPL interface to a language interpreter too.

No-Config Python debugging using Neovim

  Sunday, March 2, 2025 » Neovim Python Debugging

A little while ago Microsoft released No Config Debugging functionality in their vscode python extension.

This got me curious - wondering if it could be replicated in Neovim. Turns out it can be. This post shows how.

Template files for nvim

  Wednesday, November 20, 2024 » Neovim

Over the years I’ve picked up various tweaks for my nvim configuration. One of them is template file support. This article is a short introduction to what they are, how do they work and how I recently extended them to support snippet expansion.

Debugging Lua in Neovim

  Saturday, June 10, 2023 » Neovim Lua

In this post I want to show you how you can debug Lua scripts with Neovim and nvim-dap. Both regular Lua, but also Lua that uses Neovim as Lua interpreter. The latter is interesting if you want to debug Neovim plugin test cases written using busted

Debugging Neovim with Neovim and nvim-dap

  Friday, February 17, 2023 » Neovim

Recently a change got merged in Neovim that decoupled its TUI from the main process. A side effect of the change is that debugging it became a bit more troublesome. It now forks itself and you end up with two processes. Depending on what you want to debug you need to attach to that second process.

I thought this might be an interesting use-case for more advanced features of nvim-dap. This post explores using it to automate attaching to the second process.

Even if you’ll never debug Neovim you may find this interesting as it could give you some ideas on what you can do with a hackable debugger.

This post uses nvim-dap features of the upcoming 0.5 release. If you’re on 0.4 you’ll have to switch to the development branch. (If you are from the future, use 0.5+)

Using Neovim as Lua interpreter with Luarocks

  Saturday, January 21, 2023 » Neovim

This is a short article covering how you can use Neovim as Lua interpreter for Luarocks and busted.

Structuring Neovim Lua plugins

  Sunday, November 6, 2022 » Neovim

This is an introduction to the various ways you can structure a Neovim plugin and their trade-offs.

Testing Neovim LSP plugins

  Wednesday, October 26, 2022 » Neovim

This is a short introduction in how you can test a Neovim plugin which extends the LSP functionality. This approach requires Neovim 0.8 or later.

New LSP features in Neovim 0.8

  Saturday, October 1, 2022 » Neovim

Neovim 0.8 got released the other day, time to write about some of the LSP changes.