Map

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