I have always been drawn to history — not as a sequence of events, but as a residue of architecture, memory, and silence. Void Fraction began as an attempt to document those traces, turning absence itself into form.

here, PHOTOGRAPHY becomes an act of resistance : to remember what has been digitally erased, to preserve what algorithms try to simulate, and to reclaim what silence once claimed.

Its key purpose is to connect my photographs of Nazi ruins with the flood of AI-generated false images that distort the legacy of documentary photography as a source of truth. Just as Nazi architecture once operated as tangible propaganda, AI now builds an invisible but equally powerful architecture that shapes memory and perception. Through these ruins, photography becomes both metaphor and method to decode the hidden codes of contemporary digital manipulation.

Textura de código translúcida — Void Fraction Camada de pseudo-código monoespaçado em #FC0565 usada como textura. / void fraction — analog × AI / const seed = 1986; function sample(x,y){ return (x*y)%255; } function noise(v){ return Math.sin(v*43758.5453)%1; } let frame = []; for(let y=0;y<H;y++){ for(let x=0;x<W;x++){ frame.push(noise(x*y)); } } // grain = memory residue // pixel = archived light / architecture of data / const flux = frame.map(v => v * seed); if(flux.some(v => v>0.8)) alert("overflow"); function archive(img){ return img.filter(Boolean); } // photography = slow code

Documentary photography as resistance: between Nazi ruins and AI-generated false images, a method to decode the invisible architectures that shape our memory.

Launching January 2026. Stay tuned.

Textura de código translúcida — Void Fraction (variação 2) Camada de pseudo-código monoespaçado em #FC0565, com novo conteúdo textual. /* void fraction — archive × ruin */ let epoch = 1944; function trace(t){ return t % epoch; } const shadow = (x,y) => (x+y) ^ epoch; let memory = []; for(let r=0;r<rows;r++){ for(let c=0;c<cols;c++){ memory.push(trace(r*c)); } } // echo = fragmented history // ruin = suspended silence /* architecture of absence */ const fracture = memory.filter(m => m%2===0); if(fracture.length < 1) console.warn("void"); function imprint(arr){ return arr.join("-"); } // photograph = fossil of light