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