{"$schema":"https://ejfox.com/schema/page-twin@1.json","kind":"project","url":"https://ejfox.com/projects/connectology","json_url":"https://ejfox.com/projects/connectology.json","generator":"ejfox.com/json-twin@1","data":{"cacheVersion":"2026-05-13-gear-cards","html":"<p class=\"\">Connectology is for me — a custom front-end replacement for Gephi or a raw D3 force layout: build graphs of nodes and links, then analyze the resulting structure with force-directed layout and graph metrics. The v2 rebuild adds AI-powered node generation and multiple import formats (Obsidian, Mermaid, CSV).</p>\n<p class=\"\">Here's the kind of thing it's for. The other day I had a pretty cool idea — I figured I'd put 60 minutes on the clock and give it a shot. I wanted the robot to read all of the articles and bookmarks I've made in the past 10 years — there's over 3,000 of them — and make a huge knowledge graph of the connections between all of the entities in everything I've ever read. I built a little scraper that extracts relationships from the text of an article, and made a huge database of nodes and edges: who influences who, who is associated with who, what movements and philosophies and schools of thought different people come from. That's not always explicitly stated in the text you're reading — it's part of critical thinking, keeping in your mind what a source's worldview is — and this is an attempt at capturing that in data. Then I wanted to actually <em class=\"\">see</em> them, so I pulled the table into Connectology. It didn't yet have a CSV import, so I had to build one real quick, and then there it was: 600 nodes of my mental model as a big network on the screen. You can imagine sending the robot a couple degrees of that network to inform its responses. But I just wanted to see a cool graph, I'm going to be honest, and I did it in an hour.</p>\n<p class=\"\">That session is on YouTube: <a href=\"https://www.youtube.com/watch?v=kHknnQbIoQU\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"external-link group inline-flex items-center text-blue-600 dark:text-blue-400\" data-preview-url=\"https://www.youtube.com/watch?v=kHknnQbIoQU\">Turning My Bookmarks Into A Knowledge Graph<svg class=\"inline-block w-4 h-4 ml-1 opacity-50 dark:opacity-75 group-hover:opacity-100 transition-opacity align-text-bottom\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M23.498 6.186a3.02 3.02 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.02 3.02 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.02 3.02 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.02 3.02 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814M9.545 15.568V8.432L15.818 12z\" class=\"\"></path></svg></a>.</p>\n<figure role=\"figure\" aria-label=\"The force layout re-distributing a funding network — scatter, settle, repeat\" class=\"\"><video class=\"img-full my-8 rounded-sm\" autoplay loop muted playsinline preload=\"metadata\" poster=\"https://res.cloudinary.com/ejf/video/upload/so_0,f_jpg,q_auto,w_1280/projects/connectology/force-demo.jpg\" src=\"https://res.cloudinary.com/ejf/video/upload/q_auto/projects/connectology/force-demo.mp4\" aria-label=\"The force layout re-distributing a funding network — scatter, settle, repeat\"></video><figcaption class=\"\">The force layout re-distributing a funding network — scatter, settle, repeat</figcaption></figure>\n<figure role=\"figure\" aria-label=\"The editor: force controls, WebGL rendering, and a network of nodes mid-layout\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/projects/connectology/editor.png\" alt=\"The editor: force controls, WebGL rendering, and a network of nodes mid-layout\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/projects/connectology/editor.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/projects/connectology/editor.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/projects/connectology/editor.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/projects/connectology/editor.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"The editor: force controls, WebGL rendering, and a network of nodes mid-layout\" width=\"1440\" height=\"949\" style=\"--splay-rot:2.82deg;\" data-dimensions=\"1440×949\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">The editor: force controls, WebGL rendering, and a network of nodes mid-layout</figcaption>\n</figure>\n<figure role=\"figure\" aria-label=\"Your networks — the home shelf with live previews of each graph\" class=\"\">\n<img src=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/projects/connectology/networks-home.png\" alt=\"Your networks — the home shelf with live previews of each graph\" loading=\"lazy\" decoding=\"async\" srcset=\"https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_640/projects/connectology/networks-home.png 640w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_960/projects/connectology/networks-home.png 960w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1280/projects/connectology/networks-home.png 1280w, https://res.cloudinary.com/ejf/image/upload/c_scale,f_auto,q_auto:good,w_1920/projects/connectology/networks-home.png 1920w\" sizes=\"(max-width: 430px) 92vw, (max-width: 768px) 85vw, 900px\" title=\"Your networks — the home shelf with live previews of each graph\" width=\"1440\" height=\"949\" style=\"--splay-rot:-2.02deg;\" data-dimensions=\"1440×949\" class=\"img-full my-8 rounded-sm img-splay w-full mx-auto py-4\" crossorigin=\"anonymous\">\n<figcaption class=\"\">Your networks — the home shelf with live previews of each graph</figcaption>\n</figure>","title":"Connectology","metadata":{"title":"Connectology","date":"2026-03-01T00:00:00.000Z","category":"Dataviz","featured":true,"url":"https://connectology.room302.studio/","tech":["Nuxt 3","Vue 3","D3","graphology","SQLite","Clerk"],"state":"deployed","ai-involvement":"ai-assisted","context":"collaborative","tags":["dataviz","network","web"],"about":"[[project-notes/connectology]]","words":336,"images":3,"imageDetails":{"total":3,"cloudinary":3,"withDimensions":0},"links":4,"codeBlocks":0,"headers":{},"toc":[],"type":"post"}},"_links":{"self":"https://ejfox.com/projects/connectology.json","html":"https://ejfox.com/projects/connectology","index":"/projects.json"}}