Map
%3 Piano--Sounds & Melodies Piano--Music Transcribing Sounds & Melodies--Music Transcribing Sounds & Melodies--Rust Music Transcribing--Making music on Linux Music Transcribing--Custom sequencer ReqSnake--Model-Based Systems Engineering ReqSnake--About Model-Based Systems Engineering--Software Alternatives Model-Based Systems Engineering--NixOS About--2025's Devlog About--Scratchpad Audio & DSP--Sonification Audio & DSP--Making music on Linux Sonification--GPU Synth Sonification--Custom synth Making music on Linux--Sonification Making music on Linux--Rust Travel--The Ławka Initiative Travel--2024's Devlog The Ławka Initiative--The word *Bączek* The Ławka Initiative--Contact 2024's Devlog--About 2024's Devlog--Contact Bookmarks--Website experience Bookmarks--Registry-based search engine Website experience--Storybook Website experience--Map Registry-based search engine--Website experience Registry-based search engine--Storybook Flying Shooting Game--2025's Devlog Flying Shooting Game--Scratchpad 2025's Devlog--Scratchpad 2025's Devlog--Movies/shows 2025's Devlog--2022's Devlog 2025's Devlog--2022's Devlog Scratchpad--The Waiting room Scratchpad--2022's Devlog The Waiting room--2025's Devlog The Waiting room--2023's Devlog 2023's Devlog--2025's Devlog 2023's Devlog--Movies/shows Software Alternatives--NixOS Software Alternatives--Daily open-source software guide NixOS--ReqSnake NixOS--Daily open-source software guide Daily open-source software guide--Content creation workflow Daily open-source software guide--Caddy Movies/shows--Reading Movies/shows--Listening Reading--2023's Devlog Reading--How to think Listening--Reading Listening--2026's Devlog 2022's Devlog--The Waiting room 2022's Devlog--2023's Devlog Rust--Audio & DSP Rust--Sonification Content creation workflow--Software Alternatives Content creation workflow--Decentralisation Caddy--Content creation workflow Caddy--Decentralisation Luthier--Audio & DSP Luthier--GPU Synth GPU Synth--Audio & DSP GPU Synth--Custom synth MacBook Air M4 Adventures--Model-Based Systems Engineering MacBook Air M4 Adventures--NixOS 2026's Devlog--2023's Devlog 2026's Devlog--2022's Devlog How to think--2025's Devlog How to think--Cosmic Horror Cosmic Horror--Movies/shows Cosmic Horror--Reading Custom synth--Audio & DSP Custom synth--Luthier Paintings--The Ławka Initiative Paintings--The word *Bączek* The word *Bączek*--Travel The word *Bączek*--How to think Custom sequencer--Sonification Custom sequencer--Custom synth Decentralisation--Registry-based search engine Decentralisation--Daily open-source software guide Words--Reading Words--Cosmic Horror Contact--Travel Contact--Exocortex Colour scheme--Scratchpad Colour scheme--System configuration System configuration--Flying Shooting Game System configuration--MacBook Air M4 Adventures Storybook--Map Storybook--Exocortex Map--Bookmarks Map--Registry-based search engine Exocortex--About Exocortex--Content creation workflow Piano Piano Sounds & Melodies Sounds & Melodies Music Transcribing Music Transcribing ReqSnake ReqSnake Model-Based Systems Engineering Model-Based Systems Engineering About About Audio & DSP Audio & DSP Sonification Sonification Making music on Linux Making music on Linux Travel Travel The Ławka Initiative The Ławka Initiative 2024's Devlog 2024's Devlog ! Bookmarks Bookmarks Website experience Website experience Registry-based search engine Registry-based search engine Flying Shooting Game Flying Shooting Game 2025's Devlog 2025's Devlog Scratchpad Scratchpad The Waiting room The Waiting room ! 2023's Devlog 2023's Devlog Software Alternatives Software Alternatives NixOS NixOS Daily open-source software guide Daily open- source software guide Movies/shows Movies/shows Reading Reading Listening Listening 2022's Devlog 2022's Devlog Rust Rust Content creation workflow Content creation workflow Caddy Caddy Luthier Luthier GPU Synth GPU Synth MacBook Air M4 Adventures MacBook Air M4 Adventures 2026's Devlog 2026's Devlog ! How to think How to think Cosmic Horror Cosmic Horror Custom synth Custom synth Paintings Paintings The word *Bączek* The word *Bączek* Custom sequencer Custom sequencer Decentralisation Decentralisation Words Words Contact Contact Colour scheme Colour scheme System configuration System configuration Storybook Storybook Map Map Exocortex Exocortex
You can click on each node, they are links!

This is an automatically generated graph containing all pages on my website, along with the connections calculated using sentence embeddings. If you're interested, you can read the source code.

How is this thing generated?

Explained non-technically

  1. Using an AI-esque tool, I'm generating a mathematical representation of what each page on my site contains, in terms of contents
  2. I'm laying out each page on a graph, so that it is placed close to pages with similar contents and far away from pages with different contents. E.x. programming-related stuff will be grouped together, far away from something travel-related.
  3. I'm drawing links between pages which are the closest. This also generates the "related posts" section at the bottom of each page. The drawn links only serve aesthetic purposes.
  4. Posts are colored depending on their relatedness to 3 topics:
    • More red: art-related
    • More green: computers-related
    • More blue: music-related
    • I'm working on better coloring algorithms based on various gradients

The gory technical details

  1. All of the posts are fed through an embeddings generator, I'm using the Sentence Transformers Python library.
  2. The embeddings are passed to UMAP, a dimensionality reduction algorithm, which takes in multi-dimensional embeddings and projects it down to a 2D representation, which can be drawn as a graph. The projection is done so that the high-level "structure" of the data is preserved (at least that's what the UMAP paper states, I'm not data scientist to argue with the experts).
  3. I'm connecting each post with its top 2 nearest posts (using more clutters up the map).
  4. Coloring is done via calculating cosine similarity between the post content embeddings and embeddings of simple tag-based sentences, such as "music, melodies" or "art, beauty". Currently the gradient is dead-simple, similarity directly affects the R/G/B channel.
  5. graphviz renders the graphs and outputs them as SVGs.

A much better description of a similiar idea on Simon Willison's blog.

Future plans

  1. Make this thing look more "map-alike", whatever that might mean.
  2. Experiment with text clusterisation & dimensionality reduction algorithms, such as:
    • tSNE
    • K-means clustering
    • UMAP
    • Latent Dirichlet allocation
    • DBSCAN
  3. Add #tags. Automatically assign posts to categories with cosine distances.
  4. Introduce color-coding and other visual markers, allowing viewers to make sense of the data based on different metrics:
    • Post tags
    • Links to/from other posts
    • Links outside (to the netsphere)
    • Other connections generated by NLP
  5. Check out KagiSearch/vectordb
  6. Color gradients with Python
  7. Circos