<!DOCTYPE html> <html lang="en"> <head profile="https://gmpg.org/xfn/11"> <meta charset="UTF-8"> <meta name="referrer" content="no-referrer"> <link rel="icon" href="/avatar.svg" type="image/svg+xml;charset=UTF-8"> <link rel="stylesheet" href="/style/index.css" type="text/css;charset=UTF-8"> <link rel="me" href="https://social.nwex.de/@networkexception"> <link rel="me" href="https://serenityos.social/@networkexception"> <link rel="me" href="https://blahaj.social/@networkexception"> <link rel="me" href="https://glauca.space/@networkexception"> <link rel="me" href="https://social.allround.digital/@networkexception"> <title>nwex.de</title> </head> <body> <h1>networkException</h1> <h2>try to catch(this: Exception);</h2> <main> I'm a developer, maintainer and system administrator working on a variety of open source projects. </main> <section> <h3>Subpages</h3> <ul> <li>You can find my talks <a href="/talks">here</a>.</li> <li>A few bits of WebFinger appreciation can be found <a href="/ramblings/webfinger.html">here</a></li> </ul> </section> <section> <h3>Projects I maintain in my free time</h3> <ul> <li><a href="https://github.com/t2linux/wiki">The t2linux.org wiki - A project to run Linux on Apple T2 devices</a></li> <li><a href="https://github.com/ungoogled-software/ungoogled-chromium">Chromium sans integration with Google</a></li> <li><a href="https://github.com/ungoogled-software/ungoogled-chromium-archlinux">Arch Linux packaging for ungoogled-chromium</a></li> <li><a href="https://github.com/networkException/thundersort">Sort incoming mails based on recipient slug</a></li> <li><a href="https://gitlab.upi.li/networkException/restic-integrity">Check the integrity of a restic repository without unlocking it</a></li> </ul> <h3>Projects I contribute to in my free time</h3> <ul> <li><a href="https://github.com/SerenityOS/serenity">The Serenity Operating System 🐞</a></li> </ul> Everything listed here I do <a href="https://justforfunnoreally.dev/">for fun</a>. </section> <section> <h3>Links</h3> <ul> <li><a rel="me" href="https://chaos.social/@networkexception">joinmastodon.org</a></li> <li><a href="https://github.com/networkException">github.com</a></li> <li><a href="https://gitlab.upi.li/networkException">gitlab.org</a></li> <li><a href="https://keybase.io/networkexception">keybase.io</a></li> <li><a href="https://matrix.to/#/@networkexception:chat.upi.li">matrix.org</a></li> <li><a lang="en" rel="me" href="https://en.pronouns.page/@networkException">en.pronouns.page</a></li> <li><a lang="de" rel="me" href="https://de.pronouns.page/@networkException">de.pronouns.page</a></li> <li><a href="mailto:hello@nwex.de">email</a></li> <li><a href="/gpg.key">My GPG key</a></li> <li><a href="https://timezone.nwex.de">My current timezone and local time</a></li> </ul> </section> <section> <h3>This website</h3> <p> Although I also know my way around frontend development and design as well, I'm far less skilled at it. As such, this website is trying to impress in a different way: </p> <p> It implements parts of the <a href="https://html.spec.whatwg.org/multipage/parsing.html#tokenization">HTML parser spec</a> to tokenize and highlight <a href="https://en.wikipedia.org/wiki/Quine_%28computing%29">its own source code</a>. </p> <p> You can find the full source code of the site <a href="https://gitlab.upi.li/networkException/nwex.de">here</a>. It's licensed under the <a href="https://spdx.org/licenses/BSD-2-Clause">BSD 2-Clause "Simplified" License</a>, so feel free to use the code as a reference to implement your own parser! If you have something interesting to share or just want to tell how the code might have helped you, make sure to send me a message :^) </p> </section> <section> <h3>Webrings</h3> <fieldset> <legend><a href="https://fediring.net/">Fediring</a></legend> <a href="https://fediring.net/previous?host=nwex.de">Previous</a> <a href="https://fediring.net/next?host=nwex.de">Next</a> <a href="https://fediring.net/random">Random</a> </fieldset> </section> <!-- Inner workings of the page --> <script type="module"> import { tokenize, normalizeNewlines, highlight } from '/script/html.js'; import { render } from '/script/view.js'; import { Inspector } from '/script/html/inspector.js'; const response = await fetch(window.location.href); const text = (await response.text()) // NOTE: This removes <link rel="me" href="some-resource"> tags from the document so the head // doesn't get as cluttered. // FIXME: Change this to use a more sophisticated api once tree construction is implemented. .split('\n') .filter(line => line.match(/^(?:\s*)<link rel="me" href="(.*)">/) === null) .join('\n'); window.tokens = tokenize(normalizeNewlines(text)); window.spans = highlight(tokens); const inspector = new Inspector(); render(text, spans, inspector); </script> </body> </html>