diff options
21 files changed, 306 insertions, 57 deletions
diff --git a/about/index.html b/about/index.html index 04414ca..2b6da7f 100644 --- a/about/index.html +++ b/about/index.html @@ -32,9 +32,11 @@ </header> <main> - <div class="document" id="about"> -<h1 class="title">About</h1> + <div class="document"> + +<div class="section" id="about"> +<h2>About</h2> <p>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.</p> <p>I self-host my code at <a class="reference external" href="https://git.jaseg.de/">git.jaseg.de</a>, but I am also on <a class="reference external" href="https://github.com/jaseg">github</a> @@ -47,7 +49,7 @@ packages on PyPI. Release tags on these two repositories are signed with the rel regular old email provides, please ask around for my signal contact or email me a file encrypted using <a class="reference external" href="https://github.com/FiloSottile/age">age</a> with one of the SSH keys listed <a class="reference external" href="https://github.com/jaseg.keys">on my github</a>. You can find both PGP and other SSH keys that I have used in the past on the internet, but please consider these keys revoked, and do not use them to encrypt anything you send me.</p> <div class="section" id="python-package-release-signing-key"> -<h2>Python package release signing key</h2> +<h3>Python package release signing key</h3> <p>I use this GPG key (key ID <tt class="docutils literal">ED7A208EEEC76F2D</tt>) to sign git release tags of both <a class="reference external" href="https://github.com/jaseg/gerbolyze">gerbolyze</a> and <a class="reference external" href="https://github.com/jaseg/python-mpv">python-mpv</a>:</p> <pre class="literal-block"> <span class="lineno"></span><span class="line">-----BEGIN PGP PUBLIC KEY BLOCK-----</span> @@ -66,6 +68,17 @@ internet, but please consider these keys revoked, and do not use them to encrypt </span></pre> </div> </div> +<div class="section" id="about-this-site"> +<h2>About this site</h2> +<p>This site is made with the hugo static site generator. I made the theme myself, feel free to grab a copy at +<a class="reference external" href="https://git.jaseg.de/blog.git/tree/themes/conspiracy?h=main">git.jaseg.de</a>. The nifty auto-reflowing code embeds are +made with some CSS magic I made that you can find in <a class="reference external" href="https://git.jaseg.de/blog.git/tree/themes/conspiracy/assets/css/style.css?h=main&id=2fd22e30ce176d8d8a641fd371ad1623b082eaaf#n367">style.css</a>. +The body text is typeset in Roboto Slab, created by <a class="reference external" href="https://christianrobertson.com/">Christian Robertson</a> while +working at Google. The headlines are set in Nyght Serif, a font by <a class="reference external" href="https://linktr.ee/mkobuzan">Maksym Kobuzan</a>. +Check out their other fonts, their work is beautiful! Source code is typeset in Fira Code, a derivate by ... from +Mozilla's <a class="reference external" href="https://github.com/mozilla/Fira">Fira Mono</a> font, designed by <a class="reference external" href="https://spiekermann.com/">Erik Spiekermann</a>, <a class="reference external" href="https://carrois.com/">Ralph du Carrois</a>, <a class="reference external" href="https://anjameiners.com/de/hallo/">Anja Meiners</a> and Botio Nikoltchev of Carrois Type Design, now succeeded by <a class="reference external" href="https://bboxtype.com/typefaces/FiraMono/#!layout=specimen">bBoxType</a> , and Patryk Adamczyk of Mozilla.</p> +</div> +</div> </main><footer> Copyright © 2023 Jan Sebastian Götte / <a href="/about/">About</a> diff --git a/blog/index.html b/blog/index.html index 52affc8..ed7f2b8 100644 --- a/blog/index.html +++ b/blog/index.html @@ -39,7 +39,7 @@ </div> </div> - <div class="card"><h2><a href="/blog/telekom-gpon-sfp/">Ubiquiti EdgeRouter on Deutsche Telekom GPON Fiber</a></h2><strong>2022-02-21</strong> + <div class="card"><h3><a href="/blog/telekom-gpon-sfp/">Ubiquiti EdgeRouter on Deutsche Telekom GPON Fiber</a></h3><strong>2022-02-21</strong> <div class="summary"> Disclaimer I provide this guide as a reference for other knowledgeable users without any warranty. Please feel free to use this as a resource but do not hold me responsible if this does not work for you. There is a significant chance that due to an error on my side or due to Telekom changing their setup this guide will not work for you, and you may end up having to pay for an unsuccessful Telekom technician visit. @@ -47,7 +47,7 @@ </div> </div> - <div class="card"><h2><a href="/blog/ihsm-worlds-first-diy-hsm/">New Paper on Inertial Hardware Security Modules</a></h2><strong>2021-11-23</strong> + <div class="card"><h3><a href="/blog/ihsm-worlds-first-diy-hsm/">New Paper on Inertial Hardware Security Modules</a></h3><strong>2021-11-23</strong> <div class="summary"> World's First DIY HSM Last week, Prof. Dr. Björn Scheuermann and I have published our first joint paper on Hardware Security Modules. In our paper, we introduce Inertial Hardware Security Modules (IHSMs), a new way of building high-security HSMs from basic components. I think the technology we demonstrate in our paper might allow some neat applications where some civil organization deploys a service that no one, not even they themselves, can snoop on. @@ -55,7 +55,7 @@ </div> </div> - <div class="card"><h2><a href="/blog/kicad-mesh-plugin/">Kicad Mesh Plugin</a></h2><strong>2020-08-18</strong> + <div class="card"><h3><a href="/blog/kicad-mesh-plugin/">Kicad Mesh Plugin</a></h3><strong>2020-08-18</strong> <div class="summary"> Tamper Detection Meshes Cryptography is at the foundation of our modern, networked world. From email to card payment infrastructure in brick and mortar stores, cryptographic keys secure almost every part of our digital lives againts cybercriminals or curious surveillance capitalists. Without cryptography, many of the things we routinely do in our lives such as paying for groceries with a credit card, messaging a friend on Signal or unlocking a car with its keyfob would not be possible. @@ -63,7 +63,7 @@ </div> </div> - <div class="card"><h2><a href="/blog/private-contact-discovery/">Private Contact Discovery</a></h2><strong>2019-06-22</strong> + <div class="card"><h3><a href="/blog/private-contact-discovery/">Private Contact Discovery</a></h3><strong>2019-06-22</strong> <div class="summary"> Private Contact Discovery Private Contact Discovery (PCD) is the formal name for the problem modern smartphone messenger applications have on installation: Given a user's address book, find out which of their contacts also use the same messenger without the messenger's servers learning anything about the user's address book. The widespread non-private way to do this is to simply upload the user's address book to the app's operator's servers and do an SQL JOIN keyed on the phone number field against the database of registered users. @@ -71,7 +71,7 @@ </div> </div> - <div class="card"><h2><a href="/blog/hsm-basics/">Hardware Security Module Basics</a></h2><strong>2019-05-17</strong> + <div class="card"><h3><a href="/blog/hsm-basics/">Hardware Security Module Basics</a></h3><strong>2019-05-17</strong> <div class="summary"> Hardware Security Modules and Security Research and Cryptography On May 17 2019 I gave a short presentation on the fundamentals of hardware security modules at the weekly seminar of Prof. Mori's security research working group at Waseda University. The motivation for this was that outside of low-level hardware security people and people working in the financial industry HSMs are not thought about that often. In particular most network or systems security people would not consider them an option. @@ -79,7 +79,7 @@ </div> </div> - <div class="card"><h2><a href="/blog/serial-protocols/">How to talk to your microcontroller over serial</a></h2><strong>2018-05-19</strong> + <div class="card"><h3><a href="/blog/serial-protocols/">How to talk to your microcontroller over serial</a></h3><strong>2018-05-19</strong> <div class="summary"> Scroll to the end for the TL;DR. @@ -89,7 +89,7 @@ If you have done low-level microcontroller firmware you will regularly have had </div> </div> - <div class="card"><h2><a href="/blog/thors-hammer/">Thor's Hammer</a></h2><strong>2018-05-03</strong> + <div class="card"><h3><a href="/blog/thors-hammer/">Thor's Hammer</a></h3><strong>2018-05-03</strong> <div class="summary"> 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. @@ -98,7 +98,7 @@ Your browser does not support the HTML5 video tag. A demonstration of the comple </div> </div> - <div class="card"><h2><a href="/blog/multichannel-led-driver/">32-Channel LED tape driver</a></h2><strong>2018-05-02</strong> + <div class="card"><h3><a href="/blog/multichannel-led-driver/">32-Channel LED tape driver</a></h3><strong>2018-05-02</strong> <div class="summary"> Theoretical basics 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. This tape is like regular RGB tape but with an additional warm white channel, which makes for much more natural pastels and whites. There are several variants of RGBW tape. Cheap ones have separate RGB and white LEDs, which is fine for indirect lighting but does not work for direct lighting. @@ -106,7 +106,7 @@ Your browser does not support the HTML5 video tag. A demonstration of the comple </div> </div> - <div class="card"><h2><a href="/blog/wifi-led-driver/">Wifi Led Driver</a></h2><strong>2018-05-02</strong> + <div class="card"><h3><a href="/blog/wifi-led-driver/">Wifi Led Driver</a></h3><strong>2018-05-02</strong> <div class="summary"> Project motivation The completed driver board installed in the 3D-printed case. This device can now be connected to 12V and two segments of LED tape that can then be controlled trough Wifi. The ESP8266 module goes on the pin header on the left and was removed for this picture. 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. @@ -114,7 +114,7 @@ Your browser does not support the HTML5 video tag. A demonstration of the comple </div> </div> - <div class="card"><h2><a href="/blog/led-characterization/">LED Characterization</a></h2><strong>2018-05-02</strong> + <div class="card"><h3><a href="/blog/led-characterization/">LED Characterization</a></h3><strong>2018-05-02</strong> <div class="summary"> 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! diff --git a/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Bold.woff2 b/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Bold.woff2 Binary files differnew file mode 100644 index 0000000..8e28860 --- /dev/null +++ b/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Bold.woff2 diff --git a/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-BoldItalic.woff2 b/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-BoldItalic.woff2 Binary files differnew file mode 100644 index 0000000..c4a12e0 --- /dev/null +++ b/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-BoldItalic.woff2 diff --git a/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Dark.woff2 b/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Dark.woff2 Binary files differnew file mode 100644 index 0000000..c255d39 --- /dev/null +++ b/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Dark.woff2 diff --git a/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-DarkItalic.woff2 b/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-DarkItalic.woff2 Binary files differnew file mode 100644 index 0000000..7e0da32 --- /dev/null +++ b/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-DarkItalic.woff2 diff --git a/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Light.woff2 b/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Light.woff2 Binary files differnew file mode 100644 index 0000000..418f03e --- /dev/null +++ b/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Light.woff2 diff --git a/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-LightItalic.woff2 b/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-LightItalic.woff2 Binary files differnew file mode 100644 index 0000000..b2d3ab9 --- /dev/null +++ b/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-LightItalic.woff2 diff --git a/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Medium.woff2 b/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Medium.woff2 Binary files differnew file mode 100644 index 0000000..42d677d --- /dev/null +++ b/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Medium.woff2 diff --git a/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-MediumItalic.woff2 b/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-MediumItalic.woff2 Binary files differnew file mode 100644 index 0000000..b092803 --- /dev/null +++ b/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-MediumItalic.woff2 diff --git a/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Regular.woff2 b/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Regular.woff2 Binary files differnew file mode 100644 index 0000000..5d518dc --- /dev/null +++ b/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Regular.woff2 diff --git a/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-RegularItalic.woff2 b/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-RegularItalic.woff2 Binary files differnew file mode 100644 index 0000000..79adbb6 --- /dev/null +++ b/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-RegularItalic.woff2 @@ -1,6 +1,6 @@ <!DOCTYPE html> <html><head> - <meta name="generator" content="Hugo 0.112.3"> + <meta name="generator" content="Hugo 0.119.0"> <meta charset="utf-8"> <title>Home</title> <meta name="description" content=""> @@ -40,39 +40,38 @@ pages. If you want to learn more about me, head over to the about page.</p> </div> </div> <h2>Recently updated projects</h2> - <div class="card"><h2><a href="/projects/gerbolyze/">Gerbolyze</a></h2> + <div class="card"><h3><a href="/projects/kimesh/">KiMesh</a></h3> <div class="summary"> <div class="document"> -<p>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.</p> +<p>KiMesh is a KiCad plugin that automatically creates security meshes with two or traces covering an arbitrarily-shaped outline on the board.</p> </div> - <a href="http://jaseg.de/projects/gerbolyze/">Read more</a> + <a href="http://jaseg.de/projects/kimesh/">Read more</a> </div> <div class="links"> - <a href="https://git.jaseg.de/gerbolyze.git">Sources</a> - <a href="https://github.com/jaseg/gerbolyze/issues">Issues</a> - <a href="https://gerbolyze.gitlab.io/gerbolyze">Docs</a> - <a href="https://pypi.org/project/gerbolyze">PyPI</a> + <a href="https://git.jaseg.de/kimesh.git">Sources</a> + <a href="https://github.com/jaseg/kimesh/issues">Issues</a> + <a href="https://jaseg.de/projects/kimesh">Docs</a> </div> </div> - <div class="card"><h2><a href="/projects/gerbonara/">Gerbonara</a></h2> + <div class="card"><h3><a href="/projects/gerbolyze/">Gerbolyze</a></h3> <div class="summary"> <div class="document"> -<p>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.</p> +<p>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.</p> </div> - <a href="http://jaseg.de/projects/gerbonara/">Read more</a> + <a href="http://jaseg.de/projects/gerbolyze/">Read more</a> </div> <div class="links"> - <a href="https://git.jaseg.de/gerbonara.git">Sources</a> - <a href="https://gitlab.com/gerbolyze/gerbonara/issues">Issues</a> - <a href="https://gerbolyze.gitlab.io/gerbonara">Docs</a> - <a href="https://pypi.org/project/gerbonara">PyPI</a> + <a href="https://git.jaseg.de/gerbolyze.git">Sources</a> + <a href="https://github.com/jaseg/gerbolyze/issues">Issues</a> + <a href="https://gerbolyze.gitlab.io/gerbolyze">Docs</a> + <a href="https://pypi.org/project/gerbolyze">PyPI</a> </div> </div> @@ -81,7 +80,7 @@ pages. If you want to learn more about me, head over to the about page.</p> <a href="/projects/">See more<span class="arrow-right"></span></a> </div> <h2>Blog</h2> - <div class="card"><h2><a href="/blog/telekom-gpon-sfp/">Ubiquiti EdgeRouter on Deutsche Telekom GPON Fiber</a></h2><strong>2022-02-21</strong> + <div class="card"><h3><a href="/blog/telekom-gpon-sfp/">Ubiquiti EdgeRouter on Deutsche Telekom GPON Fiber</a></h3><strong>2022-02-21</strong> <div class="summary"> Disclaimer I provide this guide as a reference for other knowledgeable users without any warranty. Please feel free to use this as a resource but do not hold me responsible if this does not work for you. There is a significant chance that due to an error on my side or due to Telekom changing their setup this guide will not work for you, and you may end up having to pay for an unsuccessful Telekom technician visit. @@ -89,7 +88,7 @@ pages. If you want to learn more about me, head over to the about page.</p> </div> </div> - <div class="card"><h2><a href="/blog/ihsm-worlds-first-diy-hsm/">New Paper on Inertial Hardware Security Modules</a></h2><strong>2021-11-23</strong> + <div class="card"><h3><a href="/blog/ihsm-worlds-first-diy-hsm/">New Paper on Inertial Hardware Security Modules</a></h3><strong>2021-11-23</strong> <div class="summary"> World's First DIY HSM Last week, Prof. Dr. Björn Scheuermann and I have published our first joint paper on Hardware Security Modules. In our paper, we introduce Inertial Hardware Security Modules (IHSMs), a new way of building high-security HSMs from basic components. I think the technology we demonstrate in our paper might allow some neat applications where some civil organization deploys a service that no one, not even they themselves, can snoop on. @@ -97,7 +96,7 @@ pages. If you want to learn more about me, head over to the about page.</p> </div> </div> - <div class="card"><h2><a href="/blog/kicad-mesh-plugin/">Kicad Mesh Plugin</a></h2><strong>2020-08-18</strong> + <div class="card"><h3><a href="/blog/kicad-mesh-plugin/">Kicad Mesh Plugin</a></h3><strong>2020-08-18</strong> <div class="summary"> Tamper Detection Meshes Cryptography is at the foundation of our modern, networked world. From email to card payment infrastructure in brick and mortar stores, cryptographic keys secure almost every part of our digital lives againts cybercriminals or curious surveillance capitalists. Without cryptography, many of the things we routinely do in our lives such as paying for groceries with a credit card, messaging a friend on Signal or unlocking a car with its keyfob would not be possible. @@ -105,7 +104,7 @@ pages. If you want to learn more about me, head over to the about page.</p> </div> </div> - <div class="card"><h2><a href="/blog/private-contact-discovery/">Private Contact Discovery</a></h2><strong>2019-06-22</strong> + <div class="card"><h3><a href="/blog/private-contact-discovery/">Private Contact Discovery</a></h3><strong>2019-06-22</strong> <div class="summary"> Private Contact Discovery Private Contact Discovery (PCD) is the formal name for the problem modern smartphone messenger applications have on installation: Given a user's address book, find out which of their contacts also use the same messenger without the messenger's servers learning anything about the user's address book. The widespread non-private way to do this is to simply upload the user's address book to the app's operator's servers and do an SQL JOIN keyed on the phone number field against the database of registered users. @@ -113,7 +112,7 @@ pages. If you want to learn more about me, head over to the about page.</p> </div> </div> - <div class="card"><h2><a href="/blog/hsm-basics/">Hardware Security Module Basics</a></h2><strong>2019-05-17</strong> + <div class="card"><h3><a href="/blog/hsm-basics/">Hardware Security Module Basics</a></h3><strong>2019-05-17</strong> <div class="summary"> Hardware Security Modules and Security Research and Cryptography On May 17 2019 I gave a short presentation on the fundamentals of hardware security modules at the weekly seminar of Prof. Mori's security research working group at Waseda University. The motivation for this was that outside of low-level hardware security people and people working in the financial industry HSMs are not thought about that often. In particular most network or systems security people would not consider them an option. @@ -121,7 +120,7 @@ pages. If you want to learn more about me, head over to the about page.</p> </div> </div> - <div class="card"><h2><a href="/blog/serial-protocols/">How to talk to your microcontroller over serial</a></h2><strong>2018-05-19</strong> + <div class="card"><h3><a href="/blog/serial-protocols/">How to talk to your microcontroller over serial</a></h3><strong>2018-05-19</strong> <div class="summary"> Scroll to the end for the TL;DR. @@ -131,7 +130,7 @@ If you have done low-level microcontroller firmware you will regularly have had </div> </div> - <div class="card"><h2><a href="/blog/thors-hammer/">Thor's Hammer</a></h2><strong>2018-05-03</strong> + <div class="card"><h3><a href="/blog/thors-hammer/">Thor's Hammer</a></h3><strong>2018-05-03</strong> <div class="summary"> 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. @@ -140,7 +139,7 @@ Your browser does not support the HTML5 video tag. A demonstration of the comple </div> </div> - <div class="card"><h2><a href="/blog/multichannel-led-driver/">32-Channel LED tape driver</a></h2><strong>2018-05-02</strong> + <div class="card"><h3><a href="/blog/multichannel-led-driver/">32-Channel LED tape driver</a></h3><strong>2018-05-02</strong> <div class="summary"> Theoretical basics 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. This tape is like regular RGB tape but with an additional warm white channel, which makes for much more natural pastels and whites. There are several variants of RGBW tape. Cheap ones have separate RGB and white LEDs, which is fine for indirect lighting but does not work for direct lighting. @@ -148,7 +147,7 @@ Your browser does not support the HTML5 video tag. A demonstration of the comple </div> </div> - <div class="card"><h2><a href="/blog/wifi-led-driver/">Wifi Led Driver</a></h2><strong>2018-05-02</strong> + <div class="card"><h3><a href="/blog/wifi-led-driver/">Wifi Led Driver</a></h3><strong>2018-05-02</strong> <div class="summary"> Project motivation The completed driver board installed in the 3D-printed case. This device can now be connected to 12V and two segments of LED tape that can then be controlled trough Wifi. The ESP8266 module goes on the pin header on the left and was removed for this picture. 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. @@ -156,7 +155,7 @@ Your browser does not support the HTML5 video tag. A demonstration of the comple </div> </div> - <div class="card"><h2><a href="/blog/led-characterization/">LED Characterization</a></h2><strong>2018-05-02</strong> + <div class="card"><h3><a href="/blog/led-characterization/">LED Characterization</a></h3><strong>2018-05-02</strong> <div class="summary"> 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! @@ -7,7 +7,20 @@ <generator>Hugo -- gohugo.io</generator> <language>en-us</language> <copyright>Jan Sebastian Götte</copyright> - <lastBuildDate>Mon, 21 Feb 2022 20:00:00 +0100</lastBuildDate><atom:link href="http://jaseg.de/index.xml" rel="self" type="application/rss+xml" /> + <lastBuildDate>Wed, 04 Oct 2023 23:42:00 +0200</lastBuildDate><atom:link href="http://jaseg.de/index.xml" rel="self" type="application/rss+xml" /> + <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><div class="document"> + + +<p>KiMesh is a KiCad plugin that automatically creates security meshes with two or traces covering an arbitrarily-shaped outline on the board.</p> +</div></description> + </item> + <item> <title>Ubiquiti EdgeRouter on Deutsche Telekom GPON Fiber</title> <link>http://jaseg.de/blog/telekom-gpon-sfp/</link> diff --git a/projects/index.html b/projects/index.html index fecb7f7..5376a7a 100644 --- a/projects/index.html +++ b/projects/index.html @@ -41,7 +41,24 @@ I strive to keep all of them up to date and maintained, so if you notice an issu open an issue on the project's issue tracker.</p> </div> </div> - <div class="card"><h2><a href="/projects/gerbolyze/">Gerbolyze</a></h2> + <div class="card"><h3><a href="/projects/kimesh/">KiMesh</a></h3> + + <div class="summary"> + <div class="document"> + + +<p>KiMesh is a KiCad plugin that automatically creates security meshes with two or traces covering an arbitrarily-shaped outline on the board.</p> +</div> + <a href="http://jaseg.de/projects/kimesh/">Read more</a> + </div> + <div class="links"> + <a href="https://git.jaseg.de/kimesh.git">Sources</a> + <a href="https://github.com/jaseg/kimesh/issues">Issues</a> + <a href="https://jaseg.de/projects/kimesh">Docs</a> + </div> +</div> + + <div class="card"><h3><a href="/projects/gerbolyze/">Gerbolyze</a></h3> <div class="summary"> <div class="document"> @@ -59,7 +76,7 @@ open an issue on the project's issue tracker.</p> </div> </div> - <div class="card"><h2><a href="/projects/gerbonara/">Gerbonara</a></h2> + <div class="card"><h3><a href="/projects/gerbonara/">Gerbonara</a></h3> <div class="summary"> <div class="document"> @@ -77,7 +94,7 @@ open an issue on the project's issue tracker.</p> </div> </div> - <div class="card"><h2><a href="/projects/lolcat-c/">lolcat-c</a></h2> + <div class="card"><h3><a href="/projects/lolcat-c/">lolcat-c</a></h3> <div class="summary"> <div class="document"> @@ -94,7 +111,7 @@ open an issue on the project's issue tracker.</p> </div> </div> - <div class="card"><h2><a href="/projects/python-mpv/">python-mpv</a></h2> + <div class="card"><h3><a href="/projects/python-mpv/">python-mpv</a></h3> <div class="summary"> <div class="document"> @@ -112,7 +129,7 @@ open an issue on the project's issue tracker.</p> </div> </div> - <div class="card"><h2><a href="/projects/svg-flatten/">svg-flatten</a></h2> + <div class="card"><h3><a href="/projects/svg-flatten/">svg-flatten</a></h3> <div class="summary"> <div class="document"> @@ -129,7 +146,7 @@ open an issue on the project's issue tracker.</p> </div> </div> - <div class="card"><h2><a href="/projects/wsdiff/">wsdiff</a></h2> + <div class="card"><h3><a href="/projects/wsdiff/">wsdiff</a></h3> <div class="summary"> <div class="document"> diff --git a/projects/index.xml b/projects/index.xml index 7644ef9..ee4fa9d 100644 --- a/projects/index.xml +++ b/projects/index.xml @@ -6,7 +6,21 @@ <description>Recent content in Projects on Home</description> <generator>Hugo -- gohugo.io</generator> <language>en-us</language> - <copyright>Jan Sebastian Götte</copyright><atom:link href="http://jaseg.de/projects/index.xml" rel="self" type="application/rss+xml" /> + <copyright>Jan Sebastian Götte</copyright> + <lastBuildDate>Wed, 04 Oct 2023 23:42:00 +0200</lastBuildDate><atom:link href="http://jaseg.de/projects/index.xml" rel="self" type="application/rss+xml" /> + <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><div class="document"> + + +<p>KiMesh is a KiCad plugin that automatically creates security meshes with two or traces covering an arbitrarily-shaped outline on the board.</p> +</div></description> + </item> + <item> <title>Gerbolyze</title> <link>http://jaseg.de/projects/gerbolyze/</link> diff --git a/projects/kimesh/index.html b/projects/kimesh/index.html new file mode 100644 index 0000000..37d06b2 --- /dev/null +++ b/projects/kimesh/index.html @@ -0,0 +1,104 @@ +<!DOCTYPE html> +<html><head> + <meta charset="utf-8"> + <title>KiMesh | Home</title> + <meta name="description" content=""> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="mobile-web-app-capable" content="yes"> + <meta name="color-scheme" content="dark light"> + <link rel="stylesheet" href="/style.css"> +</head> +<body><nav> + <div class="internal"> + + <a href="/" title="Home">Home</a> + <a href="/blog/" title="Blog">Blog</a> + <a href="/projects/" title="Projects">Projects</a> + <a href="/about/" title="About">About</a> + </div> + <div class="external"> + <a href="https://git.jaseg.de/" title="cgit">cgit</a> + <a href="https://github.com/jaseg" title="Github">Github</a> + <a href="https://gitlab.com/neinseg" title="Gitlab">Gitlab</a> + <a href="https://chaos.social/jaseg" title="Mastodon">Mastodon</a> + </span> +</nav> + + <header> + <h1>KiMesh</h1> +<ul class="breadcrumbs"> + <li><a href="/">jaseg.de</a></li> + <li><a href="/projects/">Projects</a></li><li><a href="/projects/kimesh/">KiMesh</a></li> +</ul> + <strong>2023-10-04</strong> + </header> + <main> + <div class="links"> + <a href="https://git.jaseg.de/kimesh.git">Sources</a> + <a href="https://github.com/jaseg/kimesh/issues">Issues</a> + <a href="https://jaseg.de/projects/kimesh">Docs</a> + </div> + <div class="document" id="kicad-security-mesh-generator"> +<h1 class="title">KiCAD Security Mesh Generator</h1> + +<img alt="A screenshot of KiCAD showing a PCB security mesh generated by KiMesh." src="kicad-mesh-result-large.png" style="width: 800px;" /> +<p>This repository contains KiMesh, a KiCAD pcbnew plugin that generates security mesh traces on a KiCAD PCB.</p> +<div class="section" id="installation"> +<h2>Installation</h2> +<p>KiMesh has two parts: The pcbnew plugin that generates the traces, and the magic footprints that you use to tell the +plugin how many traces of which dimensions to generate where.</p> +<p>To install the plugin, copy the "kimesh" directory into your KiCAD installation's scripting plugin folder. Usually, this +is <cite>~/.config/kicad/scripting/plugins/</cite> for KiCAD stable installations or +<cite>~/.config/kicad/[major version].99/scripting/plugins/</cite> for nightly builds. On Windows, these paths can be found in your +user account's <cite>AppData/Roaming</cite> directory.</p> +<p>To install the footprint libraries, the easiest way is to download the library zip from the project's repo +<a class="reference external" href="https://git.jaseg.de/kimesh.git/plain/mesh_footprints.tar.xz?h=main">[link]</a>, unpack it to your project folder, and +add the unpacked libraries as project-specific libraries through KiCad's library management thingy.</p> +</div> +<div class="section" id="usage"> +<h2>Usage</h2> +<p>To work, KiMesh requires four things:</p> +<ol class="arabic simple"> +<li>An area free of other features such as footprints or traces where to generate the mesh.</li> +<li>One or more "graphic polygons" on a drawing layer that specify the area of the mesh.</li> +<li>A closed board outline on the <cite>Edge.Cuts</cite> layer.</li> +<li>One of the magic footprints from the KiMesh anchor library that defines the mesh's number of wires and their +dimensions, and tells KiMesh where to start the mesh and in which direction to start it.</li> +</ol> +<p>You can choose any layer for the outline polygons, such as the pre-defined <cite>User.Eco1</cite> or <cite>User.X</cite> layers, or you can +define your own. You just have to select that layer later in KiMesh's generator dialog. Note that KiMesh only processes +graphic polygons on that layer, and ignores other shapes such as lines, rectangles or circles. You can still use other +shapes, but you have to manually convert them to polygons before running KiMesh. To convert other shapes to +a polygon, select them, open the context menu with a right click, then choose the "Create from Selection 🞂 Create +Polygon from Selection" entry. For rectangles or circles, use the "Use Centerlines" option. For lines or arcs, use the +"Create bounding hull" option.</p> +<p>Place the magic anchor footprint on the outline of the mesh's shape polygons so that you have space to route out the +traces. The anchor footprint has an arrow on the <cite>F.Fab</cite> layer that indicates in which direction the mesh will be +generated.</p> +<p>I recommend adding the mesh to the schematic with one of KiCad's built-in <cite>Connector_02xN_Top_Bottom</cite> footprints. For a +mesh with k wires, choose a symbol with two rows of 2k pins each. For instance, for two mesh wires, choose +<cite>Connector_02x04_Top_bottom</cite>. Then assign one of the magic footprints to that symbol. To avoid DRC warnings, join the +two halves of the mesh on the output side of the footprint. That's the right side in default orientation, where the +higher-numbered pins are.</p> +<img alt="A screenshot of the connector footprint mentioned in the previous paragraph, shown conencted up as described in KiCad's schematic editor." src="screenshot-mesh-schematic.png" style="width: 800px;" /> +</div> +<div class="section" id="theory-of-operation"> +<h2>Theory of operation</h2> +<p>I have published a <a class="reference external" href="https://blog.jaseg.de/posts/kicad-mesh-plugin/">post</a> on my blog on the theory of operation behind KiMesh.</p> +</div> +</div> + </main><footer> + Copyright © 2023 Jan Sebastian Götte + / <a href="/about/">About</a> + / <a href="/imprint/">Imprint</a> +</footer> +<script> + if(navigator.getEnvironmentIntegrity!==undefined)document.querySelector('body').innerHTML=`<h1>Your browser + contains Google DRM</h1>"Web Environment Integrity" is a Google euphemism for a DRM that is designed to + prevent ad-blocking, and which Google has forced into their browsers against widespread public opposition. + In support of an open web, this website does not function with this DRM. Please install a browser such + as <a href="https://www.mozilla.org/en-US/firefox/new/">Firefox</a> that respects your freedom and supports + ad blockers.`; + </script> + </body> +</html> diff --git a/projects/kimesh/kicad-mesh-result-large.png b/projects/kimesh/kicad-mesh-result-large.png Binary files differnew file mode 100644 index 0000000..798287b --- /dev/null +++ b/projects/kimesh/kicad-mesh-result-large.png diff --git a/projects/kimesh/screenshot-mesh-schematic.png b/projects/kimesh/screenshot-mesh-schematic.png Binary files differnew file mode 100644 index 0000000..2869b5e --- /dev/null +++ b/projects/kimesh/screenshot-mesh-schematic.png diff --git a/sitemap.xml b/sitemap.xml index 9494608..9858785 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,10 +2,16 @@ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"> <url> - <loc>http://jaseg.de/blog/</loc> - <lastmod>2022-02-21T20:00:00+01:00</lastmod> - </url><url> <loc>http://jaseg.de/</loc> + <lastmod>2023-10-04T23:42:00+02:00</lastmod> + </url><url> + <loc>http://jaseg.de/projects/kimesh/</loc> + <lastmod>2023-10-04T23:42:00+02:00</lastmod> + </url><url> + <loc>http://jaseg.de/projects/</loc> + <lastmod>2023-10-04T23:42:00+02:00</lastmod> + </url><url> + <loc>http://jaseg.de/blog/</loc> <lastmod>2022-02-21T20:00:00+01:00</lastmod> </url><url> <loc>http://jaseg.de/blog/telekom-gpon-sfp/</loc> @@ -52,8 +58,6 @@ </url><url> <loc>http://jaseg.de/posts/</loc> </url><url> - <loc>http://jaseg.de/projects/</loc> - </url><url> <loc>http://jaseg.de/projects/python-mpv/</loc> </url><url> <loc>http://jaseg.de/projects/svg-flatten/</loc> @@ -20,10 +20,77 @@ html { --default-border: 0.5px dotted rgba(255, 255, 255, 0.3); } +/* @font-face { font-family: "Manuskript Gothisch"; src: url("/fonts/manuskript_gothisch/Manuskript%20Gothisch%20UNZ1A.ttf"); } +*/ + +@font-face { + font-family: "Nyght Serif"; + src: url("/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Light.woff2"); + font-weight: 100; +} + +@font-face { + font-family: "Nyght Serif"; + src: url("/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-LightItalic.woff2"); + font-weight: 100; + font-style: italic; +} + +@font-face { + font-family: "Nyght Serif"; + src: url("/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Regular.woff2"); + font-weight: 400; +} + +@font-face { + font-family: "Nyght Serif"; + src: url("/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-RegularItalic.woff2"); + font-weight: 400; + font-style: italic; +} + +@font-face { + font-family: "Nyght Serif"; + src: url("/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Medium.woff2"); + font-weight: 500; +} + +@font-face { + font-family: "Nyght Serif"; + src: url("/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-MediumItalic.woff2"); + font-weight: 500; + font-style: italic; +} + +@font-face { + font-family: "Nyght Serif"; + src: url("/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Bold.woff2"); + font-weight: 700; +} + +@font-face { + font-family: "Nyght Serif"; + src: url("/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-BoldItalic.woff2"); + font-weight: 700; + font-style: italic; +} + +@font-face { + font-family: "Nyght Serif"; + src: url("/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Dark.woff2"); + font-weight: 900; +} + +@font-face { + font-family: "Nyght Serif"; + src: url("/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-DarkItalic.woff2"); + font-weight: 900; + font-style: italic; +} @font-face { font-family: "Roboto Slab"; @@ -31,6 +98,7 @@ html { font-weight: 100 200 300 400 500 600 700 800 900; } +/* @font-face { font-family: "Bodoni Moda"; src: url("/fonts/bodoni_moda/static/BodoniModa_9pt/BodoniModa_9pt-MediumItalic.ttf"); @@ -41,6 +109,7 @@ html { font-family: "Bodoni Moda"; src: url("/fonts/bodoni_moda/static/BodoniModa_18pt/BodoniModa_18pt-Medium.ttf"); } +*/ @font-face { font-family: "Fira Code"; @@ -70,7 +139,7 @@ body { } strong { - font-family: "Bodoni Moda"; + font-family: "Nyght Serif"; font-style: italic; } @@ -151,18 +220,29 @@ main > .intro { h1, h2, h3, h4, h5, h6 { margin-top: 50px; margin-bottom: 8px; - font-family: "Bodoni Moda"; + font-family: "Nyght Serif"; text-align: left; + font-weight: 700; } h1 { - font-family: "Manuskript Gothisch"; + font-style: italic; +} + +h2 { + font-size: 30px; + font-weight: 400; +} + +h3 { + font-size: 20px; + font-weight: 700; } body > header { z-index: 1; margin-top: 100px; - margin-bottom: 0; + margin-bottom: 200px; text-align: center; display: flex; flex-direction: column; @@ -176,11 +256,15 @@ body > header > h1 { -webkit-background-clip: text; color: transparent; filter: drop-shadow(0 0 10px rgba(0, 0, 0, var(--shadow-opacity))); - font-size: 32px; + font-size: 120px; + /* Padding to avoid the first character getting cut off in firefox */ + padding-left: 40px; + padding-right: 40px; } +/* https://css-tricks.com/linearly-scale-font-size-with-css-clamp-based-on-the-viewport/ */ +/* body > header > h1::first-line { - /* https://css-tricks.com/linearly-scale-font-size-with-css-clamp-based-on-the-viewport/ */ --min-fs: 3; --max-fs: 10; --min-vw: 20; @@ -194,6 +278,7 @@ body > header > h1::first-line { font-size: clamp(var(--min-fs-rem), var(--min-fs-rem) + var(--slope), var(--max-fs-rem)); } +*/ main.cards { |