The Endless Barrier in Reading
Maybe I was reckless when I decided to switch to art school. As I started working on my first art project, it reminded me of something that had never affected me in coding—dyslexia. I have dyslexia. How did I forget?
When I was young, my teacher would ask us to read paragraphs one by one. Whenever it was my turn, I would read slowly, stumble, or mispronounce words. At that time in China, dyslexia wasn’t widely recognized. They assumed you weren’t paying attention or were just slow. Even I believed I’d never be good at anything related to reading or writing. My Chinese class grades never improved, which was ironic because my grandfather was a writer. I could feel my family's quiet expectations and the disappointment they carefully hid. To escape from it, I chose to major in programming and mathematics—something straightforward, rooted in logic. And logic never failed me.
When I was learning to code, I almost forgot how difficult reading written language used to be for me. After nearly three years of practice, reading code became second nature—I could glance through a script and immediately understand its structure. It felt more intuitive than reading prose. With code, everything had a clear purpose and flow: first, the variables that defined the building blocks; then, the functions that handled specific tasks; and finally, the main function, where it all came together in a logical sequence. Written language, on the other hand, often feels abstract and open-ended. Sentences can be interpreted in multiple ways, and the structure isn't always predictable. That's why code made more sense to me—it offered clarity, consistency, and visual order that traditional reading never quite did.
It’s not just about structure—when I read code, my brain goes through multiple layers of translation. In programming languages, syntax refers to the specific set of rules and keywords used to write instructions a computer can understand. But to me, these symbols and words are more than technical commands—they carry stories and meaning. Take var in JavaScript, for example. It’s a keyword used to declare a variable, which is like a labeled container that can store a value such as a number, string, or object. When I see var, I don’t just think of it as a command—I see the story of a box that has existed in this binary world for a long time, capable of holding anything assigned to it. It waits quietly, doing its job until it's no longer needed.
Syntax in code reminds me of the Chinese chengyu—those concise, four-character idioms packed with meaning and history. One that always comes to mind is 画龙点睛 (huà lóng diǎn jīng), “to dot the dragon’s eye.” It comes from a Tang Dynasty tale about the painter Zhang Sengyao, who once painted four dragons on a temple wall but deliberately left out their eyes. When asked why, he said, “If I add the eyes, the dragons will fly away.” The crowd doubted him at first, but as soon as he painted eyes onto two of them, thunder boomed and those dragons sprang to life, vanishing into the clouds. The remaining two, eyeless, stayed still. The story became a metaphor for the power of a single, deliberate detail to transform something from static to alive.
This was something I came to understand during my first programming project—a simple 2D firefighter game. I realized that programming languages are a lot like chengyu: their structure, syntax, and algorithms all tell a story, and like chengyu, they can be translated and interpreted in multiple ways. Each line of code is compact but expressive, carrying meaning beyond its surface. The design of my game was both intricate and methodical. Here's a snippet of the code:
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
# Shoot water from firefighter's top center
water_x = firefighter.rect.centerx
water_y = firefighter.rect.top
water_projectiles.append(WaterProjectile(water_x, water_y))
To Translate the Code:
This code listens for a spacebar press. When the player hits the spacebar, it creates a burst of water from the top center of the firefighter character and stores it in a list so that the game can keep track of its movement and interaction with the flames.
To Translate the Code:
When you press the spacebar, it’s like pulling the trigger of a giant water gun! A squishy water blob shoots straight up from the top of the firefighter’s helmet. It zooms up super fast, trying to splat onto any fires it sees. If it hits a fire, the fire goes pop! and disappears like magic!
To Translate the Code:
Upon a keypress, bold and bright, The spacebar sparks the hero's might. From firefighters' hands so true, A stream of water swiftly flowed. At center high, where vision soars, A liquid arc in battle roars. With every drop, a fire fades. A valiant act in night's cascade.
In translation, I saw how even a small piece of syntax could carry a narrative and create an action—just like the final brushstroke that brings the dragon to life in 画龙点睛 (huà lóng diǎn jīng). I brought this up to my artist friend while brainstorming ideas for my first art project, complaining about how I couldn’t read. Maybe I shouldn’t have switched to art. You know how coding languages are so different from general linguistics? How have they formatted my brain in a weird way, shaping how I see the world? What was I thinking? My English isn’t good, and my Chinese isn’t much better… They stopped me, looking super excited for no reason, and grabbed my shoulder. “Dude! You should just talk about this in your art!”
I looked at them doubtfully, but then I started thinking about how they had been an artist for years and definitely knew more than me. With that in mind, I decided to go ahead and create my first art project—HyperDog.
For the project, I embedded three screens in a giant 3D-printed dog-like figure, an oracle-like form inspired by ancient depictions of dogs.
On the left screen, a box slowly unfolded, each face of the box containing adjectives that describe the image of a dog in our minds—its name, fur color, and other characteristics. Inside the box was a translucent, liquid-like cube. The words then transformed into objects: a piece of golden fur, a dog-shaped figure, and a dog tag. Each of these elements floated into the liquid-like cube.
The middle screen displayed a user interface where users could "build" a dog. They could type in a name, sex, fur color, and other traits. Once they hit "Generate," the right screen displayed a code editor, revealing a piece of Java code, a translation from English into code:
package Dog;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Dog {
String name;
String sex;
String type;
String fur_color;
Dog(String name, String sex, String type, String fur_color) {
this.name = name;
this.sex = sex;
this.type = type;
this.fur_color = fur_color;
}
@Override
public String toString() {
return name + " " + sex + " " + type + " " + fur_color;
}
public static void main(String args[]) {
}
}
The code gradually dissolved into a cascading matrix of ones and zeros, the binary shifting and reforming into a lifelike dog made of 1s and 0s taking form in digital space.
Stories, once created, will never end.
Same as the tales of the digital world.
For so long, I had thought of reading as a gate I could never quite pass through, a river too deep to wade across. My dyslexia had carved absences into my sentences, leaving me stranded between two tongues—caught between the unspoken expectations of my heritage and the limitations of my own grasp. In reading, I stumbled; in speech, I hesitated. But in code, I am welcomed.
Weitong “ShanMu” Sun (born in Jinan, China) is an experimental artist who explores live simulation, digital storytelling, artificial intelligence, the methodology of programming languages, and their influence on our sense of history and time. Her practice explores the complexity of emerging technology and computation as an alternative narrative container.