<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jake Marsico &#8211; Reactive Spaces and Media Architecture</title>
	<atom:link href="https://courses.ideate.cmu.edu/48-734/f2017/?feed=rss2&#038;author=3" rel="self" type="application/rss+xml" />
	<link>https://courses.ideate.cmu.edu/48-734/f2017</link>
	<description>Carnegie Mellon University 48-734 Fall 2017</description>
	<lastBuildDate>Tue, 19 Dec 2017 03:07:51 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.8.24</generator>
<site xmlns="com-wordpress:feed-additions:1">134429141</site>	<item>
		<title>Reading and Looking Out 2</title>
		<link>https://courses.ideate.cmu.edu/48-734/f2017/?p=481</link>
		<comments>https://courses.ideate.cmu.edu/48-734/f2017/?p=481#respond</comments>
		<pubDate>Thu, 16 Nov 2017 15:26:30 +0000</pubDate>
		<dc:creator><![CDATA[Jake Marsico]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-734/f2017/?p=481</guid>
		<description><![CDATA[Readings Please read the following articles for next class 1. Survey of Alternative Displays by Blair Neal 2. After Urban Screens by Dave Colangelo 3. Too Much Information Keiichi Matsuda Looking Out Assignment Find one example of a public facing installation that encompasses some of the ideals set forth in Colangelo&#8217;s interview about massive media. &#8230; <a href="https://courses.ideate.cmu.edu/48-734/f2017/?p=481" class="more-link">Continue reading<span class="screen-reader-text"> "Reading and Looking Out 2"</span></a>]]></description>
				<content:encoded><![CDATA[<p><img src="https://i0.wp.com/www.creativeapplications.net/wp-content/uploads/2016/06/hyper-reality_07-e1465243833427.jpg?resize=840%2C473" class="alignnone size-large" data-recalc-dims="1" /></p>
<h3>Readings</h3>
<p>Please read the following articles for next class<br />
1. <a href="https://medium.com/@laserpilot/survey-of-alternative-displays-82d928480b9d">Survey of Alternative Displays</a> by Blair Neal<br />
2. <a href="http://www.creativeapplications.net/theory/after-urban-screens-dave-colangelo-on-massive-media/">After Urban Screens</a> by Dave Colangelo<br />
3. <a href="http://www.creativeapplications.net/environment/too-much-information-keiichi-matsudas-vision-for-augmented-and-mixed-reality/">Too Much Information</a> Keiichi Matsuda</p>
<p><img src="https://i0.wp.com/www.associationforpublicart.org/wp-content/uploads/2015/08/Open_Air_What-is-Public-Art.jpg?resize=840%2C560" class="alignnone size-large" data-recalc-dims="1" /></p>
<h3>Looking Out Assignment</h3>
<ol>
<li>Find one example of a public facing installation that encompasses some of the ideals set forth in Colangelo&#8217;s interview about massive media. </li>
<li>Write a blog post here with an image and video of the project.</li>
<li>Include a small description of the project and how it might be assessed based on Colangelo&#8217;s framework</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>https://courses.ideate.cmu.edu/48-734/f2017/?feed=rss2&#038;p=481</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">481</post-id>	</item>
		<item>
		<title>Final Project</title>
		<link>https://courses.ideate.cmu.edu/48-734/f2017/?p=487</link>
		<comments>https://courses.ideate.cmu.edu/48-734/f2017/?p=487#respond</comments>
		<pubDate>Thu, 16 Nov 2017 15:25:15 +0000</pubDate>
		<dc:creator><![CDATA[Jake Marsico]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-734/f2017/?p=487</guid>
		<description><![CDATA[Overview The final project will take the form of a full-scale site-specific installation. The content and concept of each project is open, although each project must be site-specific Groups of four or five will design, develop and install a site-specific installation on an off-campus building or natural site. Installations must be either interactive/reactive or data-driven. &#8230; <a href="https://courses.ideate.cmu.edu/48-734/f2017/?p=487" class="more-link">Continue reading<span class="screen-reader-text"> "Final Project"</span></a>]]></description>
				<content:encoded><![CDATA[<h2>Overview</h2>
<p>The final project will take the form of a full-scale site-specific installation. The content and concept of each project is open, although each project must be site-specific</p>
<p>Groups of four or five will design, develop and install a site-specific installation on an off-campus building or natural site. Installations must be either interactive/reactive or data-driven. The goal of the final project is to put to use all of the techniques and concepts developed over the last semester.</p>
<h2>Details</h2>
<p>Through the course of a week-long design phase, groups will need to research their selected site and determine a relevant concept and form for their project. This process includes understanding the history and current usage of the site, the specific demographic that will be viewing their work and the environmental and physical constraints of the site.<br />
Once designed, groups will have $500 to spend on materials and equipment. Fully-functioning projects must be installed on site and documented by December 18. Groups are free to install their work any time before that date.</p>
<h2>Requirements</h2>
<ol>
<li>Must be interactive or reactive using local sensor data OR data-driven using a historical data set or live data source</li>
<li>Projects must be robust enough to last outside for at least three days. </li>
<li>Installations may not harm or modify existing structures unless permission was explicitly granted by location owner.</li>
</ol>
<h2>Timeline</h2>
<ul>
<li><strong>November 30</strong> : Mid-Review Blog Post and Crit
<ul>
<li>Site/Community analysis</li>
<li>Conceptual drawings</li>
<li>Diagrams outlining technical architecture of project</li>
<li>Proof of concept prototype (to prove that your tech/data is viable)</li>
</ul>
</li>
<li><strong>December 11 &#8211; 15</strong> : Installation on Site
<ul>
<li>Projects must be installed on site, in coordination with the site owner</li>
<li>Fully functioning, no &#8220;wizard of oz&#8221; </li>
</ul>
</li>
<li><strong>December 18, Midnight</strong> : Final Documentation Due
<ul>
<li>Blog post</li>
<li>High quality, edited video with voice over or text describing project</li>
<li>At least four high-resolution images of the work. Must include people viewing/interacting with work</li>
<li>Final diagram of technical setup (including hardware and software)</li>
<li>Final write-up of the project&#8230; how did it work? What would you do differently? </li>
</ul>
</li>
</ul>
<h2>Previous Projects</h2>
<ol>
<li><a href="https://reactivespaces.wordpress.com/2015/05/12/audio-window/">Audio Window</a></li>
<li><a href="https://reactivespaces.wordpress.com/2015/05/15/ghost-pier/">Ghost Pier</a></li>
<li><a href="http://ideate.xsead.cmu.edu/gallery/projects/emoto-pod">Emoto Pod</a></li>
<li><a href="http://shaunburley.com/Flight_To_Freedom.html">Flight To Freedom</a></li>
</ol>
<h2>Sites</h2>
<p>We have pre-selected three possible sites for groups to design around. Groups are free to find different sites, in which case they will be required to obtain any necessary permission and will be responsible for communicating with the site owner.</p>
<h4>3577 Bigelow Blvd</h4>
<p><img data-attachment-id="494" data-permalink="https://courses.ideate.cmu.edu/48-734/f2017/?attachment_id=494" data-orig-file="https://i0.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/11/3577_bigelow_01.jpg?fit=4032%2C3024&amp;ssl=1" data-orig-size="4032,3024" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="3577_bigelow_01" data-image-description="" data-medium-file="https://i0.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/11/3577_bigelow_01.jpg?fit=300%2C225&amp;ssl=1" data-large-file="https://i0.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/11/3577_bigelow_01.jpg?fit=840%2C630&amp;ssl=1" src="https://i0.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/11/3577_bigelow_01.jpg?resize=840%2C630&#038;ssl=1" alt="" class="alignnone size-large wp-image-494" srcset="https://i0.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/11/3577_bigelow_01.jpg?resize=1024%2C768&amp;ssl=1 1024w, https://i0.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/11/3577_bigelow_01.jpg?resize=300%2C225&amp;ssl=1 300w, https://i0.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/11/3577_bigelow_01.jpg?resize=768%2C576&amp;ssl=1 768w, https://i0.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/11/3577_bigelow_01.jpg?resize=1200%2C900&amp;ssl=1 1200w, https://i0.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/11/3577_bigelow_01.jpg?w=1680&amp;ssl=1 1680w, https://i0.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/11/3577_bigelow_01.jpg?w=2520&amp;ssl=1 2520w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" data-recalc-dims="1" /></p>
<p><img data-attachment-id="493" data-permalink="https://courses.ideate.cmu.edu/48-734/f2017/?attachment_id=493" data-orig-file="https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/11/2.jpg?fit=15276%2C3792&amp;ssl=1" data-orig-size="15276,3792" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="2" data-image-description="" data-medium-file="https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/11/2.jpg?fit=300%2C74&amp;ssl=1" data-large-file="https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/11/2.jpg?fit=840%2C208&amp;ssl=1" src="https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/11/2.jpg?resize=840%2C208&#038;ssl=1" alt="" class="alignnone size-large wp-image-493" srcset="https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/11/2.jpg?resize=1024%2C254&amp;ssl=1 1024w, https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/11/2.jpg?resize=300%2C74&amp;ssl=1 300w, https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/11/2.jpg?resize=768%2C191&amp;ssl=1 768w, https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/11/2.jpg?resize=1200%2C298&amp;ssl=1 1200w, https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/11/2.jpg?w=1680&amp;ssl=1 1680w, https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/11/2.jpg?w=2520&amp;ssl=1 2520w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" data-recalc-dims="1" /><br />
Located at a <strong>high-traffic intersection</strong>, this location once housed a multi-level auto body shop, but now houses a recording studio, art studios and a fabrication shop. Groups would have access to the roof to hang installations over the facade (which will soon be refinished).</p>
<h4>Row House Cinema</h4>
<p><img src="https://steelcinema.files.wordpress.com/2015/06/row-house-anniversary.jpg?w=830&#038;resize=700%2C300" class="alignnone size-large" data-recalc-dims="1" /><br />
Located in the heart of Lawrenceville. From their <a href="http://rowhousecinema.com/">website</a>: &#8220;Row House Cinema is a single screen theater in the historic Lawrenceville neighborhood of Pittsburgh. Each week we choose a new movie theme.&#8221; This site has been used twice in two previous iterations of RSMA to great success. Groups would have access to both the inside of the theater (for sensing and data gathering) and would be able to install their works on the side or rear of the building.</p>
<h4>Arsenal Bank Building</h4>
<p><img src="https://i1.wp.com/images3.loopnet.com/i2/6z6kUThUKE8La4dYe78_Z5wwwYOAU54O_EJ7XQrOGII/112/image.jpg?resize=840%2C630" class="alignnone size-large" data-recalc-dims="1" /><br />
Located across the street from Row House Cinema, the Arsenal Bank Building is a recently renovated bank that now houses three floors of apartments and was home to the recently-closed Tender Bar and Kitchen. The corner of the building faces Butler Street and sees a large amount pedestrian and vehicular traffic. Groups would be able to install their work in front of the building or on the side.</p>
<h3>Team Questionnaire</h3>
<p><a href="https://goo.gl/forms/Vb87STx7FRTpjrO92">Link to Form</a></p>
]]></content:encoded>
			<wfw:commentRss>https://courses.ideate.cmu.edu/48-734/f2017/?feed=rss2&#038;p=487</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">487</post-id>	</item>
		<item>
		<title>node.js + Johnny-Five</title>
		<link>https://courses.ideate.cmu.edu/48-734/f2017/?p=472</link>
		<comments>https://courses.ideate.cmu.edu/48-734/f2017/?p=472#respond</comments>
		<pubDate>Tue, 07 Nov 2017 16:41:56 +0000</pubDate>
		<dc:creator><![CDATA[Jake Marsico]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-734/f2017/?p=472</guid>
		<description><![CDATA[Overview Johhny-Five is a well-documented javascript library that leverages Arduino&#8217;s StandardFirmataPlus to allow for direct control of an Arduino, Raspberry Pi or other microcontroller straight forward and accessible. In this tutorial will walk through how to use it to control a physical output via an Arduino Uno. Materials Arduino Uno board Arduino IDE node.js Johnny-Five &#8230; <a href="https://courses.ideate.cmu.edu/48-734/f2017/?p=472" class="more-link">Continue reading<span class="screen-reader-text"> "node.js + Johnny-Five"</span></a>]]></description>
				<content:encoded><![CDATA[<h3>Overview</h3>
<p><a href="http://johnny-five.io/">Johhny-Five</a> is a well-documented javascript library that leverages Arduino&#8217;s <code>StandardFirmataPlus</code> to allow for direct control of an Arduino, Raspberry Pi or other microcontroller straight forward and accessible. In this tutorial will walk through how to use it to control a physical output via an Arduino Uno.</p>
<h4>Materials</h4>
<ol>
<li>Arduino Uno board</li>
<li>Arduino IDE</li>
<li>node.js </li>
<li>Johnny-Five module (<code>npm install --save johnny-five</code>)</li>
</ol>
<h4>Setup</h4>
<ol>
<li>Create and initialize a new directory for this node.js system
<ol>
<li><code>mkdir j5_test</code></li>
<li><code>cd j5_test</code></li>
<li><code>npm init</code></li>
</ol>
</li>
<li>Install and save the Johnny-Five package
<ol>
<li><code>npm install --save johnny-five</code></li>
</ol>
</li>
<li>Upload the <code>StandardFirmataPlus</code> firmware to your Arduino
<ol>
<li>Open Arduino application and plug in your Arduino</li>
<li>Open File>Examples>Firmata>StandardFirmataPlus</li>
<li>Upload to your Arduino and close the Arduino application</li>
</ol>
</li>
<li>Use a text editor to open a new file and call it j5_test.js</li>
<li>Copy and paste this code:</li>
</ol>
<p></p><pre class="crayon-plain-tag">var five = require("johnny-five");
var board = new five.Board();

// The board's pins will not be accessible until
// the board has reported that it is ready
board.on("ready", function() {
  console.log("Ready!");

  var led = new five.Led(13);
  led.blink(500);
});</pre><p></p>
<h3>Twitter Example</h3>
<p></p><pre class="crayon-plain-tag">var five = require("johnny-five");
var board = new five.Board();
var Twitter = require('twitter');

//use a flag to know when the arduino is ready
var boardIsReady = false;

var client = new Twitter({
    consumer_key: 'your_consumer_key',
    consumer_secret: 'your_consumer_secret',
    access_token_key: 'your_token',
    access_token_secret: 'your_token_secret',
});

// The board's pins will not be accessible until
// the board has reported that it is ready
board.on("ready", function() {
  console.log("Ready!");
  //set the flag to true
  boardIsReady = true;
});

//set up the twitter stream filter.  here we are tracking the #trump hashtag
var stream01 = client.stream('statuses/filter', {track: '#trump'});

//this is the event listener.
stream01.on('data', function(tweet) {

    //we want to print the number of favorites for this tweek
    if(tweet.user.favourites_count != null){
        console.log(tweet.user.favourites_count);
    }
    
    //if the board is ready, we want to blink the led with each tweet
    if(boardIsReady){
    //blnk the LED HERE
        var led = new five.Led(11);
        led.fadeIn(100, function(){
            led.off();
        })
    }
});</pre><p></p>
]]></content:encoded>
			<wfw:commentRss>https://courses.ideate.cmu.edu/48-734/f2017/?feed=rss2&#038;p=472</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">472</post-id>	</item>
		<item>
		<title>Project 02 &#8211; Peripheral Data Display</title>
		<link>https://courses.ideate.cmu.edu/48-734/f2017/?p=451</link>
		<comments>https://courses.ideate.cmu.edu/48-734/f2017/?p=451#respond</comments>
		<pubDate>Tue, 24 Oct 2017 16:05:31 +0000</pubDate>
		<dc:creator><![CDATA[Jake Marsico]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-734/f2017/?p=451</guid>
		<description><![CDATA[Overview The Pittsburgh International Airport is looking for proposals for a data-driven, informational sculpture to occupy the main atrium of the Airmall. This space currently houses an Alexander Calder hanging mobile, which will be replaced. Details In an effort to attract more business to the shops and restaurants within the air-side terminal, the airport has &#8230; <a href="https://courses.ideate.cmu.edu/48-734/f2017/?p=451" class="more-link">Continue reading<span class="screen-reader-text"> "Project 02 &#8211; Peripheral Data Display"</span></a>]]></description>
				<content:encoded><![CDATA[<h2>Overview</h2>
<p>The Pittsburgh International Airport is looking for proposals for a data-driven, informational sculpture to occupy the main atrium of the Airmall. This space currently houses an Alexander Calder hanging mobile, which will be replaced.</p>
<p><img src="https://i2.wp.com/hips.htvapps.com/htv-prod-media.s3.amazonaws.com/ibmig/cms/image/wtae/16809810-pittsburgh-international-airport.jpg?resize=640%2C480&#038;ssl=1" class="alignnone size-large" data-recalc-dims="1" /></p>
<p><img src="https://i2.wp.com/mediad.publicbroadcasting.net/p/wesa/files/201706/27889293255_ccf580a9a7_o.jpg?resize=840%2C628" class="alignnone size-large" data-recalc-dims="1" /></p>
<h2>Details</h2>
<p>In an effort to attract more business to the shops and restaurants within the air-side terminal, the airport has modified their policies to allow non-traveling visitors to enter the air-side terminal. To celebrate this change and attract more visitors, the Airport Authority wants to install a data-driven, informative sculpture that celebrate&#8217;s the city&#8217;s new focus on technology and culture.<br />
The proposal does not state what type of information they want displayed or to what degree of legibility they require. The sculpture can be floor-mounted or hanging within the atrium. The Airport explicitly wants to visualize information from external APIs and the information should be relative to visitors within the atrium.</p>
<h2>Goals</h2>
<p>Design and build a functional model of your proposed sculpture. This model will need to use real data, either from an external API or from a historical dataset. The project can be as legible or abstract as you want, but be conscious about how your are affected the existing architecture.</p>
<h2>Requirements</h2>
<ol>
<li>Groups of 2 or 3 will develop a small, functional model of the proposal.</li>
<li>Your project must access a web-based API or historical dataset. </li>
<li>Each group must write a blog post at the end of the project that visualizes the project and shows video and photo documentation of the model</li>
</ol>
<h2>Timeline</h2>
<ul>
<li>Tues Oct 31 : Initial concept due</li>
<li>Thurs Nov 9: Crit.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>https://courses.ideate.cmu.edu/48-734/f2017/?feed=rss2&#038;p=451</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">451</post-id>	</item>
		<item>
		<title>Command Line + Node.js</title>
		<link>https://courses.ideate.cmu.edu/48-734/f2017/?p=443</link>
		<comments>https://courses.ideate.cmu.edu/48-734/f2017/?p=443#respond</comments>
		<pubDate>Thu, 19 Oct 2017 16:04:58 +0000</pubDate>
		<dc:creator><![CDATA[Jake Marsico]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-734/f2017/?p=443</guid>
		<description><![CDATA[Command Line What is the Command Line? Everything in a Unix computer is a file. Every program it runs, every little toolbar, every document you own, and every little nuance about the way it runs, is a file. The command line, simply put, is a place where you can navigate through that file system and &#8230; <a href="https://courses.ideate.cmu.edu/48-734/f2017/?p=443" class="more-link">Continue reading<span class="screen-reader-text"> "Command Line + Node.js"</span></a>]]></description>
				<content:encoded><![CDATA[<h1>Command Line</h1>
<h2>What is the Command Line?</h2>
<p>Everything in a Unix computer is a file. Every program it runs, every little toolbar, every document you own, and every little nuance about the way it runs, is a file. The command line, simply put, is a place where you can navigate through that file system and read/run those files. Within it, you type commands instead of clicking on buttons in a GUI. The command line can be very powerful, complex, and dangerous, but should be lauded and admired, not feared.</p>
<p>In general, these tutorials will take place on a Mac, because of their ease-of-use and unix-like filesystem. Following along with Linux will be very similar, but Windows might cause some problems (use at your own risk).</p>
<p><strong>Mac users</strong> — Open the <em>Terminal</em> using Spotlight, or by going into your <code>/Applications/Utilities</code> folder.</p>
<p><strong>Linux users</strong> — You probably already know where your terminal is.</p>
<p><strong>Windows users</strong> — Please download and open <a href="https://babun.github.io/">Babun</a>.</p>
<h2>Syntax</h2>
<p>A command has three parts: the utility, the flags, and the arguments. The utility is required, and always comes first. The flags are usually optional, and can take both long (<code>--flag</code>) and short (<code>-f</code>) forms. The arguments are usually the last part of the command, and are generally required.</p>
<p>Try running this:</p>
<p><code>ls -l ~/Documents</code></p>
<p>In the above example, <code>ls</code> is the utility. It runs a program that <strong>l</strong>ist<strong>s</strong> directory contents. The <code>-l</code> is an optional flag that tells <code>ls</code> to display all the file list in long format. <code>~/Documents</code> is the argument; it tells <code>ls</code> to list the directory contents at <code>Users/&lt;username&gt;/Desktop</code> (or equivalent on your OS).</p>
<p>You can learn how to use any command by typing <code>man</code> in front of it (<code>man</code> — for <strong>man</strong>ual — is the utility, and the command you want to learn about is the argument. You can move up and down the documentation with your arrow keys, and exit by typing <code>q</code>. Often, but not always, you can also learn about a program by using the flag <code>--help</code> with no arguments, or even just by using the utility with no flags or arguments.</p>
<h2>File systems</h2>
<p><img src="https://i0.wp.com/courses.ideate.cmu.edu/48-739/s2017/wp-content/uploads/2017/02/Artboard-1.png?w=840&#038;ssl=1" alt="" class="aligncenter size-full" data-recalc-dims="1" /></p>
<p>Every file on your computer is stored in a folder that is part of a larger tree. Let&#8217;s look at the following location:</p>
<p><code>/Users/&lt;username&gt;/Documents/helloWorld.txt</code></p>
<p>Replace <code>&lt;username&gt;</code> with your login&#8217;s username.</p>
<p>The first <code>/</code> is the root of that tree. It is where every file and folder on the computer is stored. Go ahead and see for yourself by typing the command <code>cd /</code> to <strong>c</strong>hange your <strong>d</strong>irectory to the root <code>/</code>, and see what&#8217;s there by using <code>ls</code>.</p>
<p>The next part, <code>Users/</code>, is a folder within <code>/</code>. Go ahead and <code>cd</code> into it.</p>
<p>On my computer, <code>&lt;username&gt;/</code> is a folder within <code>/Users</code>, and <code>Documents/</code> is a folder within <code>&lt;username&gt;/</code>.</p>
<p>Finally, a text file called <code>helloWorld.txt</code> is within my <code>Documents/</code> folder.</p>
<p>You can <code>cd</code> back up a level by doing <code>cd ../</code>, and can go up multiple levels by chaining those <code>../</code>s. Finally, the shortcut for <code>/Users/&lt;username&gt;/</code> is <code>~/</code> — remember that; <code>~</code> (tilde) is your home (directory).</p>
<h2>Basic Utilities</h2>
<p>Below is a list of basic utilities that most people use regularly. Anything in caps with a <code>$</code> in front of it is a variable that should be replaced with your specific needs.</p>
<p><code>man $UTIL</code> displays the <strong>man</strong>ual for the $UTIL.</p>
<p><code>ls $DIR</code> <strong>l</strong>ist<strong>s</strong> the contents of the $DIR directory.</p>
<p><code>cd $DIR</code> <strong>c</strong>hanges <strong>d</strong>irectories to $DIR.</p>
<p><code>pwd</code> <strong>p</strong>rints the location of the current (<strong>w</strong>orking) <strong>d</strong>irectory.</p>
<p><code>cat $FILE</code> prints the contents of the $FILE to the terminal.</p>
<p><code>cp $FILE $LOCATION</code> <strong>c</strong>o<strong>p</strong>ies $FILE to $LOCATION.</p>
<p><code>mv $FILE $LOCATION</code> <strong>m</strong>o<strong>v</strong>es $FILE to $LOCATION.</p>
<p><code>rm $FILE</code> <strong>r</strong>e<strong>m</strong>oves the $FILE (deletes it).</p>
<p><code>$CMD1 | $CMD2</code> <strong>pipes</strong> (<code>|</code>) the output of $CMD1 into the argument of #CMD2.</p>
<p><code>sudo $CMD</code> runs the $CMD as the super user (<strong>s</strong>uper <strong>u</strong>ser  <strong>do</strong>).</p>
<p><code>sudo</code> can be dangerous, so only use it if you know what the command you&#8217;re elevating is going to do. You can delete the entirety of your computer&#8217;s hard drive by running <code>sudo rm -rf</code> at the root directory (<strong>WARNING</strong>: DO NOT DO THAT!!).</p>
<h3>APIs</h3>
<p><strong>Application Program Interfaces</strong> are a set of rules dictating how applications should interact. When discussing APIs in the contet of the web, we are usually referring to the process we use to post information to a website or database or pull information from a website or database.</p>
<h3>JSON</h3>
<p><strong>JavaScript Object Notation</strong> is a data format used extensively on the web. It was developed for easy parsing within JavaScipt. Many of the APIs we will be using will return their data in JSON format.</p>
<ul>
<li>JSON is written in name|value pairs <code>"name":"Jake"</code></li>
<li>Array:</li>
</ul>
<p></p><pre class="crayon-plain-tag">{
&quot;employees&quot;:[ &quot;John&quot;, &quot;Anna&quot;, &quot;Peter&quot; ]
}</pre><p></p>
<ul>
<li>Objects can have several sub-object:</li>
</ul>
<p></p><pre class="crayon-plain-tag">{
&quot;employee&quot;:{ &quot;name&quot;:&quot;John&quot;, &quot;age&quot;:30, &quot;city&quot;:&quot;New York&quot; }
}</pre><p></p>
<ul>
<li>An object with objects and an array:</li>
</ul>
<p></p><pre class="crayon-plain-tag">{
  &quot;name&quot;:&quot;jake&quot;,
  &quot;age&quot; : 34,
  &quot;friends&quot; : [ &quot;jim&quot;, &quot;eric&quot;, &quot;katie&quot;],
  &quot;day&quot; : &quot;wed&quot;
}</pre><p></p>
<h3>Example JSON</h3>
<p></p><pre class="crayon-plain-tag">{ created_at: 'Wed Feb 08 21:37:22 +0000 2017',
  id: 829444033101586400,
  id_str: '829444033101586440',
  text: 'In a Rare Zoo Escape, Sunny the Red Panda Is Still at Large https://t.co/mhOT4z8NIu https://t.co/8vHtTlqbmQ',
  display_text_range: [ 0, 83 ],
  source: '&lt;a href="http://publicize.wp.com/" rel="nofollow"&gt;WordPress.com&lt;/a&gt;',
  user:
   { id: 972385555,
     id_str: '972385555',
     name: 'Walkileaks',
     screen_name: 'walkileaks',
     location: 'United States',
     url: 'http://www.walkileaks.com',
     protected: false,
     utc_offset: -28800,
     is_translator: false,
     notifications: null },
  geo: null,
  coordinates: null,
  place: null,
  contributors: null,
  is_quote_status: false,
  retweet_count: 0,
  favorite_count: 0,
  entities:
   { hashtags: [],
     urls: [ [Object] ],
     user_mentions: [],
     symbols: [],
     media: [ [Object] ] },
  extended_entities: { media: [ [Object] ] },
  timestamp_ms: '1486589842473' }</pre><p></p>
<h3>Example</h3>
<ul>
<li>In your terminal, change to your home directory <code>cd ~</code> </li>
<li>Make a new directory called &#8220;test_api&#8221; <code>mkdir test_api</code></li>
<li>Go into that directory <code>cd test_api</code></li>
<li>Initialize Node Package Manager in that directory <code>npm init</code></li>
<li>Follow the prompts to get it working</li>
<li>
<p>Open your text and save a new file called test_api.js in the test_api folder</p>
</li>
<li>
<p>paste this code into the new file:</p>
</li>
</ul>
<p></p><pre class="crayon-plain-tag">//https://github.com/toddmotto/public-apis

var request = require("request");


var url = "http://api.icndb.com/jokes/random/"

request(url, function(error, response, body) {
        
        //turn the response into something we can use
        var info = JSON.parse(body);

        //extract the joke
        var joke = info["value"]["joke"];

        //print the joke
        console.log("the joke: " +  joke);
})</pre><p></p>
<ul>
<li>We need to know what the JSON will look like before we know how to format it. </li>
<li>use the this <a href="https://jsonformatter.curiousconcept.com/">jsonformatter</a> site to check out your request </li>
</ul>
<h3>Exercise</h3>
<ul>
<li>Find a new API from this <a href="https://github.com/toddmotto/public-apis">list</a> of free, public APIs</li>
<li>Make a new node.js script that fetches data from the API and parses it</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>https://courses.ideate.cmu.edu/48-734/f2017/?feed=rss2&#038;p=443</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">443</post-id>	</item>
		<item>
		<title>LightManager Processing Class</title>
		<link>https://courses.ideate.cmu.edu/48-734/f2017/?p=380</link>
		<comments>https://courses.ideate.cmu.edu/48-734/f2017/?p=380#respond</comments>
		<pubDate>Tue, 03 Oct 2017 16:04:14 +0000</pubDate>
		<dc:creator><![CDATA[Jake Marsico]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-734/f2017/?p=380</guid>
		<description><![CDATA[Overview We will be using a small Processing class to translate our realtime animations into low-level commands for Phipps&#8217; Color Kinetics lighting system. The diagram below outlines how our software and hardware system is organized. Code First, download the example from Github. The code below shows how to use the LightManager and Light classes. As &#8230; <a href="https://courses.ideate.cmu.edu/48-734/f2017/?p=380" class="more-link">Continue reading<span class="screen-reader-text"> "LightManager Processing Class"</span></a>]]></description>
				<content:encoded><![CDATA[<h2>Overview</h2>
<p>We will be using a small Processing class to translate our realtime animations into low-level commands for Phipps&#8217; Color Kinetics lighting system. The diagram below outlines how our software and hardware system is organized.<br />
<img data-attachment-id="386" data-permalink="https://courses.ideate.cmu.edu/48-734/f2017/?attachment_id=386" data-orig-file="https://i2.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/10/Artboard-1.png?fit=1561%2C809&amp;ssl=1" data-orig-size="1561,809" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Artboard 1" data-image-description="" data-medium-file="https://i2.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/10/Artboard-1.png?fit=300%2C155&amp;ssl=1" data-large-file="https://i2.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/10/Artboard-1.png?fit=840%2C436&amp;ssl=1" src="https://i2.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/10/Artboard-1.png?resize=840%2C436&#038;ssl=1" alt="" class="alignnone size-large wp-image-386" srcset="https://i2.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/10/Artboard-1.png?resize=1024%2C531&amp;ssl=1 1024w, https://i2.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/10/Artboard-1.png?resize=300%2C155&amp;ssl=1 300w, https://i2.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/10/Artboard-1.png?resize=768%2C398&amp;ssl=1 768w, https://i2.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/10/Artboard-1.png?resize=1200%2C622&amp;ssl=1 1200w, https://i2.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/10/Artboard-1.png?w=1561&amp;ssl=1 1561w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" data-recalc-dims="1" /></p>
<h2>Code</h2>
<p>First, download the example from <a href="https://github.com/jmarsico/PhippsLightDrawing">Github</a>.</p>
<p>The code below shows how to use the LightManager and Light classes.  As you can see, you only need to instantiate one LightManager object.  In setup, you  need to initialize that object and call the <code>init</code> function, which requires two parameters, the IP address and PORT of the OSC-Kinet translator (provided by Jake).</p>
<p>In the  <code>draw()</code> loop, you can then choose to send the data to the lights and to draw the lights.  You can also change the size of the light&#8217;s smoothing buffer.  This will change the amount of time it takes the light to &#8220;smooth&#8221; into the desired color.  This can help with smoothing our your animations.</p>
<p></p><pre class="crayon-plain-tag">int roomWidth = 30;
int roomLength = 100;

int lightActualLength = 4;
PImage room;

// Color of the brush to increment through hue.
int col;

boolean sending;
boolean bDrawLights;
LightManager lightManager;


void setup() {
  // 1 pixel = 1 inch (technically)
  size(1200, 360);
  background(0);


  lightManager = new LightManager();
  lightManager.init("192.168.1.101", 12345);
  
  // Set up variables
  room = loadImage("roomimage.png");
  
}


void draw() {
  background(0);
  
  colorMode(HSB);
  ellipseMode(CENTER);
  fill(col%255, 255, 255);
  ellipse(mouseX, mouseY, 200, 200);
  colorMode(RGB);
  col++;
  
  if (sending) lightManager.sendMessages();
  if (bDrawLights) lightManager.display();
}

void keyPressed() {
  if (key == 's') {
    sending = !sending;
  }
  
  if(key == 'd'){
    bDrawLights = !bDrawLights;
  }
 
}</pre><p></p>
]]></content:encoded>
			<wfw:commentRss>https://courses.ideate.cmu.edu/48-734/f2017/?feed=rss2&#038;p=380</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">380</post-id>	</item>
		<item>
		<title>Project 01 : Phipps Conservatory Lights</title>
		<link>https://courses.ideate.cmu.edu/48-734/f2017/?p=320</link>
		<comments>https://courses.ideate.cmu.edu/48-734/f2017/?p=320#respond</comments>
		<pubDate>Tue, 26 Sep 2017 13:49:11 +0000</pubDate>
		<dc:creator><![CDATA[Jake Marsico]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-734/f2017/?p=320</guid>
		<description><![CDATA[Overview The Winter Flower Show and Light Garden is Phipps Conservatory&#8217;s largest event of the year and draws over 120,000 visitors throughout its six week run. Phipps has recently installed a dynamic lighting installation in the Sunken Garden room and is seeking proposals for an interactive or reactive extension of the lighting system. This project &#8230; <a href="https://courses.ideate.cmu.edu/48-734/f2017/?p=320" class="more-link">Continue reading<span class="screen-reader-text"> "Project 01 : Phipps Conservatory Lights"</span></a>]]></description>
				<content:encoded><![CDATA[<h2>Overview</h2>
<p>The <a href="https://www.phipps.conservatory.org/calendar/detail/winter-flower-show-and-light-garden">Winter Flower Show and Light Garden</a> is Phipps Conservatory&#8217;s largest event of the year and draws over 120,000 visitors throughout its six week run. Phipps has recently installed a dynamic lighting installation in the Sunken Garden room and is seeking proposals for an interactive or reactive extension of the lighting system.<br />
This project requires that groups design and build a fully-functioning prototype for the room and demo that prototype on site for the organization&#8217;s director. The director will select the most viable prototype to be further developed and temporarily installed in the Sunken Garden for the duration of the six week festival.</p>
<h2>Details</h2>
<p>Jordyn Melino, the Exhibit Coordinator and lead designer of the Light Garden, has provided us with two of the drawings they&#8217;ll be using to build the room. The first is the planting plan, which depicts all of the plants and locations for the room. Color is a major part of the show and the plants and decor will focus on reds and golds.<br />
<img data-attachment-id="323" data-permalink="https://courses.ideate.cmu.edu/48-734/f2017/?attachment_id=323" data-orig-file="https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/2017-Winter_Planting-Plans-4.png?fit=2550%2C1650&amp;ssl=1" data-orig-size="2550,1650" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="2017 Winter_Planting Plans 4" data-image-description="" data-medium-file="https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/2017-Winter_Planting-Plans-4.png?fit=300%2C194&amp;ssl=1" data-large-file="https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/2017-Winter_Planting-Plans-4.png?fit=840%2C544&amp;ssl=1" src="https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/2017-Winter_Planting-Plans-4.png?resize=840%2C544&#038;ssl=1" alt="" class="alignnone size-large wp-image-323" srcset="https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/2017-Winter_Planting-Plans-4.png?resize=1024%2C663&amp;ssl=1 1024w, https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/2017-Winter_Planting-Plans-4.png?resize=300%2C194&amp;ssl=1 300w, https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/2017-Winter_Planting-Plans-4.png?resize=768%2C497&amp;ssl=1 768w, https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/2017-Winter_Planting-Plans-4.png?resize=1200%2C776&amp;ssl=1 1200w, https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/2017-Winter_Planting-Plans-4.png?w=1680&amp;ssl=1 1680w, https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/2017-Winter_Planting-Plans-4.png?w=2520&amp;ssl=1 2520w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" data-recalc-dims="1" /></p>
<p>The second drawing depicts prop inspirations. The room&#8217;s theme will be one of a holiday feast, with props and plants that represent a holiday table setting.<br />
<img data-attachment-id="324" data-permalink="https://courses.ideate.cmu.edu/48-734/f2017/?attachment_id=324" data-orig-file="https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/2017-Winter_Props-Package_Sunken-3.png?fit=2550%2C1650&amp;ssl=1" data-orig-size="2550,1650" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="2017 Winter_Props Package_Sunken 3" data-image-description="" data-medium-file="https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/2017-Winter_Props-Package_Sunken-3.png?fit=300%2C194&amp;ssl=1" data-large-file="https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/2017-Winter_Props-Package_Sunken-3.png?fit=840%2C544&amp;ssl=1" src="https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/2017-Winter_Props-Package_Sunken-3.png?resize=840%2C544&#038;ssl=1" alt="" class="alignnone size-large wp-image-324" srcset="https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/2017-Winter_Props-Package_Sunken-3.png?resize=1024%2C663&amp;ssl=1 1024w, https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/2017-Winter_Props-Package_Sunken-3.png?resize=300%2C194&amp;ssl=1 300w, https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/2017-Winter_Props-Package_Sunken-3.png?resize=768%2C497&amp;ssl=1 768w, https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/2017-Winter_Props-Package_Sunken-3.png?resize=1200%2C776&amp;ssl=1 1200w, https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/2017-Winter_Props-Package_Sunken-3.png?w=1680&amp;ssl=1 1680w, https://i1.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/2017-Winter_Props-Package_Sunken-3.png?w=2520&amp;ssl=1 2520w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" data-recalc-dims="1" /></p>
<p><iframe src="https://player.vimeo.com/video/235593042" width="800" height="450" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></p>
<p>Phipps Lighting Test from <a href="https://vimeo.com/user37395728">ULRStudio</a> on <a href="https://vimeo.com">Vimeo</a>.</p>
<h2>Goals</h2>
<p>Because of the high visitor volume throughout the show, the Sunken Garden is prone to long lines. The goal of this project is two-fold:</p>
<ol>
<li>Enhance and augment the whimsical decorations of the room.</li>
<li>Entertain visitors as they queue up to pass through the next room.</li>
</ol>
<h2>Requirements</h2>
<ol>
<li>Groups of 4 or 5 will design and develop a functioning prototype to present on October 15th.</li>
<li>Projects interact with the lights using our class&#8217;s custom API</li>
<li>No screen-based projects</li>
<li>At least one sensor input (this can be a microphone, a board of potentiometers, buttons, etc)</li>
</ol>
<h2>Selection Rubric</h2>
<ol>
<li>Robustness: will a final version of this project be able to stand up to 120,000 people in six weeks?</li>
<li>Integration: how well does this project mesh with the existing decor of the room (color, whimsy, fun, etc)</li>
<li>Timing: is this something that won&#8217;t hinder the already slow-moving lines? Can visitors enjoy this without it clogging up the space?</li>
</ol>
<h2>Timeline</h2>
<ol>
<li><strong>Thursday, September 28</strong>: Class tour of Phipps, Q&amp;A with Jordyn Melino</li>
<li><strong>Tuesday, October 3</strong>: Design proposal blog post due, review in class</li>
<li><strong>Tuesday, October 3</strong>: Introduce lighting API and simulator</li>
<li><strong>Thursday, October 5 &#8211; 12</strong>: In-class development</li>
<li><strong>Thursday, October 12</strong>: In-class demo with lighting simulation &#8211; prototype must be functional!</li>
<li><strong>Sunday, October 15</strong>: Evening demos at Phipps</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>https://courses.ideate.cmu.edu/48-734/f2017/?feed=rss2&#038;p=320</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">320</post-id>	</item>
		<item>
		<title>Mini Design Exercise 02</title>
		<link>https://courses.ideate.cmu.edu/48-734/f2017/?p=309</link>
		<comments>https://courses.ideate.cmu.edu/48-734/f2017/?p=309#respond</comments>
		<pubDate>Thu, 21 Sep 2017 15:25:25 +0000</pubDate>
		<dc:creator><![CDATA[Jake Marsico]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-734/f2017/?p=309</guid>
		<description><![CDATA[Kinetic Data Sculpture Overview Using the technical skills we&#8217;ve developed over the past three weeks, design and prototype a kinetic, sculptural visualization of a remote data stream. Legibility is NOT a requirement for this project. The goal here is to play with form and consider alternative implementations of the physical->digital->physical communication pipeline. Requirements Final project &#8230; <a href="https://courses.ideate.cmu.edu/48-734/f2017/?p=309" class="more-link">Continue reading<span class="screen-reader-text"> "Mini Design Exercise 02"</span></a>]]></description>
				<content:encoded><![CDATA[<h2>Kinetic Data Sculpture</h2>
<h4>Overview</h4>
<p>Using the technical skills we&#8217;ve developed over the past three weeks, design and prototype a kinetic, sculptural visualization of a remote data stream. Legibility is NOT a requirement for this project. The goal here is to play with form and consider alternative implementations of the physical->digital->physical communication pipeline.</p>
<h4>Requirements</h4>
<ol>
<li>Final project is due at the end of class.</li>
<li>Using the simple materials at hand, design a kinetic sculpture that changes its motion based on a remote, external, physical input. </li>
<li>System must use two computers that speak to each other over a network</li>
<li>One computer must pull in sensor data (either through arduino or the computer&#8217;s microphone)</li>
<li>The other computer must control the motion of your physical design.</li>
<li>Take a short video of the sculpture and post it to the blog.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>https://courses.ideate.cmu.edu/48-734/f2017/?feed=rss2&#038;p=309</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">309</post-id>	</item>
		<item>
		<title>Network Communication</title>
		<link>https://courses.ideate.cmu.edu/48-734/f2017/?p=291</link>
		<comments>https://courses.ideate.cmu.edu/48-734/f2017/?p=291#respond</comments>
		<pubDate>Tue, 19 Sep 2017 14:54:31 +0000</pubDate>
		<dc:creator><![CDATA[Jake Marsico]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-734/f2017/?p=291</guid>
		<description><![CDATA[The Network The OSI model. The layers of our common networking system are dense, complicated and not worth digging into at this time. Addressing IP Address Each connected computer or microcontroller in a given network is considered a &#8220;device&#8221; or &#8220;host&#8220;. Each device in a given network will have an IP address. The IP address &#8230; <a href="https://courses.ideate.cmu.edu/48-734/f2017/?p=291" class="more-link">Continue reading<span class="screen-reader-text"> "Network Communication"</span></a>]]></description>
				<content:encoded><![CDATA[<h1>The Network</h1>
<p><img class="aligncenter size-full" src="https://i0.wp.com/s-media-cache-ak0.pinimg.com/originals/21/0c/f0/210cf024379729cbda41099e84dcb4d0.jpg?w=840&#038;ssl=1" alt="" data-recalc-dims="1" /> The OSI model.</p>
<p>The layers of our common networking system are dense, complicated and not worth digging into at this time.</p>
<h2>Addressing</h2>
<p><img data-attachment-id="293" data-permalink="https://courses.ideate.cmu.edu/48-734/f2017/?attachment_id=293" data-orig-file="https://i0.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/network_ip.png?fit=2093%2C1302&amp;ssl=1" data-orig-size="2093,1302" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="network_ip" data-image-description="" data-medium-file="https://i0.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/network_ip.png?fit=300%2C187&amp;ssl=1" data-large-file="https://i0.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/network_ip.png?fit=840%2C523&amp;ssl=1" class="alignnone size-large wp-image-293" src="https://i0.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/network_ip.png?resize=840%2C523&#038;ssl=1" alt="" srcset="https://i0.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/network_ip.png?resize=1024%2C637&amp;ssl=1 1024w, https://i0.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/network_ip.png?resize=300%2C187&amp;ssl=1 300w, https://i0.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/network_ip.png?resize=768%2C478&amp;ssl=1 768w, https://i0.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/network_ip.png?resize=1200%2C746&amp;ssl=1 1200w, https://i0.wp.com/courses.ideate.cmu.edu/48-734/f2017/wp-content/uploads/2017/09/network_ip.png?w=1680&amp;ssl=1 1680w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" data-recalc-dims="1" /></p>
<h3>IP Address</h3>
<p>Each connected computer or microcontroller in a given network is considered a &#8220;<strong>device</strong>&#8221; or &#8220;<strong>host</strong>&#8220;. Each device in a given network will have an IP address. The IP address can be assigned by the device itself (setting a <strong>Static IP</strong>) or the address can be given to the device by a router using a process called <strong>DHCP</strong>. DHCP is most common in large wifi networks and is probably what your laptop is using now. We call this &#8220;dynamic.&#8221;</p>
<p>When communicating with an application on a different computer, you&#8217;ll need to know that computer&#8217;s IP address. If both computers are on the same network (same router or same large institutional network like CMU), connecting shouldn&#8217;t be a problem.</p>
<p>Networks almost always regulate how their devices access the internet. This means that directly communicating with a device outside of your immediate network can be tricky.</p>
<p>For most applications in this class, you&#8217;ll be working with devices on the same router. To make sure you have a clear communication path between devices, check the IP address on each. You can check this by typing <code>ifconfig</code> in the command line. Look for an <code>inet</code> address that is not <code>127.0.0.1</code> (which is your &#8216;localhost&#8217; address, used for talking to other applications on the same device). The <code>inet</code> address may have an adddress such as <code>10.0.0.104</code> or <code>192.168.1.56</code>. Communication shouldn&#8217;t be a problem if both devices are on the same <strong>subnet</strong>, which means the first 4 numbers of the IP address. Keep in mind, this only holds true if both devices are on the same network; so if Kim is in Indiana and his router gives him an IP of <code>192.168.1.56</code> and Pat is in Oregon and her router gives her an IP of <code>192.168.1.26</code>, that doesn&#8217;t mean they can communicate, since their routers are on different networks (assuming no VPN, etc).</p>
<h3>Ports</h3>
<p>If you imagine that and IP address is like a device&#8217;s street address, the Port is like a given application&#8217;s apartment number within the device. When setting up a networking path on two applications, the listening application will need to declare which port it is listening to. This is usually a 4 or 5 digit number <code>12345</code> or <code>5555</code>, etc. The sending application will also need to declare, along with the IP address, which port in the destination device its packets are intended to reach.</p>
<p>Port numbers less than 1000 are generally reserved and should not be used in your application. You should be aware of some specific ports, like 80 (which is the default port for HTTP) and 22 (which is reserved for SSH).</p>
<h2>Protocols</h2>
<h3>UDP</h3>
<p><strong>User Datagram Protocol</strong> is a &#8220;transport level&#8221; protocol we often use for streaming continuous data. UDP is low latency and it does not require that the sender of UDP receive confirmation of receipt from the receiver. This means that UDP messages can get lost and nobody will know. We use UDP for streaming continuous information (people tracking, continuous sensor data, etc) because we want to get that information as soon as possible and we don&#8217;t care if packets are lost along the way because another packet will be coming right behind it.</p>
<p><a href="http://udpdrop.m4r5.io/">UDP Drop Example</a></p>
<h3>OSC</h3>
<p><img class="aligncenter size-full" src="https://i0.wp.com/www.cinetix.de/interface/tiptrix/dmxcontrolbox_osc.png?w=840" alt="" data-recalc-dims="1" /></p>
<p><strong>Open Sound Control</strong> is an &#8220;application level&#8221; protocol that sits on top of UDP and allows users to send formatted, human-readable messages. An example of an OSC message may be <code>/sensors/A/value 54.2145</code> or <code>/heartbeat "I'm alive" 20170206 0.15</code>. We often use OSC to stream sensor data between applications, as it is easier to read and route than plain UDP. OSC does have some overhead, so if you need to send a ton of data and bandwidth is an issue, you may want to develop a protocol based on straight UDP.</p>
<h4>Test It!</h4>
<ol>
<li>In Processing, install the <code>oscP5</code> package.</li>
<li>Open the oscP5sendReceive example (<code>file&amp;gt;examples&amp;gt;contributed libraries&amp;gt;oscP5&amp;gt;oscP5sendReceived</code>)</li>
<li>Find your IP address (on macOs, hold the option key while clicking the wifi icon)</li>
<li>Give your IP address to a friend, get an IP address from a friend.</li>
<li>on line 26 of the example, <code>myRemoteLocation = new NetAddress("127.0.0.1",12000);</code> change <code>127.0.0.1</code> to your friend&#8217;s IP address.</li>
<li>Run the example.</li>
<li>Modify the messages and protocol that you send each other.</li>
</ol>
<p><strong>Sample Code From Class</strong></p>
<p></p><pre class="crayon-plain-tag">import oscP5.*;
import netP5.*;
  
OscP5 oscP5;
NetAddress myRemoteLocation;

void setup() {
  size(400,400);
  frameRate(25);
  /* start oscP5, listening for incoming messages at port 12000 */
  oscP5 = new OscP5(this,12345);
  
  myRemoteLocation = new NetAddress("10.7.158.108",12345);
}


void draw() {
  background(0);  
}

void mousePressed() {
  /* in the following different ways of creating osc messages are shown by example */
  OscMessage myMessage = new OscMessage("/name");
  
  myMessage.add("jake"); /* add a string to the osc message */

  /* send the message */
  oscP5.send(myMessage, myRemoteLocation); 
}

/* incoming osc message are forwarded to the oscEvent method. */
void oscEvent(OscMessage theOscMessage) {
  /* print the address pattern and the typetag of the received OscMessage */
  print("### received an osc message.");
  print(" addrpattern: "+theOscMessage.addrPattern());
  println(" typetag: "+theOscMessage.typetag());
  
  //check for address pattern
  if(theOscMessage.checkAddrPattern("/name") == true){
    println(theOscMessage.get(0).stringValue());
  }
}</pre><p></p>
<h3>TCP</h3>
<p><strong>Transmission Control Protocol</strong> is the &#8220;transport level&#8221; protocol on which HTTP runs. TCP is slower than UDP because it requires a confirmation of receipt for each message. We use TCP for sending information that MUST reach its destination. For example if we want to send updates from our FitBit to a server every 10 minutes, we would use a protocol based on TCP because if one of those FitBit update packets didn&#8217;t arrive, our system might fail. We usually do not use TCP for streaming continuous data.</p>
<h3>At Home OSC Exercise</h3>
<h4>Overview</h4>
<p>Build a closed system with a partner in which two computers speak to each other using OSC.</p>
<p><strong>Requirements</strong><br />
&#8211; One computer must read a sensor.<br />
&#8211; Send the sensor data to the other computer.<br />
&#8211; The other computer must use that data to control a physical output.<br />
&#8211; Post a video of your system to the blog.</p>
]]></content:encoded>
			<wfw:commentRss>https://courses.ideate.cmu.edu/48-734/f2017/?feed=rss2&#038;p=291</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">291</post-id>	</item>
		<item>
		<title>Transistors + Motors</title>
		<link>https://courses.ideate.cmu.edu/48-734/f2017/?p=268</link>
		<comments>https://courses.ideate.cmu.edu/48-734/f2017/?p=268#respond</comments>
		<pubDate>Thu, 14 Sep 2017 15:44:46 +0000</pubDate>
		<dc:creator><![CDATA[Jake Marsico]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-734/f2017/?p=268</guid>
		<description><![CDATA[Transistors &#38; Actuators Transistors Since you shouldn&#8217;t (and usually can&#8217;t) power high-draw devices using the Arduino, you should power them via an external power supply. But what if you want to control when they receive power? You can do that with a Transistor. Transistors are essentially switches, except they are switched open and closed with &#8230; <a href="https://courses.ideate.cmu.edu/48-734/f2017/?p=268" class="more-link">Continue reading<span class="screen-reader-text"> "Transistors + Motors"</span></a>]]></description>
				<content:encoded><![CDATA[<h1>Transistors &amp; Actuators</h1>
<h2>Transistors</h2>
<p><img class="aligncenter size-full" src="https://i2.wp.com/upload.wikimedia.org/wikipedia/commons/0/0e/Transistors-white.jpg?w=600&#038;ssl=1" alt="" data-recalc-dims="1" /></p>
<p>Since you shouldn&#8217;t (and usually can&#8217;t) power high-draw devices using the Arduino, you should power them via an external power supply. But what if you want to control when they receive power? You can do that with a Transistor.</p>
<p><strong>Transistors</strong> are essentially switches, except they are switched open and closed with electricity instead of a mechanical action. They exist in two main forms (at least with what we&#8217;ll be using): BJTs (Bipolar Junction Transistor) and MOSFETs (Metal-Oxide Semiconductor Field-Effect Transistor).</p>
<p><img class="aligncenter size-full" src="https://i1.wp.com/cdn.sparkfun.com/r/400-400/assets/learn_tutorials/1/9/3/npn-switch-led.png?w=600&#038;ssl=1" alt="" data-recalc-dims="1" /></p>
<p>This example shows a high-power LED being powered by a 5V power source, but being controlled by a Transistor hooked up to a microcontroller. When the control voltage goes <code>HIGH</code>, the electricity is allowed to pass through. When it goes <code>LOW</code>, no electricity can pass through the transistor, so the LED can&#8217;t turn on.</p>
<p><img class="aligncenter size-full" src="https://i0.wp.com/www.bbc.co.uk/staticarchive/8dc8d062055afa560657abd7d9adfa986e85de81.gif?w=840" alt="" data-recalc-dims="1" /><br />
<img class="aligncenter size-full" src="https://i2.wp.com/cdn.sparkfun.com/r/600-600/assets/learn_tutorials/1/9/3/npn-pnp-symbols.png?w=600&#038;ssl=1" alt="" data-recalc-dims="1" /></p>
<p>There are two types of BJTs — NPNs and PNPs.</p>
<p>In diagrams, the arrows for both are on the Emitters. On an NPN, the arrow is <strong>N</strong>OT <strong>P</strong>OINTING I<strong>N</strong>. On a PNP, the arrow DOES POINT IN.</p>
<p>On an NPN transistor, the Emitter is connected to Ground, Collector is connected to the Current source you want to pass through, and the Base is connected to the Current source you want to use to control the Transistor. In PNP transistors, the Emitter and Collector are switched.</p>
<p><img class="aligncenter size-full" src="https://i2.wp.com/oscarliang.com/ctt/uploads/2013/10/mosfet.jpg?w=600&#038;ssl=1" alt="" data-recalc-dims="1" /><br />
<img class="aligncenter size-full" src="https://i0.wp.com/cdn.sparkfun.com/r/600-600/assets/d/f/6/3/d/51cc9e55ce395fea4b000000.png?w=600&#038;ssl=1" alt="" data-recalc-dims="1" /></p>
<p><img class="alignnone size-full" src="https://i2.wp.com/mlm-s1-p.mlstatic.com/transistor-mosfet-bs170-canal-n-60v-500ma-to-92-nuevo-13348-MLM3049477546_082012-O.jpg?resize=401%2C227" data-recalc-dims="1" /></p>
<p>MOSFETs are very similar, except their pins are named Source, Drain, and Gate. Additionally, the two types are N-Channel and P-Channel.</p>
<p>In diagrams, the arrows are always on the Gate. On N-Channel MOSFETS, the arrow points I<strong>N</strong>, and on P-Channels it points OUT.</p>
<p>In an N-Channel MOSFET, the Source is connected to ground, the Drain is connected to your high-powered circuit, and the Gate is connected to the control to switch the MOSFET on or off. In P-Channel MOSFETS, the Source and Drain are switched.</p>
<h2>DC Motors</h2>
<p><img class="aligncenter size-full" src="https://i0.wp.com/cdn.sparkfun.com/assets/a/1/6/0/2/524dcee9757b7f00478b4567.jpg?w=600&#038;ssl=1" alt="" data-recalc-dims="1" /></p>
<p>DC Motors are a very simple type of motor that turns at varying speeds depending on how much voltage is supplied.</p>
<p>They are exteremely simple to use. Simply connect one wire to power, and the other wire to ground to make the motor spin one way. Flip the wires around to make it spin the other way. You can determine what Voltage to use by looking at the motor&#8217;s datsheet.</p>
<p><img class="aligncenter size-full" src="https://i1.wp.com/cdn.sparkfun.com//assets/parts/1/0/5/6/1/13302-01b.jpg?w=600&#038;ssl=1" alt="" data-recalc-dims="1" /><br />
<img class="aligncenter size-full" src="https://i2.wp.com/cdn.sparkfun.com/datasheets/Robotics/DG01D.jpg?w=600&#038;ssl=1" alt="" data-recalc-dims="1" /></p>
<p>These motors, for example, have a suggested Voltage of 4.5V DC, and will pull 250mA of current at max load.</p>
<h3>Exercise 2.1: Using a Transistor to Control a DC Motor</h3>
<ol>
<li>Connect your motor to a Power Supply, and give it 4.5V to see it spin. Flip the wires around the other way to see it spin backwards</li>
<li>Design (draw or make in Fritzing) and build a circuit using an N-Channel MOSFET to power that motor via a Power Supply, and control it via an Arduino (you should use the Blink example as a starting point)</li>
</ol>
<h2>Servos</h2>
<p><img class="aligncenter size-full" src="https://i2.wp.com/cdn.sparkfun.com/r/600-600/assets/learn_tutorials/5/2/6/servo-samples.jpg?w=600&#038;ssl=1" alt="" data-recalc-dims="1" /></p>
<p>Servos are a little more complicated than regular DC motors. While generally not as strong, you can control the exact speed at which a servo turns, as well as the direction and position it turns to.</p>
<p><img class="aligncenter size-full" src="https://i0.wp.com/cdn.sparkfun.com/r/600-600/assets/learn_tutorials/5/2/6/servo-color-code.jpg?w=600&#038;ssl=1" alt="" data-recalc-dims="1" /></p>
<p>To do this, Servos have three wires: Ground, Power, and Control. The colors vary on different servos, but for the most part, red is usually power, black/brown is usually ground, and white/yellow is usually control.</p>
<p>Servos have some limitations. Most servo motors cannot rotate continuously; cheaper servos can have as little as 90° of rotation. Some servos, however, are known as continuous rotation, and can rotate in full circle indefinitely.</p>
<p>Exact control of a hobby servo is accomplished by sending a series of pulses to the device over the control line. We usually don&#8217;t generate our own pulses (they&#8217;re difficult to keep track of), and instead rely on existing libraries that have all of the potential commands already written.</p>
<h3>Exercise 2.2: Controlling a Servo with a Potentiometer</h3>
<ol>
<li>Connect a servo to your Arduino like so:</li>
</ol>
<p><img src="https://i0.wp.com/www.arduino.cc/en/uploads/Tutorial/sweep_bb.png?w=840&#038;ssl=1" alt="" data-recalc-dims="1" /></p>
<ol>
<li>Open the example code, File &gt; Examples &gt; Servo &gt; <a href="https://www.arduino.cc/en/Tutorial/Sweep">Sweep</a>, and upload it to your Arduino</li>
<li>Attach a Potentiometer to your system, and use it to control the exact positioning of the Servo (make use of the <a href="https://www.arduino.cc/en/Reference/Map"><code>map()</code></a> command)</li>
</ol>
<p>Sources:</p>
<p>Joshua Noble&#8217;s <a href="http://archive.oreilly.com/pub/a/web-development/excerpts/programming-interactivity/circuit-diagram-symbols.html">Circuit Diagram Symbols &#8211; Programming Interactivity</a><br />
Tom Igoe&#8217;s <a href="http://www.tigoe.com/pcomp/code/circuits/understanding-electricity/">Understanding Electricity</a><br />
Sparkfun&#8217;s <a href="https://learn.sparkfun.com/tutorials/voltage-current-resistance-and-ohms-law/electricity-basics">Voltage, Current, Resistance, and Ohm&#8217;s Law</a>, <a href="https://learn.sparkfun.com/tutorials/how-to-read-a-schematic">How to Read a Schematic</a>, <a href="https://learn.sparkfun.com/tutorials/motors-and-selecting-the-right-one">Motors and Selecting the Right One</a>, and <a href="https://learn.sparkfun.com/tutorials/hobby-servo-tutorial">Hobby Servo Tutorial</a><br />
ITP&#8217;s <a href="https://itp.nyu.edu/physcomp/lessons/electronics/electricity-the-basics/">Electricity: the Basics</a><br />
cmuphyscomp&#8217;s <a href="https://github.com/cmuphyscomp/physcomp-examples">physcomp-examples</a><br />
Oscar Liang&#8217;s <a href="https://oscarliang.com/how-to-use-mosfet-beginner-tutorial/">How to Use MOSFET — Beginner&#8217;s Tutorial</a></p>
]]></content:encoded>
			<wfw:commentRss>https://courses.ideate.cmu.edu/48-734/f2017/?feed=rss2&#038;p=268</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">268</post-id>	</item>
	</channel>
</rss>
