If you’re seeing this, the site behind it is likely broken!

Hi, there. I use these course sites as little sandboxes to experiment with and learn various “brand new” CSS properties—and your browser does not support (at least) one of them. Apologies. It “should” always work in current/updating Safari and Chrome!

  • Typography & Interaction

    ’25–26

  • The Syllabus

  • Our Class

  • Unit Nº 1: “Type and the Web”

    Wks. 1–6

    • Week Nº 1

      Aug. 29

    • Everything Is a “Web Page”

    • Week Nº 2

      Sep. 5

    • It’s All About Type

    • Week Nº 3

      Sep. 12

    • An Intro to HTML

    • Week Nº 4

      Sep. 19

    • An Intro to CSS

    • Week Nº 5

      Sep. 26

    • The Box Model

    • Project Nº 1: “Manuscript”

      Oct. 3

    • Week Nº 6

      Oct. 3

  • Unit Nº 2: “There Is No Perfect Layout”

    Wks. 7–10

    • Week Nº 7

      Oct. 10

    • Responsive Design

    • DevTools (Web Inspector)

    • Week Nº 8

      Oct. 17

    • Finally, Flexbox

    • And (CSS) Grid

    • Week Nº 9

      Oct. 24

    • Some Additional, Advanced CSS

    • Project Nº 2: “Spread”

      Oct. 31

    • Week Nº 10

      Oct. 31

  • Unit Nº 3: “Typography as Interface”

    Wks. 11–15

    • Week Nº 11

      Nov. 7

    • Working with Images

    • Week Nº 12

      Nov. 14

    • Week Nº 13

      Nov. 21

    • Thanksgiving Week

    • Project Nº 3: “Binding”

      Dec. 5

    • Week Nº 14

      Dec. 5

    • Week Nº 15

      Dec. 12

  • Winter Break

  • Unit Nº 4: “Interface as Interface”

    Wks. 16–21

    • Week Nº 16

      Jan. 21

    • Week Nº 17

      Jan. 28

    • An Intro to JavaScript

    • Week Nº 18

      Feb. 4

    • Session Recording

      Picking Up with JS

      We’ll start today where we left off with JS, last week:

      An Intro to JavaScript

      DevTools (Web Inspector)

      The Are.na API

      Meet JSON

      Before we get into our Are.na demo, let’s talk about JSON (JavaScript Object Notation)⁠—the most common way an API responds with data:

      • We’ll be using our example channel we showed last week! Note the content as it is presented on Are.na.

      • We can access the data from the channel by making a request to a special Are.na API URL, called an “endpoint”:

        https://api.are.na/v3/channels/typography-and-interaction-too

      • There the server responds with the channel content, now not as HTML, but as structured data in JSON⁠—a hierarchical format/​syntax that is based upon JavaScript, to represent different types of data and their relationships.

        In the context of a CMS, this structure is often reflects the schema.

      • Browsers don’t display JSON nicely by default, but there are extensions (Chrome, Safari, Firefox) to make it easier to read.

      • Changes made on Are.na will show up in the JSON the next time it is requested! In their schema, there is also a separate endpoint for the blocks themselves:

        https://api.are.na/v3/channels/typography-and-interaction-too/contents

      • For the purposes of our project, we’ll only be requesting data (called a GET )⁠—but know that APIs are also used to send (POST ), update (PUT ), and delete (…DELETE ) as well.

      Let’s try it out

      For our “back nine” today, we’re going to be doing a demo/​workshop to get us plugged into and using this data. We’ve put together a demo repository with our example code, for today:

      links

      Here is our agenda to go through it:

      1. Simple, static index.html

        • There’s almost nothing there! All of our content will come from the JSON, placed and turned into HTML
        • These are just the containers where we will insert our content
        • “IRL” you would want much more content in the file itself, for search indexing and faster performance
      2. On to arena.js

        • Talk about these arrow functions!
        • Using if/​else conditional logic to sift our block types
        • And template literals/​strings, making DOM from your data
        • Call out <audio> and <video> examples, show in Chrome/​Safari
        • For the adventurous, more info on the fetch API
        • Pop open the console to see the data
      3. Let’s “roll our own”

        • console.log() the whole JSON response, “walk” the object
        • Rough out a new block/​content type (like images) from the data
        • Inspect a rendered page, connecting the dots
        • If we have time, add another insertion point for a “filtered” list

      For Next Week

      • Make sure your channel covers all the Are.na block types, if it doesn’t already. This is a multi media project! The more, varied, and balanced blocks you have, the better it will be.

      • Pull down the template repo. Play around with it, study it, then incorporate/​adapt the arena.js into your own project.

      • You will use this to complete the next phase of your project:

        Project Nº 4: Are.na as an API

        Update your in-progress repo based on the example code and demo we went through today. Remove the static/​hard-coded blocks from your project⁠—all the content should now be coming from the Are.na channel. Continue iterating on your design, accommodating and adjusting to the live data.

      • Make sure we have the link to your live, updating project:

        Submission Form

      • We will be reviewing your work in class next week⁠—so make sure everything is working and be prepared to discuss your concept/​design!

    • Week Nº 19

      Feb. 11

    • Week Nº 20

      Feb. 18

    • Project Nº 4: “Links”

      Feb. 25

    • Week Nº 21

      Feb. 25

  • Unit Nº 5: “If All You Have Is a Hammer, Everything Looks like a Nail”

    Wks. 22–30

    • Week Nº 22

      Mar. 4

    • Putting a (Link/​Meta) Bow on It

    • Week Nº 23

      Mar. 11

    • Spring Break

    • Week Nº 24

      Mar. 25

    • Week Nº 25

      Apr. 1

    • Week Nº 26

      Apr. 8

    • Week Nº 27

      Apr. 15

    • Project Nº 5: “Functions”

      Apr. 22

    • Week Nº 28

      Apr. 22

    • Week Nº 29

      Apr. 29

    • Week Nº 30

      May 6

    • “Everything Else”

  • Project “Index”

    May 15

  • The end