Class Notes, 30 Jan 2018

Preparation for a couple of weeks of p5.js


’nuff said.

Install software

Install p5.js

Install node.js

Find a text editor

Software development requires you use an editor that supports plain text (ASCII and UNICODE) and doesn’t do goofy formatting things with HTML.  Most (all?) software development editors will handle JavaScript.  Note that “which editor is best?” is what we refer to as “an underwear argument.” This is when adults waste countless hours arguing about briefs, boxers, boyshorts, thongs, hipsters, and going commando.

Open source options include:

  • emacs — steep learning curve but worth the effort.  This is my editor for all programming languages including TeX (a markup language popular for academic papers).
  • atom — like emacs but for people who are younger than emacs. Lots of interesting ways to customize for other applications. For example, it’s my Python editor when I’m using the Rhino CAD software and writing a Python script to modify models.
  • sublime — like atom but different.  Very popular on the Mac as a replacement for BBEdit, predates atom.

There are plenty of commercial options, if you already use BBEdit (equiv) or XCode that should be fine.

Become Shiffman’s BFF and crash learn p5.js

A very detailed history of p5.js.  This will answer a lot of  what/why questions.

Since we just did arrays, here is how they work in p5.js.

Later in the semester we will look at “scraping” data from the interweb to use in class project, here’s one way we can do this.

Review the p5.js reference

bookmark this page


Class Notes, 23 Jan 2018

First off, if you’re on a Mac and seeing the error about “Disk Not Ejected Properly”, I posted a fix for this last Fall.

Second, the problem I had with my Metro was apparently a short.  When I got back to my studio I took out all the components and my Metro worked fine.  I replaced the components one by one, doing a new build and upload on each component.  By the time I was finished, it all worked correctly.



Interrupts are a part of our daily life.  The best example is a door bell.  You have two options:

1) Go to the door once a minute and see if anyone is there.

2) Install a door bell.  When someone comes to the door they push the bell and you are notified.  You can choose whether or not to respond to the door bell.

Almost every input to a computing device is based on interrupts:

  • buttons on your mobile
  • game controllers
  • controls on a microwave or stove

Take a look at the attached Arduino and Fritzing sketches.  We will continue to discuss interrupts as well as state machines on Thursday.  I’ll email the reading assignment in a few, please read it and be prepared for a short discussion on potential interaction methods.

class-3 updated 25 Jan with more examples of interrupts

Introductions and First Assignment


Class Theme – Improving Life

How can we improve someone’s life by making their physical environment interactive and responsive?

  • Assisted
  • Enhanced
  • Improved
  • Qualified
  • Sensed

Syllabus is posted, please ask if you have any questions or concerns.

The class blog from 2008 that we skimmed in class.

Last year’s class blog that we can review in class Thursday if there is interest.

A guide to the materials on the walls of A10.


For the reading assignment, please read Tom Igoe’s “Physical Computing’s Greatest Hits (and Misses)“.  I use this as a guide for what projects I’ll accept in this class, we’ll discuss it briefly at the start of class on Thursday.