219 lines
9.3 KiB
HTML
219 lines
9.3 KiB
HTML
<!DOCTYPE html>
|
|
<html><head>
|
|
<meta name="generator" content="Hugo 0.160.1">
|
|
<meta charset="utf-8">
|
|
<title>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">
|
|
<meta name="fediverse:creator" content="@jaseg@chaos.social">
|
|
<link rel="stylesheet" href="/style.css">
|
|
|
|
<link rel="preload" href="/fonts/roboto_slab/RobotoSlab-VariableFont_wght.ttf" as="font" type="font/ttf" crossorigin />
|
|
<link rel="preload" href="/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Regular.woff2" as="font" type="font/woff2" crossorigin />
|
|
<link rel="preload" href="/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-Bold.woff2" as="font" type="font/woff2" crossorigin />
|
|
<link rel="preload" href="/fonts/nyght-serif-main/fonts/WEB/NyghtSerif-BoldItalic.woff2" as="font" type="font/woff2" crossorigin />
|
|
</head>
|
|
<body><nav>
|
|
<div class="internal">
|
|
|
|
<a href="/" title="Home" class="active">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="search">
|
|
<div id="search"></div>
|
|
</div>
|
|
<div class="external">
|
|
<a rel="me" href="https://git.jaseg.de/" title="cgit">cgit</a>
|
|
<a rel="me" href="https://github.com/jaseg" title="Github">Github</a>
|
|
<a rel="me" href="https://gitlab.com/neinseg" title="Gitlab">Gitlab</a>
|
|
<a rel="me" href="https://chaos.social/@jaseg" title="Mastodon">Mastodon</a>
|
|
</span>
|
|
</nav>
|
|
|
|
<header>
|
|
<h1>jaseg.de</h1>
|
|
</header>
|
|
<main class="cards">
|
|
<div class="intro">
|
|
<div class="document">
|
|
|
|
|
|
<p>Hi there, and welcome to my personal website.</p>
|
|
<p>I'm jaseg, and I write about my projects here. You can find long-form articles in the blog, and links to my open-source
|
|
projects on the projects page. On the top right of this page, there are links to my git repositories and social media
|
|
pages. If you want to learn more about me, head over to the about page.</p>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<h2>Blog</h2>
|
|
|
|
<div class="card"><h3><a href="/blog/make-cgit-serve-pdfs-directly/">How to make cgit serve PDF files as direct downloads</a></h3><strong>2025-11-17</strong>
|
|
|
|
<div class="summary">
|
|
<div class="document">
|
|
|
|
|
|
<p>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.</p>
|
|
</div>
|
|
<a href="http://jaseg.de/blog/make-cgit-serve-pdfs-directly/">Read more</a>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="card"><h3><a href="/blog/paper-sampling-mesh-monitor/">New paper: Monitoring Tamper-Sensing Meshes Using Low-Cost, Embedded Time-Domain Reflectometry</a></h3><strong>2025-10-20</strong>
|
|
|
|
<div class="summary">
|
|
<div class="document">
|
|
|
|
|
|
<p>I've got a new paper accepted at CHES, to be published in TCHES 2026/1 around beginning of December and out <a class="reference external" href="https://eprint.iacr.org/2025/1962">on eprint now</a>. 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 of resolution.</p>
|
|
</div>
|
|
<a href="http://jaseg.de/blog/paper-sampling-mesh-monitor/">Read more</a>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="card"><h3><a href="/blog/wsdiff-static-html-diffs/">wsdiff: Responsive diffs in plain HTML</a></h3><strong>2025-07-25</strong>
|
|
|
|
<div class="summary">
|
|
<div class="document">
|
|
|
|
|
|
<p>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 only CSS.</p>
|
|
</div>
|
|
<a href="http://jaseg.de/blog/wsdiff-static-html-diffs/">Read more</a>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="card"><h3><a href="/blog/css-only-code-blocks/">Code listings with nice line wrapping and line numbers from plain CSS</a></h3><strong>2025-07-23</strong>
|
|
|
|
<div class="summary">
|
|
<div class="document">
|
|
|
|
|
|
<p>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 line continuation markers in plain CSS without any JS.</p>
|
|
</div>
|
|
<a href="http://jaseg.de/blog/css-only-code-blocks/">Read more</a>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="card"><h3><a href="/blog/jupyterlab-notebook-file-oneliner/">Getting the .ipynb Notebook File Location From a Running Jupyter Lab Notebook</a></h3><strong>2025-06-29</strong>
|
|
|
|
<div class="summary">
|
|
<div class="document">
|
|
|
|
|
|
<p>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.</p>
|
|
</div>
|
|
<a href="http://jaseg.de/blog/jupyterlab-notebook-file-oneliner/">Read more</a>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="card"><h3><a href="/blog/8seg/">8seg Technical Overview</a></h3><strong>2023-12-26</strong>
|
|
|
|
<div class="summary">
|
|
<div class="document">
|
|
|
|
|
|
<p>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.</p>
|
|
</div>
|
|
<a href="http://jaseg.de/blog/8seg/">Read more</a>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<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">
|
|
<div class="document">
|
|
|
|
|
|
<p>Short tutorial on getting a Deutsche Telekom GPON internet connection running using a SFP ONU unit in an Ubiquiti EdgeRouter.</p>
|
|
</div>
|
|
<a href="http://jaseg.de/blog/telekom-gpon-sfp/">Read more</a>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<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">
|
|
<div class="document">
|
|
|
|
|
|
<p>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.</p>
|
|
</div>
|
|
<a href="http://jaseg.de/blog/ihsm-worlds-first-diy-hsm/">Read more</a>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="card"><h3><a href="/blog/kicad-mesh-plugin/">Kicad Mesh Plugin</a></h3><strong>2020-08-18</strong>
|
|
|
|
<div class="summary">
|
|
<div class="document">
|
|
|
|
|
|
<p>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.</p>
|
|
</div>
|
|
<a href="http://jaseg.de/blog/kicad-mesh-plugin/">Read more</a>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="card"><h3><a href="/blog/private-contact-discovery/">Private Contact Discovery</a></h3><strong>2019-06-22</strong>
|
|
|
|
<div class="summary">
|
|
<div class="document">
|
|
|
|
|
|
<p>I gave a short introduction into Private Contact Discovery protocols at our university workgroup.</p>
|
|
</div>
|
|
<a href="http://jaseg.de/blog/private-contact-discovery/">Read more</a>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="pagination-links">
|
|
|
|
<a href="/blog/">See more<span class="arrow-right"></span></a>
|
|
|
|
</div>
|
|
|
|
</main><footer>
|
|
Copyright © 2026 Jan Sebastian Götte
|
|
/ <a href="/about/">About</a>
|
|
/ <a href="/imprint/">Imprint</a>
|
|
</footer>
|
|
<script type="text/javascript" src="/pagefind/pagefind-ui.js" defer></script>
|
|
<script>
|
|
window.addEventListener('DOMContentLoaded', (event) => {
|
|
new PagefindUI({element: "#search", showSubResults: true});
|
|
});
|
|
</script>
|
|
<script type="speculationrules">
|
|
{
|
|
"prerender": [
|
|
{
|
|
"source": "document",
|
|
"where": {
|
|
"and": [
|
|
{"href_matches": "/*"}
|
|
]
|
|
},
|
|
"eagerness": "moderate"
|
|
}
|
|
]
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|