Kinetic Type
An experimental typography piece exploring the relationship between letterforms and physical motion. Each character was treated as a sculptural object in 3D space, animated through a custom physics engine to create a dance between form, weight, and timing.
Concept. Type is usually read, not seen. Kinetic Type strips away legibility and asks the viewer to experience letterforms as physical objects — weight, surface, momentum. Each character was modelled in 3D and assigned unique material properties before being released into a simulated environment.
Early wireframe tests showing the letter “K” built from 14,000 vertices, each vertex responding to gravity and wind vectors.
Process. Built with Three.js and a custom Verlet physics engine. Each typeface was dissected into individual glyphs, re-extruded as 3D geometry, and animated through a system of constraints — spring forces, collision boundaries, and turbulence fields. The music track was generated from the vertex positions via MIDI mapping.
Fluid Forms
A generative motion study using fluid simulation to drive abstract shape transformations. The piece evolves in real time, with each frame producing a unique composition of flowing geometries and color fields.
Approach. Rather than keyframing shape transitions by hand, Fluid Forms uses a 2D Navier-Stokes solver to drive the deformation of geometric primitives. Velocity fields from the simulation push vertices across the canvas, creating organic morphing sequences that never repeat.
Technical notes. The simulation runs on GPU via WebGL compute shaders. Density, velocity, and temperature fields are resolved at 120 iterations per frame, then mapped to vertex displacement on a torus primitive. Colour palettes are sampled from the fluid temperature gradient.
Still from the final render — a single frame of the fluid-driven torus displacement.
Generative Landscapes
Real-time generative landscapes built with WebGL and noise algorithms. The system constructs terrain, vegetation, and atmospheric effects procedurally, allowing viewers to explore infinite synthetic environments through their browser.
In-engine screenshot of the terrain system — elevation mapped from layered Perlin and Worley noise.
System design. The landscape is entirely procedural: no hand-placed objects, no pre-baked textures. A multi-octave noise stack generates elevation, moisture, and temperature maps at runtime. Vegetation distribution follows ecological rules — conifers at high elevation, deciduous in valleys, sparse coverage on arid slopes.
Interaction. Viewers navigate with WASD + mouse, or let the autonomous camera tour the terrain. A day/night cycle runs in 8-minute loops, with atmospheric scattering shifting from golden hour to deep blue twilight. The entire stack runs at 60fps on consumer GPUs.
Neural Drift
An AI-assisted visual meditation tool. A neural network interprets live camera input and transforms it into drifting, painterly abstractions. The result is a hybrid space between photography, painting, and machine perception.
Core idea. What does a camera see when it stops trying to be accurate? Neural Drift feeds live webcam frames through a lightweight style-transfer network trained on early 20th-century landscape painters. The output is a real-time oil-on-canvas abstraction of whatever the camera points at.
Before and after — raw camera input (left) processed through the style-transfer model (right).
Architecture. The model is a MobileNet-v2 encoder paired with a custom decoder, quantised to run client-side via TensorFlow.js at 12fps on a laptop. Latent-space interpolation between style references creates continuous drift even when the camera input is static, giving the piece its meditative quality.
Urban Pulse
A short documentary capturing the rhythm of São Paulo through its street-level soundscapes and movement. Shot entirely on 16mm film, the piece contrasts the city’s brutalist architecture with the organic flow of daily life.
Frame from the opening sequence — Copan building at golden hour, shot on Kodak Vision3 500T.
Background. São Paulo is a city of extreme contrasts: glass towers next to crumbling concrete, silent courtyards steps from roaring avenues. Urban Pulse follows three characters — a street vendor, a bus driver, and a graffiti artist — through their daily routines, using the city’s architecture as a silent fourth protagonist.
Technical. Shot on an Arri SR3 with 16mm Kodak stock. No stabilisation — the handheld camera work is intentional, mirroring the city’s unsteady rhythm. Sound was recorded binaurally and layered with a sparse electronic score composed from field recordings of subway trains and construction sites.
Still / Ness
A meditative video piece exploring coastal landscapes at dawn. Long static frames capture the transition from night to day, treating the camera as a patient observer rather than an active narrator.
Premise. Still / Ness is a study in patience. Each shot is a single fixed-frame take lasting between 4 and 12 minutes, capturing the slowest visible transitions in coastal light. The title is a double meaning — “stillness” as in absence of motion, and “still” as in the photographic frame.
The camera locked on a tide pool for 11 minutes — watching light creep across barnacles and kelp.
Exhibition. Originally shown as a three-channel installation at a gallery in Lisbon. Each projector displayed a different coastline — Portugal, Brazil, and Japan — creating a triptych of simultaneous dawns. The only sound was the ambient room noise, letting each viewer’s presence become part of the piece.
Latent Synthesis
An exploration of the latent space between text and image. Using diffusion models as a creative partner, each output is the result of a conversation — prompts iterated, refined, and recombined until the machine’s hallucination aligns with the artist’s intention.
Process. Every piece begins as a text prompt, but never the first one. The method involves writing dozens of variations, feeding them through a fine-tuned diffusion model, then selecting, blending, and re-prompting based on what emerges. The machine proposes; the human curates.
Tooling. Built with Stable Diffusion XL and a custom LoRA trained on the artist’s own photographic archive. This creates a visual signature that persists across generations — a consistent texture palette, lighting sensibility, and compositional grammar that makes each piece feel like it belongs to the same hand, even when the subject changes completely.
Detail view showing the texture granularity preserved through the LoRA fine-tuning process. The model learned to reproduce film grain and lens flare from the training set.
GAN Pulse
A real-time generative adversarial network that produces an endless stream of synthetic portrait photographs. No two faces are the same — each frame is a novel identity generated from random noise, challenging our assumptions about authenticity and representation.
Premise. What does it mean to look at a face that has never existed? GAN Pulse streams a continuous feed of AI-generated portraits at 24fps, each one unique. The piece runs on a latent-space random walk, ensuring smooth morphological transitions between subjects — a face ages, changes gender, shifts ethnicity, and morphs into the next identity without cuts.
Architecture. StyleGAN3 backbone with a custom latent-space interpolator written in CUDA. The random walk uses Perlin noise in 512-dimensional space to create organic transitions. A separate classifier network filters out low-quality generations in real time, ensuring only convincing portraits reach the screen.
Installation view — the piece projected on a 4-metre wall in a darkened gallery, creating an endless parade of synthetic faces.
Brand Atlas
A comprehensive visual identity system for a fictional data-visualisation studio. The project explores how a brand can communicate complexity through clarity — using a strict grid, a limited colour palette, and a type system built entirely around data storytelling.
System. Brand Atlas is not a logo — it’s a language. A modular grid system, a set of data-visualisation components, a colour palette derived from scientific imaging, and a typographic hierarchy built around legibility at every scale. The identity lives in the system, not in any single mark.
The grid system in use — every layout, from business card to billboard, snaps to the same 8-column modular grid. The only variable is scale.
Typography. Custom typeface based on DIN Pro, modified for improved readability at small sizes on screen. The number set was completely redrawn to align with the studio’s data-heavy output — each numeral fits precisely within the grid unit.
UI Explorations
A series of interface design studies for creative tools. Each concept reimagines how artists interact with software — stripping away menus, palettes, and panels in favour of gesture-driven, context-aware controls that fade into the background and let the work take centre stage.
Approach. Most creative software buries the canvas under toolbars. These studies start from the opposite premise: the canvas is everything. Tools appear only when summoned by gesture, and disappear when not needed. The interface becomes a layer of the creative process, not a separate application to learn.
Gesture study — a two-finger swipe reveals the colour picker, which appears as a floating ring around the cursor. No panels, no palettes.
Motion. Every transition is designed to feel physical — spring animations, overshoot, and inertia give the interface a tactile quality. Buttons compress like real switches, panels slide with momentum, and every action has a micro-feedback loop that confirms the result without text.