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