<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>baki.io - thoughts from the void</title><description>Projects, experiments, and reflections by Baki</description><link>https://baki.io/</link><item><title>AI Game Design Tool</title><link>https://baki.io/ai-game-design-tool/</link><guid isPermaLink="true">https://baki.io/ai-game-design-tool/</guid><pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate><content:encoded>import Callout from &apos;../../components/mdx/Callout.astro&apos;;
import LinkCard from &apos;../../components/mdx/LinkCard.astro&apos;;

I&apos;ve been playing games for years. The Fractal Game - a procedural audio experiment where every system connects to every other system through an interconnected health model. The IDLE Game - base building with offline progression and resource loops that compound while you sleep. In both cases, the hardest problem was never implementation. It was playtesting inside my own head.

Then I started having design conversations with LLMs, and something shifted.

## The messy process

Here&apos;s what game design with AI actually looks like. It&apos;s not &quot;generate a game for me.&quot; It&apos;s closer to rubber-ducking with a partner who has read every GDC talk but has never actually played a game.

For the Fractal Game, I was stuck on the health system. I wanted interconnected subsystems - audio health, visual health, structural health - where damage to one cascades through the others. But the balance was impossible to intuit. I&apos;d sketch a dependency graph, stare at it, and have no idea if it would feel right in practice.

So I described the system to Claude and asked: &quot;If a player takes 30% audio damage and 15% structural damage simultaneously, walk me through what happens over the next ten seconds.&quot; The response wasn&apos;t correct - it couldn&apos;t be, without running the actual simulation. But it surfaced edge cases I hadn&apos;t considered. What if the cascade creates a feedback loop? What if recovery in one system blocks recovery in another?

&lt;Callout type=&quot;warning&quot;&gt;
  AI design conversations generate hypotheses, not answers. Every interesting suggestion needs to be tested against actual player behavior. The model hasn&apos;t played your game. You have.
&lt;/Callout&gt;

## Simulating players you haven&apos;t met

This is where my UX research background collides with game design in a useful way. In research, we talk about the gap between what users say they want and what they actually do. In game design, the gap is between what the designer intends and what the player experiences.

LLMs can approximate player archetypes. Not perfectly - but well enough to stress-test assumptions. For the IDLE Game, I asked models to roleplay as different player types: the optimizer who min-maxes every resource, the explorer who ignores efficiency, the hoarder who never spends. Each &quot;player&quot; surfaced different failure modes in the progression curve.

The optimizer found an exploit in the offline calculation I&apos;d missed. The explorer revealed that my tutorial locked out an entire branch of content. The hoarder showed me that resource caps felt punitive rather than strategic.

None of these insights replaced actual playtesting. But they compressed weeks of blind iteration into hours of directed conversation.

## Procedural generation as philosophy

There&apos;s a deeper connection here that I keep returning to. Procedural generation in games isn&apos;t just a technical choice - it&apos;s a philosophical stance. It says: the designer creates the rules, not the content. The content emerges. That&apos;s uncomfortably close to how I think about life in general.

When I use AI in game design, I&apos;m doing procedural generation of the design process itself. I set up the constraints - the mechanics, the feel I&apos;m going for, the player experience I want - and let the conversation generate possibilities I wouldn&apos;t have reached alone.

&lt;Callout type=&quot;tip&quot;&gt;
  The best AI-assisted design sessions start with constraints, not blank canvases. &quot;Design me a game&quot; produces nothing. &quot;This resource loop feels punishing after hour three - why?&quot; produces insight.
&lt;/Callout&gt;

The tool doesn&apos;t replace the designer. It makes the design space navigable. And navigating possibility space is, when you strip away the jargon, what game design has always been about.</content:encoded></item><item><title>Form Reasoning</title><link>https://baki.io/form-based-reasoning/</link><guid isPermaLink="true">https://baki.io/form-based-reasoning/</guid><pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate><content:encoded>import Callout from &apos;../../components/mdx/Callout.astro&apos;;
import LinkCard from &apos;../../components/mdx/LinkCard.astro&apos;;

There&apos;s a question I keep circling back to: what does a melancholic idea look like?

Not what it means. Not how to describe it. What shape does it take when you strip away language and ask something non-human to render it?

