I started with a machine that could not hear.
It received only numbers sampled from an audio signal. Yet somewhere between those samples and a decision about who was speaking, information had to become representation—and representation had to become understanding.
That problem changed the way I looked at computing.
Speech led me to language. Language raised a harder question: why should machine understanding end with words? That curiosity pulled me toward vision and multimodal intelligence, and eventually deeper into the machinery itself.
I stopped being satisfied with seeing a model work.
I wanted to know why it worked, where the information moved, what the objective optimized, what changed during training, and what finally happened on the hardware.
That path took me through model architectures, tokenization, objectives, gradients and distributed training—and then beneath them into precision, kernels, memory movement, parallelism, KV caches, batching and inference.
Because a model can be remarkably intelligent and still become a poor system.
Then another boundary appeared.
A model can reason. A model can call a tool. Neither makes it autonomous.
Autonomy begins when capability is surrounded by control.
That is where much of my current thinking lives: harnesses that turn goals into context and execution; delegate work across models, skills and tools; maintain useful memory; observe their environment; evaluate their own progress; verify outcomes; and decide when to continue, repair, recover—or stop.
The thread across all of this has remained surprisingly constant:
from signals to representations, representations to models, models to systems, and systems to intelligence that can act.
I am less interested in making AI look intelligent.
I want to understand what makes intelligence work, persist, and remain reliable when the real world pushes back.