smcgadde@andrew.cmu.edu – [OLD FALL 2018] 15-104 • Introduction to Computing for Creative Practice https://courses.ideate.cmu.edu/15-104/f2018 Professor Roger B. Dannenberg • Fall 2018 • Introduction to Computing for Creative Practice Sat, 12 Sep 2020 00:17:52 +0000 en-US hourly 1 https://wordpress.org/?v=4.9.25 Project 07 – Sean McGadden https://courses.ideate.cmu.edu/15-104/f2018/2018/10/12/project-07-sean-mcgadden/ https://courses.ideate.cmu.edu/15-104/f2018/2018/10/12/project-07-sean-mcgadden/#respond Fri, 12 Oct 2018 21:13:31 +0000 https://courses.ideate.cmu.edu/15-104/f2018/?p=33596 Continue reading "Project 07 – Sean McGadden"]]>

Project 07 Curves

This project was super interesting to make and play with. Some of the math involved with the manipulation of more complex curves eluded me a little. However, I found overlaying the Dumbbell Curve and Devil Curve to be really pleasing to spin around and mess with the sizing of them. This was a difficult assignment and I wish I could’ve para-metricized the curves more into a perspective or abstract three dimensional volumes. This project looks really flat and I think after more practice I would like to impose more perspective lines and curves that reach beyond the canvas in a more interesting composition.

 

The Dumbell Curves make nice looking clover shapes that have some hidden shapes behind it from the Devil’s Curve.

sketch

//Sean McGadden
//smcgadde@andrew.cmu.edu
//Project 07
//Section C

 
//Drawing Setup
function setup() {
    createCanvas(640, 400);
    
}

//Chosing to call from curveX or curveY
function draw() {
  background(160, 190, 255);
    push();
    translate(width / 2, height / 2);
    drawCurve(false, false);
    drawCurve(false, true);
    drawCurve(true, true);
    drawCurve(true, false);
    pop();    
}

//Drawing Dumbell Curve 
//basic varible defintion and instantiation of Dumbell Curve
function drawCurve(isDumbell, isFlipped) {
    
    var x;
    var y;
    var nPoints = 100;
    
    var percX = mouseX / 640.0;
    var percY = mouseY / 400.0;
    rotate(TWO_PI * percY);
    
    var a = 200.0 * percX;
    var t 
    
    stroke("lightcyan");
    fill("green");
    beginShape();
    for (var i = 0; i < nPoints; i++) {
        var t = map(i, 0, nPoints, 0, TWO_PI);
        
        x	=	curveX(isDumbell, a, t);
        y	=	curveY(isDumbell, a, t);
        
        if (isFlipped) {
            var temp = x;
            x = y;
            y = temp;
        }
        vertex(x, y);
    }
    endShape(CLOSE);
}

//Returns x value of the desired curve
//Choosing between Dumbell Curve or the Devil's Curve based on a and t
//Devil's Curves uses thrid variable called b initialized below
function curveX(isDumbell, a, t) {
    if(isDumbell){
        return a * sin ( t);
    } else {
        var b = a / 2.0;
        return cos(t) * sqrt(((a * a * sin(t) * sin(t))-(b * b * cos(t) * cos(t)))/((sin(t) * sin(t)) - (cos(t) * cos(t))));
    }
    
}
//Returns y value of the desired curve
//Choosing between Dumbell Curve or the Devil's Curve based on a and t for the 
//Devil's Curves uses thrid variable called b initialized below
function curveY(isDumbell, a, t) {
    if(isDumbell){
        return a * sin(t) * cos(t);
    } else {
        var b = a / 2.0;
        return sin(t) * sqrt(((a * a * sin(t) * sin(t))-(b * b * cos(t) * cos(t)))/((sin(t) * sin(t)) - (cos(t) * cos(t))));
    }
}

 

Sean McGadden

]]>
https://courses.ideate.cmu.edu/15-104/f2018/2018/10/12/project-07-sean-mcgadden/feed/ 0
Looking Outward 07 – Sean McGadden https://courses.ideate.cmu.edu/15-104/f2018/2018/10/12/looking-outward-07-sean-mcgadden/ https://courses.ideate.cmu.edu/15-104/f2018/2018/10/12/looking-outward-07-sean-mcgadden/#respond Fri, 12 Oct 2018 16:16:50 +0000 https://courses.ideate.cmu.edu/15-104/f2018/?p=33456 Continue reading "Looking Outward 07 – Sean McGadden"]]>

