<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
<url><loc>https://smollergraph.nenuadrian.com/</loc><lastmod>2026-10-22</lastmod></url>
<url><loc>https://smollergraph.nenuadrian.com/about/</loc></url>
<url><loc>https://smollergraph.nenuadrian.com/ep001-graph-databases/</loc><lastmod>2026-10-21</lastmod><image:image><image:loc>https://i.ytimg.com/vi/DFNrCJRnUac/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/DFNrCJRnUac/maxresdefault.jpg</video:thumbnail_loc><video:title>How graph databases work: Neo4j and Kùzu | Building smollerGraph #1</video:title><video:description>We start a series that builds smollerGraph, a small graph database, from scratch in C++, heading towards a knowledge graph that mvGPT can ask for facts. Before writing any code, we look at the property graph model, why following relationships beats joining tables for queries that walk many hops, and Cypher, on a small graph about animals. Then we run a food chain query on Neo4j and Kùzu, compare how each of them keeps its graph, and write a first graph in C++, kept in memory, with a walk down the food chain and GoogleTest tests.</video:description><video:player_loc>https://www.youtube.com/embed/DFNrCJRnUac</video:player_loc><video:duration>1971</video:duration><video:publication_date>2026-10-21</video:publication_date><video:tag>graph database</video:tag><video:tag>knowledge graph</video:tag><video:tag>neo4j</video:tag><video:tag>kuzu</video:tag><video:tag>kùzu</video:tag><video:tag>cypher</video:tag><video:tag>gql</video:tag><video:tag>property graph</video:tag><video:tag>database internals</video:tag><video:tag>index-free adjacency</video:tag><video:tag>csr</video:tag><video:tag>embedded database</video:tag><video:tag>bloodhound</video:tag><video:tag>cybersecurity</video:tag><video:tag>ldbc</video:tag><video:tag>c++</video:tag><video:tag>from scratch</video:tag><video:tag>smollergraph</video:tag><video:tag>mvgpt</video:tag></video:video></url>
<url><loc>https://smollergraph.nenuadrian.com/ep002-pages-on-disk/</loc><lastmod>2026-10-21</lastmod><image:image><image:loc>https://i.ytimg.com/vi/oi8U7nDbq1U/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/oi8U7nDbq1U/maxresdefault.jpg</video:thumbnail_loc><video:title>Graph database in C++: pages on disk | Building smollerGraph #2</video:title><video:description>We move smollerGraph&#39;s graph out of memory and onto disk, in pages of 4 KiB that a pager reads and writes, the way SQLite&#39;s file format does. Nodes and relationships become 32-byte records in those pages, with each node at the head of a chain of its relationships, as in Neo4j&#39;s record format, and the tests from episode one pass without a change. Along the way the code gets a Docker build and GitHub Actions, and sg load and sg walk keep the graph in a folder between runs.</video:description><video:player_loc>https://www.youtube.com/embed/oi8U7nDbq1U</video:player_loc><video:duration>1742</video:duration><video:publication_date>2026-10-21</video:publication_date><video:tag>graph database</video:tag><video:tag>c++</video:tag><video:tag>storage engine</video:tag><video:tag>pages</video:tag><video:tag>fixed-size records</video:tag><video:tag>record store</video:tag><video:tag>index-free adjacency</video:tag><video:tag>pread</video:tag><video:tag>pwrite</video:tag><video:tag>docker</video:tag><video:tag>github actions</video:tag><video:tag>googletest</video:tag><video:tag>database internals</video:tag><video:tag>from scratch</video:tag><video:tag>smollergraph</video:tag></video:video></url>
<url><loc>https://smollergraph.nenuadrian.com/ep003-how-slow-is-it/</loc><lastmod>2026-10-21</lastmod><image:image><image:loc>https://i.ytimg.com/vi/8yGPJej4jGQ/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/8yGPJej4jGQ/maxresdefault.jpg</video:thumbnail_loc><video:title>Graph database benchmark: Neo4j vs Kùzu | Building smollerGraph #3</video:title><video:description>We measure smollerGraph against Neo4j and Kùzu on a made-up social graph of a hundred thousand people and a million relationships, generated with a fixed seed so each machine gets an identical one. sg load reports how long loading takes, a new sg bench command times a two-hop walk from a thousand people, and a Python script loads the graph into Kùzu and Neo4j, in Docker, to ask them for those people too. We chart the results and go through why smollerGraph is slow where it&#39;s slow, and quick where it&#39;s quick, for now.</video:description><video:player_loc>https://www.youtube.com/embed/8yGPJej4jGQ</video:player_loc><video:duration>1220</video:duration><video:publication_date>2026-10-21</video:publication_date><video:tag>graph database</video:tag><video:tag>benchmark</video:tag><video:tag>neo4j</video:tag><video:tag>kuzu</video:tag><video:tag>kùzu</video:tag><video:tag>c++</video:tag><video:tag>cypher</video:tag><video:tag>database performance</video:tag><video:tag>two-hop query</video:tag><video:tag>storage engine</video:tag><video:tag>social graph</video:tag><video:tag>from scratch</video:tag><video:tag>smollergraph</video:tag></video:video></url>
<url><loc>https://smollergraph.nenuadrian.com/ep004-drawing-the-graph/</loc><lastmod>2026-10-22</lastmod><image:image><image:loc>https://i.ytimg.com/vi/n5onlxgmHaY/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/n5onlxgmHaY/maxresdefault.jpg</video:thumbnail_loc><video:title>Graph visualization in the browser with D3.js | Building smollerGraph #4</video:title><video:description>We give smollerGraph a UI of its own, after its code gets checked on each push by cpplint, against Google&#39;s style guide, and by clang-tidy, and its errors move to Abseil&#39;s absl::Status. A new sg serve command answers HTTP requests with the graph as JSON, through cpp-httplib, and a page in the browser draws it with D3&#39;s force simulation. A walk lights up the nodes each hop reaches, and clicking a node opens an inspector that shows its record as it&#39;s kept on disk, with its page, its offset, its bytes and its chain of relationships.</video:description><video:player_loc>https://www.youtube.com/embed/n5onlxgmHaY</video:player_loc><video:duration>2961</video:duration><video:publication_date>2026-10-22</video:publication_date><video:tag>graph visualization</video:tag><video:tag>d3</video:tag><video:tag>d3.js</video:tag><video:tag>abseil</video:tag><video:tag>absl status</video:tag><video:tag>cpplint</video:tag><video:tag>clang-tidy</video:tag><video:tag>force directed graph</video:tag><video:tag>graph database</video:tag><video:tag>c++</video:tag><video:tag>cpp-httplib</video:tag><video:tag>http server</video:tag><video:tag>json api</video:tag><video:tag>svg</video:tag><video:tag>javascript</video:tag><video:tag>neo4j browser</video:tag><video:tag>smollergraph</video:tag></video:video></url>
<url><loc>https://smollergraph.nenuadrian.com/ep005-buffer-pool/</loc><lastmod>2026-10-22</lastmod><image:image><image:loc>https://i.ytimg.com/vi/CVeog8Y-Y8A/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/CVeog8Y-Y8A/maxresdefault.jpg</video:thumbnail_loc><video:title>Database buffer pool in C++: keeping pages in memory | Building smollerGraph #5</video:title><video:description>We give smollerGraph a buffer pool, the part of a database that keeps pages in memory, after counting the pages it reads and writes. Loading a million relationships read and wrote over six million of them, a system call each. The pool has frames, a page table, pins and dirty pages, and a clock that picks the page to evict. A latch keeps sg serve&#39;s threads out of each other&#39;s way, and we measure it all again against Neo4j and Kùzu, and look at why databases keep a pool of their own instead of using mmap.</video:description><video:player_loc>https://www.youtube.com/embed/CVeog8Y-Y8A</video:player_loc><video:duration>1290</video:duration><video:publication_date>2026-10-22</video:publication_date><video:tag>buffer pool</video:tag><video:tag>database internals</video:tag><video:tag>page cache</video:tag><video:tag>clock algorithm</video:tag><video:tag>cache eviction</video:tag><video:tag>c++</video:tag><video:tag>graph database</video:tag><video:tag>mmap</video:tag><video:tag>storage engine</video:tag><video:tag>neo4j</video:tag><video:tag>kuzu</video:tag><video:tag>database performance</video:tag><video:tag>smollergraph</video:tag></video:video></url>
</urlset>