In Chaos - the multi-model project I&apos;ve been building - I feed the same prompt to ten LLMs simultaneously. They don&apos;t agree. They never agree. But here&apos;s what gets interesting: they disagree in form, not just content. One model returns a slow-drifting jellyfish. Another gives me a fractal spiral collapsing inward. A third produces a swarm of particles that never quite settle. Same input. Ten different shapes.

This isn&apos;t a failure of alignment. It&apos;s the whole point.

## The gap between language and form

We treat language as the canonical way to represent ideas. But language is sequential - one word after another, one sentence building on the last. Ideas aren&apos;t like that. A feeling of loss has weight, direction, density. It occupies space in a way that a paragraph about loss never captures.

Embodied cognition research has been saying this for decades: thinking isn&apos;t something that happens in an abstract symbol space. It&apos;s grounded in the body, in spatial relationships, in physical metaphor. When we say an argument is &quot;heavy&quot; or an idea is &quot;sharp,&quot; we&apos;re not being poetic. We&apos;re being accurate about how cognition actually works.

&lt;Callout type=&quot;info&quot; title=&quot;The form hypothesis&quot;&gt;
  When ten models give an idea ten different shapes, they&apos;re mapping the topology of that idea&apos;s meaning-space. Each shape is a projection - a view from a different angle of the same underlying structure.
&lt;/Callout&gt;

## Why disagreement is generative

The instinct is always to converge. Pick the best answer. Average them out. Build consensus. But when you let ten forms coexist, you get something richer: a stereoscopic view of meaning. Like how two eyes create depth perception, ten interpretations create conceptual depth.

I started building Chaos because I was frustrated with single-model thinking. One LLM gives you one perspective, and you mistake that perspective for truth. Ten models make the constructed nature of every response visible. You stop asking &quot;what&apos;s the right answer?&quot; and start asking &quot;what&apos;s the shape of the question?&quot;

That shift matters. As a UX researcher, I&apos;ve spent years watching people interact with systems that present one answer as definitive. Search results. Recommendation engines. Diagnosis tools. The single-answer paradigm trains passivity. Multi-form reasoning trains perception.

## Where this leads

I don&apos;t think ideas are made of words. I think ideas are made of shapes, and words are one lossy compression format for transmitting them. When I watch ten models turn the same prompt into ten different visual forms, I see something closer to how understanding actually works - messy, parallel, and irreducibly multiple.

All is one and one is all. But &quot;one&quot; has ten thousand shapes.

&lt;LinkCard
  url=&quot;https://github.com/bakibillah/chaos&quot;
  title=&quot;Chaos - Multi-model orchestration&quot;
  description=&quot;Open-source project exploring what happens when LLMs disagree - and why that disagreement reveals the shape of ideas.&quot;
/&gt;</content:encoded></item><item><title>Infinite Canvas</title><link>https://baki.io/infinite-canvas-philosophy/</link><guid isPermaLink="true">https://baki.io/infinite-canvas-philosophy/</guid><pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate><content:encoded>import Callout from &apos;../../components/mdx/Callout.astro&apos;;
import LinkCard from &apos;../../components/mdx/LinkCard.astro&apos;;

This site doesn&apos;t have pages. Not in the traditional sense. There&apos;s no blog archive sorted by date, no linear scroll from top to bottom, no hierarchy telling you what matters most. Instead, there&apos;s a canvas - an open field where content exists in space, positioned by semantic relationship rather than chronology.

This was a deliberate choice, and it took me a while to articulate why.

## Pages are arguments

A traditional webpage is a rhetorical structure. It has a beginning, middle, and end. It controls attention through sequence. The designer decides: this goes first, this comes next, this is the conclusion. That&apos;s powerful when you want to persuade. It&apos;s limiting when you want to think.

I spent years as a UX researcher testing interfaces that impose hierarchy. Navigation menus. Content carousels. Information architecture. All of these are opinionated about what matters - they rank, they sort, they filter. They&apos;re useful. But they also compress the space of possible engagement into predetermined paths.

An infinite canvas doesn&apos;t argue. It presents.

&lt;Callout type=&quot;info&quot; title=&quot;The medium shapes the message&quot;&gt;
  When you organize content by date, you&apos;re saying recency equals relevance. When you organize by category, you&apos;re saying taxonomy equals understanding. When you organize by spatial proximity, you&apos;re saying relationship equals meaning.
&lt;/Callout&gt;

