cloudflare
tcp/443 tcp/80 tcp/8443
Open service 2606:4700:3035::ac43:93fd:8443 · ayitey.me
2026-01-24 04:19
HTTP/1.1 522 <none> Date: Sat, 24 Jan 2026 04:20:11 GMT Content-Type: text/plain; charset=UTF-8 Content-Length: 15 Connection: close Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 01 Jan 1970 00:00:01 GMT Referrer-Policy: same-origin Server-Timing: cfEdge;dur=19275,cfOrigin;dur=0 X-Frame-Options: SAMEORIGIN Server: cloudflare CF-RAY: 9c2cbc2889967e08-SIN alt-svc: h3=":8443"; ma=86400 error code: 522
Open service 172.67.147.253:8443 · ayitey.me
2026-01-24 04:19
HTTP/1.1 522 <none> Date: Sat, 24 Jan 2026 04:20:11 GMT Content-Type: text/plain; charset=UTF-8 Content-Length: 15 Connection: close Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 01 Jan 1970 00:00:01 GMT Referrer-Policy: same-origin Server-Timing: cfEdge;dur=19388,cfOrigin;dur=0 X-Frame-Options: SAMEORIGIN Server: cloudflare CF-RAY: 9c2cbc28680f41ce-SJC alt-svc: h3=":8443"; ma=86400 error code: 522
Open service 104.21.55.117:8443 · ayitey.me
2026-01-24 04:19
HTTP/1.1 522 <none> Date: Sat, 24 Jan 2026 04:20:11 GMT Content-Type: text/plain; charset=UTF-8 Content-Length: 15 Connection: close Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 01 Jan 1970 00:00:01 GMT Referrer-Policy: same-origin Server-Timing: cfEdge;dur=19494,cfOrigin;dur=0 X-Frame-Options: SAMEORIGIN Server: cloudflare CF-RAY: 9c2cbc283a8ed8d9-YYZ alt-svc: h3=":8443"; ma=86400 error code: 522
Open service 2606:4700:3035::ac43:93fd:443 · ayitey.me
2026-01-24 04:19
HTTP/1.1 200 OK
Date: Sat, 24 Jan 2026 04:19:51 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: close
Age: 0
Cache-Control: no-cache
cache-status: "Netlify Durable"; fwd=bypass
cache-status: "Netlify Edge"; fwd=miss
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=2BxvZim6vb1P3ohHbRv0%2Bs4wnpSLT%2FlX6Q6iS1rBr1%2BZMHeX%2F9No37YpuLJ2zWxwEPxiHNJeW9dE5L12NoYIFw64%2BCBOYwt45Xx%2FShZ000iZ5FhtAQ%3D%3D"}]}
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=8,cfOrigin;dur=220
link: <./_app/immutable/assets/0.BEf8FotC.css>; rel="preload"; as="style"; nopush, <./_app/immutable/assets/5.DIFlyZyE.css>; rel="preload"; as="style"; nopush, <./_app/immutable/entry/start.BjAQUIqn.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/B2syNrx0.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/CQBrIXCT.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/DEd-hZhq.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/hnBfjlCK.js>; rel="modulepreload"; nopush, <./_app/immutable/entry/app.CX8obhMH.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/CTqpOEJn.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/BFQV6UMY.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/Cx208Nng.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/CH7b3l0X.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/Dcx6-T_P.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/CdnHFx35.js>; rel="modulepreload"; nopush, <./_app/immutable/nodes/0.DQwqtRsC.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/Bf9PFEPd.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/6hA1p44s.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/C7aWAuE0.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/BuguDLnS.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/CIRIBuUH.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/vmGClMeD.js>; rel="modulepreload"; nopush, <./_app/immutable/nodes/5.B5NUKpIZ.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/DL3bqx0c.js>; rel="modulepreload"; nopush
netlify-vary: query
Server: cloudflare
strict-transport-security: max-age=31536000
vary: Accept-Encoding
x-nf-request-id: 01KFQ3NMN81X843MGZ7RDEECRG
x-sveltekit-page: true
cf-cache-status: DYNAMIC
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
CF-RAY: 9c2cbc237b51f41f-YYZ
alt-svc: h3=":443"; ma=86400
<!doctype html>
<html lang="en-gb">
<head>
<meta charset="utf-8" />
<link rel="icon" href="./img/32x32.ico" />
<link rel="stylesheet" href="./styles/global-v101.css" />
<link rel="stylesheet" href="./styles/commissioner-v101.css" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="./_app/immutable/assets/0.BEf8FotC.css" rel="stylesheet">
<link href="./_app/immutable/assets/5.DIFlyZyE.css" rel="stylesheet"><!--1u5f4qj--><script async src="https://www.googletagmanager.com/gtag/js?id=GTM-W7QCTC">
</script> <script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', '{PUBLIC_MEASUREMENT_ID}');
</script><!---->
</head>
<body data-sveltekit-preload-data="hover">
<div style="display: contents;">
<!--[--><!--[--><!----><!----> <nav class="svelte-fkvc1s"><a href="/">Home</a> <a href="/posts">Posts</a> <a href="/work">Work</a> <a href="/projects">Projects</a> <button aria-label="Toggle theme" class="theme-toggle svelte-fkvc1s"><!--[!--><span>🌙</span> <span class="sr-only svelte-fkvc1s">Switch to dark theme</span><!--]--></button></nav><!----> <main class="svelte-12qhfyh"><!--[--><!--[!--><!----><section><main class="page-body"><section><div class="lede svelte-1uha8ag"><p>Hi, I'm a designer who likes to dabble. I have interests everywhere — music, Ruby, SvelteKit,
audio engineering, SaaS businesses, niche YouTube channels, side projects, etc.</p> <p>Hopefully, you find something you are interested in here. Thanks.</p></div></section> <section><h2>Posts</h2> <!--[--><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/the-rich-christian">The Rich Christian</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/contributing-to-maybe">Contributing to Maybe: The Context of Design Engineering</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/integrity-and-excellence">Integrity and Excellence</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/discovery-development-dependence">Discovery, Development, Dependence</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/strapi-finalli">Strapi, finalli?</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/building-adinkra-symbols">Building a Catalogue of Ancient African Symbols – The Adinkra Project</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/thinking-clearly">Thinking Clearly</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/hello-2018">Hello, 2018</a></h4></li><!--]--></section></main></section><!----><!--]--><!--]--></main> <footer class="svelte-9sff3o"></footer><!----><!----><!--]--> <!--[!--><!--]--><!--]-->
<script>
{
__sveltekit_1k0n69e = {
base: new URL(".", location).pathname.slice(0, -1)
};
const element = document.currentScript.parentElement;
Promise.all([
import("./_app/immutable/entry/start.BjAQUIqn.js"),
import("./_app/immutable/entry/app.CX8obhMH.js")
]).then(([kit, app]) => {
kit.start(app, element, {
node_ids: [0, 5],
data: [null,{type:"data",data:{posts:[{title:"The Rich Christian",slug:"the-rich-christian",published:"2023-12-18T01:24:00.000Z"},{title:"Contributing to Maybe: The Context of Design Engineering",slug:"contributing-to-maybe",published:"2025-11-28T02:43:00.000Z"},{title:"Integrity and Excellence",slug:"integrity-and-excellence",published:"2024-10-16T12:50:00.000Z"},{title:"Discovery, Development, Dependence",slug:"discovery-development-dependence",published:"2023-04-21T11:51:00.000Z"},{title:"Strapi, finalli?",slug:"strapi-finalli",published:"2022-11-15T12:54:00.000Z"},{title:"Building a Catalogue of Ancient African Symbols – The Adinkra Project",slug:"building-adinkra-symbols",published:"2018-09-27T00:00:00.000Z"},{title:"Thinking Clearly",slug:"thinking-clearly",published:"2020-05-19T00:00
Open service 104.21.55.117:80 · ayitey.me
2026-01-24 04:19
HTTP/1.1 301 Moved Permanently
Date: Sat, 24 Jan 2026 04:19:50 GMT
Content-Length: 0
Connection: close
Location: https://ayitey.me/
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=I3dFme5A7SFl04WoTgwzagkI73sY%2B8n2jNl9UyS%2F84WlJ2RtCP1vHu%2FdwKbb6pD58RjwDA2a6nki4LtjGwM4ifq5nfgwOHoiMA%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server-Timing: cfEdge;dur=10,cfOrigin;dur=0
Server: cloudflare
CF-RAY: 9c2cbc220893ac99-YYZ
alt-svc: h3=":443"; ma=86400
Open service 2606:4700:3035::ac43:93fd:80 · ayitey.me
2026-01-24 04:19
HTTP/1.1 301 Moved Permanently
Date: Sat, 24 Jan 2026 04:19:50 GMT
Content-Length: 0
Connection: close
Location: https://ayitey.me/
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=S9EGPBwGwN40JwuMix9mi3iYNgBH1LGrO7kO%2B0i1irPe2XPHXTli3DTmcWJYS1NmqM%2BOCiG9ofNrAEEK%2BNiJ4Q3VMeL8SnmXMgNQMsN6%2FQST7tsAJQ%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c2cbc21dc8e4dbe-FRA
alt-svc: h3=":443"; ma=86400
Open service 2606:4700:3031::6815:3775:443 · ayitey.me
2026-01-24 04:19
HTTP/1.1 200 OK
Date: Sat, 24 Jan 2026 04:19:51 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: close
Age: 0
Cache-Control: no-cache
cache-status: "Netlify Durable"; fwd=bypass
cache-status: "Netlify Edge"; fwd=miss
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=ZOKLkl%2B3EbTnYhw8CN0ilTKi1mDaJbp%2FMzS0LFRmBd5B9KJ9PDVGmjdB%2FmMfnyydJcQzdRq%2Bde3lhyiWPGC8UC0WHwDeurU1smQJw1rBvkhOJq%2BF2A%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
link: <./_app/immutable/assets/0.BEf8FotC.css>; rel="preload"; as="style"; nopush, <./_app/immutable/assets/5.DIFlyZyE.css>; rel="preload"; as="style"; nopush, <./_app/immutable/entry/start.BjAQUIqn.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/B2syNrx0.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/CQBrIXCT.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/DEd-hZhq.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/hnBfjlCK.js>; rel="modulepreload"; nopush, <./_app/immutable/entry/app.CX8obhMH.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/CTqpOEJn.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/BFQV6UMY.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/Cx208Nng.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/CH7b3l0X.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/Dcx6-T_P.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/CdnHFx35.js>; rel="modulepreload"; nopush, <./_app/immutable/nodes/0.DQwqtRsC.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/Bf9PFEPd.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/6hA1p44s.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/C7aWAuE0.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/BuguDLnS.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/CIRIBuUH.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/vmGClMeD.js>; rel="modulepreload"; nopush, <./_app/immutable/nodes/5.B5NUKpIZ.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/DL3bqx0c.js>; rel="modulepreload"; nopush
netlify-vary: query
Server: cloudflare
strict-transport-security: max-age=31536000
vary: Accept-Encoding
x-nf-request-id: 01KFQ3NMVDAGWWW5K90MC7GBC9
x-sveltekit-page: true
cf-cache-status: DYNAMIC
CF-RAY: 9c2cbc24888e6664-AMS
alt-svc: h3=":443"; ma=86400
<!doctype html>
<html lang="en-gb">
<head>
<meta charset="utf-8" />
<link rel="icon" href="./img/32x32.ico" />
<link rel="stylesheet" href="./styles/global-v101.css" />
<link rel="stylesheet" href="./styles/commissioner-v101.css" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="./_app/immutable/assets/0.BEf8FotC.css" rel="stylesheet">
<link href="./_app/immutable/assets/5.DIFlyZyE.css" rel="stylesheet"><!--1u5f4qj--><script async src="https://www.googletagmanager.com/gtag/js?id=GTM-W7QCTC">
</script> <script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', '{PUBLIC_MEASUREMENT_ID}');
</script><!---->
</head>
<body data-sveltekit-preload-data="hover">
<div style="display: contents;">
<!--[--><!--[--><!----><!----> <nav class="svelte-fkvc1s"><a href="/">Home</a> <a href="/posts">Posts</a> <a href="/work">Work</a> <a href="/projects">Projects</a> <button aria-label="Toggle theme" class="theme-toggle svelte-fkvc1s"><!--[!--><span>🌙</span> <span class="sr-only svelte-fkvc1s">Switch to dark theme</span><!--]--></button></nav><!----> <main class="svelte-12qhfyh"><!--[--><!--[!--><!----><section><main class="page-body"><section><div class="lede svelte-1uha8ag"><p>Hi, I'm a designer who likes to dabble. I have interests everywhere — music, Ruby, SvelteKit,
audio engineering, SaaS businesses, niche YouTube channels, side projects, etc.</p> <p>Hopefully, you find something you are interested in here. Thanks.</p></div></section> <section><h2>Posts</h2> <!--[--><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/the-rich-christian">The Rich Christian</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/contributing-to-maybe">Contributing to Maybe: The Context of Design Engineering</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/integrity-and-excellence">Integrity and Excellence</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/discovery-development-dependence">Discovery, Development, Dependence</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/strapi-finalli">Strapi, finalli?</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/building-adinkra-symbols">Building a Catalogue of Ancient African Symbols – The Adinkra Project</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/thinking-clearly">Thinking Clearly</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/hello-2018">Hello, 2018</a></h4></li><!--]--></section></main></section><!----><!--]--><!--]--></main> <footer class="svelte-9sff3o"></footer><!----><!----><!--]--> <!--[!--><!--]--><!--]-->
<script>
{
__sveltekit_1k0n69e = {
base: new URL(".", location).pathname.slice(0, -1)
};
const element = document.currentScript.parentElement;
Promise.all([
import("./_app/immutable/entry/start.BjAQUIqn.js"),
import("./_app/immutable/entry/app.CX8obhMH.js")
]).then(([kit, app]) => {
kit.start(app, element, {
node_ids: [0, 5],
data: [null,{type:"data",data:{posts:[{title:"The Rich Christian",slug:"the-rich-christian",published:"2023-12-18T01:24:00.000Z"},{title:"Contributing to Maybe: The Context of Design Engineering",slug:"contributing-to-maybe",published:"2025-11-28T02:43:00.000Z"},{title:"Integrity and Excellence",slug:"integrity-and-excellence",published:"2024-10-16T12:50:00.000Z"},{title:"Discovery, Development, Dependence",slug:"discovery-development-dependence",published:"2023-04-21T11:51:00.000Z"},{title:"Strapi, finalli?",slug:"strapi-finalli",published:"2022-11-15T12:54:00.000Z"},{title:"Building a Catalogue of Ancient African Symbols – The Adinkra Project",slug:"building-adinkra-symbols",published:"2018-09-27T00:00:00.000Z"},{title:"Thinking Clearly",slug:"thinking-clearly",published:"2020-05-19T00:00
Open service 2606:4700:3031::6815:3775:80 · ayitey.me
2026-01-24 04:19
HTTP/1.1 301 Moved Permanently
Date: Sat, 24 Jan 2026 04:19:50 GMT
Content-Length: 0
Connection: close
Location: https://ayitey.me/
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=ncH0ZRSXm9mzHcdWqG4fl24ucvhJQKADPq80yXOccPMR8doeObOxuqke6fmwUJXMMVbFBWvLfS2CuLz8WtO%2FFmdyllIOlcy4H5S1ArGd%2B7TvU%2B972g%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c2cbc21c8011a47-FRA
alt-svc: h3=":443"; ma=86400
Open service 172.67.147.253:443 · ayitey.me
2026-01-24 04:19
HTTP/1.1 200 OK
Date: Sat, 24 Jan 2026 04:19:51 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: close
Age: 0
Cache-Control: no-cache
cache-status: "Netlify Durable"; fwd=bypass
cache-status: "Netlify Edge"; fwd=miss
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=BTEkjGjYU4pqogycENpCf3wSjAksiT2y%2B1gXkcp%2FF%2FnM%2BlU8q1vvj%2FG02nN9TvNCs1hXDgYA7Mtz13%2BbQ9oKCDgX5rPqSV0uGw%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
link: <./_app/immutable/assets/0.BEf8FotC.css>; rel="preload"; as="style"; nopush, <./_app/immutable/assets/5.DIFlyZyE.css>; rel="preload"; as="style"; nopush, <./_app/immutable/entry/start.BjAQUIqn.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/B2syNrx0.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/CQBrIXCT.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/DEd-hZhq.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/hnBfjlCK.js>; rel="modulepreload"; nopush, <./_app/immutable/entry/app.CX8obhMH.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/CTqpOEJn.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/BFQV6UMY.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/Cx208Nng.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/CH7b3l0X.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/Dcx6-T_P.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/CdnHFx35.js>; rel="modulepreload"; nopush, <./_app/immutable/nodes/0.DQwqtRsC.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/Bf9PFEPd.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/6hA1p44s.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/C7aWAuE0.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/BuguDLnS.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/CIRIBuUH.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/vmGClMeD.js>; rel="modulepreload"; nopush, <./_app/immutable/nodes/5.B5NUKpIZ.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/DL3bqx0c.js>; rel="modulepreload"; nopush
netlify-vary: query
Server: cloudflare
strict-transport-security: max-age=31536000
vary: Accept-Encoding
x-nf-request-id: 01KFQ3NMXM97ADMGPF729DNW1H
x-sveltekit-page: true
cf-cache-status: DYNAMIC
CF-RAY: 9c2cbc251814dc59-FRA
alt-svc: h3=":443"; ma=86400
<!doctype html>
<html lang="en-gb">
<head>
<meta charset="utf-8" />
<link rel="icon" href="./img/32x32.ico" />
<link rel="stylesheet" href="./styles/global-v101.css" />
<link rel="stylesheet" href="./styles/commissioner-v101.css" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="./_app/immutable/assets/0.BEf8FotC.css" rel="stylesheet">
<link href="./_app/immutable/assets/5.DIFlyZyE.css" rel="stylesheet"><!--1u5f4qj--><script async src="https://www.googletagmanager.com/gtag/js?id=GTM-W7QCTC">
</script> <script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', '{PUBLIC_MEASUREMENT_ID}');
</script><!---->
</head>
<body data-sveltekit-preload-data="hover">
<div style="display: contents;">
<!--[--><!--[--><!----><!----> <nav class="svelte-fkvc1s"><a href="/">Home</a> <a href="/posts">Posts</a> <a href="/work">Work</a> <a href="/projects">Projects</a> <button aria-label="Toggle theme" class="theme-toggle svelte-fkvc1s"><!--[!--><span>🌙</span> <span class="sr-only svelte-fkvc1s">Switch to dark theme</span><!--]--></button></nav><!----> <main class="svelte-12qhfyh"><!--[--><!--[!--><!----><section><main class="page-body"><section><div class="lede svelte-1uha8ag"><p>Hi, I'm a designer who likes to dabble. I have interests everywhere — music, Ruby, SvelteKit,
audio engineering, SaaS businesses, niche YouTube channels, side projects, etc.</p> <p>Hopefully, you find something you are interested in here. Thanks.</p></div></section> <section><h2>Posts</h2> <!--[--><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/the-rich-christian">The Rich Christian</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/contributing-to-maybe">Contributing to Maybe: The Context of Design Engineering</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/integrity-and-excellence">Integrity and Excellence</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/discovery-development-dependence">Discovery, Development, Dependence</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/strapi-finalli">Strapi, finalli?</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/building-adinkra-symbols">Building a Catalogue of Ancient African Symbols – The Adinkra Project</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/thinking-clearly">Thinking Clearly</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/hello-2018">Hello, 2018</a></h4></li><!--]--></section></main></section><!----><!--]--><!--]--></main> <footer class="svelte-9sff3o"></footer><!----><!----><!--]--> <!--[!--><!--]--><!--]-->
<script>
{
__sveltekit_1k0n69e = {
base: new URL(".", location).pathname.slice(0, -1)
};
const element = document.currentScript.parentElement;
Promise.all([
import("./_app/immutable/entry/start.BjAQUIqn.js"),
import("./_app/immutable/entry/app.CX8obhMH.js")
]).then(([kit, app]) => {
kit.start(app, element, {
node_ids: [0, 5],
data: [null,{type:"data",data:{posts:[{title:"The Rich Christian",slug:"the-rich-christian",published:"2023-12-18T01:24:00.000Z"},{title:"Contributing to Maybe: The Context of Design Engineering",slug:"contributing-to-maybe",published:"2025-11-28T02:43:00.000Z"},{title:"Integrity and Excellence",slug:"integrity-and-excellence",published:"2024-10-16T12:50:00.000Z"},{title:"Discovery, Development, Dependence",slug:"discovery-development-dependence",published:"2023-04-21T11:51:00.000Z"},{title:"Strapi, finalli?",slug:"strapi-finalli",published:"2022-11-15T12:54:00.000Z"},{title:"Building a Catalogue of Ancient African Symbols – The Adinkra Project",slug:"building-adinkra-symbols",published:"2018-09-27T00:00:00.000Z"},{title:"Thinking Clearly",slug:"thinking-clearly",published:"2020-05-19T00:00
Open service 104.21.55.117:443 · ayitey.me
2026-01-24 04:19
HTTP/1.1 200 OK
Date: Sat, 24 Jan 2026 04:19:51 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: close
Age: 0
Cache-Control: no-cache
cache-status: "Netlify Durable"; fwd=bypass
cache-status: "Netlify Edge"; fwd=miss
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=4P7r%2F2zQL1ku59Mw49f6U2VJue2JQty01f9ufi2yoysxquRTr%2BIDGQ4RnmadoU53ijQ%2BjJ0nXdPsBnwf0uUWnZ4PEARE%2Btg%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
link: <./_app/immutable/assets/0.BEf8FotC.css>; rel="preload"; as="style"; nopush, <./_app/immutable/assets/5.DIFlyZyE.css>; rel="preload"; as="style"; nopush, <./_app/immutable/entry/start.BjAQUIqn.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/B2syNrx0.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/CQBrIXCT.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/DEd-hZhq.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/hnBfjlCK.js>; rel="modulepreload"; nopush, <./_app/immutable/entry/app.CX8obhMH.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/CTqpOEJn.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/BFQV6UMY.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/Cx208Nng.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/CH7b3l0X.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/Dcx6-T_P.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/CdnHFx35.js>; rel="modulepreload"; nopush, <./_app/immutable/nodes/0.DQwqtRsC.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/Bf9PFEPd.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/6hA1p44s.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/C7aWAuE0.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/BuguDLnS.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/CIRIBuUH.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/vmGClMeD.js>; rel="modulepreload"; nopush, <./_app/immutable/nodes/5.B5NUKpIZ.js>; rel="modulepreload"; nopush, <./_app/immutable/chunks/DL3bqx0c.js>; rel="modulepreload"; nopush
netlify-vary: query
Server: cloudflare
strict-transport-security: max-age=31536000
vary: Accept-Encoding
x-nf-request-id: 01KFQ3NMT111KBRJTYRB9JGAH8
x-sveltekit-page: true
cf-cache-status: DYNAMIC
CF-RAY: 9c2cbc24e999ef3e-LHR
alt-svc: h3=":443"; ma=86400
<!doctype html>
<html lang="en-gb">
<head>
<meta charset="utf-8" />
<link rel="icon" href="./img/32x32.ico" />
<link rel="stylesheet" href="./styles/global-v101.css" />
<link rel="stylesheet" href="./styles/commissioner-v101.css" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="./_app/immutable/assets/0.BEf8FotC.css" rel="stylesheet">
<link href="./_app/immutable/assets/5.DIFlyZyE.css" rel="stylesheet"><!--1u5f4qj--><script async src="https://www.googletagmanager.com/gtag/js?id=GTM-W7QCTC">
</script> <script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', '{PUBLIC_MEASUREMENT_ID}');
</script><!---->
</head>
<body data-sveltekit-preload-data="hover">
<div style="display: contents;">
<!--[--><!--[--><!----><!----> <nav class="svelte-fkvc1s"><a href="/">Home</a> <a href="/posts">Posts</a> <a href="/work">Work</a> <a href="/projects">Projects</a> <button aria-label="Toggle theme" class="theme-toggle svelte-fkvc1s"><!--[!--><span>🌙</span> <span class="sr-only svelte-fkvc1s">Switch to dark theme</span><!--]--></button></nav><!----> <main class="svelte-12qhfyh"><!--[--><!--[!--><!----><section><main class="page-body"><section><div class="lede svelte-1uha8ag"><p>Hi, I'm a designer who likes to dabble. I have interests everywhere — music, Ruby, SvelteKit,
audio engineering, SaaS businesses, niche YouTube channels, side projects, etc.</p> <p>Hopefully, you find something you are interested in here. Thanks.</p></div></section> <section><h2>Posts</h2> <!--[--><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/the-rich-christian">The Rich Christian</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/contributing-to-maybe">Contributing to Maybe: The Context of Design Engineering</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/integrity-and-excellence">Integrity and Excellence</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/discovery-development-dependence">Discovery, Development, Dependence</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/strapi-finalli">Strapi, finalli?</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/building-adinkra-symbols">Building a Catalogue of Ancient African Symbols – The Adinkra Project</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/thinking-clearly">Thinking Clearly</a></h4></li><li class="post svelte-1uha8ag"><h4 class="post--title"><a href="posts/hello-2018">Hello, 2018</a></h4></li><!--]--></section></main></section><!----><!--]--><!--]--></main> <footer class="svelte-9sff3o"></footer><!----><!----><!--]--> <!--[!--><!--]--><!--]-->
<script>
{
__sveltekit_1k0n69e = {
base: new URL(".", location).pathname.slice(0, -1)
};
const element = document.currentScript.parentElement;
Promise.all([
import("./_app/immutable/entry/start.BjAQUIqn.js"),
import("./_app/immutable/entry/app.CX8obhMH.js")
]).then(([kit, app]) => {
kit.start(app, element, {
node_ids: [0, 5],
data: [null,{type:"data",data:{posts:[{title:"The Rich Christian",slug:"the-rich-christian",published:"2023-12-18T01:24:00.000Z"},{title:"Contributing to Maybe: The Context of Design Engineering",slug:"contributing-to-maybe",published:"2025-11-28T02:43:00.000Z"},{title:"Integrity and Excellence",slug:"integrity-and-excellence",published:"2024-10-16T12:50:00.000Z"},{title:"Discovery, Development, Dependence",slug:"discovery-development-dependence",published:"2023-04-21T11:51:00.000Z"},{title:"Strapi, finalli?",slug:"strapi-finalli",published:"2022-11-15T12:54:00.000Z"},{title:"Building a Catalogue of Ancient African Symbols – The Adinkra Project",slug:"building-adinkra-symbols",published:"2018-09-27T00:00:00.000Z"},{title:"Thinking Clearly",slug:"thinking-clearly",published:"2020-05-19T00:00
Open service 172.67.147.253:80 · ayitey.me
2026-01-24 04:19
HTTP/1.1 301 Moved Permanently
Date: Sat, 24 Jan 2026 04:19:50 GMT
Content-Length: 0
Connection: close
Location: https://ayitey.me/
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=he6wGyvDMRJRthNqCKqUIBAP7j7NI2UMV%2F1zgYFZXYZOAbU1TgrQYuxXvgZ71LBphVuMOCRIj5lwmvJ88Ph506n%2FyZA7aq9gLA%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c2cbc218d612be8-FRA
alt-svc: h3=":443"; ma=86400
Open service 2606:4700:3031::6815:3775:8443 · ayitey.me
2026-01-24 04:19
HTTP/1.1 522 <none> Date: Sat, 24 Jan 2026 04:20:11 GMT Content-Type: text/plain; charset=UTF-8 Content-Length: 15 Connection: close Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 01 Jan 1970 00:00:01 GMT Referrer-Policy: same-origin X-Frame-Options: SAMEORIGIN Server: cloudflare CF-RAY: 9c2cbc27ccdde7ba-FRA alt-svc: h3=":8443"; ma=86400 error code: 522