<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://homeostasis.scs.carleton.ca/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sarahmathieson</id>
	<title>Soma-notes - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://homeostasis.scs.carleton.ca/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sarahmathieson"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php/Special:Contributions/Sarahmathieson"/>
	<updated>2026-05-12T20:28:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_19&amp;diff=18227</id>
		<title>WebFund 2013F Lecture 19</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_19&amp;diff=18227"/>
		<updated>2013-11-25T23:53:48Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Notes==&lt;br /&gt;
==Assignment 4 remarks&lt;br /&gt;
* Shouldn’t need to use prototypes at all in assignment&lt;br /&gt;
# Before insert, do a lookup&lt;br /&gt;
## If there, you have the document and edit that&lt;br /&gt;
# Search for a special room called “start”&lt;br /&gt;
## Start is not a room, it’s a room pointer&lt;br /&gt;
## Can put description of a room in there&lt;br /&gt;
## Could have everything linked to the start room&lt;br /&gt;
### Have all rooms exit to start&lt;br /&gt;
### Title won’t be start&lt;br /&gt;
# JavaScript string replace&lt;br /&gt;
## Don’t use a for-loop&lt;br /&gt;
### There are nice string manipulation routines in JavaScript &lt;br /&gt;
# TA’s will be using their own custom database to test code&lt;br /&gt;
# Look up how to do file uploads&lt;br /&gt;
## Might do this in tutorial&lt;br /&gt;
## Don’t have to do string checking, just have to check objects to make sure all fields are there and they aren’t undefined&lt;br /&gt;
## Do all the exits refer to a room that actually exists?  &lt;br /&gt;
### Not super important to do&lt;br /&gt;
## Each room has name, title, description exits, has a start room &lt;br /&gt;
### Can say valid&lt;br /&gt;
# Have to validate the data structure&lt;br /&gt;
## Have to make sure you don’t import garbage&lt;br /&gt;
# Don’t have to do this with AJAX&lt;br /&gt;
==non assignment stuff==&lt;br /&gt;
** To get style points, probably going to have to do something nice&lt;br /&gt;
*** Probably don’t want to have to press submit a million times&lt;br /&gt;
* Always time costs when you distribute a system&lt;br /&gt;
* How’s it going to fail?&lt;br /&gt;
** Anything from a database is expensive&lt;br /&gt;
* Want a static webserver for front end&lt;br /&gt;
** Incoming requests first go through here, if it can handle it, it will hand it off and respond&lt;br /&gt;
** If it can’t, it will send it back&lt;br /&gt;
* Gets don’t change server state, posts do&lt;br /&gt;
* Gets can be cached&lt;br /&gt;
* CDN&lt;br /&gt;
** Content Distribution Network&lt;br /&gt;
** Some combination between static servers and caching&lt;br /&gt;
* Reading is never a problem&lt;br /&gt;
* Searches are easy&lt;br /&gt;
* Writes are what slow you down&lt;br /&gt;
** Cannot be automatically replicated&lt;br /&gt;
** Changed the state of part of your database, essentially your data structure&lt;br /&gt;
** This is what limits database scalability&lt;br /&gt;
* Fred Brooks&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_19&amp;diff=18226</id>
		<title>WebFund 2013F Lecture 19</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_19&amp;diff=18226"/>
		<updated>2013-11-25T23:52:32Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: Created page with &amp;quot;==Notes== ==Assignment 4 remarks * Shouldn’t need to use prototypes at all in assignment # Before insert, do a lookup ** If there, you have the document and edit that # Sear...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Notes==&lt;br /&gt;
==Assignment 4 remarks&lt;br /&gt;
* Shouldn’t need to use prototypes at all in assignment&lt;br /&gt;
# Before insert, do a lookup&lt;br /&gt;
** If there, you have the document and edit that&lt;br /&gt;
# Search for a special room called “start”&lt;br /&gt;
** Start is not a room, it’s a room pointer&lt;br /&gt;
** Can put description of a room in there&lt;br /&gt;
** Could have everything linked to the start room&lt;br /&gt;
*** Have all rooms exit to start&lt;br /&gt;
*** Title won’t be start&lt;br /&gt;
# JavaScript string replace&lt;br /&gt;
** Don’t use a for-loop&lt;br /&gt;
*** There are nice string manipulation routines in JavaScript &lt;br /&gt;
# TA’s will be using their own custom database to test code&lt;br /&gt;
# Look up how to do file uploads&lt;br /&gt;
** Might do this in tutorial&lt;br /&gt;
** Don’t have to do string checking, just have to check objects to make sure all fields are there and they aren’t undefined&lt;br /&gt;
** Do all the exits refer to a room that actually exists?  &lt;br /&gt;
*** Not super important to do&lt;br /&gt;
** Each room has name, title, description exits, has a start room &lt;br /&gt;
*** Can say valid&lt;br /&gt;
# Have to validate the data structure&lt;br /&gt;
** Have to make sure you don’t import garbage&lt;br /&gt;
# Don’t have to do this with AJAX&lt;br /&gt;
** To get style points, probably going to have to do something nice&lt;br /&gt;
*** Probably don’t want to have to press submit a million times&lt;br /&gt;
* Always time costs when you distribute a system&lt;br /&gt;
* How’s it going to fail?&lt;br /&gt;
** Anything from a database is expensive&lt;br /&gt;
* Want a static webserver for front end&lt;br /&gt;
** Incoming requests first go through here, if it can handle it, it will hand it off and respond&lt;br /&gt;
** If it can’t, it will send it back&lt;br /&gt;
* Gets don’t change server state, posts do&lt;br /&gt;
* Gets can be cached&lt;br /&gt;
* CDN&lt;br /&gt;
** Content Distribution Network&lt;br /&gt;
** Some combination between static servers and caching&lt;br /&gt;
* Reading is never a problem&lt;br /&gt;
* Searches are easy&lt;br /&gt;
* Writes are what slow you down&lt;br /&gt;
** Cannot be automatically replicated&lt;br /&gt;
** Changed the state of part of your database, essentially your data structure&lt;br /&gt;
** This is what limits database scalability&lt;br /&gt;
* Fred Brooks&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_18&amp;diff=18225</id>
		<title>WebFund 2013F Lecture 18</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_18&amp;diff=18225"/>
		<updated>2013-11-25T23:45:46Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The audio from the lecture given on November 20, 2013 is [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec18-20Nov2013.m4a here].&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
* When you do app.get the things in the parameters are callback functions&lt;br /&gt;
* [[File:Nov20a.png]]&lt;br /&gt;
* [[File:Nov20b.png]]&lt;br /&gt;
* Server has to enforce data and integrity&lt;br /&gt;
** Why for database?&lt;br /&gt;
*** THEY HAVE TO HOLD.  No matter what they can never be inconsistent&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Nov20b.png&amp;diff=18224</id>
		<title>File:Nov20b.png</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Nov20b.png&amp;diff=18224"/>
		<updated>2013-11-25T23:44:07Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Nov20a.png&amp;diff=18223</id>
		<title>File:Nov20a.png</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Nov20a.png&amp;diff=18223"/>
		<updated>2013-11-25T23:43:41Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_16&amp;diff=18222</id>
		<title>WebFund 2013F Lecture 16</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_16&amp;diff=18222"/>
		<updated>2013-11-25T23:38:37Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The audio from the lecture given on November 13, 2013 is [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec16-13Nov2013.m4a here].&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
