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