1
Fork 0
mirror of https://github.com/RGBCube/Site synced 2025-08-01 13:37:49 +00:00

Compare commits

...

9 commits

Author SHA1 Message Date
51fd319b05
dump(go.iterators): update 2025-06-08 06:42:04 +03:00
380e50ad24
dump: change description 2025-06-08 06:40:02 +03:00
17e98d628f
dump(site.analytics): update 2025-06-08 06:31:46 +03:00
0ff8d34a47
dump(site.analytics): update 2025-06-08 06:30:30 +03:00
def6ca9c39
text: actually fix overflow 2025-06-08 04:10:47 +03:00
731706c7f6
index: add xitter 2025-06-08 03:46:22 +03:00
8745759856
text: fix topbar scrolling on md+ 2025-06-08 03:46:05 +03:00
c6bd453438
dump: update description 2025-06-08 03:39:22 +03:00
1a27c2d337
dump: add dump 2025-06-08 02:45:40 +03:00
15 changed files with 275 additions and 67 deletions

115
deno.lock generated
View file

@ -1,5 +1,5 @@
{
"version": "4",
"version": "5",
"specifiers": {
"jsr:@davidbonnet/astring@1.8.6": "1.8.6",
"jsr:@luca/esbuild-deno-loader@0.11.1": "0.11.1",
@ -223,31 +223,49 @@
]
},
"@tailwindcss/oxide-android-arm64@4.1.7": {
"integrity": "sha512-IWA410JZ8fF7kACus6BrUwY2Z1t1hm0+ZWNEzykKmMNM09wQooOcN/VXr0p/WJdtHZ90PvJf2AIBS/Ceqx1emg=="
"integrity": "sha512-IWA410JZ8fF7kACus6BrUwY2Z1t1hm0+ZWNEzykKmMNM09wQooOcN/VXr0p/WJdtHZ90PvJf2AIBS/Ceqx1emg==",
"os": ["android"],
"cpu": ["arm64"]
},
"@tailwindcss/oxide-darwin-arm64@4.1.7": {
"integrity": "sha512-81jUw9To7fimGGkuJ2W5h3/oGonTOZKZ8C2ghm/TTxbwvfSiFSDPd6/A/KE2N7Jp4mv3Ps9OFqg2fEKgZFfsvg=="
"integrity": "sha512-81jUw9To7fimGGkuJ2W5h3/oGonTOZKZ8C2ghm/TTxbwvfSiFSDPd6/A/KE2N7Jp4mv3Ps9OFqg2fEKgZFfsvg==",
"os": ["darwin"],
"cpu": ["arm64"]
},
"@tailwindcss/oxide-darwin-x64@4.1.7": {
"integrity": "sha512-q77rWjEyGHV4PdDBtrzO0tgBBPlQWKY7wZK0cUok/HaGgbNKecegNxCGikuPJn5wFAlIywC3v+WMBt0PEBtwGw=="
"integrity": "sha512-q77rWjEyGHV4PdDBtrzO0tgBBPlQWKY7wZK0cUok/HaGgbNKecegNxCGikuPJn5wFAlIywC3v+WMBt0PEBtwGw==",
"os": ["darwin"],
"cpu": ["x64"]
},
"@tailwindcss/oxide-freebsd-x64@4.1.7": {
"integrity": "sha512-RfmdbbK6G6ptgF4qqbzoxmH+PKfP4KSVs7SRlTwcbRgBwezJkAO3Qta/7gDy10Q2DcUVkKxFLXUQO6J3CRvBGw=="
"integrity": "sha512-RfmdbbK6G6ptgF4qqbzoxmH+PKfP4KSVs7SRlTwcbRgBwezJkAO3Qta/7gDy10Q2DcUVkKxFLXUQO6J3CRvBGw==",
"os": ["freebsd"],
"cpu": ["x64"]
},
"@tailwindcss/oxide-linux-arm-gnueabihf@4.1.7": {
"integrity": "sha512-OZqsGvpwOa13lVd1z6JVwQXadEobmesxQ4AxhrwRiPuE04quvZHWn/LnihMg7/XkN+dTioXp/VMu/p6A5eZP3g=="
"integrity": "sha512-OZqsGvpwOa13lVd1z6JVwQXadEobmesxQ4AxhrwRiPuE04quvZHWn/LnihMg7/XkN+dTioXp/VMu/p6A5eZP3g==",
"os": ["linux"],
"cpu": ["arm"]
},
"@tailwindcss/oxide-linux-arm64-gnu@4.1.7": {
"integrity": "sha512-voMvBTnJSfKecJxGkoeAyW/2XRToLZ227LxswLAwKY7YslG/Xkw9/tJNH+3IVh5bdYzYE7DfiaPbRkSHFxY1xA=="
"integrity": "sha512-voMvBTnJSfKecJxGkoeAyW/2XRToLZ227LxswLAwKY7YslG/Xkw9/tJNH+3IVh5bdYzYE7DfiaPbRkSHFxY1xA==",
"os": ["linux"],
"cpu": ["arm64"]
},
"@tailwindcss/oxide-linux-arm64-musl@4.1.7": {
"integrity": "sha512-PjGuNNmJeKHnP58M7XyjJyla8LPo+RmwHQpBI+W/OxqrwojyuCQ+GUtygu7jUqTEexejZHr/z3nBc/gTiXBj4A=="
"integrity": "sha512-PjGuNNmJeKHnP58M7XyjJyla8LPo+RmwHQpBI+W/OxqrwojyuCQ+GUtygu7jUqTEexejZHr/z3nBc/gTiXBj4A==",
"os": ["linux"],
"cpu": ["arm64"]
},
"@tailwindcss/oxide-linux-x64-gnu@4.1.7": {
"integrity": "sha512-HMs+Va+ZR3gC3mLZE00gXxtBo3JoSQxtu9lobbZd+DmfkIxR54NO7Z+UQNPsa0P/ITn1TevtFxXTpsRU7qEvWg=="
"integrity": "sha512-HMs+Va+ZR3gC3mLZE00gXxtBo3JoSQxtu9lobbZd+DmfkIxR54NO7Z+UQNPsa0P/ITn1TevtFxXTpsRU7qEvWg==",
"os": ["linux"],
"cpu": ["x64"]
},
"@tailwindcss/oxide-linux-x64-musl@4.1.7": {
"integrity": "sha512-MHZ6jyNlutdHH8rd+YTdr3QbXrHXqwIhHw9e7yXEBcQdluGwhpQY2Eku8UZK6ReLaWtQ4gijIv5QoM5eE+qlsA=="
"integrity": "sha512-MHZ6jyNlutdHH8rd+YTdr3QbXrHXqwIhHw9e7yXEBcQdluGwhpQY2Eku8UZK6ReLaWtQ4gijIv5QoM5eE+qlsA==",
"os": ["linux"],
"cpu": ["x64"]
},
"@tailwindcss/oxide-wasm32-wasi@4.1.7": {
"integrity": "sha512-ANaSKt74ZRzE2TvJmUcbFQ8zS201cIPxUDm5qez5rLEwWkie2SkGtA4P+GPTj+u8N6JbPrC8MtY8RmJA35Oo+A==",
@ -258,17 +276,26 @@
"@napi-rs/wasm-runtime",
"@tybys/wasm-util",
"tslib"
]
],
"cpu": ["wasm32"]
},
"@tailwindcss/oxide-win32-arm64-msvc@4.1.7": {
"integrity": "sha512-HUiSiXQ9gLJBAPCMVRk2RT1ZrBjto7WvqsPBwUrNK2BcdSxMnk19h4pjZjI7zgPhDxlAbJSumTC4ljeA9y0tEw=="
"integrity": "sha512-HUiSiXQ9gLJBAPCMVRk2RT1ZrBjto7WvqsPBwUrNK2BcdSxMnk19h4pjZjI7zgPhDxlAbJSumTC4ljeA9y0tEw==",
"os": ["win32"],
"cpu": ["arm64"]
},
"@tailwindcss/oxide-win32-x64-msvc@4.1.7": {
"integrity": "sha512-rYHGmvoHiLJ8hWucSfSOEmdCBIGZIq7SpkPRSqLsH2Ab2YUNgKeAPT1Fi2cx3+hnYOrAb0jp9cRyode3bBW4mQ=="
"integrity": "sha512-rYHGmvoHiLJ8hWucSfSOEmdCBIGZIq7SpkPRSqLsH2Ab2YUNgKeAPT1Fi2cx3+hnYOrAb0jp9cRyode3bBW4mQ==",
"os": ["win32"],
"cpu": ["x64"]
},
"@tailwindcss/oxide@4.1.7": {
"integrity": "sha512-5SF95Ctm9DFiUyjUPnDGkoKItPX/k+xifcQhcqX5RA85m50jw1pT/KzjdvlqxRja45Y52nR4MR9fD1JYd7f8NQ==",
"dependencies": [
"detect-libc",
"tar"
],
"optionalDependencies": [
"@tailwindcss/oxide-android-arm64",
"@tailwindcss/oxide-darwin-arm64",
"@tailwindcss/oxide-darwin-x64",
@ -280,10 +307,9 @@
"@tailwindcss/oxide-linux-x64-musl",
"@tailwindcss/oxide-wasm32-wasi",
"@tailwindcss/oxide-win32-arm64-msvc",
"@tailwindcss/oxide-win32-x64-msvc",
"detect-libc",
"tar"
]
"@tailwindcss/oxide-win32-x64-msvc"
],
"scripts": true
},
"@tybys/wasm-util@0.9.0": {
"integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==",
@ -329,31 +355,48 @@
"integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w=="
},
"jiti@2.4.2": {
"integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A=="
"integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==",
"bin": true
},
"lightningcss-darwin-arm64@1.30.1": {
"integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ=="
"integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==",
"os": ["darwin"],
"cpu": ["arm64"]
},
"lightningcss-darwin-x64@1.30.1": {
"integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA=="
"integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==",
"os": ["darwin"],
"cpu": ["x64"]
},
"lightningcss-freebsd-x64@1.30.1": {
"integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig=="
"integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==",
"os": ["freebsd"],
"cpu": ["x64"]
},
"lightningcss-linux-arm-gnueabihf@1.30.1": {
"integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q=="
"integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==",
"os": ["linux"],
"cpu": ["arm"]
},
"lightningcss-linux-arm64-gnu@1.30.1": {
"integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw=="
"integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==",
"os": ["linux"],
"cpu": ["arm64"]
},
"lightningcss-linux-arm64-musl@1.30.1": {
"integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ=="
"integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==",
"os": ["linux"],
"cpu": ["arm64"]
},
"lightningcss-linux-x64-gnu@1.30.1": {
"integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw=="
"integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==",
"os": ["linux"],
"cpu": ["x64"]
},
"lightningcss-linux-x64-musl@1.30.1": {
"integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ=="
"integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==",
"os": ["linux"],
"cpu": ["x64"]
},
"lightningcss-wasm@1.30.1": {
"integrity": "sha512-KJTnKEn0REV6DoJzxG0m5EKVEFA1CVE1isDYpXjsuqWXwLKFPJtA9Z9BSzPZJwAZFN2KaUzy+IWGP59p5bm2sA==",
@ -362,15 +405,21 @@
]
},
"lightningcss-win32-arm64-msvc@1.30.1": {
"integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA=="
"integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==",
"os": ["win32"],
"cpu": ["arm64"]
},
"lightningcss-win32-x64-msvc@1.30.1": {
"integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg=="
"integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==",
"os": ["win32"],
"cpu": ["x64"]
},
"lightningcss@1.30.1": {
"integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==",
"dependencies": [
"detect-libc",
"detect-libc"
],
"optionalDependencies": [
"lightningcss-darwin-arm64",
"lightningcss-darwin-x64",
"lightningcss-freebsd-x64",
@ -413,7 +462,8 @@
"mdurl",
"punycode.js",
"uc.micro"
]
],
"bin": true
},
"mdurl@2.0.0": {
"integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w=="
@ -431,7 +481,8 @@
]
},
"mkdirp@3.0.1": {
"integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg=="
"integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
"bin": true
},
"napi-wasm@1.1.3": {
"integrity": "sha512-h/4nMGsHjZDCYmQVNODIrYACVJ+I9KItbG+0si6W/jSjdA9JbWDoU4LLeMXVcEQGHjttI2tuXqDrbGF7qkUHHg=="
@ -698,6 +749,7 @@
"https://deno.land/x/lume@v3.0.2/plugins/minify_html.ts": "f8a817bc43107389d0ce4ce9a048ced06c001407da34e9e2b8ef7a19db90c933",
"https://deno.land/x/lume@v3.0.2/plugins/modify_urls.ts": "9c1b7cc856038d46b64f395065d2852f9b4af94ef9a41c2e9e3021d448b1d3b6",
"https://deno.land/x/lume@v3.0.2/plugins/modules.ts": "4e177c0ffe972b9deef10db2bf0ae52b405418af4dbac03db9e7ffbd6a3ec6ae",
"https://deno.land/x/lume@v3.0.2/plugins/nav.ts": "505b2140d35c992e05b471f34e7b9f38ddd1cd13d588eb9fb3622ce59592ccac",
"https://deno.land/x/lume@v3.0.2/plugins/paginate.ts": "6a1a9a24d0fabed2f722a6a6f29d98559219c69475685034181816e82d367f2e",
"https://deno.land/x/lume@v3.0.2/plugins/redirects.ts": "5ae50e20bc32b0e8836920148b25ea3ae057a209b62691a67471fa4a52e6507a",
"https://deno.land/x/lume@v3.0.2/plugins/resolve_urls.ts": "910dbccd25fcacacc72d577a3df37c5f3cc4adce0ec52b2fc8903863c2e2afae",
@ -737,6 +789,7 @@
"https://deno.land/x/vento@v1.13.0/src/loader.ts": "d6033a30c127fe942190c887c0b6673366e54887079f3f0f73d8ba0aeca9176c",
"https://deno.land/x/vento@v1.13.0/src/tokenizer.ts": "127ddad02054f63b8b646e4dfbf555e1e34e9b8dcbd58d86b3729a4de95abd27",
"https://deno.land/x/vento@v1.13.0/src/transformer.ts": "9ff70c554b3889151745b5f7117bc5c02b889e6e16ca53e5b8c1fa6b767fb451",
"https://deno.land/x/xml@6.0.4/_types.ts": "a7435282a7a775d80f8528aeec49996192c47fef8a8f616a1b216792424dc125",
"https://deno.land/x/xml@6.0.4/mod.ts": "b59e5c0dd9fe7ed597c21c39aacf089aa82fe5c5eaad3f411a43a9c104359f4e",
"https://deno.land/x/xml@6.0.4/parse.ts": "1302c75d8fd40df39310bb8ae6716302f0b77c61c607437dc023d3d792a0df54",
"https://deno.land/x/xml@6.0.4/stringify.ts": "0e2f79798d413c5386bf5de90bbe9901f99951ceae484050a8ef89e2b4da9dd0",

23
site.ts
View file

@ -1,16 +1,17 @@
import lume from "lume/mod.ts";
import extractDate from "lume/plugins/extract_date.ts";
import codeHighlight from "lume/plugins/code_highlight.ts";
import redirects from "lume/plugins/redirects.ts";
import tailwindcss from "lume/plugins/tailwindcss.ts";
import lightningcss from "lume/plugins/lightningcss.ts";
import resolveUrls from "lume/plugins/resolve_urls.ts";
import slugifyUrls from "lume/plugins/slugify_urls.ts";
import checkUrls from "lume/plugins/check_urls.ts";
import inline from "lume/plugins/inline.ts";
import codeHighlight from "lume/plugins/code_highlight.ts";
import extractDate from "lume/plugins/extract_date.ts";
import feed from "lume/plugins/feed.ts";
import inline from "lume/plugins/inline.ts";
import lightningcss from "lume/plugins/lightningcss.ts";
// import minifyHtml from "lume/plugins/minify_html.ts";
import nav from "lume/plugins/nav.ts";
import redirects from "lume/plugins/redirects.ts";
import resolveUrls from "lume/plugins/resolve_urls.ts";
import sitemap from "lume/plugins/sitemap.ts";
import minifyHtml from "lume/plugins/minify_html.ts";
import slugifyUrls from "lume/plugins/slugify_urls.ts";
import tailwindcss from "lume/plugins/tailwindcss.ts";
const siteName = "RGBCube";
const siteDescription =
@ -173,10 +174,12 @@ site.use(checkUrls({
throw: true,
}));
site.use(nav());
site.use(feed({
output: ["/blog.rss", "/blog.json"],
query: "type=article unlisted!=true",
query: "url^=/blog/ url!=/blog/ unlisted!=true",
sort: "date=asc",
limit: Infinity,

View file

@ -31,13 +31,14 @@ prevent_zoom: true
<a class="size-[100%] bg-black hover:bg-[olive]" href={{ "/" |> url(true) }}></a>
{{ /set }}
{{ set cube_face_front = cube_face }}
{{ set cube_face_back = cube_face }}
{{ set cube_face_left = cube_face }}
{{ set cube_face_right = cube_face }}
{{ set cube_face_top = cube_face }}
{{ set cube_face_bottom = cube_face }}
{{ include "cube.vto" {
cube_face_front: cube_face,
cube_face_back: cube_face,
cube_face_left: cube_face,
cube_face_right: cube_face,
cube_face_top: cube_face,
cube_face_bottom: cube_face,
{{ set cube_size = "5rem" }}
{{ set cube_last = true }}
{{ include "cube.vto" }}
cube_size: "5rem",
cube_last: true,
} }}

View file

@ -60,7 +60,7 @@ layout: null
<link href="/assets/css/default.css" rel="stylesheet" inline>
</head>
<body class="bg-white text-black dark:bg-black dark:text-white">
<body class="bg-white text-black dark:bg-black dark:text-white overflow-x-hidden">
{{ content }}
</body>

7
site/_includes/dump.vto Normal file
View file

@ -0,0 +1,7 @@
---
layout: text.vto
---
{{ content }}
{{ include "map.vto" { url } }}

70
site/_includes/map.vto Normal file
View file

@ -0,0 +1,70 @@
{{ function process(entry, toplevel = false) }}
<div class="relative p-4{{ if !toplevel }} my-4 md:mx-8{{ /if }} border-1 bg-white dark:bg-black">
{{ if entry.data.title }}
<a
class="
reset
absolute inset-0
p-4
bg-white hover:bg-[pink]
dark:bg-black dark:hover:bg-[olive]
{{ if entry.data.url == url }}
border-2 border-dashed border-black dark:border-white
{{ /if }}
"
style="margin:0" href="{{ entry.data.url }}"
>{{ entry.data.mapTitle ?? entry.data.title |> md }}</a>
<div class="invisible">{{ entry.data.mapTitle ?? entry.data.title |> md }}</div>
{{ else }}
{{> const content = entry.data.basename.replace(/-/g, " ").replace(/\b\w/g, (char) => char.toUpperCase()) }}
<p
class="
absolute inset-0
p-4
bg-[repeating-linear-gradient(-45deg,transparent_0rem,transparent_1rem,#ddd_1rem,#ddd_2rem)]
dark:bg-[repeating-linear-gradient(-45deg,transparent_0rem,transparent_1rem,#222_1rem,#222_2rem)]
"
style="
margin:0;
"
>{{ content }}</p>
<div class="invisible">{{ content }}</div>
{{ /if }}
{{ if entry.children && entry.children.length > 0 }}
<ul>
{{ for child of entry.children }}
<li class="reset">
{{ process(child) }}
</li>
{{ /for }}
</ul>
{{ /if }}
</div>
{{ /function }}
{{> const sharedPrefix = (x, y) => {
const length = Math.min(x.length, y.length);
let prefix = "";
for (let index = 0; index < length; index++) {
if (x[index] === y[index]) {
prefix += x[index];
} else {
break;
}
}
return prefix;
} }}
{{> const anchorUrls = search.pages("mapAnchor=true").map((page) => page.url) }}
{{> const shared = anchorUrls.map((anchorUrl) => sharedPrefix(anchorUrl, url)) }}
{{> const longest = shared.reduce((longest, current) => current.length > longest.length ? current : longest) }}
{{ process(nav.menu(longest), toplevel = true) }}

View file

@ -9,7 +9,7 @@ layout: default.vto
transform-[rotateX(180deg)]
text-black text-2xl font-bold
absolute w-[inherit] z-999
overflow-x-auto
not-md:overflow-x-auto
">
<div class="transform-[rotateX(180deg)] flex items-start justify-evenly mx-px">
{{> const style = `
@ -24,6 +24,7 @@ layout: default.vto
<a class="{{ style }}" href="/">home</a>
<a class="{{ style }}" href="/about/">about</a>
<a class="{{ style }}" href="/blog/">blog</a>
<a class="{{ style }}" href="/dump/">dump</a>
<a class="{{ style }}" href="/contact/">contact</a>
</div>
</nav>
@ -35,14 +36,15 @@ layout: default.vto
<ol id="footnotes"></ol>
</div>
<footer class="flex justify-center text-sm wrap-anywhere mt-auto p-1.5 pb-2 border-t-4 border-x-4">
<footer class="flex justify-center text-sm wrap-anywhere mt-auto p-1.5 pb-2 border-t-4 border-x-4 border-black dark:border-white">
Copyright © {{ Temporal.Now.plainDateISO().year }}
<a draggable="false" class="flex items-center pl-2" href="/" alt="RGBCube">
{{ set cube_size = "0.75rem" }}
{{ set cube_small = true }}
{{ set cube_last = true }}
{{ include "rgbcube.vto" }}
{{ include "rgbcube.vto" {
cube_size: "0.75rem",
cube_small: true,
cube_last: true,
} }}
</a>
</footer>

View file

@ -125,7 +125,7 @@
}
}
html, body {
body {
height: 100dvh;
width: 100dvw;
}
@ -164,7 +164,7 @@ html, body {
}
}
a {
a:not(.reset) {
@apply m-0;
* {
@ -256,7 +256,7 @@ html, body {
}
}
li {
li:not(.reset) {
@apply relative pl-4;
ul &::before {

View file

@ -18,13 +18,13 @@ Blog Articles
<style>ul * { overflow-wrap:anywhere !important; }</style>
<ul>
{{ for article of search.pages("type=article unlisted!=true", "order=asc date=desc")}}
{{ for entry of search.pages("url^=/blog/ unlisted!=true", "order=asc date=desc")}}
<li class="flex">
<a id="matrix" class="text-right font-mono" style="margin-right:calc(var(--spacing)*2)" href="{{ article.url }}">
{{ article.date.toISOString().slice(2, 10).replaceAll("-", " ") }}
<a id="matrix" class="text-right font-mono" style="margin-right:calc(var(--spacing)*2)" href="{{ entry.url }}">
{{ entry.date.toISOString().slice(2, 10).replaceAll("-", " ") }}
</a>
{{ article.title |> md }}
{{ entry.title |> md }}
</li>
{{ /for }}
</ul>

View file

@ -2,5 +2,6 @@ export default {
layout: "text.vto",
type: "article",
title: null,
description: null,
};

13
site/dump.vto Normal file
View file

@ -0,0 +1,13 @@
---
layout: dump.vto
title: D U M P
description: RAMBLINGS OF A MADMAN
mapTitle: RAMBLINGS OF A MADMAN
mapAnchor: true
---
<h1>Info and Thought Dumps</h1>
<p>Here is where I store all my random thoughts, grievences, random bits of information and perhaps the nice stuff I encounter.</p>
<p>Nothing here is blog-post tier good, so do not expect very high quality.</p>

7
site/dump/_data.ts Normal file
View file

@ -0,0 +1,7 @@
export default {
layout: "dump.vto",
type: "article",
title: null,
description: null,
};

23
site/dump/go/iterators.md Normal file
View file

@ -0,0 +1,23 @@
---
title: Go's iterators suit the moronic language
date: 2025-06-07
---
Just had to deal with Go iterators and I can say that they fit the language
well.
They're push iterators. It's as if you're just appending items to an array.
Actually much easier to explain when you are teaching the language to begginers
while not expecting them to use it for much other than surface level utilities.
They compile down to nonlocal returns to try to keep it fast, but of course it's
still slower than a state machine, in typical Go fashion
And when you know slightly more than a single lick of programming, the design
and implementation of them looks very obviously moronic and catered to
beginners.
Some people were arguing that this approach makes it more "functional" but
that's very far from the truth. Push iterators are very imperative, pull
iterators (`Iterator::next`, which returns `Option<T>`) are actual functional,
correct and fast way to do it.

View file

@ -0,0 +1,19 @@
---
title: Analytics
---
This site and other websites under this domain run
[Plausible](https://plausible.io/) analytics on a self-hosted instance at
[shekels.rgbcu.be](https://shekels.rgbcu.be/).
None of your data is being sold, etc etc etc. I don't even collect much,
currently only visitor data which includes your platform and geoghraphic
location.
You can view it here for these domains:
- [rgbcu.be](https://shekels.rgbcu.be/rgbcu.be)
- [shekels.rgbcu.be](https://shekels.rgbcu.be/shekels.rgbcu.be)
- [git.rgbcu.be](https://shekels.rgbcu.be/git.rgbcu.be)
No other domain is marked public, so don't bother searching.

View file

@ -29,6 +29,10 @@ prevent_zoom: true
<a draggable="false" class="{{ style }}" href="/about/">about</a>
{{ /set }}
{{ set cube_face_back }}
<a draggable="false" class="{{ style }}" href="/dump/">dump</a>
{{ /set }}
{{ set cube_face_top }}
<a draggable="false" class="{{ style }}" href="https://github.com/RGBCube">github</a>
{{ /set }}
@ -41,6 +45,11 @@ prevent_zoom: true
<a draggable="false" class="{{ style }}" href="/blog/">blog</a>
{{ /set }}
{{ set cube_size = "5rem" }}
{{ set cube_last = true }}
{{ include "rgbcube.vto" }}
{{ set cube_face_bottom }}
<a draggable="false" class="{{ style }}" href="https://x.com/HSVSphere">xitter</a>
{{ /set }}
{{ include "rgbcube.vto" {
cube_size: "5rem",
cube_last: true,
} }}