From d6be1996755e281972faabc83812849211c7762c Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Fri, 23 Dec 2016 03:06:28 -0800 Subject: [PATCH 01/27] Day 1: Drum Kit --- 01 - JavaScript Drum Kit/index-START.html | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/01 - JavaScript Drum Kit/index-START.html b/01 - JavaScript Drum Kit/index-START.html index 4070d32767..c8701e2e6a 100644 --- a/01 - JavaScript Drum Kit/index-START.html +++ b/01 - JavaScript Drum Kit/index-START.html @@ -58,7 +58,24 @@ From 6054a0a0f8c77e9e5ff18562f4a0a4dd66eb2886 Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Fri, 23 Dec 2016 03:47:32 -0800 Subject: [PATCH 02/27] Day 2: Clock --- 02 - JS + CSS Clock/index-START.html | 32 ++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/02 - JS + CSS Clock/index-START.html b/02 - JS + CSS Clock/index-START.html index 2712384201..72d5395db3 100644 --- a/02 - JS + CSS Clock/index-START.html +++ b/02 - JS + CSS Clock/index-START.html @@ -61,12 +61,44 @@ background:black; position: absolute; top:50%; + right:50%; + transform-origin: 100%; + transform: rotate(90deg); + /*transition: 0.05s;*/ + /*transition-timing-function: cubic-bezier(0.68, -0.55, 0.27, 1.55);*/ + } + + .hour-hand { + width: 20%; + } + + .min-hand { + width: 50%; + } + + .second-hand{ + width: 40%; } From bfe275585c56fb7e0c417721783f590e9cb3a78d Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Sat, 24 Dec 2016 03:19:34 -0800 Subject: [PATCH 03/27] Day 3: Update CSS Variables --- 03 - CSS Variables/index-START.html | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/03 - CSS Variables/index-START.html b/03 - CSS Variables/index-START.html index 7171607a8b..797c358320 100644 --- a/03 - CSS Variables/index-START.html +++ b/03 - CSS Variables/index-START.html @@ -21,6 +21,21 @@

Update CSS Variables with JS

