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