cloudflare
tcp/443 tcp/80 tcp/8443
Open service 2606:4700:3033::ac43:ba4e:80 · bench.soulninja.dev
2026-01-23 21:58
HTTP/1.1 301 Moved Permanently
Date: Fri, 23 Jan 2026 21:58:59 GMT
Content-Length: 0
Connection: close
Location: https://bench.soulninja.dev/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=gwv0tl%2BLdOh0jpnak8O3rqRupSi6ov1jnXtftuXG4pozPcStiXoYmArFH2%2FIPW1LsKAnXqNBz66cZEIvaOisMn5Ujq%2Fy02t%2BSPJtMBE0Q7ZMqyiWHLwuJPQTMclBF9w%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c2a8e393e3445e2-SIN
alt-svc: h3=":443"; ma=86400
Open service 104.21.59.251:443 · bench.soulninja.dev
2026-01-23 21:58
HTTP/1.1 200 OK
Date: Fri, 23 Jan 2026 21:58:59 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
Link: <https://fonts.googleapis.com>; rel="preconnect", <https://fonts.gstatic.com>; rel="preconnect"
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=vCNPL1Mj8KoUo88JRifFH0ixr%2BjfD30C9mP4igW8%2BcYLtXPwh54teCPdpfS5bY%2Fupr6VzdD9gaNJxSLvQUgm71IforlD8Vbc%2BfFEUIojbeJmSUU%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c2a8e3dbf28f8f2-SIN
alt-svc: h3=":443"; ma=86400
Page title: indexSearchDark modeLight modeReader mode
<!DOCTYPE html>
<html lang="en" dir="ltr"><head><title>index</title><meta charset="utf-8"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Schibsted Grotesk:wght@400;700&family=Source Sans Pro:ital,wght@0,400;0,600;1,400;1,600&family=IBM Plex Mono:wght@400;600&display=swap"/><link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin="anonymous"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="og:site_name" content="soul's workbench"/><meta property="og:title" content="index"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="index"/><meta name="twitter:description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="og:description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="og:image:alt" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="twitter:domain" content="bench.soulninja.dev"/><meta property="og:url" content="https://bench.soulninja.dev/index"/><meta property="twitter:url" content="https://bench.soulninja.dev/index"/><link rel="icon" href="./static/icon.png"/><meta name="description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta name="generator" content="Quartz"/><link href="./index.css" rel="stylesheet" type="text/css" spa-preserve/><style>.expand-button {
position: absolute;
display: flex;
float: right;
padding: 0.4rem;
margin: 0.3rem;
right: 0;
color: var(--gray);
border-color: var(--dark);
background-color: var(--light);
border: 1px solid;
border-radius: 5px;
opacity: 0;
transition: 0.2s;
}
.expand-button > svg {
fill: var(--light);
filter: contrast(0.3);
}
.expand-button:hover {
cursor: pointer;
border-color: var(--secondary);
}
.expand-button:focus {
outline: 0;
}
pre:hover > .expand-button {
opacity: 1;
transition: 0.2s;
}
#mermaid-container {
position: fixed;
contain: layout;
z-index: 999;
left: 0;
top: 0;
width: 100vw;
height: 100vh;
overflow: hidden;
display: none;
backdrop-filter: blur(4px);
background: rgba(0, 0, 0, 0.5);
}
#mermaid-container.active {
display: inline-block;
}
#mermaid-container > #mermaid-space {
border: 1px solid var(--lightgray);
background-color: var(--light);
border-radius: 5px;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
height: 80vh;
width: 80vw;
overflow: hidden;
}
#mermaid-container > #mermaid-space > .mermaid-content {
padding: 2rem;
position: relative;
transform-origin: 0 0;
transition: transform 0.1s ease;
overflow: visible;
min-height: 200px;
min-width: 200px;
}
#mermaid-container > #mermaid-space > .mermaid-content pre {
margin: 0;
border: none;
}
#mermaid-container > #mermaid-space > .mermaid-content svg {
max-width: none;
height: auto;
}
#mermaid-container > #mermaid-space > .mermaid-controls {
position: absolute;
bottom: 20px;
right: 20px;
display: flex;
gap: 8px;
padding: 8px;
background: var(--light);
border: 1px solid var(--lightgray);
border-radius: 6px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
z-index: 2;
}
#mermaid-container > #mermaid-space > .mermaid-controls .mermaid-control-button {
display: flex;
align-items: center;
justify-
Open service 172.67.186.78:80 · bench.soulninja.dev
2026-01-23 21:58
HTTP/1.1 301 Moved Permanently
Date: Fri, 23 Jan 2026 21:58:58 GMT
Content-Length: 0
Connection: close
Location: https://bench.soulninja.dev/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=nmy0UtUAMNIZQEVJno2yJJP0G3yn31QuD7f%2BrypPSLZcMLD5bShu6jPGQYCRw5fxjlULDnium2bul3ftYyBl9Rb%2FoQANHCYRU8IFQ3mk0mNmk9g%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c2a8e386d08f54f-YYZ
alt-svc: h3=":443"; ma=86400
Open service 2606:4700:3035::6815:3bfb:443 · bench.soulninja.dev
2026-01-23 21:58
HTTP/1.1 200 OK
Date: Fri, 23 Jan 2026 21:58:58 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
Link: <https://fonts.googleapis.com>; rel="preconnect", <https://fonts.gstatic.com>; rel="preconnect"
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=jcbImsgGgNQ1hYgb3ooRfi7pLDyP4riD2TCK3U4jUXNe4oNPgmXs8Aff7bregYuAMRBh6c4N6s4UTakm6jP%2BSI9D9rcqYW7%2Fvv3hrx6qQh5hmvzKkvZC%2FRH371gxgIc%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c2a8e38edae57e0-FRA
alt-svc: h3=":443"; ma=86400
Page title: indexSearchDark modeLight modeReader mode
<!DOCTYPE html>
<html lang="en" dir="ltr"><head><title>index</title><meta charset="utf-8"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Schibsted Grotesk:wght@400;700&family=Source Sans Pro:ital,wght@0,400;0,600;1,400;1,600&family=IBM Plex Mono:wght@400;600&display=swap"/><link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin="anonymous"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="og:site_name" content="soul's workbench"/><meta property="og:title" content="index"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="index"/><meta name="twitter:description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="og:description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="og:image:alt" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="twitter:domain" content="bench.soulninja.dev"/><meta property="og:url" content="https://bench.soulninja.dev/index"/><meta property="twitter:url" content="https://bench.soulninja.dev/index"/><link rel="icon" href="./static/icon.png"/><meta name="description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta name="generator" content="Quartz"/><link href="./index.css" rel="stylesheet" type="text/css" spa-preserve/><style>.expand-button {
position: absolute;
display: flex;
float: right;
padding: 0.4rem;
margin: 0.3rem;
right: 0;
color: var(--gray);
border-color: var(--dark);
background-color: var(--light);
border: 1px solid;
border-radius: 5px;
opacity: 0;
transition: 0.2s;
}
.expand-button > svg {
fill: var(--light);
filter: contrast(0.3);
}
.expand-button:hover {
cursor: pointer;
border-color: var(--secondary);
}
.expand-button:focus {
outline: 0;
}
pre:hover > .expand-button {
opacity: 1;
transition: 0.2s;
}
#mermaid-container {
position: fixed;
contain: layout;
z-index: 999;
left: 0;
top: 0;
width: 100vw;
height: 100vh;
overflow: hidden;
display: none;
backdrop-filter: blur(4px);
background: rgba(0, 0, 0, 0.5);
}
#mermaid-container.active {
display: inline-block;
}
#mermaid-container > #mermaid-space {
border: 1px solid var(--lightgray);
background-color: var(--light);
border-radius: 5px;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
height: 80vh;
width: 80vw;
overflow: hidden;
}
#mermaid-container > #mermaid-space > .mermaid-content {
padding: 2rem;
position: relative;
transform-origin: 0 0;
transition: transform 0.1s ease;
overflow: visible;
min-height: 200px;
min-width: 200px;
}
#mermaid-container > #mermaid-space > .mermaid-content pre {
margin: 0;
border: none;
}
#mermaid-container > #mermaid-space > .mermaid-content svg {
max-width: none;
height: auto;
}
#mermaid-container > #mermaid-space > .mermaid-controls {
position: absolute;
bottom: 20px;
right: 20px;
display: flex;
gap: 8px;
padding: 8px;
background: var(--light);
border: 1px solid var(--lightgray);
border-radius: 6px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
z-index: 2;
}
#mermaid-container > #mermaid-space > .mermaid-controls .mermaid-control-button {
display: flex;
align-items: center;
justify-
Open service 104.21.59.251:8443 · bench.soulninja.dev
2026-01-23 21:58
HTTP/1.1 200 OK
Date: Fri, 23 Jan 2026 21:58:58 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
Link: <https://fonts.googleapis.com>; rel="preconnect", <https://fonts.gstatic.com>; rel="preconnect"
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=ivDp2stdxLJnQLdEJYD6NYd4EdVY57UmjGo7%2FWntPAT77yDbA45LPyfiJJlFP36wojNkMatASjSxM6mSNuf%2Bsu9pJ8mr9KvCe3z%2BRuBsx%2FWIS4k%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c2a8e38c963d265-FRA
alt-svc: h3=":8443"; ma=86400
Page title: indexSearchDark modeLight modeReader mode
<!DOCTYPE html>
<html lang="en" dir="ltr"><head><title>index</title><meta charset="utf-8"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Schibsted Grotesk:wght@400;700&family=Source Sans Pro:ital,wght@0,400;0,600;1,400;1,600&family=IBM Plex Mono:wght@400;600&display=swap"/><link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin="anonymous"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="og:site_name" content="soul's workbench"/><meta property="og:title" content="index"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="index"/><meta name="twitter:description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="og:description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="og:image:alt" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="twitter:domain" content="bench.soulninja.dev"/><meta property="og:url" content="https://bench.soulninja.dev/index"/><meta property="twitter:url" content="https://bench.soulninja.dev/index"/><link rel="icon" href="./static/icon.png"/><meta name="description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta name="generator" content="Quartz"/><link href="./index.css" rel="stylesheet" type="text/css" spa-preserve/><style>.expand-button {
position: absolute;
display: flex;
float: right;
padding: 0.4rem;
margin: 0.3rem;
right: 0;
color: var(--gray);
border-color: var(--dark);
background-color: var(--light);
border: 1px solid;
border-radius: 5px;
opacity: 0;
transition: 0.2s;
}
.expand-button > svg {
fill: var(--light);
filter: contrast(0.3);
}
.expand-button:hover {
cursor: pointer;
border-color: var(--secondary);
}
.expand-button:focus {
outline: 0;
}
pre:hover > .expand-button {
opacity: 1;
transition: 0.2s;
}
#mermaid-container {
position: fixed;
contain: layout;
z-index: 999;
left: 0;
top: 0;
width: 100vw;
height: 100vh;
overflow: hidden;
display: none;
backdrop-filter: blur(4px);
background: rgba(0, 0, 0, 0.5);
}
#mermaid-container.active {
display: inline-block;
}
#mermaid-container > #mermaid-space {
border: 1px solid var(--lightgray);
background-color: var(--light);
border-radius: 5px;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
height: 80vh;
width: 80vw;
overflow: hidden;
}
#mermaid-container > #mermaid-space > .mermaid-content {
padding: 2rem;
position: relative;
transform-origin: 0 0;
transition: transform 0.1s ease;
overflow: visible;
min-height: 200px;
min-width: 200px;
}
#mermaid-container > #mermaid-space > .mermaid-content pre {
margin: 0;
border: none;
}
#mermaid-container > #mermaid-space > .mermaid-content svg {
max-width: none;
height: auto;
}
#mermaid-container > #mermaid-space > .mermaid-controls {
position: absolute;
bottom: 20px;
right: 20px;
display: flex;
gap: 8px;
padding: 8px;
background: var(--light);
border: 1px solid var(--lightgray);
border-radius: 6px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
z-index: 2;
}
#mermaid-container > #mermaid-space > .mermaid-controls .mermaid-control-button {
display: flex;
align-items: center;
justify-
Open service 2606:4700:3035::6815:3bfb:8443 · bench.soulninja.dev
2026-01-23 21:58
HTTP/1.1 200 OK
Date: Fri, 23 Jan 2026 21:58:58 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
Link: <https://fonts.googleapis.com>; rel="preconnect", <https://fonts.gstatic.com>; rel="preconnect"
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=Xrzp0RsVtDHsc%2FxXR%2Ft2cIgfIXMMsh6NGq2%2Fg4HQsHal7R6mGAYHZ6uBh3a5rMUHKUmpiyY0J9L2%2BnguttMtvLHVQmVuLWW17aY6%2BoNgBQwevacPCIRp0raYhS0TwqI%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c2a8e386d73c730-YYZ
alt-svc: h3=":8443"; ma=86400
Page title: indexSearchDark modeLight modeReader mode
<!DOCTYPE html>
<html lang="en" dir="ltr"><head><title>index</title><meta charset="utf-8"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Schibsted Grotesk:wght@400;700&family=Source Sans Pro:ital,wght@0,400;0,600;1,400;1,600&family=IBM Plex Mono:wght@400;600&display=swap"/><link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin="anonymous"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="og:site_name" content="soul's workbench"/><meta property="og:title" content="index"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="index"/><meta name="twitter:description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="og:description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="og:image:alt" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="twitter:domain" content="bench.soulninja.dev"/><meta property="og:url" content="https://bench.soulninja.dev/index"/><meta property="twitter:url" content="https://bench.soulninja.dev/index"/><link rel="icon" href="./static/icon.png"/><meta name="description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta name="generator" content="Quartz"/><link href="./index.css" rel="stylesheet" type="text/css" spa-preserve/><style>.expand-button {
position: absolute;
display: flex;
float: right;
padding: 0.4rem;
margin: 0.3rem;
right: 0;
color: var(--gray);
border-color: var(--dark);
background-color: var(--light);
border: 1px solid;
border-radius: 5px;
opacity: 0;
transition: 0.2s;
}
.expand-button > svg {
fill: var(--light);
filter: contrast(0.3);
}
.expand-button:hover {
cursor: pointer;
border-color: var(--secondary);
}
.expand-button:focus {
outline: 0;
}
pre:hover > .expand-button {
opacity: 1;
transition: 0.2s;
}
#mermaid-container {
position: fixed;
contain: layout;
z-index: 999;
left: 0;
top: 0;
width: 100vw;
height: 100vh;
overflow: hidden;
display: none;
backdrop-filter: blur(4px);
background: rgba(0, 0, 0, 0.5);
}
#mermaid-container.active {
display: inline-block;
}
#mermaid-container > #mermaid-space {
border: 1px solid var(--lightgray);
background-color: var(--light);
border-radius: 5px;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
height: 80vh;
width: 80vw;
overflow: hidden;
}
#mermaid-container > #mermaid-space > .mermaid-content {
padding: 2rem;
position: relative;
transform-origin: 0 0;
transition: transform 0.1s ease;
overflow: visible;
min-height: 200px;
min-width: 200px;
}
#mermaid-container > #mermaid-space > .mermaid-content pre {
margin: 0;
border: none;
}
#mermaid-container > #mermaid-space > .mermaid-content svg {
max-width: none;
height: auto;
}
#mermaid-container > #mermaid-space > .mermaid-controls {
position: absolute;
bottom: 20px;
right: 20px;
display: flex;
gap: 8px;
padding: 8px;
background: var(--light);
border: 1px solid var(--lightgray);
border-radius: 6px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
z-index: 2;
}
#mermaid-container > #mermaid-space > .mermaid-controls .mermaid-control-button {
display: flex;
align-items: center;
justify-
Open service 2606:4700:3033::ac43:ba4e:8443 · bench.soulninja.dev
2026-01-23 21:58
HTTP/1.1 200 OK
Date: Fri, 23 Jan 2026 21:58:58 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
Link: <https://fonts.googleapis.com>; rel="preconnect", <https://fonts.gstatic.com>; rel="preconnect"
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=iNkRt%2BU3IMzUZVPd06Gw4OcGlkONV9H%2F8fJESzjs2%2F2vIZZYGKOlaj0so4YpfR8JgTML7aw8M5r%2FSXRQ6UMN%2BYbKyiKsovGmJ8rXQcf4cH6KXIXkLajJ7cEn5JHKnos%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c2a8e38ca393801-FRA
alt-svc: h3=":8443"; ma=86400
Page title: indexSearchDark modeLight modeReader mode
<!DOCTYPE html>
<html lang="en" dir="ltr"><head><title>index</title><meta charset="utf-8"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Schibsted Grotesk:wght@400;700&family=Source Sans Pro:ital,wght@0,400;0,600;1,400;1,600&family=IBM Plex Mono:wght@400;600&display=swap"/><link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin="anonymous"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="og:site_name" content="soul's workbench"/><meta property="og:title" content="index"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="index"/><meta name="twitter:description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="og:description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="og:image:alt" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="twitter:domain" content="bench.soulninja.dev"/><meta property="og:url" content="https://bench.soulninja.dev/index"/><meta property="twitter:url" content="https://bench.soulninja.dev/index"/><link rel="icon" href="./static/icon.png"/><meta name="description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta name="generator" content="Quartz"/><link href="./index.css" rel="stylesheet" type="text/css" spa-preserve/><style>.expand-button {
position: absolute;
display: flex;
float: right;
padding: 0.4rem;
margin: 0.3rem;
right: 0;
color: var(--gray);
border-color: var(--dark);
background-color: var(--light);
border: 1px solid;
border-radius: 5px;
opacity: 0;
transition: 0.2s;
}
.expand-button > svg {
fill: var(--light);
filter: contrast(0.3);
}
.expand-button:hover {
cursor: pointer;
border-color: var(--secondary);
}
.expand-button:focus {
outline: 0;
}
pre:hover > .expand-button {
opacity: 1;
transition: 0.2s;
}
#mermaid-container {
position: fixed;
contain: layout;
z-index: 999;
left: 0;
top: 0;
width: 100vw;
height: 100vh;
overflow: hidden;
display: none;
backdrop-filter: blur(4px);
background: rgba(0, 0, 0, 0.5);
}
#mermaid-container.active {
display: inline-block;
}
#mermaid-container > #mermaid-space {
border: 1px solid var(--lightgray);
background-color: var(--light);
border-radius: 5px;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
height: 80vh;
width: 80vw;
overflow: hidden;
}
#mermaid-container > #mermaid-space > .mermaid-content {
padding: 2rem;
position: relative;
transform-origin: 0 0;
transition: transform 0.1s ease;
overflow: visible;
min-height: 200px;
min-width: 200px;
}
#mermaid-container > #mermaid-space > .mermaid-content pre {
margin: 0;
border: none;
}
#mermaid-container > #mermaid-space > .mermaid-content svg {
max-width: none;
height: auto;
}
#mermaid-container > #mermaid-space > .mermaid-controls {
position: absolute;
bottom: 20px;
right: 20px;
display: flex;
gap: 8px;
padding: 8px;
background: var(--light);
border: 1px solid var(--lightgray);
border-radius: 6px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
z-index: 2;
}
#mermaid-container > #mermaid-space > .mermaid-controls .mermaid-control-button {
display: flex;
align-items: center;
justify-
Open service 2606:4700:3033::ac43:ba4e:443 · bench.soulninja.dev
2026-01-23 21:58
HTTP/1.1 200 OK
Date: Fri, 23 Jan 2026 21:58:58 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
Link: <https://fonts.googleapis.com>; rel="preconnect", <https://fonts.gstatic.com>; rel="preconnect"
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=CAX8zT2xKDJlrot1Xf7GPsJ1Av%2Bi3acJXb%2BWyLdW7oVi8ufnZQ%2BnJwkOHD9W8SPvfx39tYV1OaIZ0ERTObh6vsY9Cs0tDuMk2czDK5ouDj%2BGeghtEx8t8rAy02eb"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c2a8e385b3fa0c2-YYZ
alt-svc: h3=":443"; ma=86400
Page title: indexSearchDark modeLight modeReader mode
<!DOCTYPE html>
<html lang="en" dir="ltr"><head><title>index</title><meta charset="utf-8"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Schibsted Grotesk:wght@400;700&family=Source Sans Pro:ital,wght@0,400;0,600;1,400;1,600&family=IBM Plex Mono:wght@400;600&display=swap"/><link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin="anonymous"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="og:site_name" content="soul's workbench"/><meta property="og:title" content="index"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="index"/><meta name="twitter:description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="og:description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="og:image:alt" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="twitter:domain" content="bench.soulninja.dev"/><meta property="og:url" content="https://bench.soulninja.dev/index"/><meta property="twitter:url" content="https://bench.soulninja.dev/index"/><link rel="icon" href="./static/icon.png"/><meta name="description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta name="generator" content="Quartz"/><link href="./index.css" rel="stylesheet" type="text/css" spa-preserve/><style>.expand-button {
position: absolute;
display: flex;
float: right;
padding: 0.4rem;
margin: 0.3rem;
right: 0;
color: var(--gray);
border-color: var(--dark);
background-color: var(--light);
border: 1px solid;
border-radius: 5px;
opacity: 0;
transition: 0.2s;
}
.expand-button > svg {
fill: var(--light);
filter: contrast(0.3);
}
.expand-button:hover {
cursor: pointer;
border-color: var(--secondary);
}
.expand-button:focus {
outline: 0;
}
pre:hover > .expand-button {
opacity: 1;
transition: 0.2s;
}
#mermaid-container {
position: fixed;
contain: layout;
z-index: 999;
left: 0;
top: 0;
width: 100vw;
height: 100vh;
overflow: hidden;
display: none;
backdrop-filter: blur(4px);
background: rgba(0, 0, 0, 0.5);
}
#mermaid-container.active {
display: inline-block;
}
#mermaid-container > #mermaid-space {
border: 1px solid var(--lightgray);
background-color: var(--light);
border-radius: 5px;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
height: 80vh;
width: 80vw;
overflow: hidden;
}
#mermaid-container > #mermaid-space > .mermaid-content {
padding: 2rem;
position: relative;
transform-origin: 0 0;
transition: transform 0.1s ease;
overflow: visible;
min-height: 200px;
min-width: 200px;
}
#mermaid-container > #mermaid-space > .mermaid-content pre {
margin: 0;
border: none;
}
#mermaid-container > #mermaid-space > .mermaid-content svg {
max-width: none;
height: auto;
}
#mermaid-container > #mermaid-space > .mermaid-controls {
position: absolute;
bottom: 20px;
right: 20px;
display: flex;
gap: 8px;
padding: 8px;
background: var(--light);
border: 1px solid var(--lightgray);
border-radius: 6px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
z-index: 2;
}
#mermaid-container > #mermaid-space > .mermaid-controls .mermaid-control-button {
display: flex;
align-items: center;
justify-
Open service 172.67.186.78:443 · bench.soulninja.dev
2026-01-23 21:58
HTTP/1.1 200 OK
Date: Fri, 23 Jan 2026 21:58:59 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
Link: <https://fonts.googleapis.com>; rel="preconnect", <https://fonts.gstatic.com>; rel="preconnect"
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=CAu7pc9zddW0G7ISuBSp01tBKiIgjDwnxPMW7Sr%2BfjraOx0%2BGkelNW%2B7RZvqEyNmbDpvxnRX8ZRfeWim0%2BaiCKblI%2BxBnDoKgrB45E0NelfDC74%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c2a8e3dbea7fd28-SIN
alt-svc: h3=":443"; ma=86400
Page title: indexSearchDark modeLight modeReader mode
<!DOCTYPE html>
<html lang="en" dir="ltr"><head><title>index</title><meta charset="utf-8"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Schibsted Grotesk:wght@400;700&family=Source Sans Pro:ital,wght@0,400;0,600;1,400;1,600&family=IBM Plex Mono:wght@400;600&display=swap"/><link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin="anonymous"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="og:site_name" content="soul's workbench"/><meta property="og:title" content="index"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="index"/><meta name="twitter:description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="og:description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="og:image:alt" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="twitter:domain" content="bench.soulninja.dev"/><meta property="og:url" content="https://bench.soulninja.dev/index"/><meta property="twitter:url" content="https://bench.soulninja.dev/index"/><link rel="icon" href="./static/icon.png"/><meta name="description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta name="generator" content="Quartz"/><link href="./index.css" rel="stylesheet" type="text/css" spa-preserve/><style>.expand-button {
position: absolute;
display: flex;
float: right;
padding: 0.4rem;
margin: 0.3rem;
right: 0;
color: var(--gray);
border-color: var(--dark);
background-color: var(--light);
border: 1px solid;
border-radius: 5px;
opacity: 0;
transition: 0.2s;
}
.expand-button > svg {
fill: var(--light);
filter: contrast(0.3);
}
.expand-button:hover {
cursor: pointer;
border-color: var(--secondary);
}
.expand-button:focus {
outline: 0;
}
pre:hover > .expand-button {
opacity: 1;
transition: 0.2s;
}
#mermaid-container {
position: fixed;
contain: layout;
z-index: 999;
left: 0;
top: 0;
width: 100vw;
height: 100vh;
overflow: hidden;
display: none;
backdrop-filter: blur(4px);
background: rgba(0, 0, 0, 0.5);
}
#mermaid-container.active {
display: inline-block;
}
#mermaid-container > #mermaid-space {
border: 1px solid var(--lightgray);
background-color: var(--light);
border-radius: 5px;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
height: 80vh;
width: 80vw;
overflow: hidden;
}
#mermaid-container > #mermaid-space > .mermaid-content {
padding: 2rem;
position: relative;
transform-origin: 0 0;
transition: transform 0.1s ease;
overflow: visible;
min-height: 200px;
min-width: 200px;
}
#mermaid-container > #mermaid-space > .mermaid-content pre {
margin: 0;
border: none;
}
#mermaid-container > #mermaid-space > .mermaid-content svg {
max-width: none;
height: auto;
}
#mermaid-container > #mermaid-space > .mermaid-controls {
position: absolute;
bottom: 20px;
right: 20px;
display: flex;
gap: 8px;
padding: 8px;
background: var(--light);
border: 1px solid var(--lightgray);
border-radius: 6px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
z-index: 2;
}
#mermaid-container > #mermaid-space > .mermaid-controls .mermaid-control-button {
display: flex;
align-items: center;
justify-
Open service 172.67.186.78:8443 · bench.soulninja.dev
2026-01-23 21:58
HTTP/1.1 200 OK
Date: Fri, 23 Jan 2026 21:58:58 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
Link: <https://fonts.googleapis.com>; rel="preconnect", <https://fonts.gstatic.com>; rel="preconnect"
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=zwv0aO%2FeqTMJmpN%2BnBrdw6NB8UlDwGuKvVaWiU%2BsP4%2BZQC1jVLIE2u6aFj4UxUKhsNgw2Ok1OcwvK8cCdNz87tUKqWIHfDOXrTXCGvIqIDsPB80%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c2a8e38cfab7641-FRA
alt-svc: h3=":8443"; ma=86400
Page title: indexSearchDark modeLight modeReader mode
<!DOCTYPE html>
<html lang="en" dir="ltr"><head><title>index</title><meta charset="utf-8"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Schibsted Grotesk:wght@400;700&family=Source Sans Pro:ital,wght@0,400;0,600;1,400;1,600&family=IBM Plex Mono:wght@400;600&display=swap"/><link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin="anonymous"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="og:site_name" content="soul's workbench"/><meta property="og:title" content="index"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="index"/><meta name="twitter:description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="og:description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="og:image:alt" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta property="twitter:domain" content="bench.soulninja.dev"/><meta property="og:url" content="https://bench.soulninja.dev/index"/><meta property="twitter:url" content="https://bench.soulninja.dev/index"/><link rel="icon" href="./static/icon.png"/><meta name="description" content="welcome, i go by soul and this is my workbench, where you can learn about the things i am currently working on and my notes on the various things i am curious about / learning about on a daily basis."/><meta name="generator" content="Quartz"/><link href="./index.css" rel="stylesheet" type="text/css" spa-preserve/><style>.expand-button {
position: absolute;
display: flex;
float: right;
padding: 0.4rem;
margin: 0.3rem;
right: 0;
color: var(--gray);
border-color: var(--dark);
background-color: var(--light);
border: 1px solid;
border-radius: 5px;
opacity: 0;
transition: 0.2s;
}
.expand-button > svg {
fill: var(--light);
filter: contrast(0.3);
}
.expand-button:hover {
cursor: pointer;
border-color: var(--secondary);
}
.expand-button:focus {
outline: 0;
}
pre:hover > .expand-button {
opacity: 1;
transition: 0.2s;
}
#mermaid-container {
position: fixed;
contain: layout;
z-index: 999;
left: 0;
top: 0;
width: 100vw;
height: 100vh;
overflow: hidden;
display: none;
backdrop-filter: blur(4px);
background: rgba(0, 0, 0, 0.5);
}
#mermaid-container.active {
display: inline-block;
}
#mermaid-container > #mermaid-space {
border: 1px solid var(--lightgray);
background-color: var(--light);
border-radius: 5px;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
height: 80vh;
width: 80vw;
overflow: hidden;
}
#mermaid-container > #mermaid-space > .mermaid-content {
padding: 2rem;
position: relative;
transform-origin: 0 0;
transition: transform 0.1s ease;
overflow: visible;
min-height: 200px;
min-width: 200px;
}
#mermaid-container > #mermaid-space > .mermaid-content pre {
margin: 0;
border: none;
}
#mermaid-container > #mermaid-space > .mermaid-content svg {
max-width: none;
height: auto;
}
#mermaid-container > #mermaid-space > .mermaid-controls {
position: absolute;
bottom: 20px;
right: 20px;
display: flex;
gap: 8px;
padding: 8px;
background: var(--light);
border: 1px solid var(--lightgray);
border-radius: 6px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
z-index: 2;
}
#mermaid-container > #mermaid-space > .mermaid-controls .mermaid-control-button {
display: flex;
align-items: center;
justify-
Open service 2606:4700:3035::6815:3bfb:80 · bench.soulninja.dev
2026-01-23 21:58
HTTP/1.1 301 Moved Permanently
Date: Fri, 23 Jan 2026 21:58:58 GMT
Content-Length: 0
Connection: close
Location: https://bench.soulninja.dev/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=OaBEN0YwG479tsLSqzZvo0LmMPUXZB8q1GMtzwtICz0RypjM02NkfoTIUtVbwIguReL2Yk1%2BcH808SZ9B9KuhVUMe11opIUKT5H5zMyHRkOex8FsNlufkSWj9q0uDpc%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c2a8e37cce8f834-EWR
alt-svc: h3=":443"; ma=86400
Open service 104.21.59.251:80 · bench.soulninja.dev
2026-01-23 21:58
HTTP/1.1 301 Moved Permanently
Date: Fri, 23 Jan 2026 21:58:58 GMT
Content-Length: 0
Connection: close
Location: https://bench.soulninja.dev/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=1RsVAV%2Fqr8xHqRrZnUqrWay6ZOiZly4%2FC6vzB6onBE%2BrS7Rl%2F3Kw97ZDietGLQwzjLsWAGdI%2FQ1bD3fh5dRIMTwVXTVZuBmuGwdR4bkbR%2BOTIqI%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c2a8e36ef65dcc8-FRA
alt-svc: h3=":443"; ma=86400