Welcome!

I am Y. Efe Kivilcim.

This is where you can find most of the weekend experiments I've built over the years.

2026

2025

Mahogany

A live PyTorch optimisation as a physical system, leveraging the equivalence between gradient descent and a damped spring-mass network. Node coordinates, stored as learnt embeddings, train towards text-based pixel targets. A FastAPI backend streams the training state via WebSocket to a canvas physics engine, which interpolates towards the optimiser's position. Mouse interactions directly disrupt the embedding weights mid-training, forcing the network to recover in real time. Spatial hashing keeps the animation running smoothly by only calculating connections between nearby nodes, whilst a strict dual-stability condition ensures the system only settles when both mathematical accuracy and physical kinetic equilibrium are achieved.

Chess Deco

A poster generator visualises chess games from provided PGN data as layered arc diagrams. Each move is converted into a Bezier curve with control points calculated by rotating the move vector 90 degrees ensuring arcs curve consistently without intersecting. Move opacity scales with game progress allowing the endgame to visually dominate the design. An editorial filter retains captures, checks and major piece moves whilst thinning routine pawn pushes to reduce clutter without losing the narrative of the match. GIF export operates entirely client-side by loading the worker as a Blob URL to bypass browser origin restrictions.

Miyagi Metronome

This metronome records tap accuracy against the beat. Standard JavaScript intervals are bypassed in favour of the Web Audio API clock and a lookahead scheduler to prevent audio drift. Beat timing utilises an index instead of cumulative addition to avoid floating point errors over long sessions. Perceptual latency of approximately 25ms is compensated for before mapping taps onto the pendulum arc. Each tap leaves a mark colour-coded based on accuracy and the wave responds with a Gaussian ripple envelope.

2024

Taqi Search

A full-stack search engine for English vocabulary features a custom Go backend handling BM25 scoring and fuzzy correction. Fuzzy matching relies on a BK-Tree that exploits the triangle inequality of edit distance to quickly prune the search space. It uses Levenshtein distance as the primary metric and employs a longest common prefix tiebreaker for equal distances. The HTTP server provides real-time enrichment from a public dictionary API and handles context-aware cancellation. The React frontend exposes the complete BM25 math breakdown including TF, DF, IDF and the per-term score to clarify the ranking logic.

Sisyphus Timer

A stopwatch operates over a procedurally generated scrolling landscape. Boulder rotation is calculated using the actual arc length travelled instead of a fixed angle ensuring proper rolling over uneven terrain. The reset phase uses cosine easing spread across three stages to create a cinematic feel. Ground rendering occurs in three passes including a terrain line, a normal offset hatching line and scatter dots that utilise Perlin hash constants for stability between frames.

2048 Whim

A 2048-style tile sliding game targeting 65,536 where the player can take control or hand it to a built-in AI. The minimax engine uses iterative deepening within a fixed 50ms budget, treating tile spawns as adversarial to assume worst-case placements. A transposition table keyed on board state prevents redundant evaluation across branches. The heuristic combines a snake pattern scored against eight rotations and reflections of a corner-biased weight matrix with empty cell count and monotonicity bonuses. Move scores for all four directions are exposed alongside search depth and node count to surface the AI reasoning at each step.