Looking Outward

Sean McGadden

Studio NAND – London 2012 Olympics Tweet Visualization

Studio NAND captured and visualized a few aspects of the global response to the London 2012 Olympic Games by creating an emoto. It was a two part project made up an online visualization as well as an actual installation. The instillation was created using millions of tweets concerning the Olympics to understand the widespread feeling toward any specific part of the Olympic Games such as teams, games, events, etc..

The online visualization was a real time parallel to the actual games and created visualizations throughout the events. This visualizations allowed for exploration and discovery of new events and opinions.

The Physical Instillation was an accumulation and representation of all the data and information collected throughout the games in an interactive and overlayed series of models looking at time of Tweets as well as sentiment.

 

]]>
https://courses.ideate.cmu.edu/15-104/f2018/2018/10/12/looking-outward-07-sean-mcgadden/feed/ 0
Project – 05 – Wallpaper https://courses.ideate.cmu.edu/15-104/f2018/2018/09/28/project-05-wallpaper-3/ https://courses.ideate.cmu.edu/15-104/f2018/2018/09/28/project-05-wallpaper-3/#respond Sat, 29 Sep 2018 00:29:48 +0000 https://courses.ideate.cmu.edu/15-104/f2018/?p=31664 Continue reading "Project – 05 – Wallpaper"]]>

Retro Wallpaper

Sean McGadden

I was inspired by 1970’s themes and a retro color scheme. This project was fun to make as it built off past labs and I was easily able to manipulate the primitives to create a modernist feeling wallpaper design. However, the colors were somewhat odd to use so I had to experiment a little before arriving at a scheme I was happy with.

sketch

//Sean McGadden
//Section C @ 1:30
//smcgadde@andrew.cmu.edu
//Project-05

var r = (200);
var g = (200);
var sizeOfCircle = 15
    
    function setup(){
        createCanvas(600,400);
        noLoop();
    }
    
     function draw() {
        background(0);
         
        var numOfCirclesVertically = height / sizeOfCircle
        var numOfCirclesHorizontally = width / sizeOfCircle
//Creating for Loop Circles in Y Direction
        for(var y=0; y < numOfCirclesVertically; y += 1){
//Creating for Lopp Circlesin X Direction
          for(var x = 0; x < numOfCirclesHorizontally; x ++){
//Modulus to create layered shapes
            fill(r,g,0);
            if (x % 5 == 0 &
               y % 5 ==0) {
                
                rect(sizeOfCircle*x, sizeOfCircle * y, x + sizeOfCircle * 5, y + sizeOfCircle * 5);
          
            }
            ellipse(sizeOfCircle/2 + sizeOfCircle*x, sizeOfCircle/2 + sizeOfCircle*y, sizeOfCircle, sizeOfCircle);

              
            print("x is"+x);
            }
          }
//Creating the Sqaures
         for(var y=0; y < numOfCirclesVertically; y += 1){
//        r = 255/numOfCirclesVertically*y;
          for(var x = 0; x < numOfCirclesHorizontally; x ++){
               if (x % 5 == 0 &
               y % 5 ==0) {
                   fill(168, 255, 253);
//Creating Circles on top of Squares
                rect(sizeOfCircle*x + 10, sizeOfCircle * y + 10, sizeOfCircle * 5 - 20, sizeOfCircle * 5 - 20);
                   fill(255, 204, 100);
                 ellipse(sizeOfCircle/2 + sizeOfCircle*(x+2), sizeOfCircle/2 + sizeOfCircle*(y+2), sizeOfCircle*3, sizeOfCircle*3);
              }
          }
          }
     }

 

]]>
https://courses.ideate.cmu.edu/15-104/f2018/2018/09/28/project-05-wallpaper-3/feed/ 0
Looking Outward – 05 https://courses.ideate.cmu.edu/15-104/f2018/2018/09/28/looking-outward-05/ https://courses.ideate.cmu.edu/15-104/f2018/2018/09/28/looking-outward-05/#respond Fri, 28 Sep 2018 17:19:46 +0000 https://courses.ideate.cmu.edu/15-104/f2018/?p=31432 Continue reading "Looking Outward – 05"]]>

Computer Graphics and 3D Representation

