Map

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