* Control flow graph&lt;br /&gt;
** graph representation of program structure&lt;br /&gt;
** you should know how things move in your program&lt;br /&gt;
*** graph is weird for web applications&lt;br /&gt;
**** no main =&amp;gt; event driven&lt;br /&gt;
**** distributed&lt;br /&gt;
***** control flow goes between browser and one or more servers&lt;br /&gt;
**** RPC (RemoteProcedureCall) &lt;br /&gt;
***** sometimes when making a call?  Actually making a call on something on the network&lt;br /&gt;
***** RPC&#039;s have fundamental security problems&lt;br /&gt;
***** always call by value (pass number along)&lt;br /&gt;
**** SOAP&lt;br /&gt;
***** effort to do RPC over the web&lt;br /&gt;
***** Problems?&lt;br /&gt;
****** Based on XML&lt;br /&gt;
******* very verbose&lt;br /&gt;
******* SOAP protocols based on XML are VERY verbose&lt;br /&gt;
**** REST&lt;br /&gt;
***** GET, POST,  etc &lt;br /&gt;
* Databases&lt;br /&gt;
** don&#039;t want to store everything just in a text file&lt;br /&gt;
*** multiple files is a pain&lt;br /&gt;
** associative arrays are easier to get access to&lt;br /&gt;
** concurrency&lt;br /&gt;
*** I want to change data structures all over the place&lt;br /&gt;
**** allow for concurrent updates without corrupting entire thing&lt;br /&gt;
** durability&lt;br /&gt;
*** can change values incrementally&lt;br /&gt;
** We will be using MongoDB&lt;br /&gt;
*** “document store”&lt;br /&gt;
**** it&#039;s like you are storing a collection of word documents&lt;br /&gt;
**** allows to to incrementally update parts of the document without corrupting everything&lt;br /&gt;
**** transactions&lt;br /&gt;
***** making changes to multiple durable data structures&lt;br /&gt;
****** changes are always consistent&lt;br /&gt;
******* all should happen or none should happen&lt;br /&gt;
******* atomic commits&lt;br /&gt;
***** documents are basically JSON objects&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_15&amp;diff=18185</id>
		<title>WebFund 2013F Lecture 15</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_15&amp;diff=18185"/>
		<updated>2013-11-11T23:42:06Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: Created page with &amp;quot;==Notes==  ===Assignment 3 Tips=== * Question 6 : Every time the user score changes, you can update the high score ** Cheating!  It doesn’t have to be constantly updated in ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Notes==&lt;br /&gt;
