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