That Was The Week That Was — 1st February 2026
"Curiosity might be pictured as being made up of chains of small questions extending outwards, sometimes over huge distances, from a central hub composed of a few blunt, large questions. In childhood we ask: 'Why is there good and evil?', 'How does nature work?' 'Why am I me?" If circumstances and temperament allow, we then build on these questions during adulthood, our curiosity encompassing more and more of the world until, at some point, we may reach that elusive stage where we are bored by nothing."
— Alain de Boton, The Art of Travel
This passage on curiosity — from The Art of Travel by Alain de Boton — very much resonated with me, so much so I quickly wrote it down in my notebook. This idea of a mix of blunt questions with smaller questions, chained together over time I think perfectly explains what it is to be curious. The book as a whole has many such gems as he talks about the why of travel rather than the what, as he references different artists as he travels to various places.
This week my own curiosity saw me continue to dive into the POPs operator in Touch Designer including playing around with some typography inspired sketches. I also began to look into the wonderful POP Fluid Solver stuff that Sarv had made available by their Patreon. Because I'm on a Mac I did have to replace the GSL code with this code Sarv had posted on the Patreon. This goes in the glsl1 node inside the POP_Fluid_Solver comp:
// M1 Max compatible version - using memory barriers instead of atomics
// NOTE: This requires careful thread dispatch to minimize race conditions
uint flatten3(ivec3 c, uint R){
return uint(c.x) + R * (uint(c.y) + R * uint(c.z));
}
struct TriliInfo { ivec3 i0; vec3 f; };
TriliInfo triliInfo(vec3 x, vec3 bmin, vec3 size, uint R){
TriliInfo t;
vec3 h = size / float(R);
vec3 g = (x - bmin) / h - vec3(0.5);
t.i0 = ivec3(floor(g));
t.f = clamp(fract(g), 0.0, 1.0);
return t;
}
void splatV_trilinear_grid(vec3 p, vec3 v, vec3 bmin, vec3 size, uint R){
vec3 bmax = bmin + size;
if (any(lessThan(p, bmin)) || any(greaterThan(p, bmax))) return;
TriliInfo t = triliInfo(p, bmin, size, R);
ivec3 lo = ivec3(0), hi = ivec3(int(R)-1);
ivec3 i0 = clamp(t.i0, lo, hi);
vec3 f = t.f;
for (int dz=0; dz<=1; ++dz){
float wz = (dz==0) ? (1.0 - f.z) : f.z;
int z = clamp(i0.z + dz, lo.z, hi.z);
for (int dy=0; dy<=1; ++dy){
float wy = (dy==0) ? (1.0 - f.y) : f.y;
int y = clamp(i0.y + dy, lo.y, hi.y);
for (int dx=0; dx<=1; ++dx){
float wx = (dx==0) ? (1.0 - f.x) : f.x;
int x = clamp(i0.x + dx, lo.x, hi.x);
float w = wx * wy * wz;
uint idx = flatten3(ivec3(x,y,z), R);
// Non-atomic accumulation with memory barrier
// Race conditions possible but often acceptable for smooth fields
memoryBarrierBuffer();
AccV[idx].x += v.x * w;
AccV[idx].y += v.y * w;
AccV[idx].z += v.z * w;
AccW[idx] += w;
memoryBarrierBuffer();
}
}
}
}
void main(){
const uint id = TDIndex();
if (id >= TDNumElements()) return;
uint R = max(SimRes, 1u);
vec3 size = vec3(SimSizex, SimSizey, SimSizez);
vec3 bmin = vec3(-0.5*SimSizex, -0.5*SimSizey, -0.5*SimSizez);
vec3 p = TDIn_P(1, id);
vec3 v = TDIn_v(1, id);
splatV_trilinear_grid(p, v, bmin, size, R);
}
When I wasn't doing that I was putting together a talk I was due to give on the Friday at FACT in Liverpool as part of the Future Proof series of workshops they had been running all week. I decided to use my new presentation software — DRIFT — for the first time and it all worked great, though ran much slower on my Macbook which is now showing its age. I need to optimise the software better, but yeah, I need to upgrade my laptop too. When in Liverpool I always like to pop into Dig Vinyl. They did have a copy of Remain in Light but was a bit pricey at £75. I always love the "flip flip" sound of albums being browsed through inside record shops.
I added the Human League's Dare to the vinyl collection. An original 1981 pressing which goes nicely with the 1981 pressing of Heaven 17's Penthouse and Pavement. Of course these two albums by these two Sheffield bands are connected with Dare being the first Human League album after the acrimonious split from the other original band members who went on to form Heaven 17. Dare was the sound of my youth and Love Action still remains an absolute banger.




