<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>DavidNexuss</title>
    <link>https://cybernexus.cat</link>
    <description>Personal blog — graphics programming, C++, GPU rendering</description>
    <language>en-US</language>
    <lastBuildDate>Sat, 25 Jul 2026 16:14:43 GMT</lastBuildDate>
    <atom:link href="https://cybernexus.cat/rss.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Joc: putting a hand-written OpenGL engine in the browser</title>
      <link>https://cybernexus.cat/posts/joc.html</link>
      <guid isPermaLink="true">https://cybernexus.cat/posts/joc.html</guid>
      <pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate>
      <description>Joc is an R-Type style shooter I wrote at university on top of my own OpenGL 4.3 engine. Four years later I compiled the whole thing to WebAssembly and WebGL2, which mostly meant discovering every place the engine had been quietly getting away with something. Playable in the post, plus the three bugs that were worth the trip.</description>
    </item>
    <item>
      <title>BoxUniverse: a physics sandbox, and the Box2D that wasn&apos;t there</title>
      <link>https://cybernexus.cat/posts/boxuniverse.html</link>
      <guid isPermaLink="true">https://cybernexus.cat/posts/boxuniverse.html</guid>
      <pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate>
      <description>An old libGDX sandbox where you click to spawn blocks and watch them fall. Porting it to WebAssembly went fine until I hit the part where the physics engine is C++ and the browser backend has no idea what to do with it.</description>
    </item>
    <item>
      <title>Graph_Space: a puzzle about untangling graph isomorphisms</title>
      <link>https://cybernexus.cat/posts/graphspace.html</link>
      <guid isPermaLink="true">https://cybernexus.cat/posts/graphspace.html</guid>
      <pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate>
      <description>I dug up an old libGDX project where the entire game is: here&apos;s a scrambled adjacency matrix, unscramble it by swapping vertices until it matches the original graph. It&apos;s graph isomorphism as a puzzle, and it&apos;s stranger and more fun than it sounds.</description>
    </item>
    <item>
      <title>Growing an Island Out of Two Other Blog Posts</title>
      <link>https://cybernexus.cat/posts/terrain.html</link>
      <guid isPermaLink="true">https://cybernexus.cat/posts/terrain.html</guid>
      <pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate>
      <description>Growing an island in the browser by gluing together the two things I already wrote about, a branching random walk for the mountains and an inverse FFT for the fine detail, plus one new trick for the coastline.</description>
    </item>
    <item>
      <title>Recursive Gaussian Random Fields</title>
      <link>https://cybernexus.cat/posts/gaussianfields.html</link>
      <guid isPermaLink="true">https://cybernexus.cat/posts/gaussianfields.html</guid>
      <pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate>
      <description>Gaussian random fields, fBm, midpoint displacement and spectral synthesis. What the theory actually says, why one exponent controls everything, and three demos you can drag.</description>
    </item>
    <item>
      <title>One Pointer to Wait for Them All</title>
      <link>https://cybernexus.cat/posts/ptr.html</link>
      <guid isPermaLink="true">https://cybernexus.cat/posts/ptr.html</guid>
      <pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate>
      <description>A small C++ handle that is a shared_ptr, a future, and a scheduler dependency node all at once. You dereference it and it just waits for you. Here is how it works and where it bites.</description>
    </item>
    <item>
      <title>Building a Spreadsheet Engine from Scratch</title>
      <link>https://cybernexus.cat/posts/spreadsheet.html</link>
      <guid isPermaLink="true">https://cybernexus.cat/posts/spreadsheet.html</guid>
      <pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate>
      <description>I built a spreadsheet engine from scratch for a university project — complete with its own formula language, a dependency graph, and higher-order functions that would make Excel engineers uncomfortable.</description>
    </item>
    <item>
      <title>Everything Is a File Descriptor</title>
      <link>https://cybernexus.cat/posts/unix.html</link>
      <guid isPermaLink="true">https://cybernexus.cat/posts/unix.html</guid>
      <pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate>
      <description>A collection of low-level C++ Unix experiments: RAII file descriptor wrappers, composable process pipelines, AES stream encryption, UDP sockets, automatic UPnP port forwarding, and a background job scheduler. This is what happens when you spend a weekend in the man pages.
