Map

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