Blog

Getting the .ipynb Notebook File Location From a Running Jupyter Lab Notebook

2025-06-29

If you need to get the path of the ipynb file in a running #Jupyter notebook, this one-liner will do the trick. It seems chatgpt is confused, and a bunch of other approaches on the web look fragile and/or unnecessarily complex to me.

Read more

8seg Technical Overview

2023-12-26

8seg is a large-scale LED light art installation that displays text on a 1.5 meter high, 30 meter wide 8-segment display made from cheap LED tape.

Read more

Ubiquiti EdgeRouter on Deutsche Telekom GPON Fiber

2022-02-21

Short tutorial on getting a Deutsche Telekom GPON internet connection running using a SFP ONU unit in an Ubiquiti EdgeRouter.

Read more

New Paper on Inertial Hardware Security Modules

2021-11-23

Paper announcement: We have published a paper on how you can DIY a tamper-sensing hardware security module from any single-board computer using a moving tamper-sensing mesh made from cheap PCBs.

Read more

Kicad Mesh Plugin

2020-08-18

I wrote a little KiCad plugin that you can use to create security meshes, heaters and other things where you need one or more traces cover the entire surface of a PCB. The plugin supports arbitrary PCB shapes, cutouts, and can route around existing footprints and traces on the PCB.

Read more

Private Contact Discovery

2019-06-22

I gave a short introduction into Private Contact Discovery protocols at our university workgroup.

Read more

Hardware Security Module Basics

2019-05-17

I gave a short introduction into Hardware Security Modules at our university workgroup, including an overview on interesting research directions.

Read more

How to talk to your microcontroller over serial

2018-05-19

Scroll to the end for the TL;DR.

In this article I will give an overview on the protocols spoken on serial ports, highlighting common pitfalls. I will summarize some points on how to design a serial protocol that is simple to implement and works reliably even under error conditions.

If you have done low-level microcontroller firmware you will regularly have had to stuff some data up a serial port to another microcontroller or to a computer. In the age of USB, an old-school serial port is still the simplest and quickest way to get communication to a control computer up and running. Integrating a ten thousand-line USB stack into your firmware and writing the necessary low-level drivers on the host side might take days. Poking a few registers to set up your UART to talk to an external hardware USB to serial converter is a matter of minutes.

Read more

Thor's Hammer

2018-05-03

In case you were having an inferiority complex because your friends' IBM Model M keyboards are so much louder than the shitty rubber dome freebie you got with your pc... Here's the solution: Thor's Hammer, a simple typing cadence enhancer for PS/2 keyboards.

A demonstration of the completed project. h264 download / webm download

The connects to the keyboard's PS/2 clock line and briefly actuates a large solenoid on each key press. An interesting fact about PS/2 is that the clock line is only active as long as either the host computer or the input device actually want to send data. In case of a keyboard that's the case when a key is pressed or when the host changes the keyboard's LED state, otherwise the clock line is silent. We ignore the LED activity for now as it's generally coupled to key presses. By just triggering an NE555 configured as astable flipflop we can stretch each train of clock pulses to a pulse a few tens of milliseconds long that is enough to actuate the solenoid.

Read more

32-Channel LED tape driver

2018-05-02

Together, a friend and I outfitted the small staircase at Berlin's Chaos Computer Club with nice, shiny RGB-WW LED tape for ambient lighting. For this installation, I made a 32-channel LED driver that achieves high dynamic range on all 32 channels using a cheap microcontroller by using Binary Code Modulation.

Read more

Wifi Led Driver

2018-05-02

After the `multichannel LED driver`_ was completed, I was just getting used to controlling LEDs at 14-bit resolution. I liked the board we designed in this project, but at 32 channels it was a bit large for most use cases. Sometimes I just want to pop a piece of LED tape or two somewhere, but I don't need a full 32 channels of control. I ended up thinking that a smaller version of the 32-channel driver that didn't require a separate control computer would be handy. So I sat down and designed a variant of the design with only 8 channels instead of 32 and an on-board ESP8266_ module instead of the RS485_ transceiver for WiFi connectivity.

Docutils System Messages

System Message: ERROR/3 (<stdin>, line 1); backlink

Unknown target name: "multichannel led driver".

System Message: ERROR/3 (<stdin>, line 1); backlink

Unknown target name: "esp8266".

System Message: ERROR/3 (<stdin>, line 1); backlink

Unknown target name: "rs485".
Read more

LED Characterization

2018-05-02

Preface

Recently, I have been working on a small driver for ambient lighting using 12V LED strips like you can get inexpensively from China. I wanted to be able to just throw one of these somewhere, stick down some LED tape, hook it up to a small transformer and be able to control it through Wifi. When I was writing the firmware, I noticed that when fading between different colors, the colors look all wrong! This observation led me down a rabbit hole of color perception and LED peculiarities.

Read more