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