Woman, Life, Freedom

a generative art project by Armaghan Fatemi

Woman, Life, Freedom is a narrative work, documenting the ongoing revolution in Iran. It aims to raise awareness about the revolution currently taking place in Iran. I wanted to express my admiration and support for the brave Iranian women who have been protesting in the streets. I think it's important for people in the West to understand that fighting for basic rights in Iran can cost you your life. It's not an easy fight, but these women are determined to see it through.

The inspiration for this project came from footage on news and social media sources. Following the protests for me and many other expatriates is a mix of strong emotions: exhaustion from the daily news of atrocities, guilt for being safe and not being able to help, hope that it will not all have been for nothing, and sadness at not being able to travel and see family. Every time I see videos coming out of Iran, my heart skips a beat. The people in those crowds are risking everything for the sake of a better future. And it's not just a better future for themselves, but for their sisters and children.

I did not want to focus this work on the brutality of the regime, but instead put the spotlight on the bravery of the people; the oppressive nature of the government shines through in their actions, slogans and stories. The Mullahs are depicted as bat-like ambassadors of the Iranian regime, hovering just above the ground and shrouded in darkness. This imagery serves as a reminder that the streets below belong to the people, and they are entitled to peacefully call for their rights.

I hope that this project will inspire viewers to engage with the important issues facing our country and to support the ongoing struggle of its citizens for freedom and justice.

There are some notable features:

Interactivity: Many parts of the outputs are clickable; viewers will be able to learn about the story and inspiration behind each character, and the translation, meaning and context of the slogans. I encourage collectors to explore pieces across the collection to fully understand the events that have unfolded so far.

Non-Deterministic Elements: Like other generative art projects, the outputs are largely deterministic. The skyline and environment are fixed during mint, and each piece has a certain set of characters that can appear. However, the animation sequence that plays is designed to be infinite, with characters entering and existing the stage spontaneously; it should not feel pre-determined. To this end, the specific sequence of events is unique to each viewing.

The Artist

I am an Iranian multidisciplinary artist living in London. My artistic practice is primarily focused on socio-political issues, although I also explore everyday subjects. My projects range from research into Islamic design and Persian carpet weaving, to the study of my own body. I express myself through the language of art and live my life accordingly. Exploring different media for me is an expression of the pursuit of freedom.

During the Covid-19 lockdown I had the opportunity to dive into blockchain and generative art. Inspired by the potential of smart contracts I created Project Mahin. This was during a dark period in my life, when my mother was diagnosed with breast cancer just before the pandemic began and our geographical distance became a source of motivation to create an artwork dedicated to breast cancer, in order to raise awareness and funds for charities. Three years on, my passion for blockchain art is being used to tell the stories of Iranian women, as I strive to use art to bring attention to their bravery, strength and resilience, this time in the context of generative art, in a collection of stories from the streets of Iran.

Technical Details

In order to incorporate fairly literal representations of scenes from the streets of Iran the project makes use of a large corpus of ready-made shapes. The figures of the protestors, slogans and signage are all shapes that have been, largely, pre-created; This is unusual for a project on Art Blocks and presents a unique challenge of how to store this amount of data on-chain at an acceptable cost. Many of the objects are animated, requiring up to a dozen frames:

A couple of strategies are used to minimize the number of bytes required to be stored on-chain:

Use simple shapes. While I wanted to achieve a hand-drawn effect, defining curves requires a lot more data points than defining straight lines, so shapes are simplified as much as possible. A hand-drawn effect is then applied at runtime, using logic based on the rough.js library. This is how the above sequence looks with the effect applied:

These shapes are then exported as SVG and converted to p5js code via a custom Python code generator:

Compress path instructions. In cases where shapes are defined as complex paths, they are encoded as tightly as the specification allows. For example, a path such as:

M 94.2 473.7 L 84.4 473.5

Will be rewritten as:

M94.2 473.7L84.4 473.5

Limiting the values to a single decimal point precision, and avoiding any superfluous syntax elements.

Despite these efforts, testnet deploys still consumed something around 93 million units of gas, costing roughly 2.5 ETH to deploy. The total size of the scripts ends up being roughly half a megabyte, which likely makes it the currently biggest projects on Art Blocks by code-size.


The approach also meant that most tools to create frame-by-frame animations were not an option; the software I tried was all either pixel-based, or, even if they generate vector output, would assume a graphic artist drawing using a stylus, and thus producing heavy hand-drawn shapes. On the other hand, tools like Illustrator do not support creating frame-based animations, and lack support for features such as onion skins.

As a result, it was necessary to develop some custom tooling around this to make creating the animations feasible.

First, I used an adapted Illustrator plugin which allows "playing" an animation frame-by-frame by cleverly hiding/showing the layers in sequence. Mapping this to a shortcut key like F6 allows previewing how changes affect the animation:

At a later stage, it will be key to see the animation with the roughness effect applied. For this, a separate tool was created to show a preview:

Finally, the original SVG files contain markers that are parsed and interpreted by the code-generation, to allow for certain features such as holding a frame, or ensuring the frames in a walk-cycle connect at the right places.

Behind the Scenes

I have been working on this project since October 2022, and it has been both challenging and rewarding. Developing a strong concept took time, and I had to let go of some ideas that I initially thought were promising. Additionally, I carefully considered the cultural and political implications of my artistic choices.

One key aspect of the project was limiting the color palette to create a cohesive look. Initially, I thought about using the colors of the Iranian flag as a nod to the protests in the country. However, as I continued to work on the project, I realized that the themes and messages were not limited to Iran alone. The concept of bravery, courage, and the power of women to stand up for their rights and fight is universal. It transcends borders and boundaries and is a message that can resonate with people from all walks of life, all around the world.

I had considered adding a collection of daytime urban scenes to the project, but I ultimately decided against it since most of the protests have been taking place at night. I believe that the darkness of night can be a powerful metaphor for the brutality of Iranian regime, and can reflect the bravery of protesters fighting for justice and equality.

While there were many powerful slogans associated with the protests, with the help of some experts I carefully chose the ones that were most impactful.

As the project progressed, I continued to add more figures that reflected the protests. As an artist, I am not always certain that I have made the right decisions about certain elements of the project, but this is all part of the journey. It is important to let go of some ideas to keep the work focused and effective. Ultimately, my goal is to create a work of art that is not only aesthetically pleasing but also has a deeper message and purpose.

Character Footage

Please note that the following content contains footage from the protest, featuring some of the actual individuals upon whom the figures in this project were based.

Viewer discretion is advised as some of the footage may be sensitive and emotionally difficult to watch.

Ghazal Ranjkesh, a 21-year-old girl, lost her eyesight after being shot in one eye during the Woman, Life, Freedom movement
Credit: @me-too-movement-iran Instagram
This photo was taken 40 days after the death of Mahsa Amini, a day traditionally reserved in Islamic culture for grieving the loss of a loved one.