Habub — هبوب
Concept
I wanted to simulate a desert sandstorm, specifically a haboob, which comes from the Arabic word هبوب meaning “blasting wind.” The idea was simple: start calm, build slowly, hit a peak, then fade back to silence and repeat.
I looked into how sandstorms actually work. Turns out there are three types of particles in a real storm. Heavy grains that barely move on the ground, medium grains that bounce and leap, and fine dust that the wind just carries completely. That’s exactly what the three particle types in this sketch are based on.
For inspiration I looked at Ryoichi Kurokawa, he makes audiovisual pieces that build tension slowly and let silence do the work. And Robert Hodgin who has been making flocking simulations for over 20 years and finds something new in them every time.
Code I’m proud of
The part I like most is how new particles are born from existing ones. A sand grain on the ground gets knocked loose and becomes a bouncing grain. A bouncing grain kicks up dust. The storm builds itself, I didn’t script it, it just emerges.
let source = random(creeps); flock.addBoid(new Boid(source.pos.x, source.pos.y, 'saltation'));
A new particle appears at the exact position of an existing one. That one line is basically the whole storm.
Embedded sketch
Milestones
Milestone 1 — Stillness
Dark canvas, 28 tiny sand specks near the bottom barely moving.
Milestone 3 — Three layers
Fine dust forms from bouncing grains and fills the entire canvas. Three layers, three speeds, that’s the haboob.
Everything turns orange-red at the peak, wind stops, dust disappears first, then the bouncing grains slow down.
Very cool! Lowkey looks like a meteor shower.