Skip to content
View GalMunGral's full-sized avatar

Block or report GalMunGral

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
galmungral/README.md

a computationalist manifesto

please, give me any children from any background, and i will put on the blackboard one, two, three, four, five, six, seven, eight, and underneath, the even numbers--two, four, six, eight, ten, and i will ask the child: how can there be as many even numbers as there are numbers? and i will try to have the nerve to let the silence settle, because it is out of the silence that there may come, very slowly, tentatively, god knows, the spark of the question, of the wonder, of the exasperation, which will lead, believe it or not, to that word--the word isn't important--but it will lead to the notion which descartes says is a proof of god in us: the notion of the infinite, because only that notion can help you understand why these two series are homological: one to one to one, and there will be in that room children for whom a fire will start, and it need never go out, if they are properly taught and loved, if they are not condescending to them, and they don't need to know that cantor's transfinite cardinal numbers are a damn difficult concept far beyond me--they don't need to know that--that's how his demonstration starts, and we can start there and stop at a much earlier moment with the sheer joy of it--the sheer animal joy of understanding something infinitely deep.

-- george steiner

if you are reading this, you're witnessing and participating in a miraculous feat achieved only very recently in human history. written text is not built into language, but an invented technology--language is based on sound, and recording the vibrations of our vocal cords as symbols, then decoding them with our eyes, is not something we are born to do.

almost all humans who have ever lived were illiterate. for millennia, humans passed stories and wisdom from generation to generation verbally. only a few places invented writing independently, and only the privileged could master this technology. how insane it would have sounded to them that nowadays an ordinary person can shame politicians and people in power for misspelling a word or mispronouncing a character. how far we have come as a civilization--and most of that achieved within the last hundred years!

what if this is just the beginning of something far greater, and we are nowhere near realizing our true potential as a species? what if we continue the effort to encourage ordinary people to distill, externalize, and preserve their mental processes? not just the utterance of words, but the formal, logical, and mathematical thinking, and in particular, computational thinking.

"that's absurd," you might say. "very few could grasp such abstract concepts!"

and yet, consider how writing was once the exclusive domain of priests, scribes, and officials. programming today is much the same: programmers are treated as priests in the church of computation, a special class of people granted direct access to sacred knowledge, an indispensable intermediary for the rest of the populace.

"STEM!" they say. but i say: "let's do away with the priesthood!"

consider another kind of abstract symbols: sheet music. what is a 1/128 note? what is "sforzando piano"? and yet, there is no corner of the world where humans have walked that does not hear music. we must distinguish between sheet music--a technology for preserving and communicating music--and the entirely separate, universal, innate human capacity to comprehend and create music.

we understand rhythm intimately: our hearts beat at a regular interval, we breathe, in, out, in, out, and we walk, left, right, left, right. computation is no different. it too is a music within us, woven into the cadence of all of our actions. this is how you open a door--repeat the following: if my hand can reach the handle, stop; otherwise, left foot, right foot. if the door is locked, unlock it. with the door unlocked, turn the handle. just like language and music, computation unfolds over time and permeates our existence. is it not possible that we are born with the capacity for computational thinking, just as we are born with vocal cords and tongue muscles to make distinct sounds that carry meaning? and just as you don't need to be literate to be a good orator, and you don't need to read sheet music to be a good singer, you also don't need to parse english-like text filled with cryptic symbols to be a good computationalist. we are all born with the potential to be an orator, a musician, and a computationalist.

so what's to be done?

first of all, our current approach to teaching programming, and more broadly, mathematics, is fundamentally flawed. you wouldn't teach a person who has never heard music before by starting with sheet music notation. instead, you'd probably show them what sounds exist in the world, and how to make them by pressing a key, plucking a string, or blowing into a cavity. you'd let them compare pitches and timbres, and try to sequence and layer them. they'd be immediately intrigued, because the experience is visceral.

perhaps the same applies to programming education. instead of teaching beginners commands, keywords, subroutines, classes, and all kinds of syntactic and semantic constructs, maybe we could start with a video game that provides an extremely simplified view of what's actually going on in a computer's circuitry, using a grid of registers where you can drag things around and combine them. you could then record and play back what you've just performed, and further combine those recordings into richer, more interesting sequences--like live looping, where you progressively add more elements. we could even extend the live looping metaphor to include recording and playing back the action of recording and playing back itself--a meta-recording! in this way, we can introduce, simultaneously, at a lower abstraction level, registers and instructions, and at a higher level, recursion and composition. no symbols. no syntax. once they are comfortable with this process, the final reveal:

"you have been programming this whole time!"

this is just an example to illustrate how computation can be lived before it is written down, just as music is lived before it is scored. i believe that once we break free from conflating experiencing computation with programming, the possibilities are limitless. the symbols, the syntax, the abstract constructs--these remain our destination, the sheet music that crystallizes what we've composed. but first, we must learn to hear the sounds! we do not forbid a child from touching piano keys because they cannot play like beethoven. we do not forbid someone from picking up a pen because they cannot write like shakespeare. yet we do precisely this with computation. by equating the experience of computation with the act of programming, we deny ordinary people the right to think computationally at all. we write birthday cards without being shakespeare. we hum melodies without being beethoven. why should computation demand total devotion or none at all?

for too long, computation has been shrouded behind the veil, kept in the temple, its mysteries handed down as laws but never directly witnessed. it must descend--become incarnate in our hands, our gestures, our bodies.

the word must become flesh.


my visual computing playground

navier-stokes frankot-chellappa path rendering volumetric path tracing recursive ray tracing cylindrical map projection hillshading terrain 2d waves 3d waves ct slices particles mesh distortion ball-and-stick

@GalMunGral's activity is private