Skip to content

Instantly share code, notes, and snippets.

@dipamsen
Last active October 26, 2022 09:14
Show Gist options
  • Save dipamsen/8100b65ec03262a38cf066cd6e67c837 to your computer and use it in GitHub Desktop.
Save dipamsen/8100b65ec03262a38cf066cd6e67c837 to your computer and use it in GitHub Desktop.
Coding Train Description Generator

(This gist is outdated. This script has been added into the official repo.)

Coding Train Description Generator

Original Version (old website): https://github.com/CodingTrain/website-archive/blob/main/_scripts/generate-youtube-descriptions.js

This is a draft version of the description generator script to work with the new website.

TODO

  • Next Video / Previous Video / Playlist
  • Videos always linking to YouTube
  • Code Examples other than p5 Web Editor
  • Run for individual challenge (npm run yt-desc path/to/index.json)
const fs = require('fs');
const path = require('path');
const videos = [];
function findVideoFilesRecursive(dir, arrayOfFiles = []) {
const files = fs.readdirSync(dir);
for (const file of files) {
if (fs.statSync(`${dir}/${file}`).isDirectory()) {
arrayOfFiles = findVideoFilesRecursive(`${dir}/${file}`, arrayOfFiles);
} else {
if (file === 'index.json') {
arrayOfFiles.push(path.join(dir, '/', file));
}
}
}
return arrayOfFiles;
}
function parseTracks(dir) {
const tracks = findVideoFilesRecursive(dir);
const trackInfo = [];
for (const track of tracks) {
let trackName = path.dirname(track);
trackName = trackName.slice(trackName.lastIndexOf(path.sep) + 1);
const content = fs.readFileSync(`./${track}`, 'utf-8');
const parsed = JSON.parse(content);
let dirPath, videoList;
if (parsed.chapters) {
// main track
let video = parsed.chapters[0].videos[0];
dirPath = video.split('/').slice(0, -2);
videoList = parsed.chapters.map((chap) => chap.videos).flat();
} else {
// side track
let video = parsed.videos[0];
dirPath = video.split('/').slice(0, -1);
if (dirPath[0] === 'challenges') continue;
videoList = parsed.videos;
}
trackInfo.push({
name: trackName,
dirName: dirPath.join('/'),
videoList,
data: parsed
});
}
return trackInfo;
}
function getVideoData() {
const directory = 'content/videos';
const files = findVideoFilesRecursive(directory);
for (const file of files) {
const content = fs.readFileSync(`./${file}`, 'utf-8');
const parsed = JSON.parse(content);
const filePath = file.split(path.sep).slice(2);
console.log(filePath);
let url;
if (filePath[0] === 'challenges') {
url = filePath.slice(0, 2);
} else {
for (let track of allTracks) {
if (filePath.join('/').includes(track.dirName)) {
url = ['tracks', track.name, ...filePath.slice(0, -1)];
}
}
}
if (!url || url.length == 0)
throw new Error(
'Something went wrong in parsing this file: ' + filePath.join('/')
);
videos.push({
pageURL: url.join('/'),
data: parsed
// playlist: getPlaylist(file)
});
}
console.log(videos);
return videos;
}
function primeDirectory(dir) {
fs.rmSync(dir, { recursive: true }, (err) => {
if (err) {
throw err;
}
});
fs.mkdirSync(dir, (err) => {
if (err) {
throw err;
}
});
}
function getVideoID(url) {
if (/https?:\/\/.*/.test(url)) return url;
const location = url.substring(1, url.length);
let page;
try {
page = videos.find((vid) => vid.pageURL === location).data;
} catch (err) {
console.log(location);
return url;
}
return `https://youtu.be/${page.videoId}`;
}
function writeDescriptions(videos) {
primeDirectory('./_descriptions');
for (const video of videos) {
const data = video.data;
const pageURL = video.pageURL;
let description = '';
// Description
let content = data.description;
description += `${content.trim()}`;
description += `\nπŸ’» Challenge Webpage: https://thecodingtrain.com/${pageURL}`;
description += '\n';
// Web Editor Links
const sketchUrls = data.codeExamples?.filter(
(ex) => ex.urls.p5 && ex.urls.p5.includes('editor.p5js.org')
);
if (sketchUrls && sketchUrls.length > 0) {
if (sketchUrls.length > 1) {
description += '\np5.js Web Editor Sketches:\n';
for (const sketch of sketchUrls) {
description += `πŸ•ΉοΈ ${sketch.title}: ${sketch.urls.p5}\n`;
}
} else {
description += `\nπŸ•ΉοΈ p5.js Web Editor Sketch: ${sketchUrls[0].urls.p5}\n`;
}
}
// console.log(videos);
if (video.pageURL.startsWith('challenges/')) {
const i = +video.data.videoNumber;
const previousVideo = videos.find((vid) => vid.data.videoNumber == i - 1);
const nextVideo = videos.find((vid) => vid.data.videoNumber == i + 1);
description += '\n';
if (previousVideo) {
description += `πŸŽ₯ Previous video: https://youtu.be/${previousVideo.data.videoId}\n`;
}
if (nextVideo) {
description += `πŸŽ₯ Next video: https://youtu.be/${nextVideo.data.videoId}\n`;
}
description +=
'πŸŽ₯ All videos: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH\n';
} else {
const playlistIds = {
noc: 'PLRqwX-V7Uu6ZV4yEcW3uDwOgGXKUUsPOM',
code: 'PLRqwX-V7Uu6Zy51Q-x9tMWIv9cueOFTFA'
};
const path = video.pageURL.split('/');
for (let pl in playlistIds) {
if (path.includes(pl)) {
description += '\n';
const track = allTracks.find((track) => track.dirName.includes(pl));
// console.log(path, track.videoList);
let id = track.videoList.indexOf(path.slice(2).join('/'));
const previousPath = track.videoList[id - 1];
const previousVideo = videos.find(
(vid) => vid.pageURL == 'tracks/' + track.name + '/' + previousPath
);
const nextPath = track.videoList[id + 1];
const nextVideo = videos.find(
(vid) => vid.pageURL == 'tracks/' + track.name + '/' + nextPath
);
if (previousVideo) {
description += `πŸŽ₯ Previous video: https://www.youtube.com/watch?v=${previousVideo.data.videoId}&list=${playlistIds[pl]}\n`;
}
if (nextVideo) {
description += `πŸŽ₯ Next video: https://www.youtube.com/watch?v=${nextVideo.data.videoId}&list=${playlistIds[pl]}\n`;
}
description +=
'πŸŽ₯ All videos: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH\n';
}
}
}
const links = data.groupLinks?.find(
(group) => group.title === 'References'
);
const videosR = data.groupLinks?.find((group) => group.title === 'Videos');
// Links
if (links && links.links.length > 0) {
description += '\nLinks discussed in this video:\n';
for (const link of links.links) {
const url = link.url;
if (/https?:\/\/.*/.test(url)) {
// starts with http:// or https://
description += `πŸ”— ${link.title}: ${url}\n`;
} else {
// assume relative link in thecodingtrain.com
description += `πŸ”— ${link.title}: https://thecodingtrain.com${url}\n`;
}
}
}
// Videos
if (videosR && videosR.links.length > 0) {
description += '\nOther videos mentioned in this video:\n';
for (const video of videosR.links) {
// Link as it is no matter what
if (
video.url.includes('youtu.be') ||
video.url.includes('youtube.com')
) {
description += `πŸŽ₯ ${video.title}: ${video.url}\n`;
} else {
description += `πŸŽ₯ ${video.title}: ${getVideoID(video.url)}\n`;
}
}
}
// Timestamps
if (data.timestamps && data.timestamps.length > 0) {
description += '\nTimestamps:\n';
for (const topic of data.timestamps) {
description += `${topic.time} ${topic.title}\n`;
}
}
// General Links
description += `
πŸš‚ Website: http://thecodingtrain.com/
πŸ‘Ύ Share Your Creation! https://thecodingtrain.com/guides/passenger-showcase-guide
🚩 Suggest Topics: https://github.com/CodingTrain/Suggestion-Box
πŸ’‘ GitHub: https://github.com/CodingTrain
πŸ’¬ Discord: https://discord.gg/hPuGy2g
πŸ’– Membership: http://youtube.com/thecodingtrain/join
πŸ›’ Store: https://standard.tv/codingtrain
πŸ“š Books: https://www.amazon.com/shop/thecodingtrain
πŸ–‹οΈ Twitter: https://twitter.com/thecodingtrain
πŸ“Έ Instagram: https://www.instagram.com/the.coding.train/
πŸŽ₯ Coding Challenges: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH
πŸŽ₯ Intro to Programming: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6Zy51Q-x9tMWIv9cueOFTFA
πŸ”— p5.js: https://p5js.org
πŸ”— p5.js Web Editor: https://editor.p5js.org/
πŸ”— Processing: https://processing.org
πŸ“„ Code of Conduct: https://github.com/CodingTrain/Code-of-Conduct
This description was auto-generated. If you see a problem, please open an issue: https://github.com/CodingTrain/thecodingtrain.com/issues/new`;
//fs.writeFileSync(`_descriptions/${data.video_id}.txt`, description);
// console.log(pageURL);
let filename = /\/((?:.(?!\/))+)$/.exec(pageURL)[1];
fs.writeFileSync(`_descriptions/${filename}.txt`, description);
}
}
// (() => {
console.log('πŸ’« Generating YouTube Descriptions πŸ’«');
// know about tracks beforehand
const mainTracks = parseTracks('content/tracks/main-tracks');
const sideTracks = parseTracks('content/tracks/side-tracks');
const allTracks = [...mainTracks, ...sideTracks];
writeDescriptions(getVideoData());
// })();
Let's make a slide puzzle in p5.js together! We'll be using images, nested loops, and arrays, and by the end of our journey, we'll have a fully playable game!
πŸ’» Challenge Webpage: https://thecodingtrain.com/challenges/165-slide-puzzle
p5.js Web Editor Sketches:
πŸ•ΉοΈ Slide Puzzle with Image: https://editor.p5js.org/codingtrain/sketches/o_ljlLilZ
πŸ•ΉοΈ Slide Puzzle with Video: https://editor.p5js.org/codingtrain/sketches/YnLX7bGwW
πŸ•ΉοΈ Slide Puzzle with Canvas: https://editor.p5js.org/codingtrain/sketches/MVCd9trLw
πŸŽ₯ Previous video: https://youtu.be/hckvHFDGiJk
πŸŽ₯ Next video: https://youtu.be/55iwMYv8tGI
πŸŽ₯ All videos: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH
Links discussed in this video:
πŸ”— Fisher-Yates Shuffle: https://bost.ocks.org/mike/shuffle/
πŸ”— copy(): https://p5js.org/reference/#/p5/copy
Other videos mentioned in this video:
πŸŽ₯ Bending Time Slitscan (Challenge 164): https://youtu.be/hckvHFDGiJk
Timestamps:
0:00 Welcome!
2:24 What is copy()?
3:24 The Tile class
4:40 Copying tiles from the source image.
5:33 Creating an Array for the board.
6:54 How does the board work?
8:31 Something went wrong?!?
9:55 Drawing borders between tiles.
10:57 Shuffling the board
14:00 Adding an empty tile.
14:52 Sliding a tile!
16:59 Checking tile neighbors.
19:37 Moving tiles in draw()
20:12 Moving tiles with mousePressed()
21:32 Is the puzzle solved?
23:06 Having fun with the tile grid!
23:55 Solving the puzzle!
24:27 What will you create?
πŸš‚ Website: http://thecodingtrain.com/
πŸ‘Ύ Share Your Creation! https://thecodingtrain.com/guides/passenger-showcase-guide
🚩 Suggest Topics: https://github.com/CodingTrain/Suggestion-Box
πŸ’‘ GitHub: https://github.com/CodingTrain
πŸ’¬ Discord: https://discord.gg/hPuGy2g
πŸ’– Membership: http://youtube.com/thecodingtrain/join
πŸ›’ Store: https://standard.tv/codingtrain
πŸ“š Books: https://www.amazon.com/shop/thecodingtrain
πŸ–‹οΈ Twitter: https://twitter.com/thecodingtrain
πŸ“Έ Instagram: https://www.instagram.com/the.coding.train/
πŸŽ₯ Coding Challenges: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH
πŸŽ₯ Intro to Programming: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6Zy51Q-x9tMWIv9cueOFTFA
πŸ”— p5.js: https://p5js.org
πŸ”— p5.js Web Editor: https://editor.p5js.org/
πŸ”— Processing: https://processing.org
πŸ“„ Code of Conduct: https://github.com/CodingTrain/Code-of-Conduct
This description was auto-generated. If you see a problem, please open an issue: https://github.com/CodingTrain/thecodingtrain.com/issues/new
Happy Pi Day! How many delicious digits of Pi can you catch from the sky? In JavaScript!
πŸ’» Challenge Webpage: https://thecodingtrain.com/challenges/169-pi-in-the-sky
p5.js Web Editor Sketches:
πŸ•ΉοΈ Pi in the Sky: https://editor.p5js.org/codingtrain/sketches/ZZ53xKJyF
πŸ•ΉοΈ Illustrated Version: https://editor.p5js.org/codingtrain/sketches/U11UYbgVc
πŸŽ₯ Previous video: https://youtu.be/NJCiUVGiNyA
πŸŽ₯ Next video: https://youtu.be/0zac-cDzJwA
πŸŽ₯ All videos: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH
Links discussed in this video:
πŸ”— 1 Million Digits of Pi: http://www.eveandersson.com/pi/digits/1000000
Other videos mentioned in this video:
πŸŽ₯ The Snake Game: https://youtube.com/watch?v=iFuR97YcSLM
πŸŽ₯ Purple Rain: https://www.youtube.com/watch?v=KkyIDI6rQJI&t=0s
πŸŽ₯ Code! Programming for Beginners with p5.js: https://www.youtube.com/watch?v=yPWkPOfnGsw&t=0s
πŸŽ₯ Transformations in p5.js: https://www.youtube.com/watch?v=o9sgjuh-CBM
πŸŽ₯ Removing Objects from Arrays: https://www.youtube.com/watch?v=tA_ZgruFF9k&t=0s
Timestamps:
00:00 Happy Pi Day!
πŸš‚ Website: http://thecodingtrain.com/
πŸ‘Ύ Share Your Creation! https://thecodingtrain.com/guides/passenger-showcase-guide
🚩 Suggest Topics: https://github.com/CodingTrain/Suggestion-Box
πŸ’‘ GitHub: https://github.com/CodingTrain
πŸ’¬ Discord: https://discord.gg/hPuGy2g
πŸ’– Membership: http://youtube.com/thecodingtrain/join
πŸ›’ Store: https://standard.tv/codingtrain
πŸ“š Books: https://www.amazon.com/shop/thecodingtrain
πŸ–‹οΈ Twitter: https://twitter.com/thecodingtrain
πŸ“Έ Instagram: https://www.instagram.com/the.coding.train/
πŸŽ₯ Coding Challenges: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH
πŸŽ₯ Intro to Programming: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6Zy51Q-x9tMWIv9cueOFTFA
πŸ”— p5.js: https://p5js.org
πŸ”— p5.js Web Editor: https://editor.p5js.org/
πŸ”— Processing: https://processing.org
πŸ“„ Code of Conduct: https://github.com/CodingTrain/Code-of-Conduct
This description was auto-generated. If you see a problem, please open an issue: https://github.com/CodingTrain/thecodingtrain.com/issues/new
It's the Monty Hall Problem! In JavaScript! With p5.js! Yes, you really double your chances of winning by switching doors. I hope to convince you of this in this video!
πŸ’» Challenge Webpage: https://thecodingtrain.com/challenges/170-monty-hall-problem
p5.js Web Editor Sketches:
πŸ•ΉοΈ Monty Hall: https://editor.p5js.org/codingtrain/sketches/pLW3_PNDM
πŸ•ΉοΈ Monty Hall (variable speed and doors): https://editor.p5js.org/codingtrain/sketches/PVuN7NPjj
πŸŽ₯ Previous video: https://youtu.be/_H9JIwWP7HQ
πŸŽ₯ All videos: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH
Links discussed in this video:
πŸ”— Game Show Problem: https://web.archive.org/web/20130121183432/http://marilynvossavant.com/game-show-problem/
πŸ”— Document Object Model (DOM): https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model
πŸ”— CSS Basics: https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/CSS_basics
Other videos mentioned in this video:
πŸŽ₯ The Basics of CSS: https://www.youtube.com/watch?v=zGL8q8iQSQw
πŸŽ₯ Callbacks on Multiple DOM Elements: https://www.youtube.com/watch?v=KeZBpeH59Q4
πŸŽ₯ Local Storage in Javascript: https://www.youtube.com/watch?v=_SRS8b4LcZ8
Timestamps:
0:00 What is the Monty Hall Problem?
1:50 Solution for the Monty Hall Problem!
6:55 Starting the Code
8:53 Centering a DIV
10:22 Callback Events
15:40 Refactoring into Functions
23:11 Adding Stats
27:04 Playing the game!
28:21 Bayes Theorem
31:45 Goodbye!
πŸš‚ Website: http://thecodingtrain.com/
πŸ‘Ύ Share Your Creation! https://thecodingtrain.com/guides/passenger-showcase-guide
🚩 Suggest Topics: https://github.com/CodingTrain/Suggestion-Box
πŸ’‘ GitHub: https://github.com/CodingTrain
πŸ’¬ Discord: https://discord.gg/hPuGy2g
πŸ’– Membership: http://youtube.com/thecodingtrain/join
πŸ›’ Store: https://standard.tv/codingtrain
πŸ“š Books: https://www.amazon.com/shop/thecodingtrain
πŸ–‹οΈ Twitter: https://twitter.com/thecodingtrain
πŸ“Έ Instagram: https://www.instagram.com/the.coding.train/
πŸŽ₯ Coding Challenges: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH
πŸŽ₯ Intro to Programming: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6Zy51Q-x9tMWIv9cueOFTFA
πŸ”— p5.js: https://p5js.org
πŸ”— p5.js Web Editor: https://editor.p5js.org/
πŸ”— Processing: https://processing.org
πŸ“„ Code of Conduct: https://github.com/CodingTrain/Code-of-Conduct
This description was auto-generated. If you see a problem, please open an issue: https://github.com/CodingTrain/thecodingtrain.com/issues/new
This video covers the very basics of vector math focusing on vector addition and looks at how to apply the concept of velocity to a position vector in the random walker example.
πŸ’» Challenge Webpage: https://thecodingtrain.com/tracks/the-nature-of-code-2/noc/1-vectors/2-vector-math
πŸ•ΉοΈ p5.js Web Editor Sketch: https://editor.p5js.org/codingtrain/sketches/GGn5cd-z
πŸŽ₯ Previous video: https://www.youtube.com/watch?v=bKEaK7WNLzM&list=PLRqwX-V7Uu6ZV4yEcW3uDwOgGXKUUsPOM
πŸŽ₯ Next video: https://www.youtube.com/watch?v=jupjuq9Jl-M&list=PLRqwX-V7Uu6ZV4yEcW3uDwOgGXKUUsPOM
πŸŽ₯ All videos: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH
Links discussed in this video:
πŸ”— The Nature of Code Vectors: https://natureofcode.com/book/chapter-1-vectors/
πŸ”— p5.Vector Reference: https://p5js.org/reference/#/p5.Vector
πŸš‚ Website: http://thecodingtrain.com/
πŸ‘Ύ Share Your Creation! https://thecodingtrain.com/guides/passenger-showcase-guide
🚩 Suggest Topics: https://github.com/CodingTrain/Suggestion-Box
πŸ’‘ GitHub: https://github.com/CodingTrain
πŸ’¬ Discord: https://discord.gg/hPuGy2g
πŸ’– Membership: http://youtube.com/thecodingtrain/join
πŸ›’ Store: https://standard.tv/codingtrain
πŸ“š Books: https://www.amazon.com/shop/thecodingtrain
πŸ–‹οΈ Twitter: https://twitter.com/thecodingtrain
πŸ“Έ Instagram: https://www.instagram.com/the.coding.train/
πŸŽ₯ Coding Challenges: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH
πŸŽ₯ Intro to Programming: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6Zy51Q-x9tMWIv9cueOFTFA
πŸ”— p5.js: https://p5js.org
πŸ”— p5.js Web Editor: https://editor.p5js.org/
πŸ”— Processing: https://processing.org
πŸ“„ Code of Conduct: https://github.com/CodingTrain/Code-of-Conduct
This description was auto-generated. If you see a problem, please open an issue: https://github.com/CodingTrain/thecodingtrain.com/issues/new
This is a continuation of my previous video where I explore shape intersection with object-oriented programming. Here, I demonstrate how to use a nested loop to check every object's position against every other object.
πŸ’» Challenge Webpage: https://thecodingtrain.com/tracks/code-programming-with-p5-js/code/7-arrays/8-object-communication-2
πŸŽ₯ Previous video: https://www.youtube.com/watch?v=W1-ej3Wu5zg&list=PLRqwX-V7Uu6Zy51Q-x9tMWIv9cueOFTFA
πŸŽ₯ Next video: https://www.youtube.com/watch?v=rO6M5hj0V-o&list=PLRqwX-V7Uu6Zy51Q-x9tMWIv9cueOFTFA
πŸŽ₯ All videos: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH
πŸš‚ Website: http://thecodingtrain.com/
πŸ‘Ύ Share Your Creation! https://thecodingtrain.com/guides/passenger-showcase-guide
🚩 Suggest Topics: https://github.com/CodingTrain/Suggestion-Box
πŸ’‘ GitHub: https://github.com/CodingTrain
πŸ’¬ Discord: https://discord.gg/hPuGy2g
πŸ’– Membership: http://youtube.com/thecodingtrain/join
πŸ›’ Store: https://standard.tv/codingtrain
πŸ“š Books: https://www.amazon.com/shop/thecodingtrain
πŸ–‹οΈ Twitter: https://twitter.com/thecodingtrain
πŸ“Έ Instagram: https://www.instagram.com/the.coding.train/
πŸŽ₯ Coding Challenges: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH
πŸŽ₯ Intro to Programming: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6Zy51Q-x9tMWIv9cueOFTFA
πŸ”— p5.js: https://p5js.org
πŸ”— p5.js Web Editor: https://editor.p5js.org/
πŸ”— Processing: https://processing.org
πŸ“„ Code of Conduct: https://github.com/CodingTrain/Code-of-Conduct
This description was auto-generated. If you see a problem, please open an issue: https://github.com/CodingTrain/thecodingtrain.com/issues/new
How to host your p5.js sketch with GitHub pages, updated for 2020!
πŸ’» Challenge Webpage: https://thecodingtrain.com/tracks/p5-tips-and-tricks/tracks/side-tracks/p5-tips-and-tricks/github-pages-hosting
Links discussed in this video:
πŸ”— Console Steps: https://gist.github.com/shiffman/9cd8f3550b7db5047d66d164234612f4
Other videos mentioned in this video:
πŸŽ₯ Introduction: https://www.youtube.com/watch?v=BCQHnlnPusY
πŸŽ₯ Branches: https://www.youtube.com/watch?v=oPpnCh7InLY
πŸŽ₯ Forks & Pull Requests: https://www.youtube.com/watch?v=_NrSWLQsDL4
πŸŽ₯ Cloning Repo & Push/Pull: https://www.youtube.com/watch?v=yXT1ElMEkW8
πŸŽ₯ Workflow - Visual Studio Code: https://www.youtube.com/watch?v=yJw0SyKO9IU
Timestamps:
0:00 Introduction
1:25 Download code from p5 web editor
3:26 Creating a GitHub repository
6:48 Enabling GitHub pages
8:57 Pushing to GitHub from local console
πŸš‚ Website: http://thecodingtrain.com/
πŸ‘Ύ Share Your Creation! https://thecodingtrain.com/guides/passenger-showcase-guide
🚩 Suggest Topics: https://github.com/CodingTrain/Suggestion-Box
πŸ’‘ GitHub: https://github.com/CodingTrain
πŸ’¬ Discord: https://discord.gg/hPuGy2g
πŸ’– Membership: http://youtube.com/thecodingtrain/join
πŸ›’ Store: https://standard.tv/codingtrain
πŸ“š Books: https://www.amazon.com/shop/thecodingtrain
πŸ–‹οΈ Twitter: https://twitter.com/thecodingtrain
πŸ“Έ Instagram: https://www.instagram.com/the.coding.train/
πŸŽ₯ Coding Challenges: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH
πŸŽ₯ Intro to Programming: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6Zy51Q-x9tMWIv9cueOFTFA
πŸ”— p5.js: https://p5js.org
πŸ”— p5.js Web Editor: https://editor.p5js.org/
πŸ”— Processing: https://processing.org
πŸ“„ Code of Conduct: https://github.com/CodingTrain/Code-of-Conduct
This description was auto-generated. If you see a problem, please open an issue: https://github.com/CodingTrain/thecodingtrain.com/issues/new
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment