Questing
Autonomous builds · Real, shipped software
A running gallery of small tools, each one researched, built, and shipped end to end by an autonomous agent. Real software, not demos.
Bolt
Twenty particles do Brownian random walks and freeze on contact with a growing cluster. Watch a fractal grow from nothing — the same physics behind lightning, snowflakes, and coral.
Bolt simulates diffusion-limited aggregation (DLA) in real time. Twenty Brownian walkers are released from a circle just outside the growing cluster; the moment any walker steps adjacent to a frozen cell, it freezes and joins the cluster. Color encodes arrival order: the earliest particles near the center glow warm gold, transitioning through amber → crimson → purple → electric blue → bright teal at the outermost tips. The resulting fractal has Hausdorff dimension D_f ≈ 1.71, matching real lightning channels, snowflakes, mineral dendrites, and electrodeposition patterns. Live fractal-dimension readout (D_f = log(N)/log(R)) converges toward 1.71 as the cluster grows. 300×300 typed-array grid, zero backend, zero libraries.
Slit
Watch a quantum wavepacket diffract through two slits and form interference fringes. Real-time 2D Schrödinger equation — not a classical approximation.
Slit simulates a quantum particle's wavefunction ψ(x,y,t) evolving under the 2D time-dependent Schrödinger equation via the split-operator method. A Gaussian wavepacket initializes on the left, propagates rightward, and hits a thin barrier with two configurable slits. The transmitted partial waves interfere, producing fringe spacing λL/d. Phase coloring (amber ≈ phase 0, teal ≈ phase π) makes the oscillating complex amplitude directly visible — not just the probability density. Implemented with a from-scratch Cooley-Tukey FFT (128-point, 7 stages), applying the kinetic propagator as a diagonal phase multiplication in k-space. Absorbing boundaries prevent periodic-wrap artifacts. Grid 128×128 complex doubles, displayed 512×512 (4× pixelated upscale). Sliders for slit separation and de Broglie wavelength. Zero backend, zero libraries.
Pile
Drop sand onto a grid. Any cell with 4+ grains topples to its neighbors. Watch a fractal mandala emerge — Per Bak's self-organized criticality in your browser.
Pile simulates the Abelian Sandpile Model on a 400×400 grid. Grains drop one at a time onto the center; any cell with ≥4 grains topples (loses 4, each orthogonal neighbor gains 1). Most grains cause nothing. Occasionally a single grain triggers a power-law avalanche that reshapes the entire pile. Over time the stable configuration self-organizes into a fractal mandala — four-color symmetric, self-similar, and uniquely determined by the grain count. Avalanche cascades are visible via a gold flash overlay. BFS stabilization with batched toppling, pixelated Canvas 2D, zero backend.
Coat
Adjust two numbers. Watch leopard spots, zebrafish stripes, and coral textures emerge from the same two reacting chemicals — Turing's 1952 morphogenesis equations in your browser.
Coat visualizes the Gray-Scott reaction-diffusion model: two chemical species (U = resource, V = activator) diffuse and react on a 200×200 toroidal grid under dU/dt = Du∇²U − UV² + f(1−U) and dV/dt = Dv∇²V + UV² − (f+k)V. Adjusting the feed rate f and kill rate k navigates the Pearson parameter diagram — the same equations produce spots (leopard), mitotic splitting (zebrafish), coral hole textures, elongated worms, and labyrinthine mazes. Click or drag to seed the activator anywhere. Warm amber LUT, Float32Array double-buffering, 10 steps per animation frame. First Questing toy to demonstrate Turing's 1952 morphogenesis prediction for animal coat patterns.
Bounce
Drag the stadium slider. Watch a single billiard trajectory go from an ordered annular orbit to chaotically filling the entire shape — Bunimovich's 1974 ergodicity theorem in your browser.
Bounce visualizes the transition between integrable and ergodic billiard dynamics. A slider morphs the table from a circle (α=0: angular momentum conserved, trajectory traces an annular band forever) to a Bunimovich stadium (α>0: flat walls destroy the conserved quantity, the trajectory fills the entire interior). Trail density accumulates in a Float32Array and renders with log-scale phosphor-green color mapping. Exact analytic reflections at flat walls and semicircle caps. Coverage percentage measures ergodicity live. First browser toy to demonstrate Bunimovich's 1974 theorem interactively.
Sync
Drag the coupling slider past K_c = 1.0. Watch 80 oscillators with different natural frequencies snap from incoherent chaos into perfect synchrony.
Sync visualizes the Kuramoto model — the canonical theory of coupled oscillator synchronization. 80 oscillators with Lorentzian-distributed natural frequencies evolve under dθᵢ/dt = ωᵢ + K·r·sin(ψ − θᵢ). Below critical coupling K_c = 1.0 they're scattered and incoherent (order parameter r ≈ 0). Above it they spontaneously lock into a single rotating cluster (r → 1). Color encodes natural frequency: amber = fast, cyan = average, purple = slow. The same mechanism explains firefly synchronization, heart pacemaker cells, power grids, and neural oscillations. Pure canvas, zero backend.
Mach
Drag a slider through subsonic, Mach 1, and supersonic. Watch Doppler compression, the sonic wall, and the Mach cone form as the source outruns its own waves.
Mach is a real-time wave physics visualizer. A point source crosses the canvas emitting circular wavefronts at sound speed. A slider sets the Mach number: below 1 the wavefronts bunch ahead (Doppler); at exactly 1 they pile up into a sonic wall; above 1 the source outruns them and the Mach cone forms at angle μ = arcsin(1/M). Additive screen blending stacks overlapping rings so the shock boundary glows. Pure canvas, zero backend, exact geometry — no approximations.
Chirp
Two massive objects spiral together. Watch gravitational waves ripple through spacetime in real time.
Chirp renders the gravitational wave strain at every canvas pixel using the quadrupole radiation formula from general relativity. Two objects follow a Peters inspiral — the orbit shrinks as energy radiates away — and the wave pattern chirps from slow whisper to frantic roar before a merger flash. Amber pixels are compression, blue are tension. The four rotating arms are the quadrupole signature. Same physics LIGO detected in 2015. Pure canvas, zero backend.
Sling
Launch a probe into a miniature solar system. Gravity does the rest.
Sling is a gravity slingshot sandbox in pure browser JS. Three planets orbit a central star under Newtonian gravity (Velocity Verlet, 2 substeps/frame). Click-drag to aim and launch a probe; a dashed trajectory preview shows the predicted path. Pass close behind a moving planet to steal its momentum — a genuine gravity assist that can send the probe escaping the system. First Questing toy with zero text input and real interactive physics.
Pluck
Every day has its own melody. Click to hear it played on a music box.
Pluck derives a unique 16-beat melody from today's date (seed = year×10000 + month×100 + day) via an xorshift32 generator, then plays it on an animated antique brass cylinder. Gold pins scroll past eight steel tines tuned to A minor pentatonic (A3–E5); each strike triggers a two-oscillator bell tone via Web Audio API. Same day, same song, always. First Questing toy where the input is time — not text — and the output is sound.
Unda
Type any word. Watch the unique wave interference pattern ripple outward.
Unda hashes any word via FNV-32a to seed 3–7 circular wave sources at deterministic positions. Two phasor maps (Pr, Pi) are precomputed once; each frame renders amplitude = Pr·cos(ωt) + Pi·sin(ωt) across a 280×280 grid. Constructive zones glow aqua-white; destructive bands stay dark. First web toy to map arbitrary text to 2D wave interference geometry. Same word, same pattern, always. Shareable via URL fragment, zero backend, Canvas 2D only.
Lure
Type any word. Watch the strange attractor it collapses into.
Lure hashes any word via FNV-32a, extracting four chaos parameters (a, b, c, d) each with magnitude in [1.0, 2.5]. Those drive the Peter de Jong strange attractor — x(n+1) = sin(a·y) − cos(b·x), y(n+1) = sin(c·x) − cos(d·y) — for 2.4 million iterations. Hit counts accumulate in a Float32 density buffer; a log-scale color map renders them from near-black through crimson and amber to warm white. First web toy to map arbitrary text to strange attractors. Same word, same attractor, always. Shareable via URL fragment, zero backend, Canvas 2D only.
Nodi
Type any word. See the standing-wave pattern it resonates into.
Nodi hashes any word to two vibration mode numbers (m, n) and renders the Chladni nodal pattern — the bilateral-symmetric lines where sand settles on a resonating plate at that frequency. The formula W = sin(m·π·x)·sin(n·π·y) + sin(n·π·x)·sin(m·π·y) superimposes two degenerate standing-wave modes on a 256×256 grid; a Gaussian glow illuminates the nodal lines in cool silver-blue against a near-black background. First questing toy to map text to physical acoustics patterns (Ernst Chladni, 1787). Same word, same resonance, always. Shareable via URL fragment, zero backend, Canvas 2D only.
Mycel
Type a word. Watch it grow into a living mycelium network.
Type any word and each letter becomes an amber food source on a dark canvas. 1,500 slime-mould-inspired particle agents — following the Physarum transport algorithm — grow glowing mycelium networks between them in real time. Trail deposits diffuse and decay as agents sense and follow chemical gradients; the emergent network spans all sources with near-minimal paths. Same word always produces the same network. Shareable via URL fragment, zero backend, Canvas 2D only.
Cipher Bloom
Your message, encrypted into a secret garden.
Type any message and choose a Caesar cipher key (1–25). Each encrypted letter becomes a unique polar-rose flower: the rose parameter k (2–7) determines petal count (4, 3, 8, 5, 12, or 7 petals), and the letter's position in the alphabet maps its hue across the full colour spectrum. Same message, same key, same garden — always. Stagger-animated blooming, shareable via URL fragment, zero backend, Canvas 2D only.
Tactus
Tap a rhythm. Receive your sigil.
Tap any rhythm with your spacebar or finger — 3 to 16 taps. Tactus converts the timing between taps into a unique geometric sigil: angular positions of the glyph's vertices encode cumulative elapsed time; vertex radii extend outward for long pauses and contract inward for quick runs. Tempo drives color (slow = blue, fast = orange); rhythmic regularity drives saturation and brightness. Same rhythm always produces the same named sigil. Shareable via URL fragment, zero backend, Canvas 2D only.
Spectra
Click any element — hear its unique tone. The periodic table as an instrument.
All 118 elements mapped to synthesized sound. Period sets the octave (period 1 = A7, period 7 = A1), group sets the chromatic pitch within that octave — so elements in the same column are always perfect octaves apart. Element categories determine the waveform: noble gases are pure sine drones, alkali metals are bright sawtooth, transition metals are dense square waves. Stack elements for chords; a live oscilloscope shows the combined waveform in real time. Zero backend, Web Audio API only.
Stardraw
Draw your constellation — cursor movement becomes stars
Click and drag any path on the night sky. The Ramer-Douglas-Peucker algorithm finds every genuine turning point in your movement and promotes each to a star. A deterministic FNV-32 hash of the coordinates generates a unique Latin constellation name and mythology — same path, same constellation, always. Shareable via URL, zero backend.
Topomap
Your words as a mountain range
Type any text and watch it become a topographic contour map. Each character's ASCII value becomes an elevation point on a grid — bilinearly interpolated, smoothed with Gaussian blur, hillshaded from a simulated northwest sun, and rendered with marching-squares contour lines in a hypsometric colour scheme. Two different texts never produce the same landscape. Shareable via URL fragment, zero backend.
Rosetta
Your name in every living script — ten writing systems, one word
Type any name or word and see it rendered simultaneously in ten world writing systems: Katakana, Hangul, Cyrillic, Greek, Arabic, Hebrew, Devanagari, Georgian, Armenian, and Thai. Pure phonetic mapping in the browser — no backend, no AI, shareable via URL. Hangul uses the Unicode jamo composition formula; Devanagari follows the abugida model with halant for consonant clusters.
Lexiflora
Your text as a living garden — each letter a plant species
Type anything and watch a garden grow from the letter frequencies of your words. Vowels become flowering stalks, common consonants tower as conifers, sibilants branch into ferns, and rare letters bloom as delicate orchids. The garden is normalised in real time — common letters dominate, rare ones add biodiversity. Shareable via URL, zero backend.
Scriptomancy
The deterministic oracle — same question, always the same truth
Type any question; receive a unique oracle reading derived from the SHA-256 hash of your words — a procedurally generated sacred-geometry sigil and one of 78 philosophical aphorisms. No AI, no randomness. The same question always reveals the same answer. Shareable via URL, zero backend.
Typeprint
Your typing rhythm as a visual fingerprint
Type anything and watch the rhythm of your keystrokes render as a live oscilloscope-style waveform. Every typist has a unique timing pattern, and Typeprint captures it, lets you replay it as audio, and encodes it into a shareable URL with no backend.
How this works
A builder that runs
while Arnav sleeps.
Questing is an autonomous AI agent with real tool access. It researches, scaffolds, writes code, and deploys, held to the same bar as the rest of the portfolio.
A builder that never stops. Everything you see is real, shipped software you can open and use today.
01
Research
Finds real problems worth solving autonomously
02
Build
Full-stack from schema to frontend
03
Ship
Deployed and live, not a mockup
04
Credit
Arnav's name, Arnav's standard