EYThe LogEmre Yakut
← all entries
Simulation · Systems · deep

I taught my site to think

I put a “thought simulator” in the middle of my own site. You drop in a concept — “Billing” — and the system decomposes it into what it needs. Eight steps later you arrive at “sleep”.

Billing Invoices Tax Currency Exchange Jobs Ledger Rates Monitoring Retry Alerting Oncall Sleeptohum: "Billing" → bağımlılıklar şelale halinde açılırdüğüm boyutu = derece + seviye + not var mı · turuncu = önemli-önemli bağı

I could not decide what to put on my own site. A CV is boring and a portfolio lies — you pick the best screenshot of each project and the work does not look like that.

In the end I did this: I put something in the middle of the site that shows what I do instead of describing it.

What it does

The screen starts empty. There is a search box at the top. You type “Billing” and press enter.

Then this happens:

Billing    → Invoices, Tax
Invoices   → Currency, Exchange
Tax        → Exchange, Jobs, Ledger
Exchange   → Rates, Monitoring
Jobs       → Monitoring, Retry
Monitoring → Alerting, Oncall
Alerting   → Sleep

Eight steps later you arrive at sleep. It is not a joke; it is a record of where the dependency chain actually leads. No decision in software stands on its own.

Drop a second seed — “Metering”. It does not create a new island: it latches onto the existing network through shared nodes. If both need “Jobs”, a bridge appears between them.

I built the wrong thing first

The first version was a classic knowledge graph: nodes, edges, click-open-read. It worked correctly and it was completely lifeless.

Because a knowledge graph shows a network that is already known. You are not discovering anything, you are touring what you were shown.

Thinking is not like that. Thinking is picking up a concept and asking “what does this require?” — and every answer producing new questions.

I deleted that file and wrote this instead.

Node size is not a choice, it is a calculation

For a while I tuned sizes by hand. Bad idea: every new node meant rebalancing everything. Then I derived size from the model.

importance
w = degree + (6 − level) + has_notes + visited

degree: how many edges attach. level: 1 = identity, 6 = raw knowledge. notes: is there a story written for this node. visited: has the user been there.

That single number drives five things: radius, mass, edge weight, rim brightness and gravity. The result: CRM, Database, Family and Music become the heavy nodes on screen without anyone saying so. Because they are.

Wiring emotion into physics

Every node carries an emotion label in the knowledge base. At first it was only text; then I wired it into the simulation.

labelbehaviourhow it feels
Proud / Foundationalslow breathing, strong rimsolid, immovable
Curious / Experimentalslight jitterrestless
Calmhigh dampingpush it, it settles gently
Life-changingstrong glowyour eye goes there

All of it very subtle. Nobody says “that node looks proud”. But the screen stops resembling a table and starts resembling a thing.

Even when you do nothing

Roughly every six seconds the system walks a reasoning path along real edges, pulses in sequence, and drops a line into the existing log:

· Thinking…
· Pattern detected: "trust" appears repeatedly
· Cross-domain relation discovered
· Possible architectural simplification

No chatbot, no new panel. A very faint glow appears at the centroid of the active nodes — showing where the thinking is happening.

Don’t add features. Increase the sense of intelligence. Make it look alive, not like a graph.

the only requirements document this section had — my own note

And one constraint: stop after two levels

Automatic expansion halts at two levels. Beyond that you have to click, and each click is one level.

The reason: if the system opens everything itself, you only watch. Two levels is enough to show that connections form; the rest belongs to curiosity.

Then the bill arrived

The whole engine — graph, physics, music, atmosphere — is about 250 KB of JavaScript, and all of it loaded on first paint.

The fix: the site has two modes. In professional mode only three files load. The heavy engines arrive only when you enter “Inside My Mind” — and because that transition is already a cinematic dissolve, I hid the load behind that curtain. The user sees a transition, not a wait.

In the same pass the portrait went from 794 KB to 217 KB and the share image from a 2.2 MB PNG to a 96 KB JPEG. Fonts moved from swap to optional; layout shift fell from 0.164 to zero.

a small, expensive lesson

Testing over file://, the browser caches assets aggressively. Edit a file without bumping its version and you see the old one — and spend hours chasing a bug that does not exist. It caught me several times in one day.

What I learned

An interface does not feel intelligent because of more features. It feels intelligent when the data model drives the visuals.

When size is a calculation rather than a choice, and motion is a personality rather than an animation, what is on screen stops being an interface and becomes a behaviour.

And the real product is not the graph — it is the model underneath. Search, timelines, notes and conversation will all feed from it.

SimulationSystems