2022-10-03 02:23:47 +02:00
|
|
|
<!DOCTYPE html>
|
|
|
|
<html lang="en">
|
2022-12-03 19:36:04 +01:00
|
|
|
<head profile="https://gmpg.org/xfn/11">
|
2022-10-03 02:23:47 +02:00
|
|
|
<meta charset="UTF-8">
|
|
|
|
<meta name="referrer" content="no-referrer">
|
2022-12-03 01:11:13 +01:00
|
|
|
<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">
|
2022-12-18 15:34:52 +01:00
|
|
|
<link rel="me" href="https://social.nwex.de/@networkexception">
|
|
|
|
<link rel="me" href="https://serenityos.social/@networkexception">
|
2022-12-18 21:10:40 +01:00
|
|
|
<link rel="me" href="https://blahaj.social/@networkexception">
|
2022-12-18 21:19:19 +01:00
|
|
|
<link rel="me" href="https://glauca.space/@networkexception">
|
2023-04-30 21:08:08 +02:00
|
|
|
<link rel="me" href="https://social.allround.digital/@networkexception">
|
2023-11-21 01:49:36 +01:00
|
|
|
<link rel="me" href="https://bonk.expert/@networkexception">
|
2022-12-03 01:05:39 +01:00
|
|
|
<title>nwex.de/xhr</title>
|
2022-10-03 02:23:47 +02:00
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<h1>networkException</h1>
|
|
|
|
<h2>try to catch(this: Exception);</h2>
|
|
|
|
|
|
|
|
<main>
|
2022-10-30 21:37:32 +01:00
|
|
|
I'm a developer, maintainer and system administrator working on a variety of open source projects.
|
2022-10-03 02:23:47 +02:00
|
|
|
</main>
|
2022-12-03 01:06:32 +01:00
|
|
|
<section>
|
|
|
|
<h3>Subpages</h3>
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
<li>You can find my talks <a href="/talks">here</a>.</li>
|
2022-12-03 01:11:57 +01:00
|
|
|
<li>A few bits of WebFinger appreciation can be found <a href="/ramblings/webfinger.html">here</a></li>
|
2022-12-03 01:06:32 +01:00
|
|
|
</ul>
|
|
|
|
</section>
|
2022-10-03 02:23:47 +02:00
|
|
|
<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>
|
2023-01-16 09:24:37 +01:00
|
|
|
<li><a href="https://github.com/networkException/thundersort">Sort incoming mails based on recipient slug</a></li>
|
2024-12-25 14:50:02 +01:00
|
|
|
<li><a href="https://git.nwex.de/networkException/restic-integrity">Check the integrity of a restic repository without unlocking it</a></li>
|
2022-10-03 02:23:47 +02:00
|
|
|
</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>
|
|
|
|
|
2022-10-25 02:36:39 +02:00
|
|
|
Everything listed here I do <a href="https://justforfunnoreally.dev/">for fun</a>.
|
2022-10-03 02:23:47 +02:00
|
|
|
</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>
|
2024-12-25 14:50:02 +01:00
|
|
|
<li><a href="https://git.nwex.de/networkException">forgejo.org</a></li>
|
2024-12-25 14:29:49 +01:00
|
|
|
<li><a href="https://matrix.to/#/@networkexception:nwex.de">matrix.org</a></li>
|
2022-10-31 02:29:36 +01:00
|
|
|
<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>
|
2023-08-15 13:54:02 +02:00
|
|
|
<li><a href="https://guru3.eventphone.de/event.cgi/phonebook?q=networkException">DECT (usually NWEX/6939)</a></li>
|
2022-10-03 02:23:47 +02:00
|
|
|
<li><a href="mailto:hello@nwex.de">email</a></li>
|
|
|
|
|
|
|
|
<li><a href="/gpg.key">My GPG key</a></li>
|
2022-11-06 02:39:57 +01:00
|
|
|
|
2023-04-11 21:48:25 +02:00
|
|
|
<li><a href="https://timezone.nwex.de">My current timezone and local time</a></li>
|
2022-10-03 02:23:47 +02:00
|
|
|
</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.
|
2022-10-30 21:52:45 +01:00
|
|
|
As such, this website is trying to impress in a different way:
|
2022-10-03 02:23:47 +02:00
|
|
|
</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>
|
2024-12-25 14:50:02 +01:00
|
|
|
You can find the full source code of the site <a href="https://git.nwex.de/networkException/nwex.de">here</a>.
|
2022-10-03 02:23:47 +02:00
|
|
|
|
2022-10-25 02:36:39 +02:00
|
|
|
It's licensed under the <a href="https://spdx.org/licenses/BSD-2-Clause">BSD 2-Clause "Simplified" License</a>,
|
2022-10-03 02:23:47 +02:00
|
|
|
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>
|
2022-10-25 02:36:39 +02:00
|
|
|
<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>
|
2024-01-15 01:42:48 +01:00
|
|
|
|
|
|
|
<fieldset>
|
|
|
|
<legend><a href="https://webring.noms.ing/">Nomsring</a></legend>
|
|
|
|
|
|
|
|
<a href="https://webring.noms.ing/previous?from=nwex.de">Previous</a>
|
|
|
|
<a href="https://webring.noms.ing/next?from=nwex.de">Next</a>
|
|
|
|
</fieldset>
|
2022-10-25 02:36:39 +02:00
|
|
|
</section>
|
2022-10-03 02:23:47 +02:00
|
|
|
|
|
|
|
<!-- Inner workings of the page -->
|
|
|
|
|
|
|
|
<script type="module">
|
2022-12-03 01:11:13 +01:00
|
|
|
import { tokenize, normalizeNewlines, highlight } from '/script/html.js';
|
|
|
|
import { render } from '/script/view.js';
|
|
|
|
import { Inspector } from '/script/html/inspector.js';
|
2022-10-03 02:23:47 +02:00
|
|
|
|
|
|
|
const request = new XMLHttpRequest();
|
|
|
|
request.addEventListener("load", async function() {
|
2022-12-18 21:09:13 +01:00
|
|
|
const text = this.responseText
|
2022-12-19 13:08:40 +01:00
|
|
|
// NOTE: This removes <link rel="me" href="some-resource"> tags from the document so the head
|
2022-12-18 21:09:13 +01:00
|
|
|
// 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');
|
2022-10-03 02:23:47 +02:00
|
|
|
|
|
|
|
window.tokens = tokenize(normalizeNewlines(text));
|
|
|
|
window.spans = highlight(tokens);
|
|
|
|
|
|
|
|
const inspector = new Inspector();
|
|
|
|
|
|
|
|
render(text, spans, inspector);
|
|
|
|
});
|
|
|
|
request.open("GET", window.location.href);
|
|
|
|
request.send();
|
|
|
|
</script>
|
|
|
|
</body>
|
|
|
|
</html>
|