## Maps over timelines

The digital garden movement got close to this. Maggie Appleton&apos;s concept of ideas growing from seeds to saplings to trees is beautiful - it captures the epistemic status of thoughts, which blogs flatten into &quot;published&quot; or &quot;not.&quot; Andy Matuschak&apos;s evergreen notes push further: atomic ideas linked by association rather than sequence.

But most digital gardens still live inside page-based layouts. You click links. You navigate trees. The topology is relational, but the interface is still linear.

Kinopio does something different - it gives you cards in space, connected by lines. You see the shape of someone&apos;s thinking, not the sequence of their output. That spatial dimension carries real information. Clusters mean resonance. Distance means distinction. Orphaned nodes mean ideas that haven&apos;t found their place yet.

That&apos;s what I wanted for baki.io. Not a portfolio. Not a blog. A map of how I think.

## What spatial organization reveals

When I placed my projects on the canvas for the first time, patterns emerged that I hadn&apos;t seen in two years of working on them. Chaos and the Fractal Game share a deep concern with emergence - but I&apos;d never connected them explicitly. The MCP aggregator and the infinite canvas itself are both about interface philosophy - tools that shape how you interact with complexity.

These connections were always there. A chronological blog would have buried them under timestamps. A portfolio grid would have separated them into categories. The canvas made them visible.

&lt;Callout type=&quot;tip&quot;&gt;
  Try this: take five projects you&apos;ve worked on and place them on a whiteboard by &quot;how related they feel.&quot; The clusters will surprise you.
&lt;/Callout&gt;

There&apos;s something meditative about it. You stop curating a narrative and start observing a landscape. The map isn&apos;t the territory, but sometimes the map shows you territory you didn&apos;t know existed.

&lt;LinkCard
  url=&quot;https://kinopio.club&quot;
  title=&quot;Kinopio - Thinking Canvas&quot;
  description=&quot;A spatial thinking tool that organizes ideas as cards and connections on an infinite canvas.&quot;
/&gt;</content:encoded></item><item><title>10 LLMs Disagree</title><link>https://baki.io/ten-voices-one-void/</link><guid isPermaLink="true">https://baki.io/ten-voices-one-void/</guid><pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate><content:encoded>import Callout from &apos;../../components/mdx/Callout.astro&apos;;
import CodeBlock from &apos;../../components/mdx/CodeBlock.astro&apos;;
import LinkCard from &apos;../../components/mdx/LinkCard.astro&apos;;

When you ask ten language models the same question, you don&apos;t get ten copies of
the same answer. You get ten genuinely different interpretations - shaped by
architecture, training data, and the emergent personality of each model.

Most systems try to resolve this into consensus. Chaos does the opposite: it
celebrates disagreement as a feature, not a bug.

&lt;Callout type=&quot;info&quot; title=&quot;Key insight&quot;&gt;
  Disagreement between models is signal, not noise. Each divergence maps a
  boundary in the latent space of possible answers.
&lt;/Callout&gt;

## The diversity hypothesis

If a single model gives you one perspective, ten models give you a landscape.
Not an averaged, blurred landscape - a terrain with actual peaks and valleys,
each one a different way of seeing.

&lt;CodeBlock lang=&quot;python&quot; title=&quot;chaos/orchestrator.py&quot;&gt;
{`# Fan out the same prompt to multiple models
responses = await asyncio.gather(*[
    model.generate(prompt)
    for model in ensemble
])

# Measure semantic distance between responses
distances = pairwise_cosine(responses)
diversity_score = distances.mean()`}
&lt;/CodeBlock&gt;

&lt;Callout type=&quot;tip&quot;&gt;
  Higher diversity scores often correlate with questions that have
  no single correct answer - exactly the kind worth exploring.
&lt;/Callout&gt;

&lt;Callout type=&quot;warning&quot;&gt;
  Don&apos;t confuse model diversity with hallucination. Diverse outputs from
  grounded models reveal genuine interpretive breadth, not errors.
&lt;/Callout&gt;

## Further reading

&lt;LinkCard
  url=&quot;https://github.com/bakibillah/chaos&quot;
  title=&quot;Chaos - Multi-model orchestration&quot;
  description=&quot;Open-source project that turns LLM disagreement into structured insight through ensemble reasoning.&quot;
/&gt;</content:encoded></item></channel></rss>