During my work on the ashen project's linux kernel components, I've found secrets leaking into RAM dumps taken long after they should have been deleted by userspace. It turned out that SIMD-accelerated memcpy on x86-64 and ARM64 leaves residual data in SIMD registers, which will then eventually find their way into kernel memory during context switching. 




 As part of my work on the Ashen project, I'm currently doing some Linux kernel work. Since the AI bubble made normal
Raspberry Pis unaffordable, I was shopping around for another, less expensive dev board. After some looking around, I
settled on the Arduino Uno Q , a devboard in the venerable Arduino Uno form factor that comes with a chonky 
STM32U585 microcontroller…



 I gave a talk about my research studying tamper-sensing mesh implementations in the wild at GPN24, a German hacker event. The recording and slides of the talk are online now. 




 There are exciting things ahead for the next year: I have been granted funding by both nlnet and by prototype fund for open-source work on an open source hardware Hardware Security Module. As a vessel for this project, I created a consulting company, yasec. 




 A small note: As part of moving the servers and website to a new, more suitable host for my Ashen and Yanartas projects as well as the creation of yasec, my freelance consulting business, I've moved git.jaseg.de from a custom cgit/gitolite setup to a forgejo instance. This may have broken some links, especially deep links into the old cgit. If you notice any broken links, please…



 I published a piece of algorithmic art fusing a Pixação graffiti-inspired lettering style with a layout similar to a Thai Haw-taew (five row) Yantra blessing tattoo. 




 cgit is great, but by default when you click on a PDF file in a repository content listing it will show you a hexdump of the file. You can access the actual file by clicking the "plain" link on top of the listing, but that's not only annoying, for large PDF files rendering the hexdump can also hang browser tabs. 




 I've got a new paper accepted at CHES, to be published in TCHES 2026/1 around beginning of December and out on eprint now . The topic of the paper is a way of monitoring a tamper-sensing mesh through time-domain reflectometry using very cheap components. The end result is a circuit that costs about 10 € in parts that is able to measure TDR responses with a few hundred picoseconds…



 There's many tools that render diffs on the web, but almost none that work well on small screens such as phones. I fixed this by publishing wsdiff, a diffing tool written in Python that produces diffs as beautiful, responsive, static, self-contained HTML pages. wsdiffs wrap text to fit the window, and dynamically switch between unified and split diffs based on screen size using…



 Code listings in web pages are often a bit of a pain to use. Usually, they don't wrap on small screens. Also, copy-pasting code from a code listing often copies the line numbers along with the code. Finally, many implementations use heavyweight HTML and/or javascript, making them slow to render. For this blog, I wrote a little CSS hack that renders nice, wrapping code blocks with…



 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. 




 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. 




 KiMesh is a KiCad plugin that automatically creates security meshes with two or traces covering an arbitrarily-shaped outline on the board. 




 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. 




 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. 




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




 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…



 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. 




 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. 




 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…



 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…



 8seg is an experimental textual display. It is made from a 45m by 1.5m large lacework banner that can be put up in a variety of spaces, conforming to the space's size and shape through bending and folding. 




 
 About 
 Hej, I'm Jan, or jaseg. At the moment I'm doing a PhD (Dr.-Ing.) at TU Darmstadt in Computer Science, specializing on
Hardware Security. This is my personal website where I publish things that I find interesting. 
 I self-host my code at git.jaseg.de , but I am also on github 
and on gitlab . I use github for issue tracking for some of my projects such…



 Gerbolyze is a tool that allows the modification of Gerber PCB artwork with a vector graphics editor like Inkscape. Gerbolyze directly converts between SVG and Gerber, and accurately reproduces details that other tools can not. 




 Gerbonara is a user-friendly, powerful tool for reading, writing, modification and rendering of Gerber PCB artwork from the command line or from Python code. Gerbonara supports the Gerber dialects of all industry-standard EDA tools. 




 lolcat-c is a small, high-performance re-implementation of the lolcat rainbow cat utility. lolcat-c is meant as a lolcat that you can actually use in production. It is fast, not slowing down whatever you pipe through it, and it robustly handles real-world terminal output including escape sequences. 




 python-mpv is a small, ctypes-based Python library wrapping the libmpv media player library. Despite its small size and simple API, python-mpv allows advanced control over libmpv and beyond simple remote control of mpv can be used to embed mpv in OpenGL, Qt, and GTK-based Python applications. 




 svg-flatten is a command-line utility that performs vector occlusion and clipping on SVG files, producing a flattened SVG file without overlapping elements, without changing what the file looks like. svg-flatten is used as a part of gerbolyze. 




 wsdiff is a command-line utility that produces self-contained, syntax-highlighted, HTML-formatted diffs that support both unified and side-by-side diffs from a single source file using nothing but CSS magic.