diff --git a/cspell.json b/cspell.json index 77ca04e..ce97a18 100644 --- a/cspell.json +++ b/cspell.json @@ -58,6 +58,7 @@ "loggable", "malloc", "metas", + "mispredictions", "mixolydian", "mlockall", "mosfets", @@ -68,6 +69,7 @@ "nums", "permacomputing", "physarum", + "piskel", "pocketbase", "powerups", "proptest", @@ -92,6 +94,7 @@ "subvolume", "syncer", "szintű", + "tamagotchi", "tamagotchis", "tarjan's", "tidepool", @@ -99,6 +102,7 @@ "tweakpane", "unsets", "vaultlink", + "vtable", "waveshare", "waveshare's", "webform", diff --git a/package.json b/package.json index f0e268e..1236e45 100644 --- a/package.json +++ b/package.json @@ -18,15 +18,16 @@ "qa:astro-audit": "node scripts/install-playwright-deps.mjs && node scripts/export-astro-audit.mjs --fail-on-issues", "qa:no-em-dashes": "node scripts/check-no-em-dashes.mjs", "qa:spelling": "cspell --no-progress \"astro.config.mjs\" \"src/**/*.{astro,ts,md,css}\" \"scripts/**/*.mjs\" \"*.md\"", + "qa:no-github-links": "node scripts/check-no-github-links.mjs", "qa:links": "node scripts/check-links.mjs", "qa:no-js": "node scripts/check-no-js.mjs", "qa:overflow": "node scripts/install-playwright-deps.mjs && node scripts/check-overflow.mjs", "qa:preview-cropping": "node scripts/install-playwright-deps.mjs && node scripts/check-preview-cropping.mjs", - "qa": "npm run typecheck && npm run lint && npm run qa:no-em-dashes && npm run qa:spelling && npm run build && npm run qa:astro-audit && npm run qa:links && npm run qa:no-js && npm run qa:overflow && npm run qa:preview-cropping" + "qa": "npm run typecheck && npm run lint && npm run qa:no-em-dashes && npm run qa:spelling && npm run qa:no-github-links && npm run build && npm run qa:astro-audit && npm run qa:links && npm run qa:no-js && npm run qa:overflow && npm run qa:preview-cropping" }, "repository": { "type": "git", - "url": "git+https://github.com/schmelczer/schmelczer.github.io.git" + "url": "git+https://git.schmelczer.dev/andras/schmelczer.dev.git" }, "keywords": [ "blog", @@ -37,9 +38,9 @@ "author": "Andras Schmelczer", "license": "GPL-3.0-or-later", "bugs": { - "url": "https://github.com/schmelczer/schmelczer.github.io/issues" + "url": "https://git.schmelczer.dev/andras/schmelczer.dev/issues" }, - "homepage": "https://github.com/schmelczer/schmelczer.github.io#readme", + "homepage": "https://git.schmelczer.dev/andras/schmelczer.dev#readme", "devDependencies": { "@astrojs/check": "^0.9.9", "@astrojs/rss": "^4.0.18", diff --git a/src/components/Footer.astro b/src/components/Footer.astro index 8834892..7911e1a 100644 --- a/src/components/Footer.astro +++ b/src/components/Footer.astro @@ -15,7 +15,7 @@ const year = new Date().getFullYear(); diff --git a/src/content.config.ts b/src/content.config.ts index f453391..dda961f 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -100,13 +100,7 @@ const mediaSchema = ({ image }: SchemaContext) => ]) .refine((item) => item.decorative || (Boolean(item.alt) && Boolean(item.caption)), { message: 'Meaningful media needs both alt text and a caption.', - }) - .refine( - (item) => item.type !== 'video' || item.decorative || Boolean(item.transcript), - { - message: 'Meaningful video needs a transcript.', - } - ); + }); // A single collection where each entry can carry an `article` facet (a written // page under /articles/), a `project` facet (a card in the /projects/ diff --git a/src/content/work/_assets/ad-astra-breadboard.jpg b/src/content/work/_assets/ad-astra-breadboard.jpg new file mode 100644 index 0000000..5cf6a76 Binary files /dev/null and b/src/content/work/_assets/ad-astra-breadboard.jpg differ diff --git a/src/content/work/ad-astra-attiny85-game-engine.md b/src/content/work/ad-astra-attiny85-game-engine.md index 7bb18b7..d251012 100644 --- a/src/content/work/ad-astra-attiny85-game-engine.md +++ b/src/content/work/ad-astra-attiny85-game-engine.md @@ -8,7 +8,7 @@ thumbnail: alt: The Ad Astra game running on a small OLED display. links: - label: Source - url: https://github.com/schmelczer/ad_astra + url: https://git.schmelczer.dev/andras/ad_astra article: tags: ['embedded', 'games', 'systems'] stack: ['C', 'ATtiny85V', 'SPI OLED', 'IR receiver', 'EEPROM', 'KiCad'] diff --git a/src/content/work/avoid-early-web-game.md b/src/content/work/avoid-early-web-game.md index cd435d8..dd5b99e 100644 --- a/src/content/work/avoid-early-web-game.md +++ b/src/content/work/avoid-early-web-game.md @@ -8,17 +8,18 @@ thumbnail: alt: Screenshot of the Avoid web game. article: tags: ['games', 'web'] - role: Game author stack: ['JavaScript', 'Canvas'] outcome: My first browser game; kept for the timeline, reused for teaching - audience: general -project: - description: My first browser game, kept around so the timeline is honest. - thumbnail: - alt: Screenshot of the Avoid canvas game. +project: {} + --- -January 2018, my first browser game. You're a peach-coloured dot; red dots stream in from the edges and chase you; the score counts how many the game has dared to spawn so far. It isn't good. I keep it here because pretending the older work didn't happen would be revisionism, and because it marks the moment a `` element stopped being mysterious to me. + + + + + +January 2018, my first browser game. You're a dot; other dots stream in from the edges and chase you; the score counts how many the game has dared to spawn so far. It isn't good. I keep it here because pretending the older work didn't happen would be revisionism, and because it marks the moment a `` element stopped being mysterious to me. It had a second job, too. The README isn't documentation; it's the handout for a small JS/Canvas workshop, in Hungarian: what JavaScript is, what a 2D context gives you, why a game loop wants `requestAnimationFrame` and a delta time, why `var` is past tense. The little game turned out to be the right size for explaining things to people who'd never drawn a pixel from code before. The process advice in that handout (write working code first, then make it pretty) is still roughly the only process I follow. diff --git a/src/content/work/backup-container-btrfs-borg.md b/src/content/work/backup-container-btrfs-borg.md index 1c9b9eb..f03383d 100644 --- a/src/content/work/backup-container-btrfs-borg.md +++ b/src/content/work/backup-container-btrfs-borg.md @@ -8,9 +8,9 @@ thumbnail: alt: Placeholder thumbnail for the backup container post. links: - label: Source - url: https://github.com/schmelczer/backup-container + url: https://git.schmelczer.dev/andras/backup-container - label: Container image - url: https://github.com/schmelczer/backup-container/pkgs/container/backup-container + url: https://git.schmelczer.dev/andras/-/packages/container/backup-container article: tags: ['systems', 'tools'] stack: ['Bash', 'BorgBackup', 'BTRFS', 'Alpine', 'Docker', 'SSH', 'zstd'] diff --git a/src/content/work/declared-shared-simulation-code.md b/src/content/work/declared-shared-simulation-code.md index a918e5a..79bfd29 100644 --- a/src/content/work/declared-shared-simulation-code.md +++ b/src/content/work/declared-shared-simulation-code.md @@ -8,7 +8,7 @@ thumbnail: alt: The decla.red browser game interface showing a space scene. links: - label: Source - url: https://github.com/schmelczer/decla.red + url: https://git.schmelczer.dev/andras/decla.red - label: BSc thesis url: /media/downloads/sdf2d-andras-schmelczer.pdf download: true diff --git a/src/content/work/life-towers-immutable-tries.md b/src/content/work/life-towers-immutable-tries.md index cb5ef42..67e9232 100644 --- a/src/content/work/life-towers-immutable-tries.md +++ b/src/content/work/life-towers-immutable-tries.md @@ -8,7 +8,7 @@ thumbnail: alt: Life Towers goal tracking interface with tower-like visual structures. links: - label: Source - url: https://github.com/schmelczer/life-towers/ + url: https://git.schmelczer.dev/andras/life-towers/ article: featuredOrder: 4 tags: ['systems', 'web', 'tools'] diff --git a/src/content/work/reconcile-text-3-way-merge.md b/src/content/work/reconcile-text-3-way-merge.md index bf71943..db632a7 100644 --- a/src/content/work/reconcile-text-3-way-merge.md +++ b/src/content/work/reconcile-text-3-way-merge.md @@ -10,7 +10,7 @@ links: - label: Demo url: /reconcile/ - label: Source - url: https://github.com/schmelczer/reconcile + url: https://git.schmelczer.dev/andras/reconcile - label: crates.io url: https://crates.io/crates/reconcile-text - label: npm diff --git a/src/content/work/vault-link-obsidian-sync.md b/src/content/work/vault-link-obsidian-sync.md index 05e2e88..bf9554d 100644 --- a/src/content/work/vault-link-obsidian-sync.md +++ b/src/content/work/vault-link-obsidian-sync.md @@ -8,7 +8,7 @@ thumbnail: alt: 'The VaultLink logo: a chain-link mark in a soft gradient.' links: - label: Source - url: https://github.com/schmelczer/vault-link + url: https://git.schmelczer.dev/andras/vault-link - label: Docs url: https://vault-link.schmelczer.dev article: diff --git a/src/lib/site.ts b/src/lib/site.ts index 69b42be..9b4520f 100644 --- a/src/lib/site.ts +++ b/src/lib/site.ts @@ -17,7 +17,7 @@ export const site = { 'Notebook of someone who keeps reaching for the same two moves: let the hard constraint pick the data structure, then keep the API small enough to defend.', url: 'https://schmelczer.dev', email: 'andras@schmelczer.dev', - github: 'https://github.com/schmelczer', + git: 'https://git.schmelczer.dev/andras', linkedin: 'https://www.linkedin.com/in/andras-schmelczer', cv: '/media/downloads/cv-andras-schmelczer.pdf', }; @@ -211,7 +211,7 @@ export function buildPersonJsonLd(extra?: Record) { name: site.name, url: site.url, email: `mailto:${site.email}`, - sameAs: [site.github, site.linkedin], + sameAs: [site.git, site.linkedin], description: site.description, ...extra, };