&lt;br /&gt;
===Assignment 3 Tips===&lt;br /&gt;
* Question 6 : Every time the user score changes, you can update the high score&lt;br /&gt;
** Cheating!  It doesn’t have to be constantly updated in the background&lt;br /&gt;
** Or could use long poling&lt;br /&gt;
*** Do ajax type call on the client&lt;br /&gt;
*** On the server you would wait, set up a callback for when the high score changes&lt;br /&gt;
* Question 4: &lt;br /&gt;
** var container = $(‘#container’);&lt;br /&gt;
*** returns a jQuery object&lt;br /&gt;
** //for the canvas:&lt;br /&gt;
*** c = $(‘canvas’)[0];&lt;br /&gt;
** Anil will post something online about the problem errorsount.play();&lt;br /&gt;
** Need to use jQuery equivalent for the container.offsetLeft etc in function init()&lt;br /&gt;
&lt;br /&gt;
===Going through tutorial 9===&lt;br /&gt;
* In package.json there is a new line:&lt;br /&gt;
** &amp;quot;validator&amp;quot;: &amp;quot;*&amp;quot;&lt;br /&gt;
*** used for sanitizing user input&lt;br /&gt;
*** req.session.player = sanitize(player).escape();&lt;br /&gt;
**** sanitize sooner rather than later&lt;br /&gt;
**** we only used this in the start function because this is the only user input that was taken&lt;br /&gt;
* Want to send something back to the client?  &lt;br /&gt;
** You can just use ‘send’  in node&lt;br /&gt;
* Complexity has been moved to the client code&lt;br /&gt;
* On the browser:&lt;br /&gt;
** If you want privacy, the only way you have it is doing it within functions!&lt;br /&gt;
*** In public/javascripts/adventure.js&lt;br /&gt;
**** Anonymous function is defined&lt;br /&gt;
**** Prevents you from polluting the global file scope&lt;br /&gt;
** In public/javascripts/adventure.js&lt;br /&gt;
*** $.getJSON(&amp;quot;/getContents&amp;quot;, function(room)&lt;br /&gt;
**** Get JSON object from server&lt;br /&gt;
**** getContents is a function in routes/index.js&lt;br /&gt;
**** this will return a page with an enoded JSON object&lt;br /&gt;
***** jQuery will happily convert this&lt;br /&gt;
** var exits;&lt;br /&gt;
*** doesn’t do anything&lt;br /&gt;
 	$(&#039;.exits&#039;).remove();&lt;br /&gt;
 		    room.roomExits.forEach(function(theExit) {&lt;br /&gt;
 			$(&#039;#exitList&#039;).append(&lt;br /&gt;
 			    &#039;&amp;lt;button type=&amp;quot;button&amp;quot; id=&amp;quot;&#039; + theExit +&lt;br /&gt;
 				&#039;&amp;quot; class=&amp;quot;btn btn-default exits&amp;quot;&amp;gt;&#039;&lt;br /&gt;
 				+ theExit + &#039;&amp;lt;/button&amp;gt;&#039;);&lt;br /&gt;
 			$(&#039;#&#039;+theExit).on(&#039;click&#039;, function() {&lt;br /&gt;
 			    $.post(&amp;quot;/doAction&amp;quot;, {action: &amp;quot;move&amp;quot;,&lt;br /&gt;
 						 room: theExit});&lt;br /&gt;
 			    getRoom();&lt;br /&gt;
 			});&lt;br /&gt;
 		    });&lt;br /&gt;
*** Get rid of all of the exits&lt;br /&gt;
*** Add button&lt;br /&gt;
*** Add even handler&lt;br /&gt;
*** When someone clicks on the mouse, it creates another post&lt;br /&gt;
*** The value of the exit is coming from the argument to the function&lt;br /&gt;
*** Array objects in JavaScript have a standard object called foreach&lt;br /&gt;
** Every webpage defines its own JavaScript scope&lt;br /&gt;
*** Script is similar to include in C&lt;br /&gt;
** Implications of scripts&lt;br /&gt;
*** You don’t know what code you’re incorporating&lt;br /&gt;
*** It changes from minute to minute&lt;br /&gt;
*** It runs in the same executions context of your code&lt;br /&gt;
*** You have to deal with the DOM – it is global and everyone potentially has access to it&lt;br /&gt;
**** What’s to say that code isn’t changing your code&lt;br /&gt;
**** There are some things you can do, but it’s not easy&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_7&amp;diff=18163</id>
		<title>WebFund 2013F Lecture 7</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_7&amp;diff=18163"/>
		<updated>2013-11-10T16:31:39Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: /* Note */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Audio from the lecture given on September 30, 2013 is available [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec07-30Sep2013.m4a here].&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
&lt;br /&gt;
September 30&lt;br /&gt;
&lt;br /&gt;
* cookies&lt;br /&gt;
** text document&lt;br /&gt;
** saves info on what you were doing on site&lt;br /&gt;
* stateless&lt;br /&gt;
** HTTPS&lt;br /&gt;
** SSH&lt;br /&gt;
* what can server do to keep track of client?&lt;br /&gt;
** Cookies!&lt;br /&gt;
*** Something the server sets&lt;br /&gt;
*** sent along later&lt;br /&gt;
** Encode information in the url itself&lt;br /&gt;
*** that will say what this session identifier is&lt;br /&gt;
* Server can&#039;t trust anything the client sends&lt;br /&gt;
* webrequests are stateless&lt;br /&gt;
* How to make sure the user doesn&#039;t mess with your cookies&lt;br /&gt;
** have to be encoded&lt;br /&gt;
*** cookies should look like garbage&lt;br /&gt;
***if you can hand edit the cookie you are doing something really dumb&lt;br /&gt;
* state is being passed around in url&lt;br /&gt;
* remote procedure calls&lt;br /&gt;
** a program calling another and passing stuff around&lt;br /&gt;
** ie. like buttons on webpages&lt;br /&gt;
* [[File:sept30.jpg]]&lt;br /&gt;
* block&lt;br /&gt;
** running (on a 4 core processor you could have 4 processes running simultaneously)&lt;br /&gt;
** ready (waiting for a free processor)&lt;br /&gt;
** waiting on I/O (blocked until something has happened)&lt;br /&gt;
* synchonous I/O&lt;br /&gt;
** read (b)&lt;br /&gt;
** what happens here?&lt;br /&gt;
*** Program went to sleep and is woken up&lt;br /&gt;
*** could be doing other things here instead of giving up the CPU!&lt;br /&gt;
*** Not efficient to switch between processes&lt;br /&gt;
** scanf(b)&lt;br /&gt;
*** only makes sense after read is completed&lt;br /&gt;
* in node when you do any I/O code it returns immediately &lt;br /&gt;
** asynchronous&lt;br /&gt;
** callbacks solve asynchronous promblem&lt;br /&gt;
*** read(s, b, callback)&lt;br /&gt;
**** do the read request, and when it&#039;s done, here is the code to run encoded in this callback&lt;br /&gt;
* node acts like a dispatcher&lt;br /&gt;
** constantly routing data&lt;br /&gt;
* classic callback in node&lt;br /&gt;
** listen line&lt;br /&gt;
*** has a port number + callback function&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_14&amp;diff=18162</id>
		<title>WebFund 2013F Lecture 14</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_14&amp;diff=18162"/>
		<updated>2013-11-10T16:27:48Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Audio from the lecture given on November 6, 2013 is available [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec14-06Nov2013.m4a here].&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
November 6, 2013&lt;br /&gt;
&lt;br /&gt;
* Sandbox&lt;br /&gt;
** [[File:nov6a.png]]&lt;br /&gt;
*** Untrusted Applet restrictions&lt;br /&gt;
**** Only portion of screen&lt;br /&gt;
**** No file i/o&lt;br /&gt;
**** Same origin policy for the network&lt;br /&gt;
***** Download a program from the internet?  It can’t just access anything on the internet&lt;br /&gt;
***** Can only talk to the server from which it was downloaded&lt;br /&gt;
*** If an applet is signed?  You can trust it.&lt;br /&gt;
*** Digital signature/certificate&lt;br /&gt;
**** Certificates are containers for digital signatures&lt;br /&gt;
**** (p­s,pp)&lt;br /&gt;
**** S = ps(h(d)),  pp(s)=h(d)&lt;br /&gt;
***** You know it could only come from someone who had ps&lt;br /&gt;
****** Not only do I have the hash?  I have the hash that was produced by someone who has this secret key which corresponds to this public key&lt;br /&gt;
****** How do you know you have the right public key?  Get it signed&lt;br /&gt;
****** Certificates are public keys plus meta data along with signatures of the public key&lt;br /&gt;
**** [[File:nov6b.png]]&lt;br /&gt;
**** Sender encrypts with private key&lt;br /&gt;
*** No digital signatures on javascript code you download into your browser&lt;br /&gt;
**** Have to live with restrictions&lt;br /&gt;
**** Sandbox is taking over your whole computer&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Nov6b.png&amp;diff=18161</id>
		<title>File:Nov6b.png</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Nov6b.png&amp;diff=18161"/>
		<updated>2013-11-10T16:23:39Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Nov6a.png&amp;diff=18160</id>
		<title>File:Nov6a.png</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Nov6a.png&amp;diff=18160"/>
		<updated>2013-11-10T16:23:25Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Midterm_Review&amp;diff=18159</id>
		<title>WebFund 2013F Midterm Review</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Midterm_Review&amp;diff=18159"/>
		<updated>2013-11-10T16:17:10Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Audio from the lecture given on October 16, 2013 is available [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec11-16Oct2013.m4a here].&lt;br /&gt;
&lt;br /&gt;
Note that Assignment 2 is now due on October 17 (Thursday) by 4:05 PM.&lt;br /&gt;
&lt;br /&gt;
==Readings==&lt;br /&gt;
&lt;br /&gt;
You may want to read (or re-read) these chapters to get a bit more depth on the topics covered in class.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;JavaScript, The Good Parts:&#039;&#039; Chapters 3 (Objects), 4 (Functions), and 6 (Arrays)&lt;br /&gt;
* &#039;&#039;Learning Node:&#039;&#039; Chapters 2 (REPL), 4 (Modules), 6 (Routing and Connect), 7 (Express), 8 (Jade only)&lt;br /&gt;
&lt;br /&gt;
Note Express exposes much of the functionality of Connect.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
October 16&lt;br /&gt;
* Have until Thursday at 4pm to finish assignment 2&lt;br /&gt;
* Midterm &lt;br /&gt;
** read JavaScript : ch3, ch4, ch6&lt;br /&gt;
** read Learning Node: ch2, ch4, ch6&lt;br /&gt;
* puzzle.js&lt;br /&gt;
** global scopt – Y&lt;br /&gt;
** file scope - p, f, repl&lt;br /&gt;
** y and q and available at prompt, &lt;br /&gt;
*** repl has it&#039;s own scope – that&#039;s why q is available at prompt&lt;br /&gt;
*** .context is dereferencing repl.start&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_10&amp;diff=18158</id>
		<title>WebFund 2013F Lecture 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_10&amp;diff=18158"/>
		<updated>2013-11-10T16:15:27Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The audio from the lecture given on October 9, 2013 is available [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec10-09Oct2013.m4a here].&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
October 9&lt;br /&gt;
&lt;br /&gt;
* for question 3&lt;br /&gt;
 http.createServer(app).listen(app.get(&#039;port&#039;)....&lt;br /&gt;
 app.set(&#039;port&#039;, process.env.PORT||3000);&lt;br /&gt;
** in process.env.port you change the port&lt;br /&gt;
** execve&lt;br /&gt;
*** program binary //path to program you want to run&lt;br /&gt;
*** command -line arguments&lt;br /&gt;
*** environment variables //variable name, variable value&lt;br /&gt;
**** normally inherited from parent processes&lt;br /&gt;
** can set port in the shell by saying  ie: &lt;br /&gt;
*** export PORT = 5000&lt;br /&gt;
** env puts out the variables the current process has&lt;br /&gt;
** can set up multiple node processes by changing the port in the shell and using the same code&lt;br /&gt;
* q 6 add a count to the properties of the object&lt;br /&gt;
[[END OF PREMIDTERM STUFF]]&lt;br /&gt;
* in public we basically have a static web server&lt;br /&gt;
* why minified?&lt;br /&gt;
** Client side javascript is minified&lt;br /&gt;
** removes all unnecessary characters&lt;br /&gt;
*** ie comments&lt;br /&gt;
* bootstrap needs jquery&lt;br /&gt;
** so we&#039;re including bootstrap AND jquery&lt;br /&gt;
* jquery is foundational thing of all modern web apps&lt;br /&gt;
* $. or ($) &lt;br /&gt;
** jquery object&lt;br /&gt;
* jquery is client side only&lt;br /&gt;
** javascript queying of the DOM&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_7&amp;diff=18157</id>
		<title>WebFund 2013F Lecture 7</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_7&amp;diff=18157"/>
		<updated>2013-11-08T21:59:58Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Audio from the lecture given on September 30, 2013 is available [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec07-30Sep2013.m4a here].&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
&lt;br /&gt;
September 30&lt;br /&gt;
&lt;br /&gt;
* cookies&lt;br /&gt;
** text document&lt;br /&gt;
** saves info on what you were doing on site&lt;br /&gt;
* stateless&lt;br /&gt;
** HTTPS&lt;br /&gt;
** SSH&lt;br /&gt;
* what can server do to keep track of client?&lt;br /&gt;
** Cookies!&lt;br /&gt;
*** Something the server sets&lt;br /&gt;
*** sent along later&lt;br /&gt;
** Encode information in the url itself&lt;br /&gt;
*** that will say what this session identifier is&lt;br /&gt;
* Server can&#039;t trust anything the client sends&lt;br /&gt;
* webrequests are stateless&lt;br /&gt;
* How to make sure the user doesn&#039;t mess with your cookies&lt;br /&gt;
** have to be encoded&lt;br /&gt;
*** cookies should look like garbage&lt;br /&gt;
***if you can hand edit the cookie you are doing something really dumb&lt;br /&gt;
* state is being passed around in url&lt;br /&gt;
* remote procedure calls&lt;br /&gt;
** a program calling another and passing stuff around&lt;br /&gt;
** ie. like buttons on webpages&lt;br /&gt;
* [[File:http://homeostasis.scs.carleton.ca/wiki/index.php/File:Sept30.jpg]]&lt;br /&gt;
* block&lt;br /&gt;
** running (on a 4 core processor you could have 4 processes running simultaneously)&lt;br /&gt;
** ready (waiting for a free processor)&lt;br /&gt;
** waiting on I/O (blocked until something has happened)&lt;br /&gt;
* synchonous I/O&lt;br /&gt;
** read (b)&lt;br /&gt;
** what happens here?&lt;br /&gt;
*** Program went to sleep and is woken up&lt;br /&gt;
*** could be doing other things here instead of giving up the CPU!&lt;br /&gt;
*** Not efficient to switch between processes&lt;br /&gt;
** scanf(b)&lt;br /&gt;
*** only makes sense after read is completed&lt;br /&gt;
* in node when you do any I/O code it returns immediately &lt;br /&gt;
** asynchronous&lt;br /&gt;
** callbacks solve asynchronous promblem&lt;br /&gt;
*** read(s, b, callback)&lt;br /&gt;
**** do the read request, and when it&#039;s done, here is the code to run encoded in this callback&lt;br /&gt;
* node acts like a dispatcher&lt;br /&gt;
** constantly routing data&lt;br /&gt;
* classic callback in node&lt;br /&gt;
** listen line&lt;br /&gt;
*** has a port number + callback function&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Sept30.jpg&amp;diff=18156</id>
		<title>File:Sept30.jpg</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Sept30.jpg&amp;diff=18156"/>
		<updated>2013-11-08T21:54:49Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_6&amp;diff=18155</id>
		<title>WebFund 2013F Lecture 6</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_6&amp;diff=18155"/>
		<updated>2013-11-08T21:45:55Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: /* Topics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Audio for the lecture given on September 25, 2013 is available [https://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec06-25Sep2013.m4a here].&lt;br /&gt;
&lt;br /&gt;
==Readings==&lt;br /&gt;
&lt;br /&gt;
* Chapter 4, &amp;quot;Functions&amp;quot;, in &#039;&#039;Learning Node&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Topics==&lt;br /&gt;
&lt;br /&gt;
* function invocation patterns&lt;br /&gt;
** method&lt;br /&gt;
** function&lt;br /&gt;
** constructor&lt;br /&gt;
** apply&lt;br /&gt;
* scoping, environments&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
September 25&lt;br /&gt;
&lt;br /&gt;
* functions&lt;br /&gt;
* this&lt;br /&gt;
** object you are currently accessing inside of an object&lt;br /&gt;
* 4 method invocation patterns&lt;br /&gt;
** (only difference is how this is used)&lt;br /&gt;
** method&lt;br /&gt;
*** obj.method(args);&lt;br /&gt;
**** this === obj;&lt;br /&gt;
** function&lt;br /&gt;
*** m = obj.method;&lt;br /&gt;
**** m(args);&lt;br /&gt;
** constructor&lt;br /&gt;
*** x = new m(args);&lt;br /&gt;
**** this === { }; //empty object&lt;br /&gt;
**** // don&#039;t say new? it becomes the global object&lt;br /&gt;
*** 2 ways to keep yourself out of trouble using &amp;quot;new&amp;quot;&lt;br /&gt;
**** any function / constructor that is supposed to use &amp;quot;new&amp;quot; start it with a capital letter&lt;br /&gt;
***** don&#039;t use new at all&lt;br /&gt;
****** 	start with an empty object and return it&lt;br /&gt;
** apply&lt;br /&gt;
 x = m.apply( this value, arg array);&lt;br /&gt;
 x = f(1) //x is a reference to h because we return it&lt;br /&gt;
 //pointer into h along with the context in which it was called&lt;br /&gt;
 var f = function (a) {&lt;br /&gt;
   var g = function (b) {&lt;br /&gt;
      return b+3&lt;br /&gt;
   }&lt;br /&gt;
   var h = function (c){&lt;br /&gt;
       return(a+g(c);&lt;br /&gt;
   }&lt;br /&gt;
   return h;&lt;br /&gt;
 }&lt;br /&gt;
 a = private&lt;br /&gt;
 b= private, argument scoped to function&lt;br /&gt;
 c = private, argument scoped to function&lt;br /&gt;
 f = global&lt;br /&gt;
 g = private, g&amp;amp;h can see each other&lt;br /&gt;
 h = private, g&amp;amp;h can see each other&lt;br /&gt;
 x = global, reference to h but cannot access g because have not returned it&#039;s value&lt;br /&gt;
* if you say obj.h =x will give you access to g, then f becomes a function &lt;br /&gt;
* assignment&lt;br /&gt;
** no constructor because no use of &amp;quot;new&amp;quot;&lt;br /&gt;
 app.configure(function(){&lt;br /&gt;
   app.set(&#039;views&#039;, __dirname + &#039;/views&#039;);&lt;br /&gt;
   app.set(&#039;view engine&#039;, &#039;jade&#039;);&lt;br /&gt;
   app.use(express.bodyParser());&lt;br /&gt;
   app.use(express.methodOverride());&lt;br /&gt;
   app.use(app.router);&lt;br /&gt;
   app.use(express.static(__dirname + &#039;/public&#039;));&lt;br /&gt;
 });&lt;br /&gt;
* using method&lt;br /&gt;
* app is being cast as &#039;views&#039;... and set&lt;br /&gt;
* this in this case has been assigned to app&lt;br /&gt;
* node never blocks&lt;br /&gt;
* symbol can refer to a function&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_5&amp;diff=18153</id>
		<title>WebFund 2013F Lecture 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_5&amp;diff=18153"/>
		<updated>2013-11-08T21:38:35Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: /* Topics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Audio from the lecture given on September 23, 2013 is [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec05-23Sep2013.m4a here].&lt;br /&gt;
&lt;br /&gt;
==Readings==&lt;br /&gt;
&lt;br /&gt;
* Chapter 4 in &#039;&#039;Learning Node&#039;&#039; (Modules)&lt;br /&gt;
&lt;br /&gt;
==Topics==&lt;br /&gt;
&lt;br /&gt;
* node modules&lt;br /&gt;
* function &amp;lt;tt&amp;gt;arguments&amp;lt;/tt&amp;gt; array&lt;br /&gt;
* return values&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
September 23&lt;br /&gt;
&lt;br /&gt;
 var express = require(&#039;express&#039;)&lt;br /&gt;
   , routes = require(&#039;./routes&#039;);&lt;br /&gt;
* in the case of node, var express makes a local variable&lt;br /&gt;
** this means it is global (but private to) a file&lt;br /&gt;
** ./routes - a directory in the directory you are in&lt;br /&gt;
** express is somewhere else&lt;br /&gt;
*** express is in the node module directory&lt;br /&gt;
*** &amp;quot;look for the code in the express directories in one of the node modules&amp;quot;&lt;br /&gt;
* npm install populates the node modules directory&lt;br /&gt;
* exports object is a special object&lt;br /&gt;
 exports.add = function(req, res){&lt;br /&gt;
     res.render(&#039;add&#039;, { title: &#039;Person added&#039;,&lt;br /&gt;
 			name: req.body.name,&lt;br /&gt;
 			country: req.body.country,&lt;br /&gt;
 			date: req.body.birthday,&lt;br /&gt;
 			email: req.body.email});&lt;br /&gt;
&lt;br /&gt;
* come from text fields on page input from user&lt;br /&gt;
* res.render &lt;br /&gt;
** rendering in graphics -rendering a ball, wire frame, textures, lighting etc.&lt;br /&gt;
** this is what creates the page&lt;br /&gt;
** default renderer is jade&lt;br /&gt;
*** provides a template for entire page that is then filled in with parameters&lt;br /&gt;
 h1 Info Added&lt;br /&gt;
 p Name: #{name}&lt;br /&gt;
 p Country: #{country}&lt;br /&gt;
 p Date: #{date}&lt;br /&gt;
 p Email: #{email}&lt;br /&gt;
* describes what your page will look like&lt;br /&gt;
* !!! is used in jade &lt;br /&gt;
** stuff needed for standard syntax&lt;br /&gt;
** doctype html&lt;br /&gt;
* jade-lang.com/reference&lt;br /&gt;
* html, jade, css, javascript&lt;br /&gt;
* html&lt;br /&gt;
** markup language with tags using angle brackets &amp;lt;&amp;gt; &amp;lt;/&amp;gt;&lt;br /&gt;
* indentation in jade is very important&lt;br /&gt;
** kind of like python&lt;br /&gt;
** language for generating html pages&lt;br /&gt;
* div are divisions&lt;br /&gt;
** essentially specifying a block&lt;br /&gt;
* any time you call a function in javascript there is a thing called arguments&lt;br /&gt;
** it is bound to an area with all the arguments&lt;br /&gt;
** function takes a variable amount of arguments&lt;br /&gt;
* push&lt;br /&gt;
** in java script an array is already a stack&lt;br /&gt;
** can push an element on the top&lt;br /&gt;
** works for the first element in the array&lt;br /&gt;
* pop&lt;br /&gt;
** works for the last element of the array&lt;br /&gt;
* arrays are variably sized objects&lt;br /&gt;
** can be accessed in different throughout&lt;br /&gt;
** ordered&lt;br /&gt;
** similar to object&lt;br /&gt;
** loosely typed&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_4&amp;diff=18151</id>
		<title>WebFund 2013F Lecture 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_4&amp;diff=18151"/>
		<updated>2013-11-08T21:33:23Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: /* Topics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Audio from the lecture given on September 18, 2013 is available [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec04-18Sep2013.m4a here]&lt;br /&gt;
&lt;br /&gt;
==Readings==&lt;br /&gt;
&lt;br /&gt;
* Chapters 3 (Objects) and 4 (Functions), &#039;&#039;JavaScript: The Good Parts&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Topics==&lt;br /&gt;
&lt;br /&gt;
* Array versus dot notation for objects&lt;br /&gt;
* scoping&lt;br /&gt;
** &amp;lt;tt&amp;gt;var&amp;lt;/tt&amp;gt; declarations&lt;br /&gt;
* &amp;lt;tt&amp;gt;prototype&amp;lt;/tt&amp;gt; and delegation&lt;br /&gt;
* empty objects&lt;br /&gt;
* object literals&lt;br /&gt;
* reflection&lt;br /&gt;
**&amp;lt;tt&amp;gt;typeof&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;hasOwnProperty&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;for&amp;lt;/tt&amp;gt; and object properties&lt;br /&gt;
* &amp;lt;tt&amp;gt;delete&amp;lt;/tt&amp;gt;&lt;br /&gt;
* global abatement&lt;br /&gt;
* functions as objects&lt;br /&gt;
* function literals&lt;br /&gt;
&lt;br /&gt;
==notes==&lt;br /&gt;
&lt;br /&gt;
September 18&lt;br /&gt;
&lt;br /&gt;
* empty object &lt;br /&gt;
** foo={ };&lt;br /&gt;
* delegation : waiting for another object to do your work &lt;br /&gt;
** similar to inheritance in java&lt;br /&gt;
* delegation of objects happens in the prototype property&lt;br /&gt;
* every object has a default prototype&lt;br /&gt;
* everything delegates to object&lt;br /&gt;
** similar to inherits but there are no classes and no hierarchy&lt;br /&gt;
* object reflection&lt;br /&gt;
** look inside an object and see what&#039;s there&lt;br /&gt;
* for loops in javascript&lt;br /&gt;
 	for(p in foo){&lt;br /&gt;
 	&lt;br /&gt;
 	}&lt;br /&gt;
** similar to a for each loop in java&lt;br /&gt;
** will iterate through all the properties in foo, no fixed order&lt;br /&gt;
** [[DO NOT DO THIS]]&lt;br /&gt;
** follows prototype and looks at the properties in the entire prototype chain&lt;br /&gt;
* typeof(foo.x) can tell you if x is&lt;br /&gt;
** number&lt;br /&gt;
** string&lt;br /&gt;
** object&lt;br /&gt;
* foo.hasOwnProperty(&#039;x&#039;) returns true or false&lt;br /&gt;
* for loops that don&#039;t care about the prototype chain&lt;br /&gt;
** create an array that has the properties you want and iterate through them&lt;br /&gt;
* vector array uses [] instead of {}&lt;br /&gt;
** ie. [5, hello, etc];&lt;br /&gt;
** use an array because they&#039;re ordered!&lt;br /&gt;
* foo.x is equivalent to foo[&amp;quot;x&amp;quot;]&lt;br /&gt;
** objects are like associative arrays where you index by letters/strings&lt;br /&gt;
&lt;br /&gt;
==FUNCTIONS==&lt;br /&gt;
&lt;br /&gt;
* functions are an object&lt;br /&gt;
* scope!&lt;br /&gt;
** scoping rules : visibility of identifiers&lt;br /&gt;
*** variables&lt;br /&gt;
*** constants&lt;br /&gt;
*** functions&lt;br /&gt;
*** objects etc&lt;br /&gt;
&lt;br /&gt;
===2 ways for scoping===&lt;br /&gt;
&lt;br /&gt;
* dynamic&lt;br /&gt;
** symbols you can access and the meaning of them depends on what code has been run before hand&lt;br /&gt;
** x=7;&lt;br /&gt;
** x=3;&lt;br /&gt;
** x is what part came first&lt;br /&gt;
** global variables are inheritently global scoped&lt;br /&gt;
* lexical/textual&lt;br /&gt;
*** variables it can see depends on what is around it&lt;br /&gt;
*** idea of local variables&lt;br /&gt;
* javascript has a very important global score&lt;br /&gt;
* create a namespace to keep global script from getting too big&lt;br /&gt;
** but doesn&#039;t exist in a standardized form&lt;br /&gt;
* global abatement - minimize what you write in the global scope&lt;br /&gt;
* local variable, say var in front of it&lt;br /&gt;
* no block scope in javascript, function scope is not block scope&lt;br /&gt;
 f = function(a){&lt;br /&gt;
 	return function(b)[&lt;br /&gt;
 		return a+b;&lt;br /&gt;
 	}&lt;br /&gt;
 }; // data encapsulation &lt;br /&gt;
 g = t(5); g(7); returns 12&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_3&amp;diff=18150</id>
		<title>WebFund 2013F Lecture 3</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_3&amp;diff=18150"/>
		<updated>2013-11-08T21:24:47Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Audio from the lecture given on September 16, 2013 is available [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec03-16Sep2013.m4a here].&lt;br /&gt;
&lt;br /&gt;
Readings:&lt;br /&gt;
* Chapters 1-3, &#039;&#039;JavaScript: The Good Parts&#039;&#039;&lt;br /&gt;
* Chapters 1-2, &#039;&#039;Learning Node&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Topics covered:&lt;br /&gt;
* REPL (read-eval-print loop)&lt;br /&gt;
* JavaScript quirks&lt;br /&gt;
** Numbers are all floats&lt;br /&gt;
** ambiguous comment characters&lt;br /&gt;
** === equality&lt;br /&gt;
** undeclared variables have global scope&lt;br /&gt;
* JavaScript objects and variables&lt;br /&gt;
** loose typing&lt;br /&gt;
** scoping&lt;br /&gt;
** prototypes versus classes&lt;br /&gt;
** JSON notation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==notes==&lt;br /&gt;
September 16&lt;br /&gt;
* history of JS&lt;br /&gt;
* REPL&lt;br /&gt;
* quirks&lt;br /&gt;
** equality&lt;br /&gt;
** numbers&lt;br /&gt;
** comments&lt;br /&gt;
** globals&lt;br /&gt;
* browser vs serverJS&lt;br /&gt;
* symbols and assignment&lt;br /&gt;
* object&lt;br /&gt;
&lt;br /&gt;
[[history of JS]]&lt;br /&gt;
* nothing to do with java&lt;br /&gt;
* created over the course of a few weeks (~10 days) to script webpages&lt;br /&gt;
** got into Netscape 2 in the late 90&#039;s&lt;br /&gt;
* not great, but got there at the right time, standardized&lt;br /&gt;
** premature, rough draft, mistakes were made&lt;br /&gt;
* some amazing ideas, some so good that let you get around the rest of the issues&lt;br /&gt;
* don&#039;t think about C, don&#039;t think about Java, think about LISP&lt;br /&gt;
** 2nd oldest language (goes back to late 1950&#039;s&lt;br /&gt;
** modern variants - scheme (cleaner version)&lt;br /&gt;
** LISP = LiSTProcessing&lt;br /&gt;
*** at the time, it was all about symbol programming&lt;br /&gt;
&lt;br /&gt;
==REPL==&lt;br /&gt;
* Model&lt;br /&gt;
* Read &lt;br /&gt;
* Eval  &lt;br /&gt;
&lt;br /&gt;
 basically evaluating all the time&lt;br /&gt;
* Print&lt;br /&gt;
** output of print can almost always be sent to read&lt;br /&gt;
** that means the data structure is in a format that can be read in&lt;br /&gt;
* Loop&lt;br /&gt;
* can do things incrementally, iteratively&lt;br /&gt;
* no compilation&lt;br /&gt;
** no compile time errors, only ~runtime errors&lt;br /&gt;
* loosely typed - generally not statically typed&lt;br /&gt;
** refers to the nature of the symbols you manipulate&lt;br /&gt;
** in C x=5; &lt;br /&gt;
*** is storing the value of 5 somewhere in memory&lt;br /&gt;
*** int, double, short, char... etc&lt;br /&gt;
* in javascript x=5&lt;br /&gt;
*** not ambiguous&lt;br /&gt;
*** y=x+5 won&#039;t give you an error until code is executed&lt;br /&gt;
* can write smaller programs that are more expressive&lt;br /&gt;
* some people hate javascript because of the browser&lt;br /&gt;
** DOM - Document Object Model&lt;br /&gt;
*** ugly, painful, inconsistent&lt;br /&gt;
* quirks&lt;br /&gt;
** write code to work on one browser, doesn&#039;t work properly on another&lt;br /&gt;
** less pain than before, but still a factor&lt;br /&gt;
** mobile stuff still being standardized&lt;br /&gt;
==quirk #1==&lt;br /&gt;
 f = function(a,b) {&lt;br /&gt;
     x=7;&lt;br /&gt;
 }&lt;br /&gt;
* wouldn&#039;t see this in something like C, &lt;br /&gt;
* in JavaScript it becomes a global variable&lt;br /&gt;
* have to specify that it is a local variable&lt;br /&gt;
* all symbols are seen globally by everyone else because there is no linker&lt;br /&gt;
* don&#039;t pollute global namespace&lt;br /&gt;
				&lt;br /&gt;
==quirk #2==&lt;br /&gt;
* comments can only be //, can&#039;t block comment&lt;br /&gt;
==quirk #3==&lt;br /&gt;
* equality operator is ===, for comparisons&lt;br /&gt;
* == does a shallow comparison&lt;br /&gt;
==quirk #4==&lt;br /&gt;
* no integer type&lt;br /&gt;
* can&#039;t do integer division without explicit truncates etc&lt;br /&gt;
* have to be conscious that you are using floats when doing numeric computations&lt;br /&gt;
 var x = {&lt;br /&gt;
 	color &amp;quot;red&amp;quot;;&lt;br /&gt;
 	model &amp;quot;unknown&amp;quot;;&lt;br /&gt;
 	};&lt;br /&gt;
 	//this is an object, object notation&lt;br /&gt;
* property and value&lt;br /&gt;
* no classes&lt;br /&gt;
 x.make = &amp;quot;?&amp;quot;&lt;br /&gt;
 var x = {&lt;br /&gt;
 	make&amp;quot;?&amp;quot;;&lt;br /&gt;
 	color &amp;quot;red&amp;quot;;&lt;br /&gt;
 	model &amp;quot;unknown&amp;quot;;&lt;br /&gt;
 	prototype : car;&lt;br /&gt;
 	crash.function(velocity); // method&lt;br /&gt;
 	};&lt;br /&gt;
* x.prototype is the same as car&lt;br /&gt;
* x.prototype.make=&amp;quot;Tesla&amp;quot;;&lt;br /&gt;
** there is inheritance -- but it&#039;s weird&lt;br /&gt;
*** prototype-based inheritance&lt;br /&gt;
**** prototype : car;&lt;br /&gt;
***		x.model&lt;br /&gt;
&lt;br /&gt;
* symbols can refer to any value, have no type	&lt;br /&gt;
* browser vs server JS&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_2&amp;diff=18149</id>
		<title>WebFund 2013F Lecture 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_2&amp;diff=18149"/>
		<updated>2013-11-08T21:13:44Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Video walkthroughs that were shown in lecture and class and associated notes are posted [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/email-crypto/ here].&lt;br /&gt;
&lt;br /&gt;
This lecture should give an overview of the encryption of email, and what it means to apply a digital signature to an email message. There will be video demonstrations of how to setup both S/MIME and PGP on an Ubuntu machine with Thunderbird. &lt;br /&gt;
&lt;br /&gt;
The RFCs that relate to the topics presented will include:&lt;br /&gt;
&lt;br /&gt;
RFC 821 : SMTP - simple mail transfer protocol&lt;br /&gt;
&lt;br /&gt;
RFC 5652: CMS&lt;br /&gt;
&lt;br /&gt;
RFC 2440: OpenPGP Message Format&lt;br /&gt;
&lt;br /&gt;
RFC 3851: S/MIME 3.1&lt;br /&gt;
&lt;br /&gt;
Links for setting up your software:&lt;br /&gt;
&lt;br /&gt;
[https://help.ubuntu.com/community/GnuPrivacyGuardHowto Ubuntu GPG HowTo]&lt;br /&gt;
&lt;br /&gt;
[http://www.gnupg.org/ GPG Main Website]&lt;br /&gt;
&lt;br /&gt;
[https://support.mozillamessaging.com/en-US/kb/digitally-signing-and-encrypting-messages Mozilla Thunderbird Enigmail Info]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
September 11&lt;br /&gt;
* most email is sent in plaintext&lt;br /&gt;
* SMTP is a store and forward protocol&lt;br /&gt;
* Hops may use point-to-point encryption&lt;br /&gt;
* Analog days: passing notes in class&lt;br /&gt;
* End to End Encryption&lt;br /&gt;
**	PGP&lt;br /&gt;
***		pretty good privacy&lt;br /&gt;
***		encrypt or digitally sign mail&lt;br /&gt;
**	S/MIME &lt;br /&gt;
**	attacker doesn&#039;t know at which point to get to message&lt;br /&gt;
**	wouldn&#039;t know how to unencrypt unless they had key&lt;br /&gt;
*point to point encryption: SSL/TLS&lt;br /&gt;
**	can attack at many points through mail transfer&lt;br /&gt;
*asymmetric - a public key and a private key&lt;br /&gt;
**	two keys, one is public one is private&lt;br /&gt;
***		can use either to encrypt message&lt;br /&gt;
	&lt;br /&gt;
[[Sending message&lt;br /&gt;
]]|Hi Bob!| -&amp;gt; hash function (MD5) -&amp;gt;|0110110|-&amp;gt;Encrypt -&amp;gt;Signature&lt;br /&gt;
signature					Private Key&lt;br /&gt;
&lt;br /&gt;
[[Receiving Message]]&lt;br /&gt;
|Hi Bob!|-sh&amp;gt;md5sum msg.txt-&amp;gt;|0110110|-&amp;gt;Decrypt -&amp;gt; Signature value&lt;br /&gt;
Signature&lt;br /&gt;
Public Key&lt;br /&gt;
&lt;br /&gt;
* if anything changed in transit, it would change hash function value and would let you know that the message integrity has failed&lt;br /&gt;
* by not encrypting  we cannot ensure integrity of communications&lt;br /&gt;
* trace route a couple of your packets&lt;br /&gt;
* IETF = ISO&lt;br /&gt;
**	RFC&lt;br /&gt;
***		SMTP&lt;br /&gt;
***		CMS&lt;br /&gt;
**	OpenPGP&lt;br /&gt;
***		GPG -&amp;gt; free license&lt;br /&gt;
***		PGP (Pretty good privacy)&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_1&amp;diff=18148</id>
		<title>WebFund 2013F Lecture 1</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_1&amp;diff=18148"/>
		<updated>2013-11-08T21:09:07Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Audio from the lecture given on September 9, 2013 is available [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec01-09Sep2013.m4a here].&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
September 9&lt;br /&gt;
Node&lt;br /&gt;
&lt;br /&gt;
Web&lt;br /&gt;
Browser 	&amp;lt;-talks to-&amp;gt;	   Server&lt;br /&gt;
&lt;br /&gt;
==how?==&lt;br /&gt;
* http &amp;lt;-- Stream of text or data byte stream from tcp and puts syntax on it&lt;br /&gt;
* tcp &amp;lt;-- turns packets into continuous stream, controls sending, reordering etc&lt;br /&gt;
* ip &amp;lt;--packet based&lt;br /&gt;
* ethernet/wifi/...&lt;br /&gt;
&lt;br /&gt;
==now: ==&lt;br /&gt;
Browser	              &amp;lt;-talks to-&amp;gt;	                Server&lt;br /&gt;
program	               talking to	                program&lt;br /&gt;
(embedded in &lt;br /&gt;
html document&lt;br /&gt;
that was loaded)&lt;br /&gt;
&lt;br /&gt;
most of data on internet is encoded in http or smtp&lt;br /&gt;
code that runs inside of browser is known as sandboxed&lt;br /&gt;
* everything you care about is in the sandbox&lt;br /&gt;
&lt;br /&gt;
google tracks and monetizes you&lt;br /&gt;
* &#039;&#039;you&#039;&#039; are the product&lt;br /&gt;
&lt;br /&gt;
[[bandwidth:]] how much can I get at once?&lt;br /&gt;
[[latency:]] when I make a request, how long does it take for me to get the first bit&lt;br /&gt;
&lt;br /&gt;
gmail has all kinds of code built in to predict what you want and predicts which emails you&#039;re going to want to read&lt;br /&gt;
	constantly modelling your behaviour to work well&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Server== (not actually going to learn any of these languages)&lt;br /&gt;
* PHP&lt;br /&gt;
* servlets					&lt;br /&gt;
* apache&lt;br /&gt;
* rails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==node.js is javascript==&lt;br /&gt;
* Why? runs pretty fast&lt;br /&gt;
* chromes v8 javascript engine and stuck on the server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==on browser access the DOM==&lt;br /&gt;
* browser manipulates the DOM&lt;br /&gt;
* no DOM on server&lt;br /&gt;
	&lt;br /&gt;
learning javascript running on server first THEN on the browser&lt;br /&gt;
Server puts together an HTML document that it sends to the browser and then using this they talk to each other&lt;br /&gt;
* can&#039;t trust the browser.&lt;br /&gt;
* browser keeps no secrets&lt;br /&gt;
* any data sent to server has to be appropriately validated&lt;br /&gt;
&lt;br /&gt;
Database is persistent data structure for servers&lt;br /&gt;
* relational database&lt;br /&gt;
&lt;br /&gt;
callbacks -&amp;gt; asynchronous I/O&lt;br /&gt;
* here is some code, do this when ...&lt;br /&gt;
&lt;br /&gt;
processes&lt;br /&gt;
threads : &lt;br /&gt;
* start new thread&lt;br /&gt;
* heavier weight than you want&lt;br /&gt;
* not efficient&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_1&amp;diff=18147</id>
		<title>WebFund 2013F Lecture 1</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_1&amp;diff=18147"/>
		<updated>2013-11-08T21:03:11Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Audio from the lecture given on September 9, 2013 is available [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec01-09Sep2013.m4a here].&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
September 9&lt;br /&gt;
Node&lt;br /&gt;
&lt;br /&gt;
Web&lt;br /&gt;
Browser 	&amp;lt;-talks to-&amp;gt;	   Server&lt;br /&gt;
&lt;br /&gt;
[[how?]]&lt;br /&gt;
http &amp;lt;-- Stream of text or data byte stream from tcp and puts syntax on it&lt;br /&gt;
tcp &amp;lt;-- turns packets into continuous stream, controls sending, reordering etc&lt;br /&gt;
ip &amp;lt;--packet based&lt;br /&gt;
ethernet/wifi/...&lt;br /&gt;
&lt;br /&gt;
[[now:]]&lt;br /&gt;
Browser	              &amp;lt;-talks to-&amp;gt;	                Server&lt;br /&gt;
program	               talking to	                program&lt;br /&gt;
(embedded in &lt;br /&gt;
html document&lt;br /&gt;
that was loaded)&lt;br /&gt;
&lt;br /&gt;
most of data on internet is encoded in http or smtp&lt;br /&gt;
code that runs inside of browser is known as sandboxed&lt;br /&gt;
	everything you care about is in the sandbox&lt;br /&gt;
&lt;br /&gt;
google tracks and monetizes you&lt;br /&gt;
	&#039;&#039;you&#039;&#039; are the product&lt;br /&gt;
&lt;br /&gt;
[[bandwidth:]] how much can I get at once?&lt;br /&gt;
[[latency:]] when I make a request, how long does it take for me to get the first bit&lt;br /&gt;
&lt;br /&gt;
gmail has all kinds of code built in to predict what you want and predicts which emails you&#039;re going to want to read&lt;br /&gt;
	constantly modelling your behaviour to work well&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Server (not actually going to learn any of these languages)&lt;br /&gt;
PHP&lt;br /&gt;
servlets					&lt;br /&gt;
apache&lt;br /&gt;
rails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[node.js is javascript]]&lt;br /&gt;
	Why? runs pretty fast&lt;br /&gt;
	chromes v8 javascript engine and stuck on the server&lt;br /&gt;
[[on browser access the DOM]]&lt;br /&gt;
	browser manipulates the DOM&lt;br /&gt;
	no DOM on server&lt;br /&gt;
	&lt;br /&gt;
learning javascript running on server first THEN on the browser&lt;br /&gt;
Server puts together an HTML document that it sends to the browser and then using this they talk to each other&lt;br /&gt;
- can&#039;t trust the browser.&lt;br /&gt;
- browser keeps no secrets&lt;br /&gt;
- any data sent to server has to be appropriately validated&lt;br /&gt;
&lt;br /&gt;
Database is persistent data structure for servers&lt;br /&gt;
-relational database&lt;br /&gt;
&lt;br /&gt;
callbacks -&amp;gt; asynchronous I/O&lt;br /&gt;
- here is some code, do this when ...&lt;br /&gt;
&lt;br /&gt;
processes&lt;br /&gt;
threads : &lt;br /&gt;
-start new thread&lt;br /&gt;
- heavier weight than you want&lt;br /&gt;
- not efficient&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_1&amp;diff=18146</id>
		<title>WebFund 2013F Lecture 1</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_1&amp;diff=18146"/>
		<updated>2013-11-08T20:59:48Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Audio from the lecture given on September 9, 2013 is available [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec01-09Sep2013.m4a here].&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
September 9&lt;br /&gt;
Node&lt;br /&gt;
&lt;br /&gt;
Web&lt;br /&gt;
Browser 	&amp;lt;-talks to-&amp;gt;	   Server&lt;br /&gt;
&lt;br /&gt;
[[how?]]&lt;br /&gt;
http &amp;lt;-- Stream of text or data byte stream from tcp and puts syntax on it&lt;br /&gt;
tcp &amp;lt;-- turns packets into continuous stream, controls sending, reordering etc&lt;br /&gt;
ip &amp;lt;--packet based&lt;br /&gt;
ethernet/wifi/...&lt;br /&gt;
&lt;br /&gt;
[[now:]]&amp;lt;nowiki&amp;gt;Insert non-formatted text here&lt;br /&gt;
Browser	              &amp;lt;-talks to-&amp;gt;	                Server&lt;br /&gt;
program	               talking to	                program&lt;br /&gt;
(embedded in &lt;br /&gt;
html document&lt;br /&gt;
that was loaded)&lt;br /&gt;
&lt;br /&gt;
most of data on internet is encoded in http or smtp&lt;br /&gt;
code that runs inside of browser is known as sandboxed&lt;br /&gt;
	everything you care about is in the sandbox&lt;br /&gt;
&lt;br /&gt;
google tracks and monetizes you&lt;br /&gt;
	&#039;&#039;you&#039;&#039; are the product&lt;br /&gt;
&lt;br /&gt;
bandwidth: how much can I get at once?&lt;br /&gt;
latency: when I make a request, how long does it take for me to get the first bit&lt;br /&gt;
&lt;br /&gt;
gmail has all kinds of code built in to predict what you want and predicts which emails you&#039;re going to want to read&lt;br /&gt;
	constantly modelling your behaviour to work well&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Server&lt;br /&gt;
PHP&lt;br /&gt;
servlets					&amp;lt;-- not actually going to learn any of these languages&lt;br /&gt;
apache&lt;br /&gt;
rails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
node.js is javascript&lt;br /&gt;
	Why? runs pretty fast&lt;br /&gt;
	chromes v8 javascript engine and stuck on the server&lt;br /&gt;
on browser access the DOM&lt;br /&gt;
	browser manipulates the DOM&lt;br /&gt;
	no DOM on server&lt;br /&gt;
	&lt;br /&gt;
learning javascript running on server first THEN on the browser&lt;br /&gt;
Server puts together an HTML document that it sends to the browser and then using this they talk to each other&lt;br /&gt;
	can&#039;t trust the browser.&lt;br /&gt;
	browser keeps no secrets&lt;br /&gt;
	any data sent to server has to be appropriately validated&lt;br /&gt;
&lt;br /&gt;
Database is persistent data structure for servers&lt;br /&gt;
	relational database&lt;br /&gt;
&lt;br /&gt;
callbacks -&amp;gt; asynchronous I/O&lt;br /&gt;
	here is some code, do this when ...&lt;br /&gt;
processes&lt;br /&gt;
threads : start new thread&lt;br /&gt;
	heavier weight than you want&lt;br /&gt;
	not efficient&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_1&amp;diff=18145</id>
		<title>WebFund 2013F Lecture 1</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_1&amp;diff=18145"/>
		<updated>2013-11-08T20:57:06Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Audio from the lecture given on September 9, 2013 is available [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec01-09Sep2013.m4a here].&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
September 9&lt;br /&gt;
Node&lt;br /&gt;
&lt;br /&gt;
Web&lt;br /&gt;
Browser 	&amp;lt;-talks to-&amp;gt;	   Server&lt;br /&gt;
                http &amp;lt;-- Stream of text or data byte stream from tcp and puts syntax on it&lt;br /&gt;
		tcp &amp;lt;-- turns packets into continuous stream, controls sending, reordering etc&lt;br /&gt;
		ip &amp;lt;--packet based&lt;br /&gt;
		ethernet/wifi/...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
now:&lt;br /&gt;
Browser	              &amp;lt;-talks to-&amp;gt;	                Server&lt;br /&gt;
program	               talking to	                program&lt;br /&gt;
(embedded in &lt;br /&gt;
html document&lt;br /&gt;
that was loaded)&lt;br /&gt;
&lt;br /&gt;
most of data on internet is encoded in http or smtp&lt;br /&gt;
code that runs inside of browser is known as sandboxed&lt;br /&gt;
	everything you care about is in the sandbox&lt;br /&gt;
&lt;br /&gt;
google tracks and monetizes you&lt;br /&gt;
	&#039;&#039;you&#039;&#039; are the product&lt;br /&gt;
&lt;br /&gt;
bandwidth: how much can I get at once?&lt;br /&gt;
latency: when I make a request, how long does it take for me to get the first bit&lt;br /&gt;
&lt;br /&gt;
gmail has all kinds of code built in to predict what you want and predicts which emails you&#039;re going to want to read&lt;br /&gt;
	constantly modelling your behaviour to work well&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Server&lt;br /&gt;
PHP&lt;br /&gt;
servlets					&amp;lt;-- not actually going to learn any of these languages&lt;br /&gt;
apache&lt;br /&gt;
rails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
node.js is javascript&lt;br /&gt;
	Why? runs pretty fast&lt;br /&gt;
	chromes v8 javascript engine and stuck on the server&lt;br /&gt;
on browser access the DOM&lt;br /&gt;
	browser manipulates the DOM&lt;br /&gt;
	no DOM on server&lt;br /&gt;
	&lt;br /&gt;
learning javascript running on server first THEN on the browser&lt;br /&gt;
Server puts together an HTML document that it sends to the browser and then using this they talk to each other&lt;br /&gt;
	can&#039;t trust the browser.&lt;br /&gt;
	browser keeps no secrets&lt;br /&gt;
	any data sent to server has to be appropriately validated&lt;br /&gt;
&lt;br /&gt;
Database is persistent data structure for servers&lt;br /&gt;
	relational database&lt;br /&gt;
&lt;br /&gt;
callbacks -&amp;gt; asynchronous I/O&lt;br /&gt;
	here is some code, do this when ...&lt;br /&gt;
processes&lt;br /&gt;
threads : start new thread&lt;br /&gt;
	heavier weight than you want&lt;br /&gt;
	not efficient&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_1&amp;diff=18144</id>
		<title>WebFund 2013F Lecture 1</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_1&amp;diff=18144"/>
		<updated>2013-11-08T20:53:26Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Audio from the lecture given on September 9, 2013 is available [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec01-09Sep2013.m4a here].&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
September 9&lt;br /&gt;
Node&lt;br /&gt;
&lt;br /&gt;
Web&lt;br /&gt;
Browser 	&amp;lt;-talks to-&amp;gt;	Server&lt;br /&gt;
		http &amp;lt;-- Stream of text or data byte stream from tcp and puts syntax on it&lt;br /&gt;
		tcp &amp;lt;-- turns packets into continuous stream, controls sending, reordering etc&lt;br /&gt;
		ip &amp;lt;--packet based&lt;br /&gt;
		ethernet/wifi/...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
now&lt;br /&gt;
Browser	              &amp;lt;-talks to-&amp;gt;	Server&lt;br /&gt;
program	talking to	                program&lt;br /&gt;
(embedded in &lt;br /&gt;
html document&lt;br /&gt;
that was loaded)&lt;br /&gt;
&lt;br /&gt;
most of data on internet is encoded in http or smtp&lt;br /&gt;
code that runs inside of browser is known as sandboxed&lt;br /&gt;
	everything you care about is in the sandbox&lt;br /&gt;
&lt;br /&gt;
google tracks and monetizes you&lt;br /&gt;
	you are the product&lt;br /&gt;
&lt;br /&gt;
bandwidth: how much can I get at once&lt;br /&gt;
latency: when I make a request, how long does it take for me to get the first bit&lt;br /&gt;
&lt;br /&gt;
gmail has all kinds of code built in to predict what you want and predicts which emails you&#039;re going to want to read&lt;br /&gt;
	constantly modelling your behaviour to work well&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Server&lt;br /&gt;
PHP&lt;br /&gt;
servlets					&amp;lt;-- not actually going to learn any of these&lt;br /&gt;
apache&lt;br /&gt;
rails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
node.js is a javascript&lt;br /&gt;
	Why? runs pretty darn fast&lt;br /&gt;
	chromes v8 javascript engine and stuck on the server&lt;br /&gt;
on browser access the DOM&lt;br /&gt;
	browser manipulates the DOM&lt;br /&gt;
	no DOM on server&lt;br /&gt;
	&lt;br /&gt;
learning javascript running on server first THEN on the browser&lt;br /&gt;
Server puts together an HTML document that it sends to the browser and then using this they talk to each other&lt;br /&gt;
	can&#039;t trust the browser.&lt;br /&gt;
	browser keeps no secrets&lt;br /&gt;
	any data sent to server has to be appropriately validated&lt;br /&gt;
&lt;br /&gt;
Database is persistent data structure for servers&lt;br /&gt;
	relational database&lt;br /&gt;
&lt;br /&gt;
callbacks -&amp;gt; asynchronous I/O&lt;br /&gt;
	here is some code, do this when ...&lt;br /&gt;
processes&lt;br /&gt;
threads : start new thread&lt;br /&gt;
	heavier weight than you want&lt;br /&gt;
	not efficient&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_1&amp;diff=18143</id>
		<title>WebFund 2013F Lecture 1</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_1&amp;diff=18143"/>
		<updated>2013-11-08T20:52:20Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Audio from the lecture given on September 9, 2013 is available [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec01-09Sep2013.m4a here].&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
September 9&lt;br /&gt;
Node&lt;br /&gt;
&lt;br /&gt;
Web&lt;br /&gt;
Browser 	&amp;lt;-talks to-&amp;gt;	Server&lt;br /&gt;
		http &amp;lt;-- Stream of text or data byte stream from tcp and puts syntax on it&lt;br /&gt;
		tcp &amp;lt;-- turns packets into continuous stream, controls sending, reordering etc&lt;br /&gt;
		ip &amp;lt;--packet based&lt;br /&gt;
		ethernet/wifi/...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
now&lt;br /&gt;
Browser	&amp;lt;-talks to-&amp;gt;	Server&lt;br /&gt;
program	talking to	program&lt;br /&gt;
(embedded in &lt;br /&gt;
html document&lt;br /&gt;
 that was loaded)&lt;br /&gt;
&lt;br /&gt;
most of data on internet is encoded in http or smtp&lt;br /&gt;
code that runs inside of browser is known as sandboxed&lt;br /&gt;
	everything you care about is in the sandbox&lt;br /&gt;
&lt;br /&gt;
google tracks and monetizes you&lt;br /&gt;
	you are the product&lt;br /&gt;
&lt;br /&gt;
bandwidth: how much can I get at once&lt;br /&gt;
latency: when I make a request, how long does it take for me to get the first bit&lt;br /&gt;
&lt;br /&gt;
gmail has all kinds of code built in to predict what you want and predicts which emails you&#039;re going to want to read&lt;br /&gt;
	constantly modelling your behaviour to work well&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Server&lt;br /&gt;
PHP&lt;br /&gt;
servlets					&amp;lt;-- not actually going to learn any of these&lt;br /&gt;
apache&lt;br /&gt;
rails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
node.js is a javascript&lt;br /&gt;
	Why? runs pretty darn fast&lt;br /&gt;
	chromes v8 javascript engine and stuck on the server&lt;br /&gt;
on browser access the DOM&lt;br /&gt;
	browser manipulates the DOM&lt;br /&gt;
	no DOM on server&lt;br /&gt;
	&lt;br /&gt;
learning javascript running on server first THEN on the browser&lt;br /&gt;
Server puts together an HTML document that it sends to the browser and then using this they talk to each other&lt;br /&gt;
	can&#039;t trust the browser.&lt;br /&gt;
	browser keeps no secrets&lt;br /&gt;
	any data sent to server has to be appropriately validated&lt;br /&gt;
&lt;br /&gt;
Database is persistent data structure for servers&lt;br /&gt;
	relational database&lt;br /&gt;
&lt;br /&gt;
callbacks -&amp;gt; asynchronous I/O&lt;br /&gt;
	here is some code, do this when ...&lt;br /&gt;
processes&lt;br /&gt;
threads : start new thread&lt;br /&gt;
	heavier weight than you want&lt;br /&gt;
	not efficient&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_1&amp;diff=18142</id>
		<title>WebFund 2013F Lecture 1</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=WebFund_2013F_Lecture_1&amp;diff=18142"/>
		<updated>2013-11-08T17:08:50Z</updated>

		<summary type="html">&lt;p&gt;Sarahmathieson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Audio from the lecture given on September 9, 2013 is available [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec01-09Sep2013.m4a here].&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
put notes here&lt;/div&gt;</summary>
		<author><name>Sarahmathieson</name></author>
	</entry>
</feed>