This assignment is due at the beginning of class on Friday, November 16, and has three parts:
- 1. Browsing Reference Pages
- 2. Video Viewing and Response
- 3a. A Chapter for a Generated Book (FIRM: due November 16)
- 3b. Documentation of your Book Chapter (SOFT: due November 16, but no later than November 20)
1. Browsing Reference Pages
You are asked to browse the following reference pages, in the same way that you might idly wander the aisles in an art supply store. I hope you'll spend at least 10 minutes doing this. There is no deliverable.
- RiTa reference/documentation
- Basil.js reference/documentation
- Wordnik reference/documentation
- ml5.js Word2Vec documentation
2. Video Viewing and Response
(This part of the Deliverables will take one hour.) Three inspirational videos have been provided to you:
- Allison Parrish: Exploring (Semantic) Space With (Literal) Robots
- Darius Kazemi: How to Coax Soul from a Machine:
- Lynn Cherny: Things I Think Are Awesome
You are asked to watch Allison Parrish's 2015 Eyeo lecture -- which is about 40 minutes long. Then, in a blog post, please spend 20 minutes writing ~100 words of response to her presentation. What stuck with you, and why? Title your blog post nickname-parrish and categorize it with the WordPress category, 07-Viewing.
If you enjoy this material, consider watching one of the other videos listed above. They're good.
3. A (chapter for a) generated book
Overview
Our class will create a book together. Each student will contribute a chapter. More precisely:
- We will be creating a computationally generated book together.
- Given a common set of dimensions (6" wide x 9" high), each student will write software which, when executed, generates instances of their chapter, in PDF form.
- Your chapter should contain texts and, ideally, graphics and/or illustrations that are computationally generated. The type of content (e.g. stories, recipes, poems, myths, advertisements, etc.) is up to you.
- In addition to generating the content of your chapter, your software should also execute its layout automatically.
- Your chapter should have an even number of page sides. This is important. It should be no shorter than 10 page sides, and no longer than 20 page sides -- 16 page sides would be ideal. It should begin on a right-hand page, and you should assume that it will be printed double-sided.
- You are asked to provide a .zip archive containing 25 PDF files, each of which is the result of a different run of your chapter-generating software. The professor will collate these into 25 different copies of the class book. You will receive one printed copy of the book for yourself.
Note: There's a HARD Deadline and a SOFT Deadline
There are two deadlines for this project:
- Your generated chapter PDFs are due November 16. This is a HARD deadline, people. Your PDFs will be collated, printed and bound into books, and mailed to external reviewers.
- The blog post write-ups of your projects are also due November 16. But this is a SOFT deadline. Really, you could finish all the project documentation in your blog post within a few days, -- say, November 20th, no biggie.
It is important that you provide the requested .zip archive of chapter PDFs by the HARD due date, November 16th. Deliverables which are received after this deadline may miss their opportunity to be collated into the class book. Consequently, this also means:
- Students who provide late PDF deliverables will miss the opportunity to receive critique from the outside experts who receive review copies of this book.
- Students whose chapters are delivered too late for inclusion into the class book, will not receive a printed copy of the book.
Learning Objectives
The purpose of this assignment is to prompt students toward:
- Further application of generative principles: generating text, images, layouts, and their comprehensive combination in a complex yet familiar physical object, a book.
- Experience combining multiple self-written programs into a multi-stage workflow.
- Exposure to a scripting language (Basil.js) for controlling a powerful commercial software application (Adobe InDesign) that would ordinarily be used 'by hand'.
- Exposure to a toolkit (RiTa) for language analysis and synthesis, and text analysis/synthesis concepts such as Markov chains and parts-of-speech taggers.
- Awareness of generative text strategies, in the context of artists' books.
- Awareness of text corpora for creative computational play.
Summary of Activities and Deliverables
This checklist won't surprise you, but it's nice to be reminded of what's expected.
For the HARD deadline of November 16:
- Consider books around you. Look at all the different kinds of books! Dictionaries, comic books, cookbooks, instruction manuals...
- Develop a program (or more likely: a set of programs) to generate a (chapter of a) book. Your software should generate the text, images, and layout of your chapter. See the section below, Details and Considerations, for more information.
- Export 25 PDF files from different unique runs of your software. These files should be named 00-nickname.pdf, 01-nickname.pdf, 02-nickname.pdf, etcetera. This is important; please follow this formatting convention. Put these files in a folder on your computer, and create a .zip file archive from this folder. Upload this archive to a location in your CMU Google drive.
- Make a blog post to document your project. Title your blog post, nickname-book, and categorize your blog post with the WordPress Category, 07-Book.
- By November 16, provide a URL link to the zip archive in your blog post.
- By November 16, provide a title for your book chapter. For example, it might be called "Insect Recipes".
- By November 16, provide a pithy, one-sentence description of your book chapter. Include this brief description under the title in the blog post. (This is important; it will form part of the book's table of contents.)
For the SOFT deadline of November 16 (but acceptable as late as November 20):
- Write a narrative of approximately 150 words describing your development process, and evaluating your results. Please include this in your blog post, too. Include some information about your inspirations, if any.
- Upload a screenshot or two of various pages from your generated book. An animated GIF (showing a few pages with a slow frame rate) is also welcome.
- Upload some photos or scans of your notebook sketches, if possible.
- Embed your code in the blog post. Be careful not to include your user keys or API passwords.
Code Templates and Resources
Helpful templates and starter code have been provided for you here:
Details and Considerations
The content of your book chapter is up to you. Take a look at books around you. How many kinds of books can you think of? Your book chapter may have any combination of text, images, and/or graphics. Examples of possible books include, but are not limited to, things like:
- A children's alphabet book
- A nonsense dictionary
- A visual encyclopedia
- A coloring book
- A comic book
- A screenplay or script for a play
- A phonebook for an imaginary location
- A collection of letters between two lovers
- A fragment of a calendar
- A "how-to" book, full of instructions or recipes
- A field guide, describing the flowers/insects of a region
- A collection of illustrated short stories, poems or sonnets
- An illustrated catalogue depicting and describing objects for sale
- A book of facts, representing a (daily) snapshot of data from around the world
Write a program (or more likely: a set of programs) to create a book chapter. Your program(s) should generate the content of the book as well as its layout. Try and keep these two programs as cleanly separated as possible.
You will very likely need to write as many as three different programs. For example:
- You'll probably write a first program in JavaScript (using p5.js and RiTa.js, for example) which generates some poems or recipes, and saves those poems in JSON format.
- You'll probably then write a second program to illustrate those poems, and save out these illustrations as image files. (Photographic media from an image archive or webcam are permissible if you acquire/sequence them with code.) Of course, it's possible that the text-generator and image-generator could be the same program, especially if there is a tight link between the text content and image content.
- You'll probably then write a third program in JavaScript (using Basil.js) to lay out the book containing these texts and images in Adobe InDesign.
- Note that it is not advisable to attempt to do all of this (i.e. poem generation, illustration generation, book layout) in a single Basil.js program!
Your book may not be laid out 'by hand'. You are asked to generate your book by scripting Adobe InDesign using Basil.js. (Keep in mind that the units are likely to be points, or 1/72 of an inch.) However, if you are deeply screwed and Basil does not behave, you are permitted to generate a multi-page PDF in Processing; instructions are here. If you do this, you may have to sacrifice the quality of your typography.