Presentations I gave Building a Kiosk using Go - Goningen Meetup 2022 slides source A Sip of Elixir - Spindle 2020 slides source Talk about Nix - Spindle 2018 slides source LEDs talk about LEDs - GrunnJS Meetup 2018 slides source Functional Programming with Elm - PyGrunn 2017 slides


This is a LED table I created in the first half of 2017. The table is based on an IKEA LACK table with 15x15 individually addressable full color RGB LED’s on it. A Raspberry Pi is mounted below that controls the LED array. Materials and costs Component Qty/measurement Cost IKEA LACK table 1 5.00 Raspberry Pi 2B (?) 1 35.

Build a Nix docker image in Gitlab CI

Frustrated with fetching, checksum checking, and extracting of the packages in a Dockerfile that I need for a project, this week finally found a way to build docker images with Nix. Embedded in nixpkgs there are the functions buildImage and buildLayeredImage. With these functions you can build docker images that are assembled from Nix packages. How wonderful is that? Here is the Nix derivation that I have used: with import <nixpkgs> {}; pkgs.

Zsh abbrev-alias

About a year ago I read this article about abbr by Sean Henderson. He makes some good points that one should not use alias for shortcuts but abbr: Increased performance. Clean history: the full command is logged, not some non-sense shortcut like gs. Less conflicts: shortcuts get expanded, if you want to run another program with the same name as the shortcut you can edit the text after expansion. Fish shell has abbr build in.

Using Rofi to switch Pulseaudio default sink/source

Lately I have to video call a lot for work. From time to time it happens that the default sink or source of Pulseaudio is not correctly set resulting in no mic or no audio during a video call. The default sink or source can be set via the pactl command line: pactl set-default-source alsa_input.usb-046d_0825_67D582F0-02.mono-fallback However, that is a bit cumbersome, especially when you’ve just set up a video call. Searching for better way I found this script which uses Rofi to switch the default Pulseaudio sink.

Make-a-Lisp in Elm

Recently I finished my second Make-a-Lisp (Mal) implementation. What is Mal you ask? Mal is a learning tool made by Joel Martin. Mal is a Clojure inspired Lisp interpreter. Mal is implemented in 68 languages (and counting). Following the 11 step incremental process guide you’ll end up with your very own Lisp interpreter (which is powerful enough to be self-hosting). Along the way you learn a great deal about the programming language you’re implementing in.

NodeMCU with a HD44780 display

Today I tried to hook up a HD44780 LCD display up to a NodeMCU. A week ago i did this with an Arduino, that was relatively easy. I expect a bit more pain with the NodeMCU as there are no standard libraries available for the LCD display i have. Hello World For the wiring I followed rougly this guide. At first i was concerned that I needed to use a level shifter for the 5V and 3.


GitHub LinkedIn PGP key