-
Notifications
You must be signed in to change notification settings - Fork 15
Home
MAAD 23655 (Autumn 2022)
In this course we'll be working together as an open source arts collective. We'll produce an online app which explores the expressive space between software as a tool and software as art. We'll learn the processes and tools that professional creative technologists use when working together to produce "software art" projects. This is an intermediate level coding course with work being predominantly written in JavaScript (server side and client side). While proficiency in JavaScript is not required, it's recommended that students have a background in basic programming concepts (data types, variables, functions, conditions, loops, etc) as this course will build on those to introduce more intermediate level concepts and programming paradigms.
On this Wiki you'll find a collection of class notes, references and documentation. This will be updated throughout the quarter.
the DOM API (front-end)
The DOM (document object model) API is the most fundamental browser API, it's how we manipulate our page's HTML/CSS through JavaScript and forms the foundation of any web application.
- setting up the repo
- the document object
- referencing HTML elements
- changing/mutating HTML elements
- changing/mutating CSS (style) of an HTML element
- random style/color function (an example)
DOM Events (front-end)
"event-driven programming is a programming paradigm in which the flow of the program is determined by events such as user actions, sensor outputs, or message passing from other programs or threads", the DOM provides us with an API for doing just that in the browser.
- script tags (code structure/patterns)
- Event Based Programming (programming paradigms)
- creating mouse Event Listeners
- callback function syntax (code structure/patterns)
- event objects
- creating keyboard Event Listeners
- modular callback functions (code structure/patterns)
- creating new HTML elements w/the DOM API
- Interface Painter (an example)
the Fetch API (front-end)
intro to AJAX (Asynchronous JavaScript)
When we visit a website our browser makes an HTTP request for that HTML as well as an subsequent HTTP requests for loading any assets (fonts, images, videos, etc). The difference between a web "page" and a web "app" is the ability to dynamically change the content of our site through user interaction and other events, which often requires the ability to make our own HTTP requests.
- synchronous vs asynchronous (code structure/patterns)
- AJAX: when web pages became web apps
- XMLHttpRequest API
- running a local server
- Fetch API
the Fetch API (front-end)
accessing 3rd Party REST APIs
The most common use case of the Fetch API is making HTTP requests to servers on the Internet running "REST APIs", which enable us to integrate third party data or services into our own web applications. You can find the finished example from this tutorial on the class GitHub
- Fetch API(review + more "types")
- JSON
- third party REST APIs
- API Keys
- Dogs && Forecasts (an example)
- adding a new branch to my repo
custom server (back-end)
In this tutorial we'll learn how to create our own custom server from scratch using nodejs, as well as learn how to import JS modules (libraries and frameworks) from npm before learning how to create a server with express.js, the most popular framework for creating servers in JavaScript today.
- writing a server from scratch(in node.js)
- downloading 3rd party node.js libraries (aka "modules")
- package.json (code structure/patterns)
- using Express.js framework/module
- updating my repo
anonymity (back-end)
online surveillance (part I)
We hear a lot about online "privacy" in our present age of social media, big data and surveillance capitalism. Things like "cookies", "IP Addresses" and "location data" are often discussed in conversations about "online tracking" but we rarely ever understanding exactly what any of that means at the level of code. In this tutorial we'll exactly how all that works.
- Cookies
- IP Addresses && location data
- making HTTP requests from the server
- Proxy Servers (VPNs, TOR, etc)
tracking (back-end)
online surveillance (part II) / custom REST API (part I)
In this tutorial we'll build on some of the concepts we learned in the last one to explore one of the more contemporary methods used to track users online. We'll also start learning some of the concepts necessary for creating our own custom REST APIs which we will build on in the next tutorial.
- POST-ing data to our server (custom REST API)
- creating the fingerprint (hashing the data)
- storing data on our server
- how to prevent browser fingerprinting
custom REST API (back-end)
custom REST API (part II)
In this tutorial we'll build on some of the concepts covered in the last tutorial where we started discussing how to create our own custom REST APIs. This enables our client side code to send and receive data to/from our server, where we can store that data.
- modularizing our REST API code (code structure/patterns)
- serving all our static files (HTML, CSS, images, etc)
- creating another REST API endpoint