<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xml" href="/atom.xsl"?><feed xmlns="http://www.w3.org/2005/Atom" >

  <title>bojidar-bg.dev — Fun</title>
  <link href="https://bojidar-bg.dev/fun.xml" rel="self"></link>
  <link href="https://bojidar-bg.dev/fun/" rel="alternate"></link>
  <updated>2026-02-07</updated>
<author><name>Bojidar Marinov</name></author>  <id>urn:uuid:ba59bfce-1892-48cd-bea7-e875d31ae545</id>
  <icon>https://bojidar-bg.dev/favicon.png</icon>

    <entry >
    <title>Cursor survival</title>
    <link href="https://bojidar-bg.dev/fun/cursor-survival/"/>
<id>urn:uuid:f01f394c-5347-41b9-b5c0-0999fa8c076e</id>    <updated>2026-02-21T14:00:00Z</updated>    <published>2026-02-20T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="cursor-survival">Cursor survival</h1>
<p>What happens if the mouse cursor is the protagonist of a game? (Inspired by <a href="https://www.youtube.com/@alanbecker">Alan Becker</a>'s "Animation vs Animator" series, as well as <a href="https://realpeach.itch.io/cursorblade">Cursorblade</a>)</p>
<p>Hover over the game rectangle to start; avoid getting hit; fight off the amassing mob by hovering over them.
Likely unplayable on mobile; may contain flashing pictures.</p>
<div class="float">
<img src="/fun/cursor-survival.jpg" alt="A group of triangles chase and shoot at the mouse cursor." />
<div class="figcaption">A group of triangles chase and shoot at the mouse cursor.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/cursor-survival/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Puzzle shapes</title>
    <link href="https://bojidar-bg.dev/fun/puzzle-shapes/"/>
<id>urn:uuid:2e6a463b-76c9-4506-bca6-a62b44ee9ebb</id>    <updated>2026-02-21T14:00:00Z</updated>    <published>2026-02-13T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="puzzle-shapes">Puzzle shapes</h1>
<p>An investigation of puzzle shapes for <a href="/fun/../blog/2026-02-14-puzzle-maths/">"Jigsaw puzzle maths"</a>.</p>
<p>Click on the puzzle to regenerate the shape; click near the edges to toggle edge pieces; click on the statistics to toggle percentage mode.</p>
<div class="float">
<img src="/fun/puzzle-shapes.jpg" alt="A generated jigsaw puzzle, along with a few sliders to control its behavior, and some statistics at the bottom" />
<div class="figcaption">A generated jigsaw puzzle, along with a few sliders to control its behavior, and some statistics at the bottom</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/puzzle-shapes/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Gray spiral</title>
    <link href="https://bojidar-bg.dev/fun/gray-spiral/"/>
<id>urn:uuid:4b03af44-f7a0-4c01-bcba-cb96cc4df425</id>    <updated>2026-02-07T14:00:00Z</updated>    <published>2026-02-03T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="gray-spiral">Gray spiral</h1>
<p>Unsure why this one came out so gray. It's so grayscale that I'm reminded of my phone's "bedtime" mode! <span class="emoji" data-emoji="joy">😂</span></p>
<div class="float">
<img src="/fun/gray-spiral.jpg" alt="A gray spiral of cut-out circle arcs transforms into ripples and then back into a spiral" />
<div class="figcaption">A gray spiral of cut-out circle arcs transforms into ripples and then back into a spiral</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/gray-spiral/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Meshing squares</title>
    <link href="https://bojidar-bg.dev/fun/meshing-squares/"/>
<id>urn:uuid:e6186fce-eb66-4b6a-9551-aad2268aa47a</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2026-01-20T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="meshing-squares">Meshing squares</h1>
<p>The basic animation here is that of 3 squares taking turns to advance by one step. However, when you repeat the animation with ever smaller squares meshing in and out of each other, it becomes quite confusing.</p>
<div class="float">
<img src="/fun/meshing-squares.png" alt="Four towers of squares, that travel between adjacent towers." />
<div class="figcaption">Four towers of squares, that travel between adjacent towers.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/meshing-squares/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Circle shifting</title>
    <link href="https://bojidar-bg.dev/fun/circle-shifting/"/>
<id>urn:uuid:371853b3-4a09-469f-9c7e-5a1557c87aa6</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2026-01-17T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="circle-shifting">Circle shifting</h1>
<p>This was made for a programming exercise in which I presented a simplified version of the code and asked students to adapt it to recreate the exact effect: including the order of sliding and the fact that circles don't blink in and out of existence.</p>
<p>(Result of the exercise: it's easy to see the effects you need to replicate, but hard to figure out the tricks used <span class="emoji" data-emoji="sweat_smile">😅</span>)</p>
<div class="float">
<img src="/fun/circle-shifting.png" alt="A grid of circles that slide up/right. First, even columns, the even rows, then odd columns, then odd rows." />
<div class="figcaption">A grid of circles that slide up/right. First, even columns, the even rows, then odd columns, then odd rows.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/circle-shifting/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Recursive Pythagorean gasket</title>
    <link href="https://bojidar-bg.dev/fun/recursive-pythagorean-gasket/"/>
<id>urn:uuid:76ab88fb-2f53-4d13-bac6-abb10405b07e</id>    <updated>2026-02-02T14:00:00Z</updated>    <published>2026-01-13T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="recursive-pythagorean-gasket">Recursive Pythagorean gasket</h1>
<p>A recursive version of the Pythagorean gasket <a href="https://mathstodon.xyz/@DaniLaura/115888403092190067">shown by DaniLaura on Mastodon</a>.</p>
<p>Click to regenerate (might be a bit laggy).</p>
<div class="float">
<img src="/fun/recursive-pythagorean-gasket.jpg" alt="A fractal of circles, where the smallest circles look like cherry blossoms on a white tree." />
<div class="figcaption">A fractal of circles, where the smallest circles look like cherry blossoms on a white tree.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/recursive-pythagorean-gasket/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Morphing grid</title>
    <link href="https://bojidar-bg.dev/fun/morphing-grid/"/>
<id>urn:uuid:624b3a3e-c77c-4abc-ae0d-de04adaa81b0</id>    <updated>2026-02-02T14:00:00Z</updated>    <published>2026-01-12T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="morphing-grid">Morphing grid</h1>
<p>An animation born out of the discussion with a student on why we draw grids with rectangles and not with lines.<br />
...clearly, it's so that I can't suggest we animate the lines independently.</p>
<p>Click to start the animation.</p>
<div class="float">
<img src="/fun/morphing-grid.jpg" alt="A grid whose lines rotate and dance left and right" />
<div class="figcaption">A grid whose lines rotate and dance left and right</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/morphing-grid/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Particles 2</title>
    <link href="https://bojidar-bg.dev/fun/particles-2/"/>
<id>urn:uuid:98f0ae6e-ccd7-4db1-9cd0-112701f944ed</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2026-01-07T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="particles-2">Particles 2</h1>
<p>This particle system is made of particles that switch between 4 states: growing, shrinking, turning-left, and turning-right. New particles preferentially spawn at the position of current particles.</p>
<p>Click to make a burst of new particles.</p>
<div class="float">
<img src="/fun/particles-2.jpg" alt="White particles leaving trails on a dark green background" />
<div class="figcaption">White particles leaving trails on a dark green background</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/particles-2/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Particle swarm</title>
    <link href="https://bojidar-bg.dev/fun/particle-swarm/"/>
<id>urn:uuid:3b2b6c0e-7ae9-4e1b-be4c-974d525f3388</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-12-20T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="particle-swarm">Particle swarm</h1>
<p>Move the mouse to have particles swarms around it. Hold down mouse button to hold the particles in place.</p>
<div class="float">
<img src="/fun/particle-swarm.jpg" alt="A swarm of particles chasing down the mouse cursor" />
<div class="figcaption">A swarm of particles chasing down the mouse cursor</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/particle-swarm/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Space critter</title>
    <link href="https://bojidar-bg.dev/fun/space-critter/"/>
<id>urn:uuid:9ef4a267-ea6f-4e60-97e7-cca3b5982f31</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-12-19T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="space-critter">Space critter</h1>
<p>An attempt to replicate the liveliness of <a href="/fun/musical-critter/">"Musical critter"</a> with a oldschool vector spaceship.</p>
<p>Use arrow keys to move around. No mobile support.</p>
<div class="float">
<img src="/fun/space-critter.png" alt="An animated spaceship made of green outlined rectangles" />
<div class="figcaption">An animated spaceship made of green outlined rectangles</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/space-critter/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Pulsing cycloids</title>
    <link href="https://bojidar-bg.dev/fun/pulsing-cycloids/"/>
<id>urn:uuid:9e463a82-a236-4325-951d-58397486528e</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2025-12-18T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="pulsing-cycloids">Pulsing cycloids</h1>
<div class="float">
<img src="/fun/pulsing-cycloids.png" alt="A pulsing circle of cycloids" />
<div class="figcaption">A pulsing circle of cycloids</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/pulsing-cycloids/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Hexagon explorer</title>
    <link href="https://bojidar-bg.dev/fun/hexagon-explorer/"/>
<id>urn:uuid:3a3d5e5e-e7ff-4bf3-84fe-451ff34e6c08</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2025-12-17T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="hexagon-explorer">Hexagon explorer</h1>
<p>An unfinished experiment in interactive map generation. Each hexagon color affects the likelihood of nearby hexagons being same/different -- similar to there being a deck of cards contributed by the surroundings. The idea was that you could focus on exploring the areas you like, thus developing them further than the areas you dislike.</p>
<p>Legend:</p>
<ul>
<li>Green: grass. Contributes 5 grass cards and 1 hill card to adjacent explorations.</li>
<li>Yellow: hill. Contributes 4 hill, 1 grass, and 1 mountain card to adjacent explorations.</li>
<li>Blue: mountain. Contributes 2 grass, 2 hill, and 2 mountain cards to adjacent explorations.</li>
</ul>
<p>Ideally, would introduce longer-ranged card contributions—e.g. an "outpost" card which contributes 1 "monster den" card to all hexagons exactly 3 tiles away. Also, conditional contributions, such as a road tile which contributes "8" roads to nearby explorations <em>if</em> it's adjacent to less than 2 roads. And finally, sub-tiles/cards, such as a "sheep" card which can randomly appear on top of grass tiles or a "townfolk" card which appears randomly in towns.</p>
<p>Combining all three would be a way to make questlines: e.g. the "terrorized townfolk" sub-card of "city" tiles contributes 1 "goblin king" sub-card to all "mountain" tiles, as long as there hasn't been a "goblin king" already drawn on the map. Then, the "goblin king" card contributes 1 "heroic adventurer" sub-sub-card to any "tavern" sub-cards of "road" tiles, and so on.</p>
<div class="float">
<img src="/fun/hexagon-explorer.png" alt="An unassuming map of hexagons" />
<div class="figcaption">An unassuming map of hexagons</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/hexagon-explorer/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Sine ribbon</title>
    <link href="https://bojidar-bg.dev/fun/sine-ribbon/"/>
<id>urn:uuid:25cc4505-9e05-4378-b676-2895e9e6f167</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2025-12-14T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="sine-ribbon">Sine ribbon</h1>
<div class="float">
<img src="/fun/sine-ribbon.png" alt="A flowing, wavy ribbon of lines" />
<div class="figcaption">A flowing, wavy ribbon of lines</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/sine-ribbon/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Reflection fractal</title>
    <link href="https://bojidar-bg.dev/fun/reflection-fractal/"/>
<id>urn:uuid:8aae2f02-1389-4421-88e8-12008dcc3a1c</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-12-07T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="reflection-fractal">Reflection fractal</h1>
<p>Click to create lines. The canvas below tries to draw a fractal formed by shooting rays and keeping track of the side they exit from.<br />
... it is not a very good fractal, however, so this gets the WIP tag for now <span class="emoji" data-emoji="sweat_smile">😅</span></p>
<div class="float">
<img src="/fun/reflection-fractal.jpg" alt="Two canvases: one lets you draw lines, while the other scans a colorful burst" />
<div class="figcaption">Two canvases: one lets you draw lines, while the other scans a colorful burst</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/reflection-fractal/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Ellipse-tracing system</title>
    <link href="https://bojidar-bg.dev/fun/ellipse-tracing-system/"/>
<id>urn:uuid:3ac6184c-35b9-4954-a126-3dc88de75ae6</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-12-07T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="ellipse-tracing-system">Ellipse-tracing system</h1>
<p>Here's a curious fact: the following code draws an ellipse:</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb1-1"><a href="#cb1-1" tabindex="-1"></a>x <span class="op">=</span> <span class="dv">0</span><span class="op">;</span> y <span class="op">=</span> <span class="dv">1</span><span class="op">;</span> t <span class="op">=</span> <span class="fl">0.25</span> <span class="co"># Or any other x, y, -2 &lt; t &lt; 2</span></span>
<span id="cb1-2"><a href="#cb1-2" tabindex="-1"></a><span class="cf">for</span> i <span class="kw">in</span> <span class="bu">range</span>(<span class="dv">100</span>):</span>
<span id="cb1-3"><a href="#cb1-3" tabindex="-1"></a>  x <span class="op">-=</span> y <span class="op">*</span> t</span>
<span id="cb1-4"><a href="#cb1-4" tabindex="-1"></a>  y <span class="op">+=</span> x <span class="op">*</span> t</span></code></pre></div>
<p>Explaining <em>why</em> this is exactly an ellipse is not intuitive, but with <a href="https://math.stackexchange.com/questions/5112814/proving-that-x-x-yt-y-y-xt-traces-an-ellipse">the help of people over at MathOverflow</a>, it can be shown that it fits nicely into the general equation of an ellipse.<br />
(Or, you could also use eigenvectors and eigenvalues to prove quasiperiodicity, but why complicate the math? <span class="emoji" data-emoji="joy">😂</span>)</p>
<div class="float">
<img src="/fun/ellipse-tracing-system.jpg" alt="An ellipse is drawn, dot-by-dot, over a circle" />
<div class="figcaption">An ellipse is drawn, dot-by-dot, over a circle</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/ellipse-tracing-system/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Musical Critter</title>
    <link href="https://bojidar-bg.dev/fun/musical-critter/"/>
<id>urn:uuid:5d98e7e9-63d5-4d13-91a6-fe62a66d329a</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-12-06T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="musical-critter">Musical Critter</h1>
<p>Exploration of creating a lively, animated character with sound! (Including breathing noises; hopefully those aren't too disconcerting.)</p>
<p>Use the arrow keys to move around. No mobile support.</p>
<div class="float">
<img src="/fun/musical-critter.png" alt="A triangular critter in a triangular hoodie stands on a bronze ruler, making sounds as it moves and jumps around." />
<div class="figcaption">A triangular critter in a triangular hoodie stands on a bronze ruler, making sounds as it moves and jumps around.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/musical-critter/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Copper melange</title>
    <link href="https://bojidar-bg.dev/fun/copper-melange/"/>
<id>urn:uuid:2648c425-6dee-412f-a51e-70ca114cccf8</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2025-11-27T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="copper-melange">Copper melange</h1>
<p>Splitting rectangles according to the copper ratio (<code>c = 4 + 1/c</code>), inspired by <a href="https://mathstodon.xyz/@DaniLaura/115622381545290109">@<span>DaniLaura@mathstodon.xyz</span></a>.</p>
<p>Click to re-render.</p>
<div class="float">
<img src="/fun/copper-melange.png" alt="A colorful mess of rectangles" />
<div class="figcaption">A colorful mess of rectangles</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/copper-melange/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>X-Y Mover</title>
    <link href="https://bojidar-bg.dev/fun/xy-mover/"/>
<id>urn:uuid:110a3325-dd22-4086-b639-500d6f98cee5</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2025-11-23T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="x-y-mover">X-Y Mover</h1>
<p>A game where you have to navigate an obstacle course using separate X-axis and Y-axis motion devices connected by a wire. An experiment in organizing things with classes, as I ponder how to best explain those to students.</p>
<p>Move with the arrow keys. On mobile, press the side of the screen you want to move in.</p>
<div class="float">
<img src="/fun/xy-mover.png" alt="An obstacle course with a stick with green and red ends in the top corner and a goal area in the lower right" />
<div class="figcaption">An obstacle course with a stick with green and red ends in the top corner and a goal area in the lower right</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/xy-mover/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>3D Maze</title>
    <link href="https://bojidar-bg.dev/fun/3d-maze/"/>
<id>urn:uuid:d2938a10-5a6c-49ea-b6b6-7ad35c2925ca</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-11-14T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="id_3d-maze">3D Maze</h1>
<p>Press the left mouse button (or space) to move forward. Move the mouse turn the camera.</p>
<p>Try to reach the green-colored exit. The green line points the right direction.</p>
<div class="float">
<img src="/fun/3d-maze.png" alt="A gray three-dimensional maze with a yellow cube trying to find its way to a green spot while turning red cubes on the way into purple" />
<div class="figcaption">A gray three-dimensional maze with a yellow cube trying to find its way to a green spot while turning red cubes on the way into purple</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/3d-maze/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Gold-rimmed veil</title>
    <link href="https://bojidar-bg.dev/fun/gold-rimmed-veil/"/>
<id>urn:uuid:e469552c-2869-47d7-9c44-bc4d8f3b7b5c</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-11-08T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="gold-rimmed-veil">Gold-rimmed veil</h1>
<div class="float">
<img src="/fun/gold-rimmed-veil.jpg" alt="A scruntched-up, meandering gold line, makes gray shadows towards the center of the screen" />
<div class="figcaption">A scruntched-up, meandering gold line, makes gray shadows towards the center of the screen</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/gold-rimmed-veil/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>De Rahm curves</title>
    <link href="https://bojidar-bg.dev/fun/de-rham-curve/"/>
<id>urn:uuid:f4fa5ef3-c4bb-4a20-90a0-48440d5f7f77</id>    <updated>2026-02-07T14:00:00Z</updated>    <published>2025-11-05T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="de-rahm-curves">De Rahm curves</h1>
<p>An exploration of <a href="https://en.wikipedia.org/wiki/De_Rham_curve#General_affine_maps">De Rahm curves</a>. Plenty of sliders to play around with!</p>
<div class="float">
<img src="/fun/de-rahm-curve.jpg" alt="A fractal curve formed by a specially-crafted iterated function system." />
<div class="figcaption">A fractal curve formed by a specially-crafted iterated function system.</div>
</div>
<p>Credits:</p>
<ul>
<li>Koch, Peano, and Levy C presets were taken from <a href="https://en.wikipedia.org/wiki/De_Rham_curve#Classification_and_examples">Wikipedia</a>.</li>
<li>The "Vague cloudy vibes" preset was contributed by <a href="https://doserver.top/">Daniel / CactiChameleon9</a></li>
</ul>                <p><a href="https://bojidar-bg.dev/fun/de-rham-curve/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Block-packing game</title>
    <link href="https://bojidar-bg.dev/fun/block-packing-game/"/>
<id>urn:uuid:c56c9c9f-930f-4cbb-9290-14ec6a4e7fe5</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2025-10-23T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="block-packing-game">Block-packing game</h1>
<p>Drag shapes to place them on the grid. Complete lines to score points. Use points to progress through a series of ever-more-expensive inversions of the grid, called "flips".</p>
<p>Can you reach a total score of more than 50 points?</p>
<div class="float">
<img src="/fun/block-packing-game.png" alt="A grid where tiles can be placed, along with a tile and &quot;reserve&quot; space in the lower part of the screen" />
<div class="figcaption">A grid where tiles can be placed, along with a tile and "reserve" space in the lower part of the screen</div>
</div>
<p>This might be my most-polished p5.js game. It's also some of the worst code I've ever written, to the point that I've used it as an exercise in navigating unreadable code. The worst part of it is the code responsible for the adaptable layout; it's scattered in multiple places and stubbornly refuses to use an explict representation of rectangles.</p>
<p>I could rewrite it with better classes/modules/datatypes... but where's the fun in that? <span class="emoji" data-emoji="joy">😂</span></p>                <p><a href="https://bojidar-bg.dev/fun/block-packing-game/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Scale</title>
    <link href="https://bojidar-bg.dev/fun/scale/"/>
<id>urn:uuid:e7c67d21-2c8c-4100-bff1-2e2e05d5ad52</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-10-09T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="scale">Scale</h1>
<p>Game made during a code-together discussion with students, using the prompt "Heavy" from <a href="https://inktober.com/rules">Inktober 2025, day 9</a>.</p>
<p>Draw two shapes, then guess which one is heavier (that is, has a larger area). Get more point for guessing between shapes that are very close in area.</p>
<div class="float">
<img src="/fun/scale.png" alt="A scale, with prompts to draw the left / right shape, and guess which is heavier." />
<div class="figcaption">A scale, with prompts to draw the left / right shape, and guess which is heavier.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/scale/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Noise visualizer</title>
    <link href="https://bojidar-bg.dev/fun/noise-visualizer/"/>
<id>urn:uuid:f992b692-800b-4ca1-a56f-86fb7dd6c274</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2025-10-08T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="noise-visualizer">Noise visualizer</h1>
<div class="float">
<img src="/fun/noise-visualizer.jpg" alt="An animated wavy burst of lines, with heavy Moiré effect." />
<div class="figcaption">An animated wavy burst of lines, with heavy Moiré effect.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/noise-visualizer/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Catenary chain</title>
    <link href="https://bojidar-bg.dev/fun/catenary-chain/"/>
<id>urn:uuid:ca09fc3f-cc8d-4480-9309-44004bd0b898</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-10-01T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="catenary-chain">Catenary chain</h1>
<p>This (somewhat heavy) sketch was made for <a href="https://mathober.com/2025">Mathober 2025, day 1: "Link"</a>.</p>
<p>My first real use of Verlet Integration!</p>
<p>Move your mouse to interact with (and maybe break) the chain.</p>
<div class="float">
<img src="/fun/catenary-chain.png" alt="A hanging chain forms a catenary curve, as it casts a shadow on the green wall behind" />
<div class="figcaption">A hanging chain forms a catenary curve, as it casts a shadow on the green wall behind</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/catenary-chain/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Dancing Cairo circles</title>
    <link href="https://bojidar-bg.dev/fun/dancing-circles/"/>
<id>urn:uuid:6d30ff2f-9bb9-406b-85a0-3132eca55dd0</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-10-01T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="dancing-cairo-circles-with-music">Dancing Cairo circles (with music!)</h1>
<p>Made for a <a href="https://mastodon.social/@bojidar_bg/115296104836061996">TilingTuesday post on Mastodon</a>.</p>
<p>Click somewhere on the page to start the music.</p>
<div class="float">
<img src="/fun/dancing-circles.jpg" alt="White circles positioned at the centers of a cairo tiling take turns randomly swapping with a neighboring circle." />
<div class="figcaption">White circles positioned at the centers of a cairo tiling take turns randomly swapping with a neighboring circle.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/dancing-circles/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Ninja circle</title>
    <link href="https://bojidar-bg.dev/fun/ninja-circle/"/>
<id>urn:uuid:8eeba334-033e-429d-8750-cc21845df30f</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2025-09-29T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="ninja-circle">Ninja circle</h1>
<p>Effects experiment. How dramatic can you make clicking on the canvas?</p>
<div class="float">
<img src="/fun/ninja-circle.png" alt="A circle dramatically split in half" />
<div class="figcaption">A circle dramatically split in half</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/ninja-circle/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Match sets</title>
    <link href="https://bojidar-bg.dev/fun/match-sets/"/>
<id>urn:uuid:bd74f767-39f5-4d8a-be17-81bbba9103a6</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-09-24T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="match-sets">Match sets</h1>
<p>Inspired a game I saw once, which in turn is inspired by the board game <a href="https://en.wikipedia.org/wiki/Set_(card_game)">SET!</a>.</p>
<p>Match sets of three cards, where each set has either all cards or no cards matching in every single attribute: color, shape, or number.</p>
<p>Press H to highlight possible matches. Drag to make a match out of adjacent or diagonally-adjacent tiles.</p>
<p>There is no scoring system yet.</p>
<div class="float">
<img src="/fun/match-sets.png" alt="A board of square cards, each of them having one to three shapes that are either circles, square, or triangles, and come in either blue, red, or green. A few of them have been highlighted" />
<div class="figcaption">A board of square cards, each of them having one to three shapes that are either circles, square, or triangles, and come in either blue, red, or green. A few of them have been highlighted</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/match-sets/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Sling</title>
    <link href="https://bojidar-bg.dev/fun/sling/"/>
<id>urn:uuid:fc63fea0-f705-40ad-b852-393881511731</id>    <updated>2026-02-07T14:00:00Z</updated>    <published>2025-09-18T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="sling">Sling</h1>
<p>Started off by simulating a rope, ended up attaching a "stone" to it to make a classical sling.</p>
<p>Stay still and click somewhere in the left end to pick up a stone, then spin to throw it at the target.</p>
<div class="float">
<img src="/fun/sling.jpg" alt="A target hangs in midair in front of a foggy landscape. Large numbers loom in the background. On the left, a sling is readied to shoot the target." />
<div class="figcaption">A target hangs in midair in front of a foggy landscape. Large numbers loom in the background. On the left, a sling is readied to shoot the target.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/sling/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Butterfly/bat</title>
    <link href="https://bojidar-bg.dev/fun/butterfly-bat/"/>
<id>urn:uuid:ba46eac5-b9a5-4e83-a98b-b1333dc8471e</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2025-09-16T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="butterflybat">Butterfly/bat</h1>
<div class="float">
<img src="/fun/butterfly-bat.png" alt="A semi-transparent, yellow, flapping butterfly. Or bat." />
<div class="figcaption">A semi-transparent, yellow, flapping butterfly. Or bat.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/butterfly-bat/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Scribbler</title>
    <link href="https://bojidar-bg.dev/fun/scribbler/"/>
<id>urn:uuid:89f0847d-f4e3-47ab-83b0-a5a798566451</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2025-09-10T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="scribbler">Scribbler</h1>
<p>Click (do not drag) to draw a random curve between the last point and the new point.</p>
<p>Some quotes from people I've showed this to:</p>
<blockquote>
<p>WHAT?
<cite>Friend #1</cite></p>
</blockquote>
<blockquote>
<p>This is weird. Bizarro. What's the point of it?
<cite><del>Friend #2</del> Acquaintance #1</cite></p>
</blockquote>
<div class="float">
<img src="/fun/scribbler.jpg" alt="A random scribbley line made with the tool; hard to interpret as anything, but could pass for the signature." />
<div class="figcaption">A random scribbley line made with the tool; hard to interpret as anything, but could pass for the signature.</div>
</div>
<p>(Note: the random generator used in this sketch is not cryptographically secure. Please do not use this for generating signatures.)</p>                <p><a href="https://bojidar-bg.dev/fun/scribbler/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Color Match</title>
    <link href="https://bojidar-bg.dev/fun/color-match/"/>
<id>urn:uuid:20e94f73-f0d0-4c0b-8d95-362dacbdb7de</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2025-09-10T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="color-match">Color Match</h1>
<p>A classic. Try to remember a color, then pick the right color when presented with multiple options.</p>
<p>The technique of randomizing colors in a grid as to confuse the person playing took a lot of trial and error. But, from watching others play the game, it seems to have worked!</p>
<p>Can you reach over 25?</p>
<div class="float">
<img src="/fun/color-match.png" alt="Click to play; remember the color you see, then select the right third of the screen when prompted to" />
<div class="figcaption">Click to play; remember the color you see, then select the right third of the screen when prompted to</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/color-match/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Triangle strider</title>
    <link href="https://bojidar-bg.dev/fun/triangle-strider/"/>
<id>urn:uuid:d147d6a5-3cfd-4d07-b49b-c21f42d980f8</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-08-27T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="triangle-strider">Triangle strider</h1>
<p>An experiment in self-avoiding walks. Also, having fun with JavaScript's splat operator.</p>
<div class="float">
<img src="/fun/triangle-strider.png" alt="A spider-like creature darts around a hexagonal grid, avoiding stepping on places where it&#39;s stepped before." />
<div class="figcaption">A spider-like creature darts around a hexagonal grid, avoiding stepping on places where it's stepped before.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/triangle-strider/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Koch snowflake with matrices</title>
    <link href="https://bojidar-bg.dev/fun/koch-matrices/"/>
<id>urn:uuid:409ea4f9-6e57-421a-bbe6-51873f543aa3</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2025-08-14T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="koch-snowflake-with-matrices">Koch snowflake with matrices</h1>
<p>As the quip goes: when I wrote this code, only I and God knew what how it works. Now only God knows.</p>
<p>Looking at it today, it seems like like the code takes the list of points forming a Koch Snowflake, and passes them through a series of transformation matrices to get a new list of points. Can one do that? Who knows! Does it work? Apparently! Why do the points themselves have 6 coordinates? Maybe they are triangles! Ask them yourself! <em>hmph</em></p>
<p>...At least the deep dark blue is nice <span class="emoji" data-emoji="grin">😁</span></p>
<div class="float">
<img src="/fun/koch-matrices.png" alt="A Koch snowflake against a deep blue background." />
<div class="figcaption">A Koch snowflake against a deep blue background.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/koch-matrices/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Spinny hexagon/hexagon-star tiling</title>
    <link href="https://bojidar-bg.dev/fun/spinny-hexagon-stars/"/>
<id>urn:uuid:431400d2-bbc3-4f4a-9bfb-a18d4dffdba6</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-08-10T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="spinny-hexagonhexagon-star-tiling">Spinny hexagon/hexagon-star tiling</h1>
<p>Made for #TilingTuesday on <a href="https://mastodon.social/@bojidar_bg/115015026919841565">Mastodon</a></p>
<div class="float">
<img src="/fun/spinny-hexagon-stars.jpg" alt="Blue hexagons with yellow borders that spin in place to turn the tiling into hexagonal stars and smaller hexagons touching at their corners." />
<div class="figcaption">Blue hexagons with yellow borders that spin in place to turn the tiling into hexagonal stars and smaller hexagons touching at their corners.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/spinny-hexagon-stars/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Circle wave</title>
    <link href="https://bojidar-bg.dev/fun/circle-wave/"/>
<id>urn:uuid:62b56bdc-d9ce-4fe8-b3a0-aa94827c20a1</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-08-09T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="circle-wave">Circle wave</h1>
<div class="float">
<img src="/fun/circle-wave.jpg" alt="A wave formed by the mis-aligned waverings of concentric circles" />
<div class="figcaption">A wave formed by the mis-aligned waverings of concentric circles</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/circle-wave/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Particle automata</title>
    <link href="https://bojidar-bg.dev/fun/particle-automata/"/>
<id>urn:uuid:ddce16e6-cb23-443d-a203-572b4f7c7cb0</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-08-06T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="particle-automata">Particle automata</h1>
<p>An experiment in making rules for interactions between colored particles, and seeing the kinds of systems that evolve from that.</p>
<p>Couldn't figure a way to fit momentum preservation in without having all particles collapse into one rapidly-interacting particle complex, so, currently every interaction gains kinetic energy but we add a bit of friction so it doesn't explode.</p>
<div class="float">
<img src="/fun/particle-automata.png" alt="An explosive bunch of particles." />
<div class="figcaption">An explosive bunch of particles.</div>
</div>
<p>Rules pictured here:</p>
<ul>
<li>A green captures a blue to become 1 purple.</li>
<li>A yellow captures a blue to become 1 red.</li>
<li>A green and a yellow collide to form 4 blue.</li>
<li>A red and a blue collide to form 2 green.</li>
<li>A purple and a blue collide to form 2 yellow.</li>
</ul>
<p>(The Green + Blue + Blue -&gt; 2 Yellow chain (and v.v.) is necessary to maintain an on-going reaction; otherwise, the blue particles are quickly absorbed by groups of green/yellow to form non-reactive red/purple)</p>                <p><a href="https://bojidar-bg.dev/fun/particle-automata/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Bowling planet</title>
    <link href="https://bojidar-bg.dev/fun/bowling-planet/"/>
<id>urn:uuid:3ce58bf0-8f68-49e3-84f3-0e8907931425</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-08-04T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="bowling-planet">Bowling planet</h1>
<p>I'm somehow fond of this particular two-dimensional manner of drawing planets.</p>
<div class="float">
<img src="/fun/bowling-planet.png" alt="A rendition of Earth with rounded rectangles forming the coastlines and with three big bowling-ball holes somewhere around the Null Point" />
<div class="figcaption">A rendition of Earth with rounded rectangles forming the coastlines and with three big bowling-ball holes somewhere around the <a href="https://en.wikipedia.org/wiki/Null_Island">Null Point</a></div>
</div>
<p>(The bowling ball holes are only subconsciously inspired by <a href="https://what-if.xkcd.com/46/">XKCD What If #46</a>.)</p>                <p><a href="https://bojidar-bg.dev/fun/bowling-planet/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Shiny Sphere</title>
    <link href="https://bojidar-bg.dev/fun/shiny-sphere/"/>
<id>urn:uuid:8b5ecaaa-7a3d-4741-b30e-b317854cb26a</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2025-07-31T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="shiny-sphere">Shiny Sphere</h1>
<p>Experimenting with raytracing in p5.strands. Also seen in <a href="/fun/../blog/2025-08-11-shiny-things/">Chasing Shiny Things</a>.</p>
<div class="float">
<img src="/fun/shiny-sphere.png" alt="A yellow-gold sphere spins in a circle, reflecting light." />
<div class="figcaption">A yellow-gold sphere spins in a circle, reflecting light.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/shiny-sphere/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Interactive truchet</title>
    <link href="https://bojidar-bg.dev/fun/interactive-truchet/"/>
<id>urn:uuid:705ffa34-5767-4112-86e7-d7986afd6b5f</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-07-30T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="interactive-truchet">Interactive truchet</h1>
<p>Move your mouse along the screen to spin the truchet tiles.<br />
Double click to change the shape of the tiles.</p>
<div class="float">
<img src="/fun/interactive-truchet.jpg" alt="A grid of Truchet tiles, spun every so way" />
<div class="figcaption">A grid of Truchet tiles, spun every so way</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/interactive-truchet/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Abelian sandpile</title>
    <link href="https://bojidar-bg.dev/fun/abelian-sandpile/"/>
<id>urn:uuid:cd18d161-b659-4107-9c82-9ff1dc77a73f</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2025-07-30T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="abelian-sandpile">Abelian sandpile</h1>
<p>An exploration of animating <a href="https://en.wikipedia.org/wiki/Abelian_sandpile_model">Abelian sandpiles</a>. Turned more fun by adding "negative sandpiles" and ensuring the total sum on-screen is always 0.</p>
<p>Click to drop a square grain of sand. Right click to drop a circle grain of sand. Enjoy the chain reactions.</p>
<div class="float">
<img src="/fun/abelian-sandpile.png" alt="A gray square waiting to be filled with orange and blue grains of sand, following the Abelian sandpile model" />
<div class="figcaption">A gray square waiting to be filled with orange and blue grains of sand, following the Abelian sandpile model</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/abelian-sandpile/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Sync-unsync</title>
    <link href="https://bojidar-bg.dev/fun/sync-unsync/"/>
<id>urn:uuid:2550d75a-d671-42de-811d-6f9223bc07ff</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-07-24T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="sync-unsync">Sync-unsync</h1>
<p>This animation was inspired by a <a href="https://www.kickstarter.com/projects/aeitam/an-experiment-in-time-and-memory/description">time-travel story</a> by a friend.</p>
<p>...Any accuracy to the story is to be presumed coincidential. I haven't re-read it yet! (But it's an amazing book, and you <em>need</em> to read it!)</p>
<div class="float">
<img src="/fun/sync-unsync.jpg" alt="A complex animation of circles going left to right, but taking a loop in the middle." />
<div class="figcaption">A complex animation of circles going left to right, but taking a loop in the middle.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/sync-unsync/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Spinning hexagon cubes</title>
    <link href="https://bojidar-bg.dev/fun/spinning-hexagon-cubes/"/>
<id>urn:uuid:cadb8160-ad16-47d3-8798-9073ace504cc</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-07-20T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="spinning-hexagon-cubes">Spinning hexagon cubes</h1>
<p>Made for a <a href="https://mastodon.social/@bojidar_bg/114938084979719509">TilingTuesday post on Mastodon</a>.</p>
<div class="float">
<img src="/fun/spinning-hexagon-cubes.png" alt="A tiling of rhombs that are actually cubes which spin in place." />
<div class="figcaption">A tiling of rhombs that are actually cubes which spin in place.</div>
</div>
<p>(Known bug: cubes around the corners might be blinking in and out of existence at certain screen sizes)</p>                <p><a href="https://bojidar-bg.dev/fun/spinning-hexagon-cubes/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Checkerboard animation 1</title>
    <link href="https://bojidar-bg.dev/fun/checkerboard-animation-1/"/>
<id>urn:uuid:fa68a341-0b88-43c7-86f7-ad2efde0f950</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-07-19T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="checkerboard-animation-1">Checkerboard animation 1</h1>
<p>A simple checkerboard animation.</p>
<div class="float">
<img src="/fun/checkerboard-animation-1.png" alt="A checkerboard with rows/columns sliding against each other" />
<div class="figcaption">A checkerboard with rows/columns sliding against each other</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/checkerboard-animation-1/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Checkerboard animation 2</title>
    <link href="https://bojidar-bg.dev/fun/checkerboard-animation-2/"/>
<id>urn:uuid:92841e06-e000-49c0-88f5-602b2d103ef0</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-07-19T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="checkerboard-animation-2">Checkerboard animation 2</h1>
<p>A much more complicated checkerboard animation. Made right after <a href="/fun/checkerboard-animation-1/">checkerboard animation 1</a> for a <a href="https://mastodon.social/@bojidar_bg/114896863389826647">TilingTuesday post on Mastodon</a>.</p>
<div class="float">
<img src="/fun/checkerboard-animation-2.png" alt="A checkerboard with white/black squares spinning in place" />
<div class="figcaption">A checkerboard with white/black squares spinning in place</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/checkerboard-animation-2/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Lissajous scanner</title>
    <link href="https://bojidar-bg.dev/fun/lissajous-scanner/"/>
<id>urn:uuid:d15dfc21-9ae5-41c8-99d8-1309919d347f</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-07-06T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="lissajous-scanner">Lissajous scanner</h1>
<p>It's apparently possible to draw a <a href="https://en.wikipedia.org/wiki/Lissajous_curve">Lissajous curve</a> row by row!</p>
<div class="float">
<img src="/fun/lissajous-scanner.png" alt="Lissajous curves are draw into the canvas as series of points; once a curve is finished, a new one starts drawing" />
<div class="figcaption">Lissajous curves are draw into the canvas as series of points; once a curve is finished, a new one starts drawing</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/lissajous-scanner/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Gear face</title>
    <link href="https://bojidar-bg.dev/fun/gear-face/"/>
<id>urn:uuid:93d65e3a-4b88-4ef5-93ef-ceb61155646f</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-06-16T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="gear-face">Gear face</h1>
<p>An odd face with interlocking spinny eyes.</p>
<p>As <a href="https://mastodon.social/@bojidar_bg/114689424069972603">mentioned on Mastodon</a>, "Impromptu-coding late at night... might not have beens the best idea, on second thought."</p>
<p>Click to change colors.</p>
<div class="float">
<img src="/fun/gears-face.jpg" alt="A smiley face with resting gear look." />
<div class="figcaption">A smiley face with resting gear look.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/gear-face/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Square dance-off</title>
    <link href="https://bojidar-bg.dev/fun/square-dance-off/"/>
<id>urn:uuid:c0622b27-d8c3-4622-ad4f-5c65806e7418</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2025-06-14T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="square-dance-off">Square dance-off</h1>
<p>A silly experiment based around generating random rhythms.</p>
<div class="float">
<img src="/fun/square-dance-off.jpg" alt="Two circles facing each other, tangoing around the center in synchronized precision." />
<div class="figcaption">Two circles facing each other, tangoing around the center in synchronized precision.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/square-dance-off/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Prismatic gem</title>
    <link href="https://bojidar-bg.dev/fun/prismatic-gem/"/>
<id>urn:uuid:e2790d26-14b0-40a9-8b62-337bd4a8ac2b</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-05-31T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="prismatic-gem">Prismatic gem</h1>
<div class="float">
<img src="/fun/prismatic-gem.jpg" alt="A white rhomb pulsing with many different colors" />
<div class="figcaption">A white rhomb pulsing with many different colors</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/prismatic-gem/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Scroll-to-rotate, 2D</title>
    <link href="https://bojidar-bg.dev/fun/scroll-rotate-2d/"/>
<id>urn:uuid:bf7a6b9e-04d3-43fa-be9a-683008196e4d</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-05-22T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="scroll-to-rotate-2d">Scroll-to-rotate, 2D</h1>
<p>This sketch was my contribution to a <a href="https://mastodon.social/@bojidar_bg/114552759183869989">Mastodon discussion</a> on the many different ways creative tools understand scroll wheels, along with <a href="/fun/scroll-rotate-2d/">Scroll-to-rotate, 3D</a>.</p>
<p>Scroll to find the hidden message. (Does not work on mobile.)</p>
<div class="float">
<img src="/fun/scroll-rotate-2d.png" alt="An unassuming rectangle that says &quot;this is a test, try scrolling&quot;" />
<div class="figcaption">An unassuming rectangle that says "this is a test, try scrolling"</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/scroll-rotate-2d/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Scroll-to-rotate, 3D</title>
    <link href="https://bojidar-bg.dev/fun/scroll-rotate-3d/"/>
<id>urn:uuid:38b61e86-7e60-48e2-a712-3807cb0dd520</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-05-22T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="scroll-to-rotate-3d">Scroll-to-rotate, 3D</h1>
<p>This sketch was my contribution to a <a href="https://mastodon.social/@bojidar_bg/114552759183869989">Mastodon discussion</a> on the many different ways creative tools understand scroll wheels, along with <a href="/fun/scroll-rotate-2d/">Scroll-to-rotate, 2D</a>.</p>
<p>Scroll to find the hidden message. (Does not work on mobile.)</p>
<div class="float">
<img src="/fun/scroll-rotate-3d.png" alt="An unassuming rectangle that says &quot;this is a test, try scrolling&quot;" />
<div class="figcaption">An unassuming rectangle that says "this is a test, try scrolling"</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/scroll-rotate-3d/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Pushy universe</title>
    <link href="https://bojidar-bg.dev/fun/pushy-universe/"/>
<id>urn:uuid:325d7c91-bb5a-46d0-a9d3-a7df623ed50f</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-04-29T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="pushy-universe">Pushy universe</h1>
<p>A O(n²) simulation of repulsive forces. Click to add new points.</p>
<div class="float">
<img src="/fun/pushy-universe.png" alt="Circles push each other away on a slippery wrap-around gray background." />
<div class="figcaption">Circles push each other away on a slippery wrap-around gray background.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/pushy-universe/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Teleportation effect</title>
    <link href="https://bojidar-bg.dev/fun/teleportation-effect/"/>
<id>urn:uuid:6fd631b5-97c3-41ce-8d9c-b88df8ee05f6</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-04-28T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="teleportation-effect">Teleportation effect</h1>
<p>Click to teleport.</p>
<div class="float">
<img src="/fun/teleportation-effect.jpg" alt="Lines stroke the distance between the mouse and a circle" />
<div class="figcaption">Lines stroke the distance between the mouse and a circle</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/teleportation-effect/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Natural Knight tiling</title>
    <link href="https://bojidar-bg.dev/fun/natural-knight-tiling/"/>
<id>urn:uuid:6d5956d5-d7f0-4b57-9479-293885ef9a4e</id>    <updated>2026-02-02T14:00:00Z</updated>    <published>2025-04-23T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="natural-knight-tiling">Natural Knight tiling</h1>
<p>In 2025, I was intrigued by the polygons formed out of chess knight moves on an integer grid. I produced a <a href="https://mastodon.social/@bojidar_bg/tagged/KnightPolygons">whole series of "knight tilings"</a>.</p>
<p>This sketch is a self-assembling crystal of the three smallest knight polygons.</p>
<p>Click to regenerate.</p>
<div class="float">
<img src="/fun/natural-knight-tiling.jpg" alt="A tiling of small, colorful rhombs" />
<div class="figcaption">A tiling of small, colorful rhombs</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/natural-knight-tiling/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Splats</title>
    <link href="https://bojidar-bg.dev/fun/splats/"/>
<id>urn:uuid:d5116c8c-0993-4629-840f-3966bca7cbea</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-04-19T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="splats">Splats</h1>
<p>Click to make a splat.</p>
<p>Made as a quick showcase of what p5.js 2.0's new <code>splineVertex</code> function can do.</p>
<div class="float">
<img src="/fun/splats.jpg" alt="A canvas of coloful paint splotches" />
<div class="figcaption">A canvas of coloful paint splotches</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/splats/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Circle lockpick</title>
    <link href="https://bojidar-bg.dev/fun/circle-lockpick/"/>
<id>urn:uuid:42047f79-86f7-4be2-a562-d63ddc21b3f4</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-03-03T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="circle-lockpick">Circle lockpick</h1>
<p>Try to get all the squares aligned on the line. Move the mouse to lock them into place.</p>
<p>Made as an example of p5.js's <a href="https://beta.p5js.org/reference/p5/screentoworld/"><code>screenToWorld</code> function</a>.</p>
<div class="float">
<img src="/fun/circle-lockpick.jpg" alt="Rectangles spin along concentric tracks, stopping when the mouse is closer to the center than them" />
<div class="figcaption">Rectangles spin along concentric tracks, stopping when the mouse is closer to the center than them</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/circle-lockpick/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>XOR lissajous</title>
    <link href="https://bojidar-bg.dev/fun/xor-lissajous/"/>
<id>urn:uuid:ac3bccd8-1e9e-4abd-939e-ca6688e920c5</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-02-23T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="xor-lissajous">XOR lissajous</h1>
<p>Inspired by <a href="https://www.chiark.greenend.org.uk/~sgtatham/quasiblog/xor/#pixels">S.G. Tatham's article on the XOR operation</a>.</p>
<div class="float">
<img src="/fun/xor-lissajous.png" alt="A Lissajous curve drawn and undrawn by XOR-ed lines" />
<div class="figcaption">A Lissajous curve drawn and undrawn by XOR-ed lines</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/xor-lissajous/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Scribble pen</title>
    <link href="https://bojidar-bg.dev/fun/scribble-pen/"/>
<id>urn:uuid:08e7cfe2-abaa-401e-a182-c6ae8883a4c8</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-02-17T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="scribble-pen">Scribble pen</h1>
<p>Move the mouse to trace curved lines.</p>
<div class="float">
<img src="/fun/scribble-pen.png" alt="A &quot;penplotter&quot; chases the mouse leaving a trace behind it" />
<div class="figcaption">A "penplotter" chases the mouse leaving a trace behind it</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/scribble-pen/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Sunshine</title>
    <link href="https://bojidar-bg.dev/fun/sunshine/"/>
<id>urn:uuid:fa3992ee-c349-49ae-b33c-11a8a4e7ef46</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-02-11T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="sunshine">Sunshine</h1>
<p>Click the shivering application icon to start the animation.</p>
<div class="float">
<img src="/fun/sunshine.png" alt="A shivering cloud icon stop shivering as the sun comes up; text: &quot;Sunshine is right around the corner&quot;" />
<div class="figcaption">A shivering cloud icon stop shivering as the sun comes up; text: "Sunshine is right around the corner"</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/sunshine/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Glitch butterfly</title>
    <link href="https://bojidar-bg.dev/fun/glitch-butterfly/"/>
<id>urn:uuid:a9bdf295-110e-4b38-a95b-fc5afbe3c1df</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-01-27T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="glitch-butterfly">Glitch butterfly</h1>
<p>Made for Genuary <a href="https://genuary.art/2025/prompts#jan27">2025, January 27</a>, prompt: Make something with no randomness or trigonometry.</p>
<div class="float">
<img src="/fun/glitch-butterfly.png" alt="A butterfly made out of glitchy rectangles" />
<div class="figcaption">A butterfly made out of glitchy rectangles</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/glitch-butterfly/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Gradient gears</title>
    <link href="https://bojidar-bg.dev/fun/gradient-gears/"/>
<id>urn:uuid:12b1e17f-db37-4361-a4a8-1da661f1e709</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-01-22T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="gradient-gears">Gradient gears</h1>
<p>Made for Genuary <a href="https://genuary.art/2025/prompts#jan22">2025, January 22</a>, prompt: Gradient.</p>
<div class="float">
<img src="/fun/gradient-gears.jpg" alt="A spiral of gears made out of forcefields, slowly pushing on each other" />
<div class="figcaption">A spiral of gears made out of forcefields, slowly pushing on each other</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/gradient-gears/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Square spiral</title>
    <link href="https://bojidar-bg.dev/fun/square-spiral/"/>
<id>urn:uuid:f5860753-0e7b-401d-aa00-7992b3140f64</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-01-22T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="square-spiral">Square spiral</h1>
<div class="float">
<img src="/fun/square-spiral.png" alt="A square spiral is drawn and re-drawn constantly" />
<div class="figcaption">A square spiral is drawn and re-drawn constantly</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/square-spiral/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Random clock</title>
    <link href="https://bojidar-bg.dev/fun/random-clock/"/>
<id>urn:uuid:6fd91baa-67be-467c-971f-feb5429cd230</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-01-21T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="random-clock">Random clock</h1>
<div class="float">
<img src="/fun/random-clock.jpg" alt="An analog clock with randomized arcs and lines behind." />
<div class="figcaption">An analog clock with randomized arcs and lines behind.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/random-clock/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Spinning squares</title>
    <link href="https://bojidar-bg.dev/fun/spinning-squares/"/>
<id>urn:uuid:cf101859-6d41-4d7a-8281-5e029ea6004c</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-01-20T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="spinning-squares">Spinning squares</h1>
<div class="float">
<img src="/fun/spinning-squares.png" alt="A recursive stack of squares turn from corner to corner in the square containing them" />
<div class="figcaption">A recursive stack of squares turn from corner to corner in the square containing them</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/spinning-squares/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Running square</title>
    <link href="https://bojidar-bg.dev/fun/running-square/"/>
<id>urn:uuid:93b65f61-e86f-4252-bc89-d26d7f101f91</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2025-01-18T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="running-square">Running square</h1>
<blockquote>
<p>Run, square, run!</p>
</blockquote>
<div class="float">
<img src="/fun/running-square.png" alt="A square endlessly tumbling forward, yet never moving on the screen." />
<div class="figcaption">A square endlessly tumbling forward, yet never moving on the screen.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/running-square/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Wall of eyes</title>
    <link href="https://bojidar-bg.dev/fun/eyes/"/>
<id>urn:uuid:fe79c59a-5c41-42a0-99bc-d8b7a96bc3b0</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2024-10-11T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="wall-of-eyes">Wall of eyes</h1>
<p>Caution: eyes blinking may startle some.</p>
<div class="float">
<img src="/fun/eyes.jpg" alt="A wall of eyes, staring at the mouse. Every now and then, they blink." />
<div class="figcaption">A wall of eyes, staring at the mouse. Every now and then, they blink.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/eyes/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>XOR grid</title>
    <link href="https://bojidar-bg.dev/fun/xor-grid/"/>
<id>urn:uuid:97f98d35-d0d4-4804-97cc-f805e43d5c51</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2024-09-24T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="xor-grid">XOR grid</h1>
<p>Move your mouse over the grid.</p>
<p>Can you clean up the resulting mess?</p>
<div class="float">
<img src="/fun/xor-grid.png" alt="A grid of squares, toggled when you move over them" />
<div class="figcaption">A grid of squares, toggled when you move over them</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/xor-grid/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Rotating fractal</title>
    <link href="https://bojidar-bg.dev/fun/rotating-fractal/"/>
<id>urn:uuid:f13f6d83-f0ec-4723-ab22-2f53c2198d0a</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2024-09-19T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="rotating-fractal">Rotating fractal</h1>
<div class="float">
<img src="/fun/rotating-fractal.png" alt="A fractal of squares that rotate; each square vertex replaced by a copy of the shape" />
<div class="figcaption">A fractal of squares that rotate; each square vertex replaced by a copy of the shape</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/rotating-fractal/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Triangle space partitioning</title>
    <link href="https://bojidar-bg.dev/fun/triangle-space-partition/"/>
<id>urn:uuid:7825e4fc-6b26-457c-bb7f-fc6dcb3fc602</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2024-09-13T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="triangle-space-partitioning">Triangle space partitioning</h1>
<p>Double-click to restart.</p>
<div class="float">
<img src="/fun/triangle-space-partition.jpg" alt="An animated recursive subdivision of space into triangles" />
<div class="figcaption">An animated recursive subdivision of space into triangles</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/triangle-space-partition/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>COTR</title>
    <link href="https://bojidar-bg.dev/fun/COTR/"/>
<id>urn:uuid:0f8fc52d-9e66-49b4-82df-9a73450439d2</id>    <updated>2026-02-07T14:00:00Z</updated>    <published>2024-09-10T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="cotr">COTR</h1>
<p>An infinite descent game.</p>
<p>Can you get past the second win screen? Or get a win without taking damage (and thus without the "But at what cost?" message)?</p>
<div class="float">
<img src="/fun/COTR.png" alt="COTR: click/space to start, arrow keys to move, collect coins to go fast." />
<div class="figcaption">COTR: click/space to start, arrow keys to move, collect coins to go fast.</div>
</div>
<p>A bit of lore: Initially, I thought of the circle as somehow transcending beyond the mortal plane by collecting coins. Now this doesn't make any sense: transcendence does not come from riches, and depending on who you ask, it even comes from a lack of riches! Plus, the only "transcendence" achieved is moving faster, while being just as vulnerable to the "mortal" world—not very transcedent at all.<br />
Yet, two things have remained of that initial ideation: the name, COTR, as a portmanteau of "coin" and "transcend", and the circle glowing brighter as more "coins", for the lack of better word, are collected.</p>
<p>The map generation algorithm was inspired by the <a href="https://www.bbc.com/future/article/20190919-the-maze-puzzle-hidden-within-an-early-video-game">BBC Article on <em>Entombed</em>'s maze generation</a>.</p>                <p><a href="https://bojidar-bg.dev/fun/COTR/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Electric streaks</title>
    <link href="https://bojidar-bg.dev/fun/electric-streaks/"/>
<id>urn:uuid:f9de04b8-83a1-42d8-8ea2-d8e54939a4b7</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2024-09-07T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="electric-streaks">Electric streaks</h1>
<p>An experiment of forming something similar to <a href="https://en.wikipedia.org/wiki/Electrical_treeing">Electric trees</a> using a 1-dimensional cellular automata.</p>
<div class="float">
<img src="/fun/electric-streaks.jpg" alt="A series of lines stretch down across the canvas, growing more organized with time" />
<div class="figcaption">A series of lines stretch down across the canvas, growing more organized with time</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/electric-streaks/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>MIDI Visualizer</title>
    <link href="https://bojidar-bg.dev/fun/midi-visualizer/"/>
<id>urn:uuid:6f92596d-fa1c-4fbe-8d78-0bd98c5a5464</id>    <updated>2026-02-02T14:00:00Z</updated>    <published>2024-09-07T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="midi-visualizer">MIDI Visualizer</h1>
<p>An experiment in audio-visual effects. This experiment requires Web MIDI.</p>
<p>(Note that the code only check for connected MIDI devices when it's started; refresh the page if you can't see your device.)</p>
<p>Click to get a new set of colors.</p>
<div class="float">
<img src="/fun/midi-visualizer.jpg" alt="A visualization of MIDI inputs" />
<div class="figcaption">A visualization of MIDI inputs</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/midi-visualizer/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Particles 1</title>
    <link href="https://bojidar-bg.dev/fun/particles-1/"/>
<id>urn:uuid:344dcaf2-d4e1-4c78-95f2-f7df3b77faa2</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2024-09-03T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="particles-1">Particles 1</h1>
<p>This particle system is made of particles that meaner between going left and right based on a sine function.</p>
<p>Press and hold to queue a burst of new particles.</p>
<div class="float">
<img src="/fun/particles-1.jpg" alt="Light green particles leaving floral trails on a dark red background" />
<div class="figcaption">Light green particles leaving floral trails on a dark red background</div>
</div>
<blockquote>
<p>Could you make money selling that?
<cite>Friend I showed this to</cite></p>
</blockquote>
<blockquote>
<p>Yeah, but I like open-source / open art. Maybe I can sell the service of making custom lock screens or such instead? <span class="emoji" data-emoji="thinking">🤔</span>
<cite>My reply</cite></p>
</blockquote>                <p><a href="https://bojidar-bg.dev/fun/particles-1/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Drifting car</title>
    <link href="https://bojidar-bg.dev/fun/drifting-car/"/>
<id>urn:uuid:04f72b6d-d9a8-429c-9fca-eee76091a8bd</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2024-08-16T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="drifting-car">Drifting car</h1>
<p>I was experimenting with the technique of rendering fading trails to an off-screen canvas... before realizing I've made a car. Good excuse to try to make a reasonable mobile control scheme—left third of the screen maps to the left arrow, and likewise for the other three edge.</p>
<div class="float">
<img src="/fun/drifting-car.jpg" alt="A box-y car with unrealistic handling, leaving thick back trails whereever it goes" />
<div class="figcaption">A box-y car with unrealistic handling, leaving thick back trails whereever it goes</div>
</div>
<blockquote>
<p>Drfiting car? More like a car in snow!</p>
</blockquote>                <p><a href="https://bojidar-bg.dev/fun/drifting-car/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Random planets</title>
    <link href="https://bojidar-bg.dev/fun/random-planets/"/>
<id>urn:uuid:ada9f1d3-3e0a-455a-99b5-fd7f5598d5fd</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2024-08-14T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="random-planets">Random planets</h1>
<p>Scroll and drag to zoom/pan. (No mobile support.)</p>
<p>This was inspired by the <a href="https://js13kgames.com/2018/games/exo">JS13K 2018 submission "Exo"</a> by Jack Oatley and Anton K. I wanted to make a strategy game focused around building structures in orbits of limited space that can also be taken up by moons / planets.</p>
<p>This particular sketch was an experiment in making a simple logical structure which assigns whole numbers to planet masses and orbit "sizes", but at the same time disallows overlapping orbits.</p>
<p>I ended up with a system structured around the fibonacci numbers: a size-n planet has mass equal to <code>F_n</code>, the n-th fibonacci number, takes up <code>F_{n+1}</code> spaces on an orbit, and has <code>n/2-2</code> orbits with available space ranging from <code>F_{n/2+1}</code> to <code>F_{n-1}</code>.</p>
<p>The big numbers displayed are "gravity potentials", to be used for computing the energy needed to travel from surface/orbit to surface/orbit.</p>
<div class="float">
<img src="/fun/random-planets.jpg" alt="An system of planets spinning along circular orbits" />
<div class="figcaption">An system of planets spinning along circular orbits</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/random-planets/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Chunked rects</title>
    <link href="https://bojidar-bg.dev/fun/chunked-rects/"/>
<id>urn:uuid:63d9ed1a-fd3b-4bc0-8e7f-3569c91d8844</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2024-06-14T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="chunked-rects">Chunked rects</h1>
<p>An experiment in using chunks to render an infinite plane of differently-sized rectangles.</p>
<p>Click to move around.</p>
<div class="float">
<img src="/fun/chunked-rects.png" alt="An infinite plane of differently-sized rectangles" />
<div class="figcaption">An infinite plane of differently-sized rectangles</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/chunked-rects/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Bubbles</title>
    <link href="https://bojidar-bg.dev/fun/bubbles/"/>
<id>urn:uuid:cee73ec0-8739-4169-92f9-1b051599eaec</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2024-05-31T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="bubbles">Bubbles</h1>
<p>Every frame, a random point is selected. If it's covered by a bubble, that bubble is popped. Then, a bubble with radius equal to 60% of the maximum non-overlapping circle is added at that point<a href="#fn1" class="footnote-ref" id="fnref1"><sup>1</sup></a>.</p>
<p>The largest bubble is highlighted.</p>
<p>Hold mouse down to make a new bubble.</p>
<div class="float">
<img src="/fun/bubbles.jpg" alt="Bubbles pop in and out of existence" />
<div class="figcaption">Bubbles pop in and out of existence</div>
</div>
<div class="footnotes footnotes-end-of-document">
<hr />
<ol>
<li id="fn1"><p>If the descripion alone makes you think of a mathematical task in stochastic geometry such as "What percentage of the plane is covered by bubbles" or "What is the probability that there exists a bubble of radius larger than R", consider yourself nerdsniped <span class="emoji" data-emoji="innocent">😇</span><a href="#fnref1" class="footnote-back">↩︎</a></p></li>
</ol>
</div>                <p><a href="https://bojidar-bg.dev/fun/bubbles/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Arc clock</title>
    <link href="https://bojidar-bg.dev/fun/arc-clock/"/>
<id>urn:uuid:b9eeb9c8-da64-4459-851c-8295501c578d</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2024-05-28T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="arc-clock">Arc clock</h1>
<div class="float">
<img src="/fun/arc-clock.png" alt="A 24-hour clock, where each &quot;hand&quot; is a slowly growing arc " />
<div class="figcaption">A 24-hour clock, where each "hand" is a slowly growing arc </div>
</div>                <p><a href="https://bojidar-bg.dev/fun/arc-clock/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Flower 1</title>
    <link href="https://bojidar-bg.dev/fun/flower-1/"/>
<id>urn:uuid:699ec2be-ebbd-4209-82ad-2a86127ef25f</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2024-05-19T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="flower-1">Flower 1</h1>
<p>An experiment in drawing gradients with shapes.</p>
<div class="float">
<img src="/fun/flower-1.jpg" alt="A pink flower against a skyblue background with shifting number (9-10) of spinning petals" />
<div class="figcaption">A pink flower against a skyblue background with shifting number (9-10) of spinning petals</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/flower-1/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Recoloring circles</title>
    <link href="https://bojidar-bg.dev/fun/recolor-circles/"/>
<id>urn:uuid:5faa2555-0741-4159-a9db-4b7462bd020d</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2024-05-18T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="recoloring-circles">Recoloring circles</h1>
<p>Made during a live session with students. Wanted to demonstrate rectangle-circle intersactions, ended up creating art instead.</p>
<div class="float">
<img src="/fun/recolor-circles.jpg" alt="A set of colorful orangle circles, that change color when you drag a rectangle over them" />
<div class="figcaption">A set of colorful orangle circles, that change color when you drag a rectangle over them</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/recolor-circles/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Rhythm 1</title>
    <link href="https://bojidar-bg.dev/fun/rhythm-1/"/>
<id>urn:uuid:bb82a319-43c7-41ae-9a77-0894877e11ce</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2024-05-15T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="rhythm-1">Rhythm 1</h1>
<p>An experimental game where time flows in rhythmic bursts. Click to shoot the purple circles; don't shoot the red health pickups.</p>
<p>Can you get past wave <del>40</del> 60?</p>
<div class="float">
<img src="/fun/rhythm-1.png" alt="A tiny triangle surrounded by ever-larger numbers of big circles" />
<div class="figcaption">A tiny triangle surrounded by ever-larger numbers of big circles</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/rhythm-1/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Icecream cone</title>
    <link href="https://bojidar-bg.dev/fun/icecream/"/>
<id>urn:uuid:09f520f7-8dca-43da-8544-da8a3c72257b</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2024-04-22T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="icecream-cone">Icecream cone</h1>
<p>An icecream cone made as part of <a href="http://localhost:8888/%D1%83%D1%80%D0%BE%D1%86%D0%B8/01-js/p01-%D1%81%D0%BB%D0%B0%D0%B4%D0%BE%D0%BB%D0%B5%D0%B4/">a programming lesson (BG)</a>. Click to regenerate the colors.</p>
<div class="float">
<img src="/fun/icecream.png" alt="An icecream cone with three random colors of icecream" />
<div class="figcaption">An icecream cone with three random colors of icecream</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/icecream/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Recursive arboretum</title>
    <link href="https://bojidar-bg.dev/fun/arboretum/"/>
<id>urn:uuid:0e6a1e4e-bb17-410d-99d7-9a2f0b21be0e</id>    <updated>2026-02-02T14:00:00Z</updated>    <published>2024-04-17T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="recursive-arboretum">Recursive arboretum</h1>
<p>An experiment in recursion and faking depth through color and position. Click to regenerate.</p>
<div class="float">
<img src="/fun/arboretum.png" alt="A forest of trees of blue blossoms and black branches against a pink background" />
<div class="figcaption">A forest of trees of blue blossoms and black branches against a pink background</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/arboretum/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Trigonometry cube</title>
    <link href="https://bojidar-bg.dev/fun/trig-cube/"/>
<id>urn:uuid:d86b4633-77fc-41cc-ac7d-c07416ed5ace</id>    <updated>2026-01-31T14:00:00Z</updated>    <published>2024-04-05T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="trigonometry-cube">Trigonometry cube</h1>
<p>A cube drawn in orthographic projection using p5.js's 2D functions. Used as an example of why switching to full-blown 3D is much easier.</p>
<div class="float">
<img src="/fun/trig-cube.png" alt="A spinning cube wireframe" />
<div class="figcaption">A spinning cube wireframe</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/trig-cube/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>
  <entry >
    <title>Brick wall graffiti</title>
    <link href="https://bojidar-bg.dev/fun/brick-graffiti/"/>
<id>urn:uuid:fd046dd6-15ab-43c2-98f6-fd899f368cc9</id>    <updated>2026-02-01T14:00:00Z</updated>    <published>2023-03-04T14:00:00Z</published>            <summary type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
<h1 id="brick-wall-graffiti">Brick wall graffiti</h1>
<p>Move you mouse over the brick wall to paint it yellow.</p>
<div class="float">
<img src="/fun/brick-graffiti.png" alt="A brick wall with thick yellow lines running across it." />
<div class="figcaption">A brick wall with thick yellow lines running across it.</div>
</div>                <p><a href="https://bojidar-bg.dev/fun/brick-graffiti/">Read the rest of the article...</a></p>
      </div>
    </summary>
  </entry>

</feed>
