Map

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