</description>
    </item>
    <item>
      <title>Koala — a small interactive graphics framework</title>
      <link>https://cybernexus.cat/posts/koala.html</link>
      <guid isPermaLink="true">https://cybernexus.cat/posts/koala.html</guid>
      <pubDate>Sun, 19 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Adrian: A Lava Planet with Curl Noise</title>
      <link>https://cybernexus.cat/posts/adrian.html</link>
      <guid isPermaLink="true">https://cybernexus.cat/posts/adrian.html</guid>
      <pubDate>Sat, 20 Apr 2024 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>The Sunflower Algorithm (which is not a sunflower)</title>
      <link>https://cybernexus.cat/posts/sunflower.html</link>
      <guid isPermaLink="true">https://cybernexus.cat/posts/sunflower.html</guid>
      <pubDate>Tue, 02 Apr 2024 00:00:00 GMT</pubDate>
      <description>I wrote a particle generator called the Sunflower algorithm, then found out it is not a sunflower at all. It is a branching random walk with geometric decay, and that turns out to be much more interesting.</description>
    </item>
    <item>
      <title>GPU Particle System with Compute Shaders</title>
      <link>https://cybernexus.cat/posts/cgpuemitter.html</link>
      <guid isPermaLink="true">https://cybernexus.cat/posts/cgpuemitter.html</guid>
      <pubDate>Fri, 15 Mar 2024 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>PrimalityGame: a snake puzzle built around prime numbers</title>
      <link>https://cybernexus.cat/posts/primalitygame.html</link>
      <guid isPermaLink="true">https://cybernexus.cat/posts/primalitygame.html</guid>
      <pubDate>Fri, 15 Mar 2024 00:00:00 GMT</pubDate>
      <description>I built a LibGDX puzzle game where you navigate a snake across a grid, and the only way to score is by visiting checkpoints when your body length is a prime number. Here&apos;s how it works and why prime numbers make surprisingly good game design.</description>
    </item>
    <item>
      <title>Express: A Language That Speaks Math</title>
      <link>https://cybernexus.cat/posts/express.html</link>
      <guid isPermaLink="true">https://cybernexus.cat/posts/express.html</guid>
      <pubDate>Sun, 10 Mar 2024 00:00:00 GMT</pubDate>
      <description>I built a small functional language that takes math expressions and spits out LaTeX. Here is how the grammar, the AST, and the LaTeX printer work together.</description>
    </item>
    <item>
      <title>Building a Recommender System from Scratch</title>
      <link>https://cybernexus.cat/posts/recommender.html</link>
      <guid isPermaLink="true">https://cybernexus.cat/posts/recommender.html</guid>
      <pubDate>Sun, 10 Mar 2024 00:00:00 GMT</pubDate>
      <description>Netflix suggests your next binge. Spotify fills your playlist. Amazon tells you what to buy next. I built one of these from scratch in Java for a university project — K-Means, KNN, Slope One, and all.
</description>
    </item>
    <item>
      <title>Diligent VS OpenGL</title>
      <link>https://cybernexus.cat/posts/diligent.html</link>
      <guid isPermaLink="true">https://cybernexus.cat/posts/diligent.html</guid>
      <pubDate>Tue, 14 Nov 2023 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Programming a ray tracer in CUDA Part 1.2</title>
      <link>https://cybernexus.cat/posts/cuda2.html</link>
      <guid isPermaLink="true">https://cybernexus.cat/posts/cuda2.html</guid>
      <pubDate>Fri, 01 Sep 2023 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Programming a ray tracer in CUDA Part 1</title>
      <link>https://cybernexus.cat/posts/cuda.html</link>
      <guid isPermaLink="true">https://cybernexus.cat/posts/cuda.html</guid>
      <pubDate>Tue, 01 Aug 2023 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>A Concurrency Puzzle</title>
      <link>https://cybernexus.cat/posts/async.html</link>
      <guid isPermaLink="true">https://cybernexus.cat/posts/async.html</guid>
      <pubDate>Mon, 01 May 2023 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>NPhysics: Solving Statics with Physics Simulations</title>
      <link>https://cybernexus.cat/posts/nphysics.html</link>
      <guid isPermaLink="true">https://cybernexus.cat/posts/nphysics.html</guid>
      <pubDate>Fri, 01 Jun 2018 00:00:00 GMT</pubDate>
      <description>I built a statics simulator in high school that solves equilibrium problems by running a real physics engine and doing binary search. Here is how it works.</description>
    </item>
  </channel>
</rss>