Architectural Applications and Platform Sandbox V.2: The Pixel Monster

Sean McGadden

Little Black Box is a a platform for sharing the work of designers, artist and architects. They are an open source platform that essentially expose the work of many talented young professionals and new graduates. This project, The Pixel Monster, evolved using a program called Platform Sandbox. This software uses architectural assemblage to generate forms and structures that can then be montaged. The Pixel Monster specifically is an instillation intended to be a community center at the “Europa Garten” in Frankfurt, Germany.

 

The author of this project is Kishan Kumar Thasma Seshier Kuppusamy is an architect from Frankfurt Germany practicing expressive innovative techniques and trying to break from conventional use and forms to generate structures creating real interaction and mystery. This project is highly experimental as there are not many structural members explored and it does start to indulge the viewers and participants in the many possibilities that can come from generative form.

I admire the way he is able to divulge, in these drawings, a clearly defined sense of space and emotion. This project is seeking to be a community center and reunite members from adjacent neighborhoods. I can see the way that it pulls from different directions to explore a central catalyst for social interaction and exploration. This was mainly generated using Sandbox and later post processed. The techniques for generating the form are interesting because they are both random and calculated at the same time. The branches of the project start to imply space and function but continue to intrigue as to what they are really trying to accomplish. Enjoy this render the author has made to truly emphasize the many implications of this project has in a context of calm or chaos…

ADDED: Platform Sandbox was developed by a man named Damjan Jovanovic he is a very talented artist, designer and architect. Here is a small video on his work and the nature of the Sandbox platform. It creates some really cool visualizations and animations.

Link to Damjam’s website and the Pixel Monster on Little Black Box.

 

 

]]>
https://courses.ideate.cmu.edu/15-104/f2018/2018/09/28/looking-outward-05/feed/ 0
Sean McGadden – Looking Outward 04 https://courses.ideate.cmu.edu/15-104/f2018/2018/09/21/sean-mcgadden-looking-outward-04/ https://courses.ideate.cmu.edu/15-104/f2018/2018/09/21/sean-mcgadden-looking-outward-04/#respond Fri, 21 Sep 2018 20:25:58 +0000 https://courses.ideate.cmu.edu/15-104/f2018/?p=30403 Continue reading "Sean McGadden – Looking Outward 04"]]>

A Narrative on Creation

“MULTIVERSE – The eternal birth and death of infinite parallel universes” 

This project was a site specific instillation in Borgo delle Colonne 28, Italy. In order to project a fantastical yet grounded opinion on the creation of the universe, the production team listed below used sound, algorithmic projections and reflection of materials to create the essence of infinite space and time.

Bonanni Del Rio Catalog (Production), Mattia Carretti, Luca Camellini (Art Direction, Executive Production), Mattia Carretti, Luca Camellini, Samuel Pietri, Riccardo Bazzoni (Concept), Luca Camellini, Samuel Pietri (Software Artists), Riccardo Bazzoni (Sound Design), Matteo Mestucci (Hardware Engineering), Fiera Srl (Setting), Matteo Torsani (Video Report) and Emmanuele Coltellacci (Photo Report).

These artist programmed both sound and visuals with the intent on exploring rational explosion and implosion of particles of various scales and speeds to imply the creation or destruction of “universes”. The production teamsprinciples behind this project were to explain how the universe can be constantly compounded within itself. The existence of black holes are referred to as moments of inception of new child universes. A vast complex system of layered parallel universes is tantalizing and inspiring to me. This instillation transmits a magnitude of reality that is hardly perceivable into a medium that gives a portal-like insight into the true scale of the universe.  The way it also reflects off the ceiling and floor shows the infinite nature of the creation outside and within our own observable capabilities.

The images were generated with a program called openFrameworks and it serves as the “creator” of these universes. Just as creation remains within its own bounds, the generative sounds and shapes are within a similar family. However just as true creation is random there are random elements making slight changes in multiple factors. The sounds contribute to an overall essence of being and scale. The inception of possible universes is a magnificent and crazy thing to imagine due to the sheer size and time it might take.

 