From b0cda3a4d14b0e615192785107652a6743a43a47 Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Sat, 24 Dec 2016 23:01:04 -0800 Subject: [PATCH 04/27] Day 4: Javascript Arrays --- 04 - Array Cardio Day 1/index-START.html | 48 +++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/04 - Array Cardio Day 1/index-START.html b/04 - Array Cardio Day 1/index-START.html index 317883a4c1..8a10669277 100644 --- a/04 - Array Cardio Day 1/index-START.html +++ b/04 - Array Cardio Day 1/index-START.html @@ -31,28 +31,74 @@ // Array.prototype.filter() // 1. Filter the list of inventors for those who were born in the 1500's + function checkFifteen(inventor) { + return (inventor.year >= 1500 && inventor.year < 1600); + } + const fifteen = inventors.filter(checkFifteen); + console.log(fifteen); // Array.prototype.map() // 2. Give us an array of the inventors' first and last names + function mapName(inventor) { + return inventor.first + " " + inventor.last; + } + const inventorNames = inventors.map(mapName); + console.log(inventorNames); // Array.prototype.sort() // 3. Sort the inventors by birthdate, oldest to youngest + function compareBirth(a, b) { + return a.year - b.year; + } + const sortedBirth = inventors.sort(compareBirth); + console.log(sortedBirth); // Array.prototype.reduce() // 4. How many years did all the inventors live? + function reduceYears(sum, inventor) { + return sum + (inventor.passed - inventor.year); + } + const totalYears = inventors.reduce(reduceYears, 0); + console.log(totalYears); // 5. Sort the inventors by years lived + function compareYears(a, b) { + return (a.passed - a.year) - (b.passed - b.year); + } + const yearsLived = inventors.sort(compareYears); + console.log(yearsLived); // 6. create a list of Boulevards in Paris that contain 'de' anywhere in the name // https://en.wikipedia.org/wiki/Category:Boulevards_in_Paris - + // const wrapper = document.querySelector(".mw-category"); + // const links = Array.prototype.slice.call(wrapper.querySelectorAll("a")); + // const boulevardNames = links.map(link => link.textContent); + // const de = boulevardNames.filter(name => name.includes("de")); + // console.log(de); // 7. sort Exercise // Sort the people alphabetically by last name + function compareLast(a, b) { + const lasta = a.split(", ")[0]; + const lastb = b.split(", ")[0]; + return lasta.localeCompare(lastb); + } + const sortedLast = people.sort(compareLast); + console.log(sortedLast); // 8. Reduce Exercise // Sum up the instances of each of these const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car', 'van', 'car', 'truck' ]; + function sumWords(obj, word) { + if (obj[word] == null) { + obj[word] = 1; + } else { + obj[word] += 1; + } + return obj; + } + const sumInstances = data.reduce(sumWords, {}); + console.log(sumInstances); From 5def6ba1da35cca2b6deba559c9efbd5af31f713 Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Sun, 25 Dec 2016 00:13:40 -0800 Subject: [PATCH 05/27] Day 5: Adjust flex box size --- 05 - Flex Panel Gallery/index-START.html | 46 ++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/05 - Flex Panel Gallery/index-START.html b/05 - Flex Panel Gallery/index-START.html index e1d643ad5c..74fd170a2f 100644 --- a/05 - Flex Panel Gallery/index-START.html +++ b/05 - Flex Panel Gallery/index-START.html @@ -24,6 +24,7 @@ .panels { min-height:100vh; overflow: hidden; + display: flex; } .panel { @@ -41,6 +42,10 @@ font-size: 20px; background-size:cover; background-position:center; + flex: 1; + display: flex; + flex-direction: column; + /*justify-content: center;*/ } @@ -54,6 +59,26 @@ margin:0; width: 100%; transition:transform 0.5s; + flex: 1 0 auto; + display: flex; + justify-content: center; + align-items: center; + } + + .panel > *:first-child { + transform: translateY(-100%); + } + + .panel > *:last-child { + transform: translateY(100%); + } + + .panel.open-active > *:first-child { + transform: translateY(0); + } + + .panel.open-active > *:last-child { + transform: translateY(0); } .panel p { @@ -68,6 +93,7 @@ .panel.open { font-size:40px; + flex: 5; } .cta { @@ -107,7 +133,27 @@ From 5e8a9a33f44de812250820201349566404f859ad Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Mon, 26 Dec 2016 23:18:23 -0800 Subject: [PATCH 06/27] Day 6: Search Suggestions from JSON --- 06 - Type Ahead/index-START.html | 41 ++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/06 - Type Ahead/index-START.html b/06 - Type Ahead/index-START.html index 1436886918..3c941a7de5 100644 --- a/06 - Type Ahead/index-START.html +++ b/06 - Type Ahead/index-START.html @@ -17,6 +17,47 @@ From 44efe5f831b2559be90f27e5ee54c55b026718c0 Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Mon, 26 Dec 2016 23:31:42 -0800 Subject: [PATCH 07/27] Day 7: Array Cardio 2 --- 07 - Array Cardio Day 2/index-START.html | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/07 - Array Cardio Day 2/index-START.html b/07 - Array Cardio Day 2/index-START.html index 969566ff78..0315bc291f 100644 --- a/07 - Array Cardio Day 2/index-START.html +++ b/07 - Array Cardio Day 2/index-START.html @@ -27,14 +27,26 @@ // Some and Every Checks // Array.prototype.some() // is at least one person 19 or older? // Array.prototype.every() // is everyone 19 or older? + function nineteen(person) { + const y = new Date().getFullYear(); + const age = y - person.year; + return age >= 19; + } + console.log(people.some(nineteen)); + console.log(people.every(nineteen)); // Array.prototype.find() // Find is like filter, but instead returns just the one you are looking for // find the comment with the ID of 823423 + function findID(comment) { + return comment.id == this; + } + console.log(comments.find(findID, 823423)); // Array.prototype.findIndex() // Find the comment with this ID // delete the comment with the ID of 823423 + console.log(comments.findIndex(findID, 823423)); From b822322877bf1a7ef845933d88b9ba625692ddd0 Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Tue, 27 Dec 2016 12:34:36 -0800 Subject: [PATCH 08/27] Day 8: Drawing on canvas --- 07 - Array Cardio Day 2/index-START.html | 2 +- 08 - Fun with HTML5 Canvas/index-START.html | 38 +++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/07 - Array Cardio Day 2/index-START.html b/07 - Array Cardio Day 2/index-START.html index 0315bc291f..2ab19e4e1b 100644 --- a/07 - Array Cardio Day 2/index-START.html +++ b/07 - Array Cardio Day 2/index-START.html @@ -28,7 +28,7 @@ // Array.prototype.some() // is at least one person 19 or older? // Array.prototype.every() // is everyone 19 or older? function nineteen(person) { - const y = new Date().getFullYear(); + const y = (new Date()).getFullYear(); const age = y - person.year; return age >= 19; } diff --git a/08 - Fun with HTML5 Canvas/index-START.html b/08 - Fun with HTML5 Canvas/index-START.html index 37c148df07..dc992f5d4e 100644 --- a/08 - Fun with HTML5 Canvas/index-START.html +++ b/08 - Fun with HTML5 Canvas/index-START.html @@ -6,7 +6,45 @@ + From 924d21fdf334247809e8a7e8215251c994fa8963 Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Sat, 31 Dec 2016 01:04:33 -0800 Subject: [PATCH 15/27] Day 17: Sort and Display --- 17 - Sort Without Articles/index-START.html | 22 ++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/17 - Sort Without Articles/index-START.html b/17 - Sort Without Articles/index-START.html index cfaf3e0440..9d358bece8 100644 --- a/17 - Sort Without Articles/index-START.html +++ b/17 - Sort Without Articles/index-START.html @@ -43,8 +43,28 @@
    From abfd1bfb3d371888c59c215423171c85183c6032 Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Sun, 1 Jan 2017 22:32:15 -0800 Subject: [PATCH 16/27] Day 18: Array reduce --- 18 - Adding Up Times with Reduce/index-START.html | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/18 - Adding Up Times with Reduce/index-START.html b/18 - Adding Up Times with Reduce/index-START.html index 3eaee0f3ef..19f2f654ff 100644 --- a/18 - Adding Up Times with Reduce/index-START.html +++ b/18 - Adding Up Times with Reduce/index-START.html @@ -182,6 +182,16 @@ From 312b3504935741371bcbd77b0f51e788d2dbd69d Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Sun, 1 Jan 2017 23:57:25 -0800 Subject: [PATCH 17/27] Day 19: Webcam + Filters --- 19 - Webcam Fun/index.html | 8 ++- 19 - Webcam Fun/scripts.js | 107 +++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+), 2 deletions(-) diff --git a/19 - Webcam Fun/index.html b/19 - Webcam Fun/index.html index d4ffc4dc2a..30ce2bd395 100755 --- a/19 - Webcam Fun/index.html +++ b/19 - Webcam Fun/index.html @@ -10,7 +10,11 @@
    - +
    diff --git a/19 - Webcam Fun/scripts.js b/19 - Webcam Fun/scripts.js index 00355f5a9c..c8be9586b8 100644 --- a/19 - Webcam Fun/scripts.js +++ b/19 - Webcam Fun/scripts.js @@ -3,3 +3,110 @@ const canvas = document.querySelector('.photo'); const ctx = canvas.getContext('2d'); const strip = document.querySelector('.strip'); const snap = document.querySelector('.snap'); +const filters = document.querySelectorAll('[type=checkbox]'); + +function getVideo() { + navigator.mediaDevices.getUserMedia({ video: true, audio: false }) + .then(localMediaStream => { + console.log(localMediaStream); + video.src = window.URL.createObjectURL(localMediaStream); + video.play(); + }) + .catch(err => { + console.error(`OH NO!!!`, err); + }); +} + +function paintToCanvas() { + const width = video.videoWidth; + const height = video.videoHeight; + canvas.width = width; + canvas.height = height; + + setInterval(() => { + ctx.drawImage(video, 0, 0, width, height); + let pixels = ctx.getImageData(0, 0, width, height); + ctx.globalAlpha = 1.0; + filters.forEach(filter => { + if (!filter.checked) return; + switch (filter.id) { + case 'redEffect': + pixels = redEffect(pixels); + break; + case 'rgbSplit': + pixels = rgbSplit(pixels); + break; + case 'ghostEffect': + ctx.globalAlpha = 0.1; + break; + case 'greenScreen': + pixels = greenScreen(pixels); + break; + default: + throw 'Unknown filter'; + } + }); + ctx.putImageData(pixels, 0, 0); + }, 16); +} + +function takePhoto() { + snap.currentTime = 0; + snap.play(); + + var data = canvas.toDataURL('image/jpeg'); + var link = document.createElement('a'); + link.href = data; + // link.setAttribute('download', 'handsome'); + link.setAttribute('target', '_blank'); + link.innerHTML = `Handsome Man`; + strip.insertBefore(link, strip.firstChild); +} + +function redEffect(pixels) { + for(let i = 0; i < pixels.data.length; i += 4) { + pixels.data[i + 0] = pixels.data[i + 0] + 200; // RED + pixels.data[i + 1] = pixels.data[i + 1] - 50; // GREEN + pixels.data[i + 2] = pixels.data[i + 2] * 0.5; // Blue + } + return pixels; +} + +function rgbSplit(pixels) { + for(let i = 0; i < pixels.data.length; i+=4) { + pixels.data[i - 150] = pixels.data[i + 0]; // RED + pixels.data[i + 500] = pixels.data[i + 1]; // GREEN + pixels.data[i - 550] = pixels.data[i + 2]; // Blue + } + return pixels; +} + +function greenScreen(pixels) { + const levels = {}; + + document.querySelectorAll('.rgb input').forEach((input) => { + levels[input.name] = input.value; + }); + + for (i = 0; i < pixels.data.length; i = i + 4) { + red = pixels.data[i + 0]; + green = pixels.data[i + 1]; + blue = pixels.data[i + 2]; + alpha = pixels.data[i + 3]; + + if (red >= levels.rmin + && green >= levels.gmin + && blue >= levels.bmin + && red <= levels.rmax + && green <= levels.gmax + && blue <= levels.bmax) { + // take it out! + pixels.data[i + 3] = 0; + } + } + + return pixels; +} + +getVideo(); +video.addEventListener('canplay', paintToCanvas); From 08fa958a54ce50d6988e17b0a193683d26fab2ef Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Tue, 3 Jan 2017 09:52:05 -0800 Subject: [PATCH 18/27] Day 20: Web Speech API --- 20 - Speech Detection/index-START.html | 58 +++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/20 - Speech Detection/index-START.html b/20 - Speech Detection/index-START.html index d3395cca35..44a8195bd9 100644 --- a/20 - Speech Detection/index-START.html +++ b/20 - Speech Detection/index-START.html @@ -5,12 +5,54 @@ Speech Detection - +

    Ready

    +
    +

    @@ -28,6 +70,20 @@ font-size: 20px; } + button { + opacity: 1.0; + cursor: allowed; + background-color: purple; + border: none; + color: white; + text-align: center; + padding: 10px; + } + + button.disable { + background-color: red; + } + .words { max-width:500px; margin:50px auto; From aff833c56b133726bf9038b858edbbb0b2de47bb Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Tue, 3 Jan 2017 10:29:32 -0800 Subject: [PATCH 19/27] Day 21: Geolocation --- 21 - Geolocation/index-START.html | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/21 - Geolocation/index-START.html b/21 - Geolocation/index-START.html index a1b981b1cd..73be0d3800 100644 --- a/21 - Geolocation/index-START.html +++ b/21 - Geolocation/index-START.html @@ -57,6 +57,21 @@

    /*Compass: https://thenounproject.com/search/?q=compass&i=592352*/ From a8e96e4a721e14c8b12d8376798a60a58de2ea4c Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Tue, 3 Jan 2017 19:19:08 -0800 Subject: [PATCH 20/27] Day 20 Fixes --- 20 - Speech Detection/index-FINISHED.html | 2 ++ 20 - Speech Detection/index-START.html | 30 +++++++++++++---------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/20 - Speech Detection/index-FINISHED.html b/20 - Speech Detection/index-FINISHED.html index 413c3eeaaf..03e775247b 100644 --- a/20 - Speech Detection/index-FINISHED.html +++ b/20 - Speech Detection/index-FINISHED.html @@ -31,7 +31,9 @@ if (e.results[0].isFinal) { p = document.createElement('p'); words.appendChild(p); + console.count('New p element'); } + console.log(transcript); }); recognition.addEventListener('end', recognition.start); diff --git a/20 - Speech Detection/index-START.html b/20 - Speech Detection/index-START.html index 44a8195bd9..b0cf070b8e 100644 --- a/20 - Speech Detection/index-START.html +++ b/20 - Speech Detection/index-START.html @@ -8,7 +8,6 @@

    Ready

    -

    From 8d2680f3870ed8abf7382b687efc2510543c9b80 Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Wed, 4 Jan 2017 23:19:15 -0800 Subject: [PATCH 21/27] Day 22: Link highlighter --- .../index-START.html | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/22 - Follow Along Link Highlighter/index-START.html b/22 - Follow Along Link Highlighter/index-START.html index 8476112b5e..b153c95bdc 100644 --- a/22 - Follow Along Link Highlighter/index-START.html +++ b/22 - Follow Along Link Highlighter/index-START.html @@ -27,6 +27,23 @@ From 93a35042b1e0c57c7156deed8d00b9f78e7d824b Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Thu, 5 Jan 2017 00:12:48 -0800 Subject: [PATCH 22/27] Day 23: Speech Synthesis --- 23 - Speech Synthesis/index-START.html | 40 +++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/23 - Speech Synthesis/index-START.html b/23 - Speech Synthesis/index-START.html index e890008d36..58d72862c8 100644 --- a/23 - Speech Synthesis/index-START.html +++ b/23 - Speech Synthesis/index-START.html @@ -30,11 +30,49 @@

    The Voiceinator 5000

    From 94ecfd133da79cfd2c8b251c90666a34ae09b7f2 Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Sat, 7 Jan 2017 22:34:29 -0800 Subject: [PATCH 23/27] Day 24: Fixed Nav Bar --- 24 - Sticky Nav/index-START.html | 17 ++++++++++++++++- 24 - Sticky Nav/style-START.css | 14 ++++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/24 - Sticky Nav/index-START.html b/24 - Sticky Nav/index-START.html index e7bc67e9a5..0f66eb3e53 100644 --- a/24 - Sticky Nav/index-START.html +++ b/24 - Sticky Nav/index-START.html @@ -54,7 +54,22 @@

    A story about getting lost.

    diff --git a/24 - Sticky Nav/style-START.css b/24 - Sticky Nav/style-START.css index c6d59a31b3..c1eb5656a6 100644 --- a/24 - Sticky Nav/style-START.css +++ b/24 - Sticky Nav/style-START.css @@ -56,7 +56,7 @@ nav ul { } nav li { - flex:1; + flex: 1; text-align: center; display: flex; justify-content: center; @@ -64,7 +64,8 @@ nav li { } li.logo { - max-width:0; + /*max-width:0;*/ + flex: 0 1 0; overflow: hidden; background: white; transition: all .5s; @@ -72,6 +73,11 @@ li.logo { font-size: 30px; } +.fixed-nav li.logo { + /*max-width: 500px;*/ + flex: 1; +} + li.logo a { color:black; } @@ -84,3 +90,7 @@ nav a { transition:all 0.2s; text-transform: uppercase; } + +.fixed-nav nav { + position: fixed; +} From 2ab7e85074e883a627e8469a16a9a123ab1a9c56 Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Sat, 7 Jan 2017 22:46:28 -0800 Subject: [PATCH 24/27] Day 25: Understanding Capture --- .../index-START.html | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/25 - Event Capture, Propagation, Bubbling and Once/index-START.html b/25 - Event Capture, Propagation, Bubbling and Once/index-START.html index 98f5e070c4..1c6dbfcc20 100644 --- a/25 - Event Capture, Propagation, Bubbling and Once/index-START.html +++ b/25 - Event Capture, Propagation, Bubbling and Once/index-START.html @@ -39,7 +39,25 @@ From 6d6613d64efa1a98b70d65c9ab2903b3e5752e2b Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Mon, 9 Jan 2017 22:14:37 -0800 Subject: [PATCH 25/27] Day 26: Nav Moving Dropdown Menu --- 26 - Stripe Follow Along Nav/index-START.html | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/26 - Stripe Follow Along Nav/index-START.html b/26 - Stripe Follow Along Nav/index-START.html index 9780d0d1ac..d9d7809e53 100644 --- a/26 - Stripe Follow Along Nav/index-START.html +++ b/26 - Stripe Follow Along Nav/index-START.html @@ -143,7 +143,7 @@

    Cool

    background: #fff; border-radius: 4px; box-shadow: 0 50px 100px rgba(50,50,93,.1), 0 15px 35px rgba(50,50,93,.15), 0 5px 15px rgba(0,0,0,.1); - transition:all 0.3s, opacity 0.1s, translate 0.2s; + transition:all 0.3s, opacity 0.3s, translate 0.05s; transform-origin: 50% 0%; display: flex; justify-content: center; @@ -208,6 +208,36 @@

    Cool

    From cfc6dba91bc2bc58fb82976cad98530706745943 Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Mon, 9 Jan 2017 22:41:54 -0800 Subject: [PATCH 26/27] Day 27: Drag Scroll --- 27 - Click and Drag/index-START.html | 30 ++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/27 - Click and Drag/index-START.html b/27 - Click and Drag/index-START.html index b8609315f7..52e5c01601 100644 --- a/27 - Click and Drag/index-START.html +++ b/27 - Click and Drag/index-START.html @@ -35,6 +35,36 @@ From d24ace8f261aeab6e02cba72c971b41772488501 Mon Sep 17 00:00:00 2001 From: Michael Tamaki Date: Mon, 9 Jan 2017 22:59:04 -0800 Subject: [PATCH 27/27] Day 28: Video Speed Controller --- 28 - Video Speed Controller/index-START.html | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/28 - Video Speed Controller/index-START.html b/28 - Video Speed Controller/index-START.html index c4cbd4259a..7c58ca3a5d 100644 --- a/28 - Video Speed Controller/index-START.html +++ b/28 - Video Speed Controller/index-START.html @@ -15,6 +15,25 @@