{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "74b112d3-10ff-4c51-9eab-b185502e6104",
   "metadata": {},
   "outputs": [],
   "source": [
    "TEXT=\"I've never particularly liked Processing.\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "9e388fc6-2dc3-48c0-8c46-44e67853daf4",
   "metadata": {},
   "outputs": [],
   "source": [
    "%%bash -s \"$TEXT\"\n",
    "convert -background NavajoWhite  -fill gray10  -font letterng-medium -pointsize 24 \\\n",
    "          -size 300x   caption:\"$1\" \\\n",
    "          -borderColor NavajoWhite -border 10x10 out/processing01.png"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "09d09465-79f3-4f37-b1e4-9d8af4dfe994",
   "metadata": {},
   "source": [
    "![](out/processing01.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "d658ddd1-8e6a-4e02-84fb-8ab25c5271a9",
   "metadata": {},
   "outputs": [],
   "source": [
    "TEXT=\"Teaching programming to art and design students for years, I've avoided Processing as it has always seemed to represent a kind of solipsism of digital interactivity and graphics.\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "ce98dd21-078c-43df-b625-d993da241736",
   "metadata": {},
   "outputs": [],
   "source": [
    "%%bash -s \"$TEXT\"\n",
    "convert -background Peru  -fill gray10  -font letterng-medium -pointsize 24 \\\n",
    "          -size 620x   caption:\"$1\" \\\n",
    "          -borderColor Peru -border 10x10 out/processing02.png"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1da2e405-b022-4f84-bbb2-33158fcc627b",
   "metadata": {},
   "source": [
    "![](out/processing02.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "98746079-6ba6-4c31-b0f4-3bc02d2c8fb7",
   "metadata": {},
   "outputs": [],
   "source": [
    "# This cell should be rendered by Processing!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "f925bef4-5b7f-4309-b260-d3dc6491ed48",
   "metadata": {},
   "outputs": [],
   "source": [
    "%%bash\n",
    "convert -background gray50  -fill white  -font Helvetica -pointsize 24 \\\n",
    "          -size 300x300   caption:@in/solipsism.txt \\\n",
    "          -borderColor gray50 -border 10x10 out/solipsism.png"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "06aa9f63-5fab-4ec4-9c5f-312581b7152e",
   "metadata": {},
   "source": [
    "![](out/solipsism.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6b233284-38d9-4af2-993f-d667e05d958f",
   "metadata": {},
   "source": [
    "In the summer of 1996, I was finishing my Masters degree, and I met John Maeda who was just joining the MIT Media Lab to replace the recently deceased Muriel Cooper."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9735a442-c09b-4b18-89e1-b9c39c3efe15",
   "metadata": {},
   "source": [
    "Cooper was the first art director of the MIT Press, producing influential designs such as a 1969 catalog of Bauhaus and the iconic MIT Press logo."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5709cc5f-9c55-4cc5-8e6e-82e225dbbc58",
   "metadata": {},
   "source": [
    "When the Media Lab was founded, Cooper started the Visible Language Workshop to research the intersection of publishing, design, and computation."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "22a1955e-a40a-4012-9384-539f2ed10cc0",
   "metadata": {},
   "source": [
    "My friend Robin was a student in the VLW; through her I learned things about Muriel like how she would say \"Swiss\" instead of Helvetica."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4ed32438-92c2-40f0-83ab-b70fc924db06",
   "metadata": {},
   "source": [
    "NEED: Citation of how Helvetica / sans serif fonts were at one time a radical break from traditional typography."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "587768ba-61b8-4bf5-92d4-9e7a1f50d08b",
   "metadata": {},
   "source": [
    "Maeda created the Physical Language Workshop, later Aesthetics and Computation group, to continue this research. Ben Fry and Casey Reas were among Maeda's first students."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e22fd3fd-76e8-4209-8088-1e4559531c9f",
   "metadata": {},
   "source": [
    "Maeda published a software system (and book) called Design by Numbers. It had extreme constraints such as a fixed 100 by 100 pixel size and monochrome graphics."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "236df74e-d5f4-4345-aa58-48f779a4c3a6",
   "metadata": {},
   "source": [
    "DBN would go on to inspire Reas + Fry to create Processing."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d2cccfa8-af8e-453f-82ae-b45aa35fb131",
   "metadata": {},
   "source": [
    "In 2004, Reas wrote a series of essays around an exhibition at the Whitney gallery called Software Structures. Inspired by Sol Lewitt's wall drawings, Software Structures presented a series of abstract 'structures' (including some of Lewitt's instructions) that are then implemented in a variety of 'materials': Processing, Flash MX, C++."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c542de03-5ea3-4203-92cf-4d18caefe46d",
   "metadata": {},
   "source": [
    "> A benefit of working with software structures instead of programming languages is that it places the work outside the current technological framework, which is continually becoming obsolete. Because a software structure is independent from a specific technology, it is possible to continually create manifestations of any software structure with current technology to avoid retrograde associations. -- Casey Reas"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1593d04f-1466-43bd-af7f-abcbff9125cc",
   "metadata": {},
   "source": [
    "As technologies like Java and Flash have both become deprecated in the contemporary web, the work has been \"restored\" in 2016 with processing implmentations rewritten to use p5.js."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1eced9d5-8274-4d21-b291-4a9984c83fcc",
   "metadata": {},
   "source": [
    "In 2007 I attended a book launch of the MIT Press Processing handbook (authored by Reas + Fry, and with an introduction by Maeda)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2a7d5f07-5ff0-46be-9abf-f33075d1057c",
   "metadata": {},
   "source": [
    "Ealier in the day I had bought another technical book \"ImageMagick Tricks\" by Sohail Salehi."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f838a603-082e-4662-bc67-bab6ba3d59c6",
   "metadata": {},
   "source": [
    "Briefly I met Casey Reas at the back of the room before his presentation. He was curious about the book I had with me and looked briefly at it. He had never heard of ImageMagick."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f5803ac2-1e9b-4bfd-ba63-6301ecd1988b",
   "metadata": {},
   "source": [
    "ImageMagick is full of particularities. Like the default images built in, giving you \"test sources\" to try out the many built in filters and effects."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9ec3dbc6-ef55-48f3-8fc3-139355de88db",
   "metadata": {},
   "source": [
    "ImageMagick is a commandline tool, designed to be used via textual commands written in the generic space of the terminal."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f81e7860-28d4-49d7-830c-f825820d5476",
   "metadata": {},
   "source": [
    "ImageMagick is a porous tool, with many shortcuts (such as using the @ charater to read from a file)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c9ae02fd-ea0e-4960-b7d0-50b2efda8020",
   "metadata": {},
   "source": [
    "ImageMagick is often referred to as a \"swiss army knife\" due to its handling of many input and output formats."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a4e64620-500a-455f-91ef-544877ccba1e",
   "metadata": {},
   "source": [
    "It's particularly useful as part of \"pipelines\" -- series of commands issued on the commandline where the input of one process feeds in the input to another. In this way diverse tools can be composed to make custom tools in an ad hoc way."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "026dd9a2-04f0-4408-900a-5e5043e5d80c",
   "metadata": {},
   "source": [
    "If you don't like the built in handling of text, you can also make use of other layout engines like pango, an independent free software project that IM embeds."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b6e1ba7b-ae75-4f6e-a87a-c1b37a064eca",
   "metadata": {},
   "source": [
    "Bauhaus typographers mis-used metallic blocks used to space typography as visible graphic elements, thus creating one of the defining visual characteristics of bauhaus typography."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "19c4c325-0c47-4620-8d3e-be5d56fb0a35",
   "metadata": {},
   "source": [
    "rather than stating from a blank canvas, bauhaus designers were exploring (mis) uses of the materials they had at hand to create new forms and effects."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a7c5c1c6-5490-4870-9357-286fdd3fe402",
   "metadata": {},
   "source": [
    "the processing canvas is a little island cut off from the rest of the structure of a webpage, and endlessly demaning processor attention through it's draw loop."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3cb4aaa7-b5ee-4e1e-8fa4-7fce4311c5c1",
   "metadata": {},
   "source": [
    "Mayakovsky"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f01f6152-ef3e-4573-a91b-d0c747ab2d26",
   "metadata": {},
   "source": [
    "Lori Emerson!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "4148ce55-3f47-4652-b817-4a410afe0730",
   "metadata": {},
   "outputs": [],
   "source": [
    "%%bash\n",
    "# convert -size 300x200 xc:'#002377' -fill white -draw 'skewX 128 skewY 0 rectangle -60,0 40,200' out/flag_background1.png\n",
    "convert -size 300x200 xc:'#002377' -fill white -draw 'skewX 128 image over 0,0 0,0 in/boris.jpg' background1.png\n",
    "convert -size 300x40 xc:none -background transparent -fill '#ce201a' -draw ' rectangle 0,0, 300,20' -shear 32 band.png\n",
    "# convert -size 300x40 xc:none -background transparent -fill '#ce201a' -draw ' image over 0,0, 300,20 in/boris.jpg' -shear 32 band.png\n",
    "convert background1.png -draw ' image over -25,0 0,0 band.png' background1.png\n",
    "convert background1.png -draw ' image over -25,0 0,0 band.png' background1.png\n",
    "convert background1.png -crop 150x94+0+0 area1.png\n",
    "convert area1.png -flip -flop area3.png\n",
    "convert background1.png -draw ' image over -25,-21 0,0 band.png' background2.png\n",
    "convert background2.png -flop background2.png\n",
    "convert background2.png -crop 150x94+150+0 area2.png\n",
    "convert area2.png -flip -flop area4.png\n",
    "convert -size 300x188 xc:none -draw ' image over 0,0 0,0 area1.png' -draw ' image over 150,0 0,0 area2.png' -draw ' image over 0,94 0,0 area4.png' -draw ' image over 150,94 0,0 area3.png' mixed.png\n",
    "convert mixed.png -background white -gravity center -splice 20x20 -background '#ce201a' -splice 40x40 flag.png"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "389f44ee-3094-4968-99fb-deac4fb9c1c4",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