Sean McGadden

]]>
https://courses.ideate.cmu.edu/15-104/f2018/2018/09/21/sean-mcgadden-looking-outward-04/feed/ 0
Sean McGadden Project-03 https://courses.ideate.cmu.edu/15-104/f2018/2018/09/15/sean-mcgadden-project-03/ https://courses.ideate.cmu.edu/15-104/f2018/2018/09/15/sean-mcgadden-project-03/#respond Sat, 15 Sep 2018 21:09:29 +0000 https://courses.ideate.cmu.edu/15-104/f2018/?p=29877 Continue reading "Sean McGadden Project-03"]]>

Dynamic Drawing

Sean McGadden

sketch

//Sean McGadden
//Section C @ 1:30
//smcgadde@andrew.cmu.edu
//Project-03-Dyanmic Drawing

function setup() {
    createCanvas(640, 480);
}
 
function draw() {
    background(0);
    noStroke();
    
//Size and Position Variable
    var blackDot = 300;
        
    if (mouseX > 320) {
        blackDot = (320 - (mouseX - 320));
    }
    
    if (mouseX < 320) {
        blackDot = ((320 - mouseX) + 320);
    }
    
    //Orange Rectangles
    //Color Change
    if (mouseX < 340) {
        fill(129, 224, 20)
        rect(blackDot, mouseX, mouseY, mouseX);
        rect(blackDot, 100, mouseY, mouseX);
        rect(blackDot, 200, mouseX, mouseX);
        rect(blackDot, 300, mouseY, mouseX);
        rect(blackDot, 400, mouseX, mouseY);
        rect(blackDot, 150, mouseY, mouseY);
    }
    //Color Change
    if (mouseX > 340) {
        fill(229, 79, 20);
        rect(blackDot, 250, 100, 100);
        rect(blackDot, 350, 250, 350);
        rect(blackDot, 350, blackDot,              blackDot);
        rect(blackDot, 350, mouseX,                blackDot);
        rect(blackDot, 350, mouseY,                blackDot);
        rect(blackDot, 350, blackDot,              mouseX);
    }
    
    //Blue Rectangles
    
    fill(66, 134, 244);
    rect(mouseX, 240, blackDot, mouseY);
    rect(mouseX, blackDot, blackDot, mouseY);
    rect(mouseY, blackDot, blackDot, mouseX);

    //White Rectangles
    
    fill(255)
    rect(blackDot, 60, blackDot, mouseY);
    rect(mouseX, blackDot, blackDot, mouseY);
    rect(mouseY, 400, blackDot, blackDot);
    
    
    // White Ellipses
    
    fill(255);
    ellipse(mouseX, 100, 20, mouseX);
    ellipse(mouseX, 100, 20, mouseX);
    ellipse(mouseX, 100, 20, mouseX);
    
    
    //Orange Ellipses
    //Color Change
    if (mouseY < 250) {
        fill(129, 224, 20)
        ellipse(blackDot, mouseY, 30,                 mouseY);
        ellipse(mouseY, mouseY, mouseX,               100);
    }
    if (mouseY > 250) {
        fill(229, 79, 20)
    
        ellipse(blackDot, mouseY, 30,                 blackDot);
        ellipse(mouseX, mouseY, 20, 20);
        ellipse(blackDot, mouseY, 30, 30);
        ellipse(blackDot, mouseX, 100, 100)
    
    }
    
    //Blue Ellipses
    fill(66, 134, 244)
    ellipse(blackDot, mouseX, 50, 50);
    ellipse((mouseX + 50), 300, mouseY, 20);
    ellipse(mouseY, blackDot, 40, 40);
    
}
   

This project was interesting to play with shapes and colors. There are many ways that mouse tracking can ultimately lend itself to input changes. I think I would’ve liked to have had slightly more control over the movement of the shapes, I think perhaps more diagonal or rotational movements would’ve been nice. This project is built from assignment 2A and as I layered more changes I seemed to have  lost track of some of these changes and I believe there is some redundancy from the layering. Overall, I learned more processes of javascript which is the goal.

 

]]>
https://courses.ideate.cmu.edu/15-104/f2018/2018/09/15/sean-mcgadden-project-03/feed/ 0
Sean McGadden Looking Outward – 03 https://courses.ideate.cmu.edu/15-104/f2018/2018/09/15/sean-mcgadden-looking-outward-03/ https://courses.ideate.cmu.edu/15-104/f2018/2018/09/15/sean-mcgadden-looking-outward-03/#respond Sat, 15 Sep 2018 18:28:25 +0000 https://courses.ideate.cmu.edu/15-104/f2018/?p=29871 Continue reading "Sean McGadden Looking Outward – 03"]]>

