Map

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