3 min read

Code is a load-bearing poem (and a pop-up newsletter)

A program is a poem that you write for two audiences: The computer, and every programmer who comes after you.
Code is a load-bearing poem (and a pop-up newsletter)

Hi there, fellow seekers-after-simplicity.

I'm Nat Bennett, and you're reading Simpler Machines, a weekly newsletter about being a human who makes software.

I'm officially back from the road and fully charged. We had a big adventure!

you should see the other guy

Everyone's okay, but we had to fly back.

To... celebrate? not having a car for a bit, I'm starting another newsletter. It's called Walking in Oakland, and it's about, well, walking in Oakland. It's going to be daily, it's going to have pictures, it's going to be very short, and it's going to run for exactly one month. After that, poof! E-mail list deleted.

The first and second issues are already out. Subscribe now to get the full run.

And share that page with any friends you know who like photography, or Oakland, or walking.


Code is a load-bearing poem.

A poem is a sequence of words,
selected so that the meaning of those words,
and the metadata of those words,
and the arrangement of those words
produces a particular effect.

I learned most of what I know about writing code in poetry classes.
I learned to write (and read) poetry
before I learned to code, and I didn't give coding a real shot
until I discovered Ruby.

Ruby made writing code seem possible.
Writing Ruby looked like writing poetry.

A good poetry class teaches you to write on a schedule.
You get a prompt. You write some words.
You read those words to other people.
You get notes.
You update those words based on those notes.

This is a pull request.

If you put ten people in front of me and said,
"Teach a class."
"Teach them to be software engineers,"
(first I would laugh)
and then that class would look
more like a poetry class
than a computer class.

Poetry teaches you to say what you mean.
Code does too, and maybe better.
(Computers are stupid teachers, but honest ones.)
Code teaches you, like poetry,
to say more than what you mean.

A word isn't "just" a sign,
an abstraction spun out of a longer sentence.

A word has connotations. Prior usages.
Every other moment your reader has seen that word
reverberating
plucked like a string
in the cosmic consciousness.

A word has other senses. A history. An etymology.
A word might have components.
Might have another language
that the word brings with it.

A word has a sound. A shape! A sensation on the tongue.

Just so:
A "word"
in a computer program
has a literal meaning,
an instruction to a kernel or compiler.

("Literal" has a special sense to a computer.
It means "exactly as it is upon the page.")

But it has other senses, other properties.
It has a speed. A connection to a thing called "idiom."
It might have "bindings."
It might be a love letter
to another program entirely.

A program is a poem that you write for two audiences:
The computer, and every programmer who comes after you.

A program is a sequence of words,
selected so that the meaning of those words,
and the metadata of those words,
and the arrangement of those words
produces a particular effect.

(I had to write this poem in markdown
to get it to compile correctly.)


Jobs

I reviewed and updated the jobs page. A couple of highlights:

Winnie is hiring senior and associate engineers, San Francisco or remote. 60% of their staff are women.

Mavenlink is looking for a Senior DevOps Engineer in Salt Lake City, Utah. Pairing and Kubernetes, if you can believe it. The listings don't mention it but they're open to remote.