NYU ITP, Spring 2015
- Lauren McCarthy [email protected]
- Wednesdays 12:10-2:40, Room 445
- Office hours signup, Room 455
- Resident office hours signup
An API allows a connection between two different applications. It can pass data and information, or provide access to modify or control the application itself. Though APIs are often thought of in terms of their functionality, they are never neutral. Expectations about why and how it might be used and who should be able to use it are embedded in the infrastructure of the system. This course will look critically at the structures of power and control inherent in APIs, and explore possibilities to subvert ideologies imposed by the technology. We will build applications that access various APIs, as well as design APIs of our own. Students will use Processing, as well as JavaScript for both server-side and client-side programming, covering tools such as JSON, OAuth, AJAX, node.js, p5.js, jQuery.
Central to the class is the idea that APIs are by nature future-oriented, providing an access point where we may reimagine and renegotiate the world we live in. The course will be project-based, complemented by shorter technical exercises, readings, and research. Experience with JavaScript is highly recommended.
Grades will be determined according to the following breakdown:
- Project 1 25%
- Project 2 25%
- Final Project 25%
- Participation and attendance 25%
Please see ITP's statement on Pass/Fail which states that a "Pass" is equivalent to an "A" or a "B" while anything less would be considered a "Fail".
The class will be a mix of seminar and studio:
There will be a number of readings for this course. Each reading will be prepared by one pair of students, who will read in depth and present and lead a discussion around the ideas in it. The goal is not to just give a report, but to engage the class in an interesting and provocative discussion. Things to include in your planning / presentation include:
- Summary of main ideas.
- Links, images, or video of projects / products / things referenced in the reading.
- Other relevant things you've read, heard, or seen.
- Personal experiences.
- Questions for the class related to the reading.
- Questions for the class that relate all three of the readings together.
On the days you are not presenting, you do not need to read all of each reading, but you need to read/scan enough to be able to participate in the class discussion.
Sign up for the reading you'd like to present on by putting your name next to it in the syllabus.
There will be three projects during the class. The first two will have more specific guidelines, and the final project will be open. For the first two projects, you may actually implement something, or you may present a conceptual mock-up of an idea. The final project must be something you actually create, not just a concept. It may expand on one of the earlier projects.
The technical workshops in the class will use JavaScript. You are welcome to use any language or tool for your work.
- Intro and syllabus
- History of APIs
- IBM System/360 (1964)
- salesforce.com (2000)
- ebay (2000)
- AWS (2002)
- del.icio.us (2003)
- flickr (2004)
- Facebook API (2006)
- Twitter API (2006)
- Google Maps API (2006)
- Amazon S3 and EC2 (2006)
- programmableweb.com (2005)
- mashery.com (2006)
- twilio (2007)
- foursquare (2009)
- Oracle vs Google (2014)
- Instagram unofficial API (2010) and official API (2011)
- Politics of APIs
- "Politics of APIs" diagram, Kin Lane
- Medium: Politics of APIs, Tyler Singletary
- 5 Things to Understand About Open APIs, Chuck Freedman
- Survey
- Life Sharing, Eva and Franco Mattes
- Revealing metadata
- Floodwatch, Ashkan Soltani, The Office for Creative Research - You are not your browser history
- Internet Illuminator, Allison Burtch
- Trackography
- commodify.us
- RealCosts
- Harlo Holmes on Activism and Metadata, Deep Lab
- Resistance
- GWEI, Paolo Cirio, Alessandro Ludovico, Ubermorgen
- web2.0 suicide machine, moddr_, Fresco Gamba
- Punk Rock 101, Cory Arcangel
- Automation
- Random Darknet Shopper, !Mediengruppe Bitnik
- Amazon Random Shopper, Darius Kazemi
- Visualization
- Prison Map, Josh Begley
- Directions to Last Visitor
- Hit Counter, Jonah Brucker-Cohen
- America's Got No Talent, Katherine Moriwaki, Jonah Brucker-Cohen
- Drones, Pitch Interactive
- The Refugee Project, Hyperakt
- Critical Network Mapping, Burak Arikan - Eyeo
- Selfie City, Lev Manovich, Moritz Stefaner, et al
- Data, Zach Gage
- Technical workshop: API shortcuts and alternatives
- Project 1 (DUE 2/11)
- Discussion: protocol and control
- Tania Bucher, Objects of Intense Feeling: The Case of the Twitter API
- Alexander Galloway, Protocol - Introduction
- The Anxieties of Big Data, Kate Crawford - Soni
- Technical workshop
- JS basics
- REST, JSON
- Server side / OAuth
- Review Project 1
- Part 2 intro / survey
- The Internet's Own Boy: The Story of Aaron Swartz
- Project 2 (DUE 2/11)
- Guest workshop Sam Slover
- Create your own API with node.js.
- Model and collect data.
- Create and serve-up API endpoints in a RESTful style (responding with JSON).
- Discussion: open web / access, tactical media, exploits, hacking
- Critical Art Engineering, Electronic Civil Disobedience
- Manifestos
- UBERMORGEN.COM
- Critical Engineering, Julian Oliver, Gordan Savičić, Danja Vasiliev
- A Hacker Manifesto, McKenzie Wark
- The ABC of Tactical Media, David Garcia, Geert Lovink and The Exploit: A Theory of Networks, Alexander Galloway, Eugene Thacker
- Guest lecture Kawandeep Virdee (2/25)
- Review Project 2
- Part 3 intro / survey
- Final Project (DUE 3/11)
- Technical workshop
- Hardware / device APIs
- Arduino Yun
- Discussion: The Internet of Things and People
- A Design Methodology for Deconstructing Networks, Jonah Brucker-Cohen and Impersonating the Machine, James Bridle
- The Cult of Sharing, Mike Bulajewski
- The Epic Struggle for the Internet of Things, Bruce Sterling
- Review Final Projects
- Wrap-up
- CodeAcademy: JavaScript
- How to learn JavaScript properly
- JavaScript the right way
- Code School
- JavaScript garden
- A re-introduction to JS by Mozilla
- JavaScript 101 from JQuery
- JavaScript: The Definitive Guide
- Eloquent JavaScript, Marijn Haverbeke
- Beginning JavaScript, Paul Wilton and Jeremy McPeak
- Learn-JS.org - especially the sections on functions, objects, and callbacks
- Learning Advanced JavaScript
- http://www.nyu.edu/lynda - lots of great tutorials here. Log in with your normal nyu net-id/password for full access.
- CodeAcademy
- Flat Iron School
- HTML & CSS book
- JavaScript book
- APIs: Strategy Guide (O'Reilly)
- RESTful Web APIs (O'Reilly)
- codecademy APIs tutorials
- lynda.com: Effective Design of RESTful APIs
- lynda.com: Up and Running with Cloud Service APIs
- Scraping the web with node.js
- d3.js - JS library for manipulating documents based on data, using HTML, SVG, and CSS
- p5.js - Processing reinterpreted for the web
- raphael.js - JS library for manipulating vector graphics for charts and viz
- dygraphs - JS charting library
- Vega - describe data visualizations in a JSON format, and generate interactive views using either HTML5 Canvas or SVG
- Gephi - interactive visualization and exploration platform for networks and complex systems
- Github student developer pack - includes Digital Ocean $100 credit and more!
- Basic unix commands - We'll be using the command line regularly in this class. Nothing too fancy; just the basics. Get familiar, at the very least, with the commands
ls
,cd
, andmkdir
. - Checking code: JSLint / JSHint
- Browser debugging: Chrome Developer Tools (tutorial) / Firebug (tutorial)
- Mobile debugging jsconsole.com
- Sharing code snippets (useful for asking questions): gist.github.com
- Critical Making, Garnet Hertz
- ProgrammableWeb
- http://en.wikipedia.org/wiki/List_of_open_APIs
- https://gist.github.com/afeld/4952991
- OpenWeatherMap - http://openweathermap.org/API
- NYTimes - http://developer.nytimes.com/
- The Guardian - http://www.theguardian.com/open-platform
- flickr - https://www.flickr.com/services/api/
- MTA - http://web.mta.info/developers/developer-data-terms.html#data
- Foursquare - https://developer.foursquare.com/
- Sunlight Foundation - http://sunlightfoundation.com/api/
- apievangelist.com/
- Museum APIs list