Map

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