Weekly Schedule
Table of Contents
Week 1
Objectives
- Introductions
Outline
- Introductions
- Syllabus
- Lecture/Workshop – HTML, CSS, javascript & DOM manipulation
- Lecture/Workshop – Media Elements – Encoding – Controlling
- Code from Class
Assignments
- Read through the guides on HTML & CSS and Javascript & DOM Manipulation
- Watch the following videos:
- Write a blog post detailing the last “live” media you consumed. Answer these questions:
- What was it?
- Why did you consume it “live” or in real time?
- How was your relationship to the media or others affected through the “live” consumption of it?
- What was missing in your experience?
- Create a self-portrait on a web page using HTML, CSS, and JavaScript. Start on the p5.js web editor, open the
index.htmlfile and make your edits there. You may use p5.js as part of your sketch if you like. In addition, please use at least (2) of the following elements:- HTML Media Elements:
<video>or<audio> - An image tag:
<img> - Use Javascript to change the color, size, font or position of an HTML element
- Use CSS to animate an element following this guide
- Use CSS to change a style when someone hovers their mouse pointer over an element following this guide
- Create a list with HTML using the
<ul>tag following this guide - Advanced: Use Javascript to add a click-interaction on an element following this guide
- HTML Media Elements:
Week 2
Objectives
- Becoming Live
Outline
- Review Homework
- AJAX and WebSockets
- Server Side JavaScript: Node.js
- Chat
- Glitch
- Live version of the code from class and Download link
Assignments
- Watch this video introducing websockets (you will need to be logged into Google Drive with your NYU email)
-
Reimagine Chat! After watching the video above, remix the chat application adding your own design / interaction elements.
- Create an account on Glitch.com web-based code editor.
- Open this chat application and press Remix to create your own copy.
- Modify the front end code (
public/index.htmlandpublic/sketch.js) – adding any features or design/interactive elements you wish!
Not sure what to create? Try one of the following:
- Add an image with every incoming chat message
- Make the chat messages appear as leaves which fall after they arrive
- Each incoming message displays in a different font and color.
- Use a text input box instead of p5.js’
keyPressed()function to get messages. - Use HTML
<p>elements to display incoming messages using p5.js’ createP() function or the JavaScript createElement(‘p’) function - Make all of the messages spin in circles
- Something else entirely…
Week 3
Objectives
- Transmitting Other Data Types
Outline
- Student chat project sharing
- Transmitting Other Data Types
- Mouse and Other Events
- Canvas
- Collaborative Drawing
Assignments
- Watch this supplemental video reviewing JS objects and arrays (you will need to be logged into Google Drive with your NYU email)
-
Collaborative Action Remix the drawing application we began in class, adding in your own design / interaction elements.
- Login to your account on Glitch.com web-based code editor.
- Open this glitch sketch and press Remix to create your own copy.
- Modify the front end code (
public/index.htmlandpublic/sketch.js) – adding any features or design/interactive elements you wish! If you want to add an additional interaction, you may need to modify the server code (server.js).
Not sure what to create? Try one of the following:
- Each peer’s mouse hides or reveals an image, creating an interactive maze or a game of “I Spy”
- Expand on the drawing example so each peer can change their color or brush size and clear the canvas.
- Create 3D geometries using p5.js’ WebGL mode
- Paint using images! Follow this p5.js example to learn more.
- Something else entirely… have fun and try something new!
Week 4
Objectives
- Sharing the Canvas
Outline
- Review assignments
- Design Exercise
- Code demo:
- Capturing and sharing the canvas
- Capturing and sharing webcam video
- HTML5 Audio and Video with WebRTC
- Example of sending canvas through socket
- Example of sending webcam video on a canvas through socket
- Example of sending and playing back an animated line
Assignments
- What can live or real-time camera images add to your collaborative drawing application? Try adding this capability in to one of your two previous assignments.
- Use
createCaptureorgetUserMedia()orgetDisplayMedia() - Following the examples from class, send a webcam image using websockets
- Note that you might need to change the socket message handlers on the server in the server.js file
- Focus on design: why does this drawing application need real-time webcam images?
- Use
Week 5
Objectives
- Multi-user Live Audio/Video
Outline
- Design Exercise: examining existing applications
- Midterm Project Discussion
Assignments
- Start to think about midterm project ideas!
- On the class Miro board, detail a midterm project idea. Please make sure to touch on the concept and begin to explore how to make it. Remember that the goal of the midterm project to develop something of your own choosing using the techniques learned through the course thus far. It should be similar in scope to a homework assignment (complete in 1 week). It is possible to begin working on a larger project in which case the midterm should be dedicated to a proof of concept of the overall idea. Think of it as a rough sketch rather than a painting or an outline instead of a paper.
Week 6
Objectives
- Midterm Project Ideas
Outline
-
Present and Discuss Midterm Project Proposals
-
Review Previous material as they relate to midterm projects
Assignments
- Work on Midterm Projects
- Prepare midterm project presentation – This presentation should be approximately 10 minutes including feedback. Please touch on the concept as well as how you accomplished it along with a demonstration.
Week 7
Objectives
- Midterm Project Presentations
Outline
- Midterm Project Presentations
- Sharing webcam with p5LiveMedia
Assignments
- Midterm Documentation - Post Midterm Project Documentation to the class website
- Something visual, preferably a screen grab video and/or video of the interaction.
- A short description of what it is.
- A short description of why you made it.
- A short description of how it works.
- Add your code for people around the world who want to do similar things.
- Describe where you would like to take this project, what more you would like to do with it.
- Video Chat Exercise! - Implement a video-chat app using WebRTC and p5LiveMedia
- Expand on the code example from class to create a webcam enabled app for at least 3 participants using WebRTC and p5LiveMedia
- You may choose how to place the incoming video feeds: randomly, in a grid, in a circle or use “WebGL” mode to place the participants in 3D space.
- Focus on the look and feel of your app - what is it which sets it apart from a standard video-conferencing solution.
- Implement at least one of the following:
- Participants can move their video feed around the canvas (and those changes are shown to other participants)
- Participants can make their video feed larger or smaller (and those changes are shown to other participants)
- App makes use of the entire window and all parts of the window are filled with some content.
- Participants can also share drawings or animations
- Each participants’ video feed is displayed multiple times.
- Something else? Feel free to come up with your own fun video-chat ideas.
- Be sure to document your video chat app on your blog. Answer the following questions:
- What did you try to implement and why?
- Any design references or technical implementation references which you followed? Cite your sources.
- What didn’t work? How did you try to fix it?
Week 8
Objectives
- Slides: Video Chat Experiments
- WebRTC Data
Outline
- Data Channels
- If we have time:
Assignments
- Video Chat Part II - Expand on your video chat from last week, incorporating Data Channels through p5LiveMedia. Data Channels allow you to share data through WebRTC and can do many of the same things as websockets. They have the advantage of being available in a peer-to-peer encrypted WebRTC connection, meaning that they are extremely private.
- Be sure to document your expanded video chat app on your blog. Answer the following questions:
- What did you try to implement and why?
- Any design references or technical implementation references which you followed? Cite your sources.
- What didn’t work? How did you try to fix it?
- Be sure to document your expanded video chat app on your blog. Answer the following questions:
Week 9
Objectives
- Review Data Channels
- Working locally
- Installing Node / NPM
- Installing VS Code
- Launching a node app from the terminal
Outline
- Working locally
Assignments
- Exercise: Working Locally - Download one of your previous assignment from glitch (following this tutorial) and get it running on your local machine.
- Change some aspect of how this application looks or feels. A few ideas include:
- make your sketch work fullscreen,
- add a photo or video to your sketch (make sure to add them to the
/publicfolder) - restyle your sketch using CSS to feel very different. Looking for inspiration? Check out this archive of web design!
- Change some aspect of how this application looks or feels. A few ideas include:
Week 10
Objectives
- Review homework: Working Locally
- More examples of live web experiences
- Local development with Node.js part 2
- Final Project Discussion
Assignments
- Develop final project proposal. Start with a description, consider why you want to do this and how you are going to accomplish it. Include any references. Draw a system diagram and/or wireframes to further illustrate the idea. Prepare to present the idea to the class for feedback.
Week 11
Session 1
Objectives
- Presentation
- Final Project Proposals
- Mobile for Live
- Additional Topics (Time Permitting):
- HTTPS + Let’s Encrypt
- HTTPS video
- Let’s Encrypt video
Outline
- Final Project Proposals
Assignments
- Final Projects
Week 12
Objectives
- Guest Speaker: Morakana
- Project Check-Ins
- Machine Learning for Live
- Additional Topics (Time Permitting):
- Serial to Node
Outline
- Additional Topics (Time Permitting): Serial Example
Assignments
- Final Projects
Week 13
Objectives
- Guest Speaker: Web Design Process
- Project Check-Ins / Working Time
- Additional Topics (Time Permitting):
- Traditional Streaming
- Physical
Outline
- Traditional Streaming + OBS
- Live Data from the physical world (arduino) example
Assignments
- Final Project Work
- Prepare final project presentation – This presentation should be approximately 10 minutes including feedback. Please touch on the concept as well as how you accomplished it along with a demonstration.
Week 14
Objective
- Final Project Presentations
Outline
- Final Project Presentations
Assignments
- Final Project Documentation: Post to the class website
- Something visual, preferably a screen grab video and/or video of the interaction.
- A short description of what it is.
- A short description of why you made it.
- A short description of how it works.
- Add your code for people around the world who want to do similar things.
- Describe where you would like to take this project, what more you would like to do with it.