Computational Fabrication of the SF MoMA exterior panels.

Looking Outward

The San Francisco Museum of Modern Art has always been a staple culturally. After three years of closure the new facade adds a sparkling white addition to the Bay Area skyline replicating the rippling waters of the bay. It was fabricated by Kreysler and Associates in partner with Snohetta Architects who have experience with composite materials and acoustic design.  A large system of facade panels were attached with joinery directly on to the front facade of the building creating a fascinating undulating feature the moves in and out of shadows and space as you approach the building. Each panel was individually designed and fabricated using layers of Monterey sand, fiberglass and eventually sandblasted for finish.

Workers in white suits carving a white undulating panel

This project is very interesting because it shows how computational design implemented with an economic and efficient construction and installation process makes full scale computationally designed structures a conceivable notion. Using a series of geographic, culturally and economic nodes around the museum, Snohetta designed a parametric form that tries to push and pull its surroundings in a natural overlapping of activity and interaction. The wave form on the front facade reflects this idea extremely well.

 

Sean McGadden

]]>
https://courses.ideate.cmu.edu/15-104/f2018/2018/09/15/sean-mcgadden-looking-outward-03/feed/ 0
Sean McGadden Project – 02 https://courses.ideate.cmu.edu/15-104/f2018/2018/09/07/sean-mcgadden-project-02/ https://courses.ideate.cmu.edu/15-104/f2018/2018/09/07/sean-mcgadden-project-02/#respond Sat, 08 Sep 2018 01:52:53 +0000 https://courses.ideate.cmu.edu/15-104/f2018/?p=28491 Continue reading "Sean McGadden Project – 02"]]>

Project 02
Sean McGadden
smcgadde
Section C

Variable Face

sketch

/*Sean McGadden
Section C @ 1:30
smcgadde@andrew.cmu.edu
project - 02 */

//Variable Face

//Simple
var width = 640
var height = 480

//Face
var faceWidth = 200;
var faceHeight = 300;
var faceR = 65
var faceG = 82
var faceB = 244 

//Eyes
var eyeSize = 20;
var eyeR = 244
var eyeG = 211
var eyeB = 65

function setup() {
    createCanvas(640, 480);
}

function draw() {
    background(66, 244, 143);
    
    //Face
    fill(faceR, faceG, faceB)
    rect(width / 3, height / 3, faceWidth,            faceHeight);
    
    //Eyes
    fill (eyeR, eyeG, eyeB)
    var eyeLX = width / 2 - faceWidth * 0.25;
    var eyeRX = width / 2 + faceWidth * 0.25;
    ellipse(eyeLX, height / 2, eyeSize, eyeSize);
    ellipse(eyeRX, height / 2, eyeSize, eyeSize);
}

function mousePressed() {
    
    //clicking changes position, color and size of face and eyes. 
    faceWidth = random(150, 300);
    faceHeight = random(200, 300);
    width = random (500, 640)
    height = random (400, 480)
    eyeSize = random(10, 40);
    eyeR = random(148, 244)
    eyeG = random(65, 211)
    eyeB = random(65, 244)
    faceR = random(62, 65)
    faceG = random(65, 82)
    faceB = random(91, 244)
}

 

The variable face was very interesting to play around with. Although I took few risks in my sketch I feel I learned a lot more about variables and their implementation. I want to make more intricate interactive pieces in future projects. My project makes computational changes in color, size and position of the face and eyes. Using RGB and canvas coordinate randomization with a few variables, I was able to explore further how faces can be differently perceived even with only small changes.

Here is an original concept sketch that I was unsuccessful in replicating after some attempts.

September 7 2018

]]>
https://courses.ideate.cmu.edu/15-104/f2018/2018/09/07/sean-mcgadden-project-02/feed/ 0
Sean McGadden Looking Outward- 02 https://courses.ideate.cmu.edu/15-104/f2018/2018/09/07/sean-mcgadden-looking-outward-02/ https://courses.ideate.cmu.edu/15-104/f2018/2018/09/07/sean-mcgadden-looking-outward-02/#respond Fri, 07 Sep 2018 23:07:30 +0000 https://courses.ideate.cmu.edu/15-104/f2018/?p=28241 Continue reading "Sean McGadden Looking Outward- 02"]]>

