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