summaryrefslogtreecommitdiff
path: root/index.xml
diff options
context:
space:
mode:
Diffstat (limited to 'index.xml')
-rw-r--r--index.xml167
1 files changed, 167 insertions, 0 deletions
diff --git a/index.xml b/index.xml
new file mode 100644
index 0000000..227fd60
--- /dev/null
+++ b/index.xml
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
+ <channel>
+ <title>jaseg.de on Home</title>
+ <link>http://jaseg.de/</link>
+ <description>Recent content in jaseg.de on Home</description>
+ <generator>Hugo</generator>
+ <language>en-us</language>
+ <copyright>Jan Sebastian Götte</copyright>
+ <lastBuildDate>Sun, 29 Jun 2025 23:42:00 +0100</lastBuildDate>
+ <atom:link href="http://jaseg.de/index.xml" rel="self" type="application/rss+xml" />
+ <item>
+ <title>Getting the .ipynb Notebook File Location From a Running Jupyter Lab Notebook</title>
+ <link>http://jaseg.de/blog/jupyterlab-notebook-file-oneliner/</link>
+ <pubDate>Sun, 29 Jun 2025 23:42:00 +0100</pubDate>
+ <guid>http://jaseg.de/blog/jupyterlab-notebook-file-oneliner/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;p&gt;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.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>8seg Technical Overview</title>
+ <link>http://jaseg.de/blog/8seg/</link>
+ <pubDate>Tue, 26 Dec 2023 15:26:00 +0100</pubDate>
+ <guid>http://jaseg.de/blog/8seg/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;p&gt;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.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>KiMesh</title>
+ <link>http://jaseg.de/projects/kimesh/</link>
+ <pubDate>Wed, 04 Oct 2023 23:42:00 +0200</pubDate>
+ <guid>http://jaseg.de/projects/kimesh/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;p&gt;KiMesh is a KiCad plugin that automatically creates security meshes with two or traces covering an arbitrarily-shaped outline on the board.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>Ubiquiti EdgeRouter on Deutsche Telekom GPON Fiber</title>
+ <link>http://jaseg.de/blog/telekom-gpon-sfp/</link>
+ <pubDate>Mon, 21 Feb 2022 20:00:00 +0100</pubDate>
+ <guid>http://jaseg.de/blog/telekom-gpon-sfp/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;p&gt;Short tutorial on getting a Deutsche Telekom GPON internet connection running using a SFP ONU unit in an Ubiquiti EdgeRouter.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>New Paper on Inertial Hardware Security Modules</title>
+ <link>http://jaseg.de/blog/ihsm-worlds-first-diy-hsm/</link>
+ <pubDate>Tue, 23 Nov 2021 23:42:20 +0100</pubDate>
+ <guid>http://jaseg.de/blog/ihsm-worlds-first-diy-hsm/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;p&gt;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.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>Kicad Mesh Plugin</title>
+ <link>http://jaseg.de/blog/kicad-mesh-plugin/</link>
+ <pubDate>Tue, 18 Aug 2020 13:15:39 +0200</pubDate>
+ <guid>http://jaseg.de/blog/kicad-mesh-plugin/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;p&gt;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.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>Private Contact Discovery</title>
+ <link>http://jaseg.de/blog/private-contact-discovery/</link>
+ <pubDate>Sat, 22 Jun 2019 10:30:00 +0800</pubDate>
+ <guid>http://jaseg.de/blog/private-contact-discovery/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;p&gt;I gave a short introduction into Private Contact Discovery protocols at our university workgroup.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>Hardware Security Module Basics</title>
+ <link>http://jaseg.de/blog/hsm-basics/</link>
+ <pubDate>Fri, 17 May 2019 15:29:20 +0800</pubDate>
+ <guid>http://jaseg.de/blog/hsm-basics/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;p&gt;I gave a short introduction into Hardware Security Modules at our university workgroup, including an overview on interesting research directions.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>How to talk to your microcontroller over serial</title>
+ <link>http://jaseg.de/blog/serial-protocols/</link>
+ <pubDate>Sat, 19 May 2018 08:09:46 +0200</pubDate>
+ <guid>http://jaseg.de/blog/serial-protocols/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;p&gt;Scroll to the end for the &lt;a class=&#34;reference internal&#34; href=&#34;#conclusion&#34;&gt;TL;DR&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In this article I will give an overview on the protocols spoken on serial ports, highlighting common pitfalls. I will&#xA;summarize some points on how to design a serial protocol that is simple to implement and works reliably even under error&#xA;conditions.&lt;/p&gt;&#xA;&lt;p&gt;If you have done low-level microcontroller firmware you will regularly have had to stuff some data up a serial port to&#xA;another microcontroller or to a computer. In the age of USB, an old-school serial port is still the simplest and&#xA;quickest way to get communication to a control computer up and running. Integrating a ten thousand-line USB stack into&#xA;your firmware and writing the necessary low-level drivers on the host side might take days. Poking a few registers to&#xA;set up your UART to talk to an external hardware USB to serial converter is a matter of minutes.&lt;/p&gt;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>Thor&#39;s Hammer</title>
+ <link>http://jaseg.de/blog/thors-hammer/</link>
+ <pubDate>Thu, 03 May 2018 11:59:37 +0200</pubDate>
+ <guid>http://jaseg.de/blog/thors-hammer/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;p&gt;In case you were having an inferiority complex because your friends&#39; IBM Model M keyboards are so much louder than the&#xA;shitty rubber dome freebie you got with your pc... Here&#39;s the solution: Thor&#39;s Hammer, a simple typing cadence enhancer&#xA;for &lt;a class=&#34;reference external&#34; href=&#34;https://en.wikipedia.org/wiki/PS/2_port&#34;&gt;PS/2&lt;/a&gt; keyboards.&lt;/p&gt;&#xA;&lt;figure data-pagefind-ignore&gt;&#xA; &lt;video controls loop&gt;&#xA; &lt;source src=&#34;video/thors_hammer.mov&#34; type=&#34;video/h264&#34;&gt;&#xA; &lt;source src=&#34;video/thors_hammer.webm&#34; type=&#34;video/webm&#34;&gt;&#xA; Your browser does not support the HTML5 video tag.&#xA; &lt;/video&gt;&#xA; &lt;figcaption&gt;A demonstration of the completed project.&#xA;&#xA; &lt;a href=&#34;video/thors_hammer.mov&#34;&gt;h264 download&lt;/a&gt; /&#xA; &lt;a href=&#34;video/thors_hammer.webm&#34;&gt;webm download&lt;/a&gt;&#xA; &lt;/figcaption&gt;&#xA;&lt;/figure&gt;&lt;p&gt;The connects to the keyboard&#39;s PS/2 clock line and briefly actuates a large solenoid on each key press. An interesting&#xA;fact about PS/2 is that the clock line is only active as long as either the host computer or the input device actually&#xA;want to send data. In case of a keyboard that&#39;s the case when a key is pressed or when the host changes the keyboard&#39;s&#xA;LED state, otherwise the clock line is silent. We ignore the LED activity for now as it&#39;s generally coupled to key&#xA;presses. By just triggering an NE555 configured as astable flipflop we can stretch each train of clock pulses to a&#xA;pulse a few tens of milliseconds long that is enough to actuate the solenoid.&lt;/p&gt;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>32-Channel LED tape driver</title>
+ <link>http://jaseg.de/blog/multichannel-led-driver/</link>
+ <pubDate>Wed, 02 May 2018 11:31:14 +0200</pubDate>
+ <guid>http://jaseg.de/blog/multichannel-led-driver/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;p&gt;Together, a friend and I outfitted the small staircase at Berlin&#39;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.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>Wifi Led Driver</title>
+ <link>http://jaseg.de/blog/wifi-led-driver/</link>
+ <pubDate>Wed, 02 May 2018 11:31:03 +0200</pubDate>
+ <guid>http://jaseg.de/blog/wifi-led-driver/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;p&gt;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&#39;t need a full 32 channels of control. I ended up thinking that a smaller version of the 32-channel driver that didn&#39;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 &lt;a href=&#34;#system-message-1&#34;&gt;&lt;span class=&#34;problematic&#34; id=&#34;problematic-1&#34;&gt;RS485_&lt;/span&gt;&lt;/a&gt; transceiver for WiFi connectivity.&lt;/p&gt;&#xA;&lt;div class=&#34;system-messages section&#34;&gt;&#xA;&lt;h2&gt;Docutils System Messages&lt;/h2&gt;&#xA;&lt;div class=&#34;system-message&#34; id=&#34;system-message-1&#34;&gt;&#xA;&lt;p class=&#34;system-message-title&#34;&gt;System Message: ERROR/3 (&lt;tt class=&#34;docutils&#34;&gt;&amp;lt;stdin&amp;gt;&lt;/tt&gt;, line 1); &lt;em&gt;&lt;a href=&#34;#problematic-1&#34;&gt;backlink&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;&#xA;Unknown target name: &amp;quot;rs485&amp;quot;.&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>LED Characterization</title>
+ <link>http://jaseg.de/blog/led-characterization/</link>
+ <pubDate>Wed, 02 May 2018 11:18:38 +0200</pubDate>
+ <guid>http://jaseg.de/blog/led-characterization/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;p&gt;Recently, I have been working on a &lt;a href=&#34;#system-message-1&#34;&gt;&lt;span class=&#34;problematic&#34; id=&#34;problematic-1&#34;&gt;`small driver`_&lt;/span&gt;&lt;/a&gt; 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 &lt;em&gt;all wrong&lt;/em&gt;! This observation led me down a rabbit hole of color perception and LED peculiarities.&lt;/p&gt;&#xA;&lt;div class=&#34;system-messages section&#34;&gt;&#xA;&lt;h2&gt;Docutils System Messages&lt;/h2&gt;&#xA;&lt;div class=&#34;system-message&#34; id=&#34;system-message-1&#34;&gt;&#xA;&lt;p class=&#34;system-message-title&#34;&gt;System Message: ERROR/3 (&lt;tt class=&#34;docutils&#34;&gt;&amp;lt;stdin&amp;gt;&lt;/tt&gt;, line 1); &lt;em&gt;&lt;a href=&#34;#problematic-1&#34;&gt;backlink&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;&#xA;Unknown target name: &amp;quot;small driver&amp;quot;.&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>8seg</title>
+ <link>http://jaseg.de/projects/8seg/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+ <guid>http://jaseg.de/projects/8seg/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;p&gt;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&#39;s size and shape through bending and folding.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>About jaseg</title>
+ <link>http://jaseg.de/about/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+ <guid>http://jaseg.de/about/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;section&#34; id=&#34;about&#34;&gt;&#xA;&lt;h2&gt;About&lt;/h2&gt;&#xA;&lt;p&gt;Hej, I&#39;m Jan, or jaseg. At the moment I&#39;m doing a PhD (Dr.-Ing.) at TU Darmstadt in Computer Science, specializing on&#xA;Hardware Security. This is my personal website where I publish things that I find interesting.&lt;/p&gt;&#xA;&lt;p&gt;I self-host my code at &lt;a class=&#34;reference external&#34; href=&#34;https://git.jaseg.de/&#34;&gt;git.jaseg.de&lt;/a&gt;, but I am also on &lt;a class=&#34;reference external&#34; href=&#34;https://github.com/jaseg&#34;&gt;github&lt;/a&gt;&#xA;and on &lt;a class=&#34;reference external&#34; href=&#34;https://gitlab.com/neinseg&#34;&gt;gitlab&lt;/a&gt;. I use github for issue tracking for some of my projects such as&#xA;&lt;a class=&#34;reference external&#34; href=&#34;https://github.com/jaseg/gerbolyze&#34;&gt;gerbolyze&lt;/a&gt; and &lt;a class=&#34;reference external&#34; href=&#34;https://github.com/jaseg/python-mpv&#34;&gt;python-mpv&lt;/a&gt;. I maintain&#xA;the &lt;a class=&#34;reference external&#34; href=&#34;https://pypi.org/project/python-mpv/&#34;&gt;python-mpv&lt;/a&gt; and &lt;a class=&#34;reference external&#34; href=&#34;https://pypi.org/project/gerbolyze/&#34;&gt;gerbolyze&lt;/a&gt; python&#xA;packages on PyPI. Release tags on these two repositories are signed with the release signing key found &lt;a class=&#34;reference external&#34; href=&#34;https://github.com/jaseg.gpg&#34;&gt;on github&lt;/a&gt; and below.&lt;/p&gt;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>Gerbolyze</title>
+ <link>http://jaseg.de/projects/gerbolyze/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+ <guid>http://jaseg.de/projects/gerbolyze/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;p&gt;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.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>Gerbonara</title>
+ <link>http://jaseg.de/projects/gerbonara/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+ <guid>http://jaseg.de/projects/gerbonara/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;p&gt;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.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>Impressum</title>
+ <link>http://jaseg.de/imprint/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+ <guid>http://jaseg.de/imprint/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;section&#34; id=&#34;impressum&#34;&gt;&#xA;&lt;h2&gt;Impressum&lt;/h2&gt;&#xA;&lt;p&gt;&#xA;Sebastian Götte&lt;br/&gt;&#xA;c/o Praxis Dr. Götte&lt;br/&gt;&#xA;Krankenhausstr. 1a&lt;br/&gt;&#xA;54634 Bitburg&lt;br/&gt;&#xA;imprint@jaseg.net&#xA;&lt;/p&gt;&#xA;&#xA;Inhaltlich Verantwortlicher gem. § 55 II RStV: Sebastian Götte (Anschrift s.o.)&lt;/div&gt;&#xA;&lt;div class=&#34;section&#34; id=&#34;lizenz-dieser-seite&#34;&gt;&#xA;&lt;h2&gt;Lizenz dieser Seite&lt;/h2&gt;&#xA;Dieses Werk ist lizenziert unter einer&#xA;&lt;a rel=&#34;license&#34; href=&#34;http://creativecommons.org/licenses/by-nc-sa/4.0/&#34;&gt;&#xA; Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 4.0 International&#xA; Lizenz (CC-BY-NC-SA)&#xA;&lt;/a&gt;.&lt;br/&gt;&#xA;&lt;a rel=&#34;license&#34; href=&#34;http://creativecommons.org/licenses/by-nc-sa/4.0/&#34;&gt;&#xA; &lt;img alt=&#34;Creative Commons Lizenzvertrag&#34; style=&#34;border-width:0&#34;&#xA; src=&#34;https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png&#34; data-pagefind-ignore/&gt;&#xA;&lt;/a&gt;&lt;/div&gt;&#xA;&lt;div class=&#34;section&#34; id=&#34;haftungsbeschrankung-fur-inhalte-der-website&#34;&gt;&#xA;&lt;h2&gt;Haftungsbeschränkung für Inhalte der Website&lt;/h2&gt;&#xA;&lt;p&gt;Gemäß § 7 Abs. 1 TMG ist der Verantwortliche der Website i. S. v. § 5 TMG für eigene Informationen, die er zur Nutzung&#xA;bereithält, nach den allgemeinen Gesetzen verantwortlich.&lt;/p&gt;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>lolcat-c</title>
+ <link>http://jaseg.de/projects/lolcat-c/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+ <guid>http://jaseg.de/projects/lolcat-c/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;p&gt;lolcat-c is a small, high-performance re-implementation of the &lt;a class=&#34;reference external&#34; href=&#34;https://github.com/busyloop/lolcat&#34;&gt;lolcat&lt;/a&gt; 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.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>python-mpv</title>
+ <link>http://jaseg.de/projects/python-mpv/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+ <guid>http://jaseg.de/projects/python-mpv/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;p&gt;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.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>svg-flatten</title>
+ <link>http://jaseg.de/projects/svg-flatten/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+ <guid>http://jaseg.de/projects/svg-flatten/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;p&gt;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.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
+ </item>
+ <item>
+ <title>wsdiff</title>
+ <link>http://jaseg.de/projects/wsdiff/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+ <guid>http://jaseg.de/projects/wsdiff/</guid>
+ <description>&lt;div class=&#34;document&#34;&gt;&#xA;&#xA;&#xA;&lt;p&gt;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.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
+ </item>
+ </channel>
+</rss>