Update content & design (#75)
All checks were successful
Deploy to Pages / build (push) Successful in 2m58s

Reviewed-on: https://home.schmelczer.dev/git/git/andras/schmelczer-dev/pulls/75
This commit is contained in:
Andras Schmelczer 2026-05-28 16:20:12 +01:00
parent 0be50b6c24
commit b554e92e9f
83 changed files with 2995 additions and 723 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 KiB

View file

@ -0,0 +1,47 @@
<svg width="200" height="200" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#4A90E2;stop-opacity:1" />
<stop offset="100%" style="stop-color:#357ABD;stop-opacity:1" />
</linearGradient>
</defs>
<!-- Background circle -->
<circle cx="100" cy="100" r="90" fill="url(#grad1)" opacity="0.15"/>
<!-- Main vault icon -->
<g transform="translate(100, 100)">
<!-- Vault body -->
<rect x="-45" y="-50" width="90" height="80" rx="8" fill="none" stroke="url(#grad1)" stroke-width="6"/>
<!-- Vault door circle -->
<circle cx="0" cy="-10" r="22" fill="none" stroke="url(#grad1)" stroke-width="5"/>
<circle cx="0" cy="-10" r="14" fill="none" stroke="url(#grad1)" stroke-width="3"/>
<circle cx="0" cy="-10" r="6" fill="url(#grad1)"/>
<!-- Vault handle -->
<line x1="0" y1="-4" x2="18" y2="-4" stroke="url(#grad1)" stroke-width="3" stroke-linecap="round"/>
<circle cx="18" cy="-4" r="4" fill="url(#grad1)"/>
<!-- Link chain -->
<g opacity="0.9">
<!-- Left link -->
<ellipse cx="-30" cy="40" rx="12" ry="8" fill="none" stroke="url(#grad1)" stroke-width="4"/>
<!-- Right link -->
<ellipse cx="30" cy="40" rx="12" ry="8" fill="none" stroke="url(#grad1)" stroke-width="4"/>
<!-- Center link connecting them -->
<ellipse cx="0" cy="40" rx="12" ry="8" fill="none" stroke="url(#grad1)" stroke-width="4"/>
</g>
<!-- Sync arrows (subtle) -->
<g opacity="0.5">
<!-- Clockwise arrow top-right -->
<path d="M 35 -35 Q 50 -35 50 -20 L 50 -15" fill="none" stroke="url(#grad1)" stroke-width="2.5" stroke-linecap="round"/>
<polygon points="50,-15 47,-22 53,-22" fill="url(#grad1)"/>
<!-- Counter-clockwise arrow bottom-left -->
<path d="M -35 25 Q -50 25 -50 10 L -50 5" fill="none" stroke="url(#grad1)" stroke-width="2.5" stroke-linecap="round"/>
<polygon points="-50,5 -47,12 -53,12" fill="url(#grad1)"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -1,6 +1,6 @@
---
title: Ad Astra
description: A tiny embedded game engine and custom PCB built around an ATtiny85V.
description: 'A handheld game built from a custom PCB up: ATtiny85V, OLED, IR, EEPROM. 8-bit ALU at 8 MHz, 50 FPS floor.'
thumbnail:
src: ./_assets/ad-astra.jpg
alt: The Ad Astra handheld game running on its OLED display.

View file

@ -1,6 +1,6 @@
---
title: Avoid
description: A small early web game, kept as an archive of first experiments on the web.
description: My first browser game, kept around so the timeline is honest.
thumbnail:
src: ./_assets/avoid.jpg
alt: Screenshot of the Avoid canvas game.

View file

@ -0,0 +1,17 @@
---
title: Backup Container
description: A Bash container around BorgBackup. BTRFS snapshot for atomic consistency, numeric env vars for multi-target 3-2-1, sleep-loop instead of cron.
thumbnail:
src: ./_assets/backup.png
alt: Placeholder thumbnail for the backup container project.
period: '2024-2026'
sortDate: 2024-06-01
technologies: ['Bash', 'BorgBackup', 'BTRFS', 'Alpine', 'Docker', 'SSH', 'zstd']
selected: false
essay: backup-container-btrfs-borg
links:
- label: Source
url: https://github.com/schmelczer/backup-container
- label: Container image
url: https://github.com/schmelczer/backup-container/pkgs/container/backup-container
---

View file

@ -1,6 +1,6 @@
---
title: City Simulation
description: A Unity traffic simulation where REST-controlled traffic lights could produce visible consequences for a cybersecurity challenge.
description: A Unity city where REST-controlled traffic lights made bad PLC code visible as car crashes.
thumbnail:
src: ./_assets/city-simulation.jpg
alt: Screenshot of a Unity city traffic simulation.

View file

@ -1,6 +1,6 @@
---
title: Photo Colour Grader
description: A proof-of-concept colour grading UI based on selecting colours and transforming nearby colour ranges.
description: Pick a colour, edit every nearby colour as a function of distance. A grader built around one interaction idea.
thumbnail:
src: ./_assets/photo-colour-grader.jpg
alt: Screenshot of a colour grading interface applied to a photograph.

View file

@ -1,6 +1,6 @@
---
title: decla.red
description: A team-based mobile multiplayer browser game with shared client/server game logic.
description: Browser multiplayer where the client and server linked the same TypeScript rules module. Concurrency bugs you can't have are bugs you don't have.
thumbnail:
src: ./_assets/declared.jpg
alt: The decla.red browser game interface showing a space scene.

View file

@ -0,0 +1,17 @@
---
title: Fizika
description: 'I needed it for my own physics érettségi: 659 past-paper questions, jQuery, localStorage, no accounts. Eight years on, students still find it.'
thumbnail:
src: ./_assets/fizika.jpg
alt: Screenshot of the Fizika practice app showing topic-selection buttons.
period: '2017-2018'
sortDate: 2018-05-01
technologies: ['jQuery', 'HTML/CSS', 'Node/Express', 'JSON', 'localStorage']
selected: false
essay: fizika-erettsegi-practice-app
links:
- label: Live
url: https://fizika.schmelczer.dev
- label: Source
url: https://home.schmelczer.dev/git/andras/fizika
---

View file

@ -1,12 +1,12 @@
---
title: Fleeting Garden
description: A WebGPU drawing toy where coloured strokes spawn agents that follow them, branch off, and slowly rewrite the patch you laid down.
description: A single-file WebGPU drawing toy. Your strokes seed a swarm; nine numbers per vibe give each preset its personality.
thumbnail:
src: ./_assets/fleeting-garden.jpg
alt: A kaleidoscopic Fleeting Garden snapshot of cyan, violet, and yellow agent trails radiating from a central knot.
period: '2026'
sortDate: 2026-05-01
technologies: ['TypeScript', 'WebGPU', 'WGSL', 'Compute shaders', 'Vite', 'Physarum']
technologies: ['TypeScript', 'WebGPU', 'WGSL', 'Compute shaders', 'Vite', 'Tweakpane']
selected: true
essay: fleeting-garden-webgpu-drawing
links:

View file

@ -1,6 +1,6 @@
---
title: Foreign Exchange Prediction Experiment
description: A frequency-domain prediction experiment using smoothing, differentiation, STFT, extrapolation, and inverse transforms.
description: A Hanning-windowed STFT experiment on EUR/USD. Passable backtest, sober conclusions, no real money risked.
thumbnail:
src: ./_assets/forex.jpg
alt: Chart from a foreign exchange prediction experiment.

View file

@ -0,0 +1,24 @@
---
title: Frame
description: A LAN-only e-ink photo frame. Pulls from self-hosted Immich, gated on Home Assistant presence, Atkinson-dithered to 6 colours, no cloud.
thumbnail:
src: ./_assets/frame.jpg
alt: The e-ink frame on the wall showing a dithered landscape photo with the capture age and EXIF location painted into the bottom corners.
period: '2026'
sortDate: 2026-05-01
technologies:
[
'Python',
'Raspberry Pi Zero 2W',
'Waveshare PhotoPainter',
'Immich',
'Home Assistant',
'numba',
'Atkinson dither',
]
selected: true
essay: frame-eink-photo-display
links:
- label: Source
url: https://home.schmelczer.dev/git/andras/frame
---

View file

@ -1,6 +1,6 @@
---
title: GreatAI
description: A Python framework and research project for making AI deployment best practices easier to adopt.
description: One decorator on a Python function turned it into a deployed ML service. MSc thesis with a survey to back the API choices.
thumbnail:
src: ./_assets/great-ai.png
alt: Example Python code using the GreatAI API.

View file

@ -1,12 +1,12 @@
---
title: Lights Synchronized to Music
description: A Raspberry Pi music player that drove RGB LED strips from audio analysis.
description: Raspberry Pi music player, NumPy FFT, MOSFETs, RGB strips. The first thing I built that I actually finished.
thumbnail:
src: ./_assets/leds.jpg
alt: RGB LED strips glowing from a music synchronization project.
period: 'Spring 2016'
sortDate: 2016-04-01
technologies: ['Python', 'NumPy', 'FFT', 'Raspberry Pi', 'Vanilla web']
technologies: ['Python', 'NumPy', 'FFT', 'Raspberry Pi', 'MOSFETs', 'vanilla web']
selected: false
essay: lights-synchronized-to-music
links: []

View file

@ -1,12 +1,12 @@
---
title: My Notes
description: A minimalist Android markdown note organizer and editor powered by Markwon.
description: A small Android Markdown note app. The point was a few weeks outside the web stack.
thumbnail:
src: ./_assets/my-notes.png
alt: Screenshot of the My Notes Android markdown app.
period: 'November 2019'
sortDate: 2019-11-01
technologies: ['Android', 'Kotlin/Java', 'Markdown', 'Markwon']
technologies: ['Android', 'Markdown', 'Markwon']
selected: false
essay: my-notes-android-markdown-app
links:

View file

@ -1,6 +1,6 @@
---
title: Graph Editor
description: A JavaFX editor for creating and editing input graphs for the cooling system simulator.
description: A drag-and-drop JavaFX editor that let event organisers reconfigure the cooling sim without me sitting next to them.
thumbnail:
src: ./_assets/process-simulator-input.jpg
alt: JavaFX editor interface for the cooling system simulator input graph.

View file

@ -1,6 +1,6 @@
---
title: Cooling System Simulation
description: A graph-based process simulation with a monitoring client and JavaFX input editor.
description: 'A live cooling-plant simulator for a PLC cybersecurity event. Flow as graph traversal and heat as a matrix solve: two passes instead of one PDE.'
thumbnail:
src: ./_assets/nuclear-simulation.jpg
alt: Cooling system simulator interface with pipes, pumps, and temperature values.

View file

@ -0,0 +1,28 @@
---
title: Perfect Postcode
description: A UK property-intelligence map. ~25M historical transactions, ~150 features per row, all u16-quantised in RAM, served from a single Rust binary.
thumbnail:
src: ./_assets/perfect-postcode.jpg
alt: The Perfect Postcode dashboard with active filters on property type, price, transit time, and crime, showing a Manchester map with matching properties as a heatmap.
period: '2026'
sortDate: 2026-05-01
technologies:
[
'Rust',
'Axum',
'Polars',
'h3o',
'rayon',
'PocketBase',
'PMTiles',
'MapLibre',
'deck.gl',
'Conveyal R5',
'Gemini',
]
selected: true
essay: perfect-postcode-rust-property-server
links:
- label: Site
url: https://perfect-postcode.co.uk
---

View file

@ -1,6 +1,6 @@
---
title: Photo Site Generator
description: A static photo site generated from a directory of images, with automatic resizing to multiple quality settings.
description: Point a Webpack script at a folder of photos, get a static site with responsive image variants. An excuse to walk with a camera.
thumbnail:
src: ./_assets/photos.jpg
alt: Screenshot of a generated photography site.

View file

@ -1,6 +1,6 @@
---
title: Platform Game
description: An early 3D game in C with SDL 1.2, random maps, destructible voxels, enemies, powerups, and time slowdown.
description: My Basics of Programming project. 3D voxel game in C and SDL 1.2. Pointers, learned painfully.
thumbnail:
src: ./_assets/platform-game.jpg
alt: Screenshot from an early 3D platform game.

View file

@ -1,12 +1,12 @@
---
title: reconcile-text
description: A Rust library that auto-resolves conflicting text edits without conflict markers, with WebAssembly and Python bindings.
description: One Rust core, three packages. Merges Markdown notes from three editors I don't control, with no operation history. Never emits markers.
thumbnail:
src: ./_assets/reconcile.png
alt: The reconcile-text logo and tagline "Conflict-free 3-way text merging".
period: '2025'
sortDate: 2025-05-01
technologies: ['Rust', 'WebAssembly', 'Python', 'pyo3', 'Operational Transformation']
technologies: ['Rust', 'WebAssembly', 'Python', 'pyo3', 'wasm-bindgen', 'Myers diff']
selected: true
essay: reconcile-text-3-way-merge
links:

View file

@ -1,12 +1,12 @@
---
title: SDF-2D
description: A browser rendering library for optimized 2D ray tracing with signed distance fields.
description: A browser 2D ray-tracer tuned for the phone in your pocket. Tile-based passes, deferred shading, shaders generated per scene and device.
thumbnail:
src: ./_assets/sdf2d.jpg
alt: SDF-2D browser demo with soft lighting effects.
period: 'Autumn-Winter 2020'
sortDate: 2020-12-01
technologies: ['TypeScript', 'WebGL', 'WebGL2', 'SDF rendering']
technologies: ['TypeScript', 'WebGL', 'WebGL2', 'Signed distance fields']
selected: true
essay: sdf-2d-ray-tracing
links:

View file

@ -1,12 +1,12 @@
---
title: Life Towers
description: A multi-device goal tracker where the lasting idea was syncing state with immutable tries.
description: A multi-device goal tracker. The trie underneath made the sync diff free; the towers were just the UI.
thumbnail:
src: ./_assets/towers.jpg
alt: Life Towers goal tracking interface with tower-like visual structures.
period: 'August-September 2019'
sortDate: 2019-09-01
technologies: ['Python', 'Angular', 'State synchronization']
technologies: ['Python', 'Angular', 'TypeScript', 'Immutable trie']
selected: true
essay: life-towers-immutable-tries
links:

View file

@ -0,0 +1,29 @@
---
title: VaultLink
description: 'I refuse to give up the editor: Obsidian, Vim, VS Code, sed. Self-hosted sync that survives all four, built on reconcile-text underneath.'
thumbnail:
src: ./_assets/vault-link.svg
alt: 'The VaultLink logo: a chain-link mark in a soft gradient.'
period: '2025-2026'
sortDate: 2025-12-01
technologies:
[
'Rust',
'axum',
'sqlx',
'SQLite',
'WebSockets',
'TypeScript',
'Obsidian plugin',
'ts-rs',
'wasm-bindgen',
'reconcile-text',
]
selected: true
essay: vault-link-obsidian-sync
links:
- label: Source
url: https://github.com/schmelczer/vault-link
- label: Docs
url: https://vault-link.schmelczer.dev
---