Time(s) Splitter by Richard Goldstein, 2017
The Programing for Cultural Heritage course provided me with my first Python encounter. In the background of learning its basic programming syntax and functions, William Burroughs kept creeping into my mind with Python being a means to scrape, recompose, and clarify or give new meaning to text. Using the word “text,” is perhaps a bit out of place when considering programming’s context of “data,” but seeing data as text is what sparked the inquiry of my Python experiment. With Burroughs as inspiration, I chose to query the New York Times api as my resource much in line with Burroughs’s cut-up material of choice, the newspaper. I wanted to cast as wide a net as I could and only filter the paper’s archive by Burroughs’s birth and death dates, allowing him to literally frame the project field in addition to culling the leading text “snippets” of these articles. The implementation of Python required two scripts, one that would query the latest articles in reverse from his death and one that would query the earliest dates and moving forward from his birth. Having acquired the text, I then needed a way to atomize and structure these strings, which the CSV format supported. My rule for splitting text strings was a three-part if/then statement. I felt splitting texts on their preexisting conjunctions and pauses would lend a smoothness leading up to the ensuing juxtaposing concatenations. The system follows:
- if the "snippet" of text has a comma, split on the first comma
- if there is no comma, split on "and"
- if there is no "and" split on either "in," "on," "at," or “for"
which in Python looks like:
if ',' in a_doc['snippet']: words = a_doc['snippet'].split(',') elif ' and ' in a_doc['snippet']: words = a_doc[‘snippet'].split('and') else: words = re.split(“in|on|at|for",a_doc['snippet'])
This logic would parse the text before writing them out to discrete cells of two CSVs, one for the oldest and newest strings.
Once written, rows of each CSV could then be read across and concatenated into new snippets that the final video presents. I chose to use video as a means to feature the “working” generative role of Python that was at the heart of my project. The method and video also pay respect to Beryl Korot’s Text & Commentary (1977) in which motifs of language, weaving, and technology (the loom being an early computer) are represented in video. I discovered poet and MIT professor Nick Monfort through this project and was inspired by his multimedia approach to presenting digital poetry.
The background of my video is split into views of the “oldest” and “newest” queries which loop and are presented at a transparency of 65 percent that allows their lines to overlap in a central vertical band. Concatenated strings are then presented over this looping field and read aloud by Mac’s assistive Alex VoiceOver on speech rate 29, pitch 44, volume 100, intonation 31.
In this project, I thought of a scripting language not just a research tool, but a writing tool that blurs the border between data and text. Basically, my interest is in using Python as a writing tool and how work with organizing data is also a form of literary writing and how we can expand our sense of “reading” in much the same way. For instance, I would be interested in writing a novel not by its content but by its Python framework to view any content through, so it is the structure that generates ever-changing and shifting content no matter where you point it—the narrative lying in the engineering and structure and not relying upon its pictorial or illustrativeness.
All my thanks to Matt Miller for guiding my engineering and support of my imagination.
—Richard Goldstein, 2017
DreamMail (Fulton between Arlington and Bedford), Richard Goldstein, 2017