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