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