This Gauntlet Assignment is due at the beginning of class on Thursday January 28, and has three parts:
Note: You are required to publish the code for your projects on Github. If you need Git help, please talk to your peers or consult with the professor. Here are some helpful resources for Git and Github.
Note: You may combine any of the above parts as you see fit. They each have different requirements.
Part I. Two Addons in OF
In this assignment, you are asked to create a functional openFrameworks application in which you combine two community-contributed ofxAddons — that is, to successfully get at least two different ofxAddons to compile in the same project. In short: this assignment tests your ability to hack sh!t together.
- This is ‘primarily-ish’ a technical assignment, intended to build confidence and experience through practice. Masterpieces are not requested, but they are always welcome. In this sense, this is less of a programming assignment, than a test of your tolerance and patience for figuring out cryptic, poorly documented, and possibly idiosyncratic compiler settings. Note that while there are some addons that come with OF by default, you are required to use addons that do not come with the standard OF download.
- Assuredly, the strongest projects will combine the two addons in an interesting way. But it will be sufficient if you can just clearly demonstrate that both addons are compiling and working properly in the same application. Think of it as: overcoming the challenge of merging two different “Hello World” applications into one.
- You don’t have much time. Therefore, for this assignment, be “Lazy like a fox”. How can you combine two things to produce something provocative and original, with low work and maximum impact?
Some Hints for Doing the Work
- Browse the ofxAddons to see what’s possible. Click on a few to dig deeper. For example, did you know that you can write a program to export animated GIFs, or which recognizes gestures, or which generates QR codes, or which does optical character recognition? What kinds of ideas do you get?
- In making your selections, give consideration to the conceptual potential of combining these two different capabilities. Can you tell a simple story — in less than 140 characters, say — that describes what happens when you combine the two addons? For example: “This app exports an animated GIF (using ofxGifEncoder) when someone is detected smiling (using ofxCv).”
- Get warmed up by (A) compiling some standard OF examples; (B) compiling some of the default addon examples (which come with OF), (C) using the Project Generator to create projects using default addons, and (D) compiling some of the example projects that come with the ofxAddons in which you’re interested. You may need to use the Project Generator to update the examples of older addons.
- Many community-contributed addons are unfinished, experimental, limited to certain OS platforms, or obsolete (designed to work only with older versions of OF). Expect to be frustrated. If an addon seems unlikely to work, be flexible and just try something else. To be on the safe(r) side, select addons that are known to work with OF version 0.8.0 or newer.
- Put the addons you downloaded in your addons folder. If you’re lucky, the Project Generator might just work.
- It would be preferable if you worked with two addons “from the wild”, but, if absolutely necessary, one of your two addons can be one of the “core” addons that come with the openFrameworks download.
- Create a single OF application in which two different (non-default) ofxAddons successfully compile together, as described above. Think about how to design your project in such a way as to show that the two addons are both fully operational (and not simply ‘able to compile’).
- Create a unique blog post for your project, with the WordPress category 01-ofxaddons.
- Embed a YouTube or Vimeo video demonstrating your project, preferably with a narration.
- Please write 100-200 words about your project. Be sure to describe why you selected these two addons. What inspired you to combine the capabilities of these two libraries? What could come from merging these two libraries — what could (or did) you make possible?
- Upload your code to Github, and include a link in your blog to your repository.
- Include at least one static image, which could be a screenshot or other diagram. Include an embedded video if desirable.
- Include scans or photos of any sketches, if you have them.
Upon completion of this project, you will be able to:
- Compile applications with openFrameworks, a high-performance arts toolkit.
- Incorporate openFrameworks extension libraries (“ofxAddons”) into your applications.
- Demonstrate awareness of the range of C++ software libraries available to artists.
Part II. Map Visualizations
In this project, you will create two visualizations from provided geographic data.
Select one of the following six datasets. (This will be the only time this semester in which the ‘content’ of the project is provided to you.)
- The Guardian’s The Counted database (.csv, 1139 rows) of people killed by police in 2015 in the USA. Note that it is necessary to geocode addresses in this data; consider a geocoding service such as Temboo.com’s interface to the Google Geocoding API. [zip]
- Drone strike data (.json, 610 rows) compiled by Josh Begley [zip]
- All known gun deaths in the United States during 2013 (.csv, 12K+), from Slate.com. [zip]
- All of the hotels in the world (400K+, 33MB zipped .txt), with thanks to Jer Thorp.
Note: this file is tilde-separated (~), and is known to have 2 or 3 corrupt rows. [zip]
- All of the meteorite strikes (.csv, 34K+ rows), with thanks to Nick Felton. [zip]
- All of the earthquakes in the past month (7K+ rows), from the USGS, [zip]
- If you prefer to work with different data, kindly consult with the professor for permission.
- One visualization is just a “regular” cartographic map: a plot of the latitude/longitude of your data. This is probably boring. Get this out of the way.
- The second visualization must not be a map.
- Create the two visualizations.
- In a blog post, write a couple paragraphs discussing your visualizations. Please be sure to include:
- Your objectives or goals, especially for your non-map visualization. Why did you select the dataset you chose? Why did you choose to show the data this way?
- Evaluate and compare the two visualizations. How do they differ in the insights they provide?
- Can you point to a specific finding, piece of data, or other discovery that your visualizations reveal?
- If possible, embed or link to the visualization itself in the WordPress post.
- Please include one or more screenshots of your visualizations.
- Link to your github repository containing the code for your visualizations.
- Categorize your blog post with the WordPress category, 01-maps.
Upon completion of this assignment, students will be able to:
- demonstrate familiarity with a workflow of operations in visualizing geographic data.
- demonstrate practical skills in using a popular toolkit for creating computational information visualizations, such as D3.js, P5.js, Processing, openFrameworks, etc.
Part III. Image Bot
Make a Bot! or, Towards Public Performative Generativity:
Design an automated generator of interesting imagery.
In this project, you will make a Twitter bot that publishes images. Your bot’s images could be:
- synthesized computationally (as in @mothgenerator or @neokanji)
- derived from a large image database (as in @museumbot)
- remixed from popular media (as in @TVCommentBot, @desires_exe or @swotperderder)
- generated in response to other people’s requests (as in @lowpolybot)
Your bot should publish an image at least once per day (though hourly would be ideal), and it should have published at least three images (though hopefully more) by the time the assignment is due.
Some potentially helpful resources:
- Node.js + Processing Image Twitter Bot tutorial by Dan Shiffman
- Node.js example Twitter bot by Allison Parrish
- openFrameworks ofxTwitter addon by Dan Moore
- openFrameworks ofxNodejs addon by Kyle McDonald
- Python script to run an image bot
- Consider using the Temboo library or the IFTTT service
- Some excellent resources from Katie Rose Pipkin
- More excellent resources from Katie Rose Pipkin
Note: there are some restrictions:
- Your program may not harass people. If you wish your program to interact (e.g. through @-replies) with real people, those persons must “opt-in” by following your bot. If you do disobey this restriction, please note that (as a practical matter) you are seriously risking having your account blocked very quickly; your project may be very short-lived.
- With the exception of fair-use copyright violation, your program may not perform illegal actions, such as the Random Darknet Shopper (a bot which purchased illegal drugs). Be careful! Consider the case of this bot which got police attention because it accidentally issued death threats. (To another bot!)
- Discuss your project with the professor beforehand if you anticipate using NSFW content.
- We assume you’ve already read Michael Cook’s Brief History of the Future of Twitter Bots.
- Create a bot that generates and publishes interesting transmissions. Run your bot for several days/iterations.
- In a blog post, link to your bot and tell us its name. For example, you might write something like (for example): “My bot is called @golanbot and its URL is http://twitter.com/golanbot.” Make sure to give your bot a 140-character description. (You’ll do this anyway if it’s a Twitter bot, in its “biography” field.) Please include this in your blog post.
- In your blog post, write a couple paragraphs discussing your image bot. Please be sure to include:
- Your objectives or goals in creating it (and/or, what inspired you)
- Your evaluation of its results, including: Did your bot ever surprise you, or make you laugh? Discuss any surprising posts it generated which you felt were particularly successful.
- Did you (already) receive any interesting reactions to your bot? Did anyone follow your bot? Did your bot make any posts that others have shared? Discuss your audience, if your bot reached one.
- In your writing about your project, in your blog post, please discuss how (or whether) your particular bot falls into one of Michael Cook’s taxonomies. What are the ‘aesthetic values’ of your bot (using Cook’s terms) — why might someone follow it?
- Important: please include one or more screenshots of your bot, showing at least three (preferably more, please) of its results — preserving some of its results for all time. Feel free to cherry-pick some of your favorites. You can also embed Tweets directly in your blog post, but please provide some actual screenshots, too.)
- Link to your github repository containing the code for your bot. Be careful not to accidentally upload your private Twitter keys.
- Categorize your blog post with the WordPress category, 01-bot.
At the conclusion of this assignment, students will be able to:
- Demonstrate skills in generating imagery;
- Demonstrate skills in using APIs to publish media, computationally;
- Discuss the aesthetics of generated media