William Ngan
7 min readSep 2, 2015

Point, Form, and Space — an experiment

By a like law we see how earth is pied
With shells and conchs, where, with soft waves, the sea
Beats on the thirsty sands of curving shores.
Wherefore again, again, since seeds of things
Exist by nature, nor were wrought with hands
After a fixed pattern of one other,
They needs must flitter to and fro with shapes
In types dissimilar to one another.

— Lucretius, On the Nature of Things

Two thousand years ago, Lucretius described a universe of atoms, by invoking Venus and composing in heroic hexameters. Words are indeed codes, transforming ideas into syntax trees and then back into ideas in a reader’s mind. Even though empires rose and fell, and cats appeared on the web, millennia later I can still read Lucretius on a kindle.

But what if the internet was invented in ancient Rome, and Lucretius could code in javascript: How would he then trace the ray of sunlight that illuminates dancing specks of dust, or generate those soft waves that fashion sands into shapes? And two thousand years later, in what forms would I read or experience his narrative of an atomic universe?

Perhaps, by imagining the old poet writing javascript, we may set our mind free for a moment, and so to unchain code from the shackles of business logic or app stores, and to consider this medium in its pure form: a form even lighter and more expansive than words, and a form full of potentials for poetry and abstraction.

If combinations of words bring forth poetry, and fire turns clay into pottery, then can code, through its variables and functions and classes, produce a new form of humanistic expression? Does form follow function()?

It is not easy to answer these questions, because code pushes us to ponder the multiplicity of forms as variations of a single concept in different contexts and states. It enables interactions, recursions, and transpositions. Indeed, to tell One Thousand and One Nights in javascript, Scheherazade could encounter a stack overflow error if she pushed it too far (or did she do it deliberately so dawn will never come?) Thus code challenges us to seek and sort relationships, to analyze and to imagine at the same time.

These questions and considerations motivate me to speculate and experiment into the night. I thought of unity in variety, of complexity from simple rules, of growth of cells and forces of atoms, but for a long time I couldn’t organize these thoughts into something more than a random collection. Where should I begin?

It was Paul Klee who inspired me with a deceptively simple idea:

A line is a dot that went for a walk.
Drawing is taking a line for a walk.

So I decided to start with a simple dot. The dot is so small. I had to squint my eyes for years. I had dropped this project, only to pick it up again, and again, never quite sure what it was and where it would lead.

Mosumi, a project I created in 2010 for Code:Craft exhibition in Museum Sheffield, was a first-take on this idea. (Video) Then I wasted a couple years playing video games.

What is a simple concept that can be modeled, extended, and visualized in code?
A point.

What is a point?
A position in a space.

What is this space?
A compartment of an outer space that extends infinitely. A room. A cave. A pair of brackets.

What are these rooms or caves or brackets?
A context. ( . ) { . } | . | [ . ]

What is a context?
A limited set of possibilities, comprehensible to a human mind.

So if a space and its walls define a set of possible ideas, then a point specifies a unique idea. Its meanings are always contextual to its space. Each form is an interpretation of a point in a particular context.

Space gives meaning to a point, and Form makes a point visible.

Through code, we can move points, switch spaces, and change forms, and thus access and express a multiplicity of ideas. To me, this provides a minimalistic union of code and art: as a point made visible in a space.

This is the model at its simplest:

It is easy to see how Point, Space, and Form can extend. For instance, you may specify a new form of a point, perhaps as a tiny ink blot, perhaps as a histrionic gesture of pointing.

Or you may envision a three-dimensional color space, where a point defines hue, saturation, and lightness.

Or you may brood upon the concept of a pair of points and discern, with your mind’s eyes, the various interpretations of a single idea.

Better yet, you may explore the variations of these 3 ideas put together.

These are the motivations and ideas behind Pt, an experiment on point, space, and form. It is an attempt to reduce an idea into its very essence, and extrapolating from its initial conditions, to investigate its possibilities and its limits.

In particular, I would like to seek a model of coding in which the mind does not fixate on code initially, nor does it exhaust itself by studying algorithms or drawing diagrams like a visual-programming tool. Instead, the mind should focus on bringing forth imagery and abstraction, like Appollonius slicing a cone to look for an ellipse, like Michelangelo setting free the prisoners from marbles. Code is a medium, and while the medium may be the message, it needs not be the motive or the source of vision.

What code offers us is the potentials of a new medium: it can automate processes, model abstractions, and design interactions. And I would say its defining characteristic is the immediacy, which lets us quickly iterate variations of a single concept and evaluate them in visible ways. This cannot be achieved with pencil or stone or word or Photoshop. Code is a luxury that artists didn’t have throughout history.

But one drawback of this immediacy (or what’s called a generative method) is a potential confusion of cause and effect: that by tweaking some parameters of a function, one can generate a whole new set of dazzling effects, and in 15 minutes so much were created and lost, including the original thought. Some would argue this is a feature, not a bug. I would beg to differ.

In a sense, it is a bug in the mind. Like language, code channels our thoughts as well as conditions our thinking. Weak thoughts get carried away by stronger currents, but stronger ideas yet persist and are perfected through iterations. We may discover these stronger ideas not by playing with parameters, but by looking outside code, into poetry, philosophy, biology and other fields. Or think of Mona Lisa as we code, which Walter Pater describes as “a beauty wrought out from within upon the flesh, the deposit, little cell by cell, of strange thoughts and fantastic reveries and exquisite passions.” Strange thoughts are what we need!

Within these endless possibilities of forms generated by code, our task is to find in them a vision of beauty, or a layer of meaning, or a combinatorics of logical abstractions and humanistic values, that is both personal and shared.

Allow me to conclude with this paragraph, which I love, that marks the end of Italo Calvino’s Six Memos for the Next Millennium:

But perhaps the answer that stands closest to my heart is something else: Think what it would be to have a work conceived from outside the self, a work that would let us escape the limited perspective of the individual ego, not only to enter into selves like our own but to give speech to that which has no language, to the bird perching on the edge of the gutter, to the tree in spring and the tree in fall, to stone, to cement, to plastic…

I hope you will give Pt a try, and let me know what you think.

Edit on Sep 2017: Yay! An improved version of Pt has been launched as a new library: Pts.js.