Sean McGadden
smcgadde
Section C

Generative Art

Looking Outward – 02

Jean-Pierre Hébert

This artist has been making some really interesting computational and generative art for the past 50 years. Jean-Pierre began as one of the pioneers of experimental computer generated art in the 1970’s. Much of his work is very abstracted relying heavily on color and line to create complex tactile canvases that imply depth and texture extremely well.  His work is quite responsible because he does not abandon the notion of physical production. As a result Jean-Pierre does create computationally designed works but he executes these works with specific physical medium installed into special printers. The piece below is made with sepia ink on paper and pen plotter drawing. It is  called “quantic notions” made in 1989:

Jean-Pierre  describes his method for creating such works as a physically limitless, horizon less, infinite space for transcending traditional drawing techniques and space itself. He uses the assets of coding and programming to layer information that goes deeper than the visual. He is able to create pieces of incredible detail and scale without the strain of another traditional physical endeavor. I am very interested by this idea of computation and iteration. Jean-Pierre Hebert is able to create many variations on one piece of work before he is satisfies and this is easily done simply by multiple prints and changes in code. I can also see the connections in his style to modern day print-making. Using a physical input of etches or carves from a block, a print-maker is able to make many passes and address changes in the block. In this way, the computer code is Jean-Pierre’s printing block. His ideas are very modern and it seems he is beyond his time in generative art. Another older piece I quite liked was Vent Noir 2 (1989) below:

His pieces are evocative and memorable. They make the viewer question what it is they are seeing.  Jean-Pierre Hebert has also continued creating fascinating work well into the 2010’s. Another newer piece of his called “In Visible Cities Baucis” (2010) is pigment and metal type on paper, a digital drawing on niyodo paper. Below:

I think ultimately his work is limited by the programs he can use to code with and the data he has available. In his more current work he has resorted to larger more public pieces with much collaboration. His initial work is more creatively valuable becasue he was a trail blazer of generative art. In the new age of technology programmatic capabilities seem to evade him. He remains an influential personality.

September 7, 2018

]]>
https://courses.ideate.cmu.edu/15-104/f2018/2018/09/07/sean-mcgadden-looking-outward-02/feed/ 0
Sean McGadden Looking Outward – 01 https://courses.ideate.cmu.edu/15-104/f2018/2018/08/31/looking-outward-01-2/ https://courses.ideate.cmu.edu/15-104/f2018/2018/08/31/looking-outward-01-2/#respond Sat, 01 Sep 2018 00:01:28 +0000 https://courses.ideate.cmu.edu/15-104/f2018/?p=27032 Continue reading "Sean McGadden Looking Outward – 01"]]>

Sean McGadden

Looking Outwards – 01

SpaceX – Making Life Multiplanetary

I have recently read up and seen on the news some of the amazing things that SpaceX is currently doing with privatized space launch. Although this topic is not completely related to the field of Computer Science, I think it is clear the applications and uses on a small scale at the very least. Launching a rocket in to space requires many hours of planning and coordination among a large team of engineers, programmers, designers, mathematicians and I’m sure there or more people involved than just these.

So far, SpaceX has launched 56 missions into space. Something very much unheard of from a private agency. Nearly all missions besides satellite launches have been from government agencies around the world. SpaceX is making strides in many ways to making space flight cheaper, more reliable and more frequent. Elon Musk, in his initial presentation explaining some of the work SpaceX had been involved in, showcased the success of previous flights. He also his exposed his intent on making one of the largest rockets ever made.  It is called the BFR and will weigh over 1500 tons. He plans to launch this rocket capable of carrying over 1000 tons of supplies and being able to house over 100 passengers within the next few years. The reality of commercial space flight seems far closer than I might’ve ever imagined.

This topic is very inspirational to me because I’ve always looked at the stars with awe and even the ability to go to space excites me. I once even thought of being an astronaut. SpaceX was founded in 2009 and since then has implemented many new techniques for space flight. They have developed countless new computer programs to autonomously land and take off reusable fuselages. These programs are industry leading and innovative in terms of space flight. They are exciting and new discoveries for humanity and space travel.

 

Looking Outward – 01

]]>
https://courses.ideate.cmu.edu/15-104/f2018/2018/08/31/looking-outward-01-2/feed/ 0