[00:02] you everyone for joining us here at first pull request live on Zoom this is [00:04] first pull request live on Zoom this is a world premiere [00:06] a world premiere the world premiere of a just you know [00:09] the world premiere of a just you know little workshop that Simon and I had put [00:11] little workshop that Simon and I had put together that really just kind of grows [00:13] together that really just kind of grows out of some you know my our own activity [00:16] out of some you know my our own activity as people who really love and want to [00:18] as people who really love and want to promote open source software and kind of [00:21] promote open source software and kind of like a little tradition in the data [00:23] like a little tradition in the data journalism world where I came up of you [00:26] journalism world where I came up of you know peers teaching peers and you know [00:29] know peers teaching peers and you know once we learn how to do something we try [00:30] once we learn how to do something we try to share it with as many other people as [00:32] to share it with as many other people as possible and so really the goal of this [00:34] possible and so really the goal of this is really just to share [00:37] is really just to share um kind of what we see as a basic [00:39] um kind of what we see as a basic fundamental skill of Open Source [00:40] fundamental skill of Open Source software [00:42] software um to help to help others learn it uh I [00:45] um to help to help others learn it uh I think we can get through the course [00:47] think we can get through the course materials in 60 to 90 minutes maybe even [00:50] materials in 60 to 90 minutes maybe even faster just kind of depending on how [00:52] faster just kind of depending on how things go but I am not in a hurry at all [00:55] things go but I am not in a hurry at all and so we can go at whatever Pace works [00:57] and so we can go at whatever Pace works for you or just for the material [01:00] for you or just for the material because it is our first time teaching it [01:02] because it is our first time teaching it there will definitely be a few hinks and [01:04] there will definitely be a few hinks and bugs and so I appreciate your patience [01:06] bugs and so I appreciate your patience at the outset [01:08] at the outset um I should probably introduce myself my [01:10] um I should probably introduce myself my name is Ben Welsh I'm broadcasting to [01:12] name is Ben Welsh I'm broadcasting to you live from Little Tokyo in downtown [01:14] you live from Little Tokyo in downtown Los Angeles I have been a data [01:17] Los Angeles I have been a data journalist at the Los Angeles Times for [01:19] journalist at the Los Angeles Times for 15 years next week this year I'm [01:22] 15 years next week this year I'm currently on a fellowship at Stanford [01:25] currently on a fellowship at Stanford University where I'm working working in [01:28] University where I'm working working in partnership with the journalism school [01:29] partnership with the journalism school there on a project called Big local news [01:31] there on a project called Big local news which tries to make data tool and tools [01:34] which tries to make data tool and tools to work with data more accessible to the [01:37] to work with data more accessible to the local newsrooms across the world I am [01:39] local newsrooms across the world I am joined by my co-instructor Simon [01:42] joined by my co-instructor Simon Willison Simon would you care to [01:43] Willison Simon would you care to introduce yourself sure yeah my name's [01:45] introduce yourself sure yeah my name's Simon Willison I've been an open source [01:48] Simon Willison I've been an open source developer for nearly 20 years I think I [01:50] developer for nearly 20 years I think I worked on what became Django the web [01:53] worked on what became Django the web framework more recently I spent the past [01:54] framework more recently I spent the past five years working on a project called [01:56] five years working on a project called dataset which is open source software [01:59] dataset which is open source software aimed at helping people will analyze and [02:01] aimed at helping people will analyze and publish their data I did a Stanford [02:04] publish their data I did a Stanford Fellowship a few years ago which [02:05] Fellowship a few years ago which completely ruined me because I got to [02:07] completely ruined me because I got to work on whatever I thought was [02:08] work on whatever I thought was interesting and I've continued to do [02:10] interesting and I've continued to do that unpaid ever since so I'm coming to [02:12] that unpaid ever since so I'm coming to you from uh Half Moon Bay just south of [02:14] you from uh Half Moon Bay just south of San Francisco and yeah I'm uh I've [02:16] San Francisco and yeah I'm uh I've always been I I spent a lot of my career [02:18] always been I I spent a lot of my career journalism adjacent I like writing tools [02:21] journalism adjacent I like writing tools and writing software that journalists [02:22] and writing software that journalists can use so this this Workshop meshes two [02:24] can use so this this Workshop meshes two of my interests really well [02:26] of my interests really well all right well thank you for joining us [02:28] all right well thank you for joining us so Simon will just be here chiming in [02:30] so Simon will just be here chiming in and correcting all my mistakes and um [02:33] and correcting all my mistakes and um and helping me kind of work us through [02:34] and helping me kind of work us through this material obviously you know [02:37] this material obviously you know um [02:38] um uh uh uh I do not obviously but let me [02:42] uh uh uh I do not obviously but let me just say please interrupt us or ask [02:44] just say please interrupt us or ask questions or speak up as we go through [02:46] questions or speak up as we go through this stuff we want to make sure that you [02:47] this stuff we want to make sure that you guys get it there's five to ten pieces [02:50] guys get it there's five to ten pieces of absolutely outrageous nerd jargon [02:52] of absolutely outrageous nerd jargon that we're gonna have to like try to [02:54] that we're gonna have to like try to struggle to define and explain and I'm [02:57] struggle to define and explain and I'm sure we won't be perfect at it or we [02:59] sure we won't be perfect at it or we might use some other weird terms that [03:01] might use some other weird terms that you haven't encountered before and if we [03:03] you haven't encountered before and if we do just stop us or just ask you can just [03:05] do just stop us or just ask you can just honestly just interrupt over the [03:08] honestly just interrupt over the microphone is fine or just toss [03:09] microphone is fine or just toss something in the chat whatever you're [03:10] something in the chat whatever you're comfortable with [03:13] comfortable with um and that's it so um that's the that's [03:15] um and that's it so um that's the that's the deal My Hope Is we can work through [03:17] the deal My Hope Is we can work through this and the goal is to show you how to [03:20] this and the goal is to show you how to uh make changes to open source software [03:22] uh make changes to open source software to look at the code that other folks [03:24] to look at the code that other folks have published on the web make a tweak [03:26] have published on the web make a tweak and suggest that they include it and [03:29] and suggest that they include it and this that process is called a pull [03:31] this that process is called a pull request when it's done via the website [03:33] request when it's done via the website github.com which is the most popular [03:35] github.com which is the most popular code management site there's other words [03:38] code management site there's other words for it that's what GitHub calls it and [03:40] for it that's what GitHub calls it and our goal is to teach you how to do that [03:41] our goal is to teach you how to do that today and this technique is really a [03:44] today and this technique is really a basic skill of software development that [03:46] basic skill of software development that if you are interested in becoming a [03:48] if you are interested in becoming a developer or just a hobbyist who [03:50] developer or just a hobbyist who contributes to code you're going to want [03:51] contributes to code you're going to want to learn and um for the purposes of the [03:55] to learn and um for the purposes of the demonstration everyone who works through [03:57] demonstration everyone who works through the class will make a pull request today [04:00] the class will make a pull request today to an open source website that I [04:02] to an open source website that I maintain which we'll look at in a minute [04:04] maintain which we'll look at in a minute before we get into that I'd like [04:07] before we get into that I'd like everybody to go to the web address that [04:09] everybody to go to the web address that I've put right here in our little help [04:11] I've put right here in our little help file and it is at bit dot lead slash [04:15] file and it is at bit dot lead slash first hyphen PR and PR is a common piece [04:20] first hyphen PR and PR is a common piece of slang for a pull request right so [04:22] of slang for a pull request right so there's a there's our first gunky jargon [04:24] there's a there's our first gunky jargon so it's bit dot Lee slash first hyphen [04:27] so it's bit dot Lee slash first hyphen PR and if you go there you'll see the [04:29] PR and if you go there you'll see the script we wrote which we're going to [04:30] script we wrote which we're going to walk through together which contains [04:32] walk through together which contains everything we're going to cover [04:34] everything we're going to cover now before I launch into that [04:36] now before I launch into that I want to open it up to everybody who's [04:39] I want to open it up to everybody who's come to see if there's any questions so [04:41] come to see if there's any questions so before we begin does anybody have any uh [04:43] before we begin does anybody have any uh any questions about [04:45] any questions about um the class or just things in general [05:04] no okay Arky I see you shared the link is that [05:06] Arky I see you shared the link is that working for you [05:13] I I'll take that as a yes all right everybody so here we go on the site [05:15] everybody so here we go on the site let's begin so in the first chapter we [05:18] let's begin so in the first chapter we kind of cover what we're going to do [05:19] kind of cover what we're going to do here and that is of course make this [05:21] here and that is of course make this code contribution which is known as a [05:23] code contribution which is known as a pull request the site that everyone will [05:25] pull request the site that everyone will be contributing to is called the EE [05:27] be contributing to is called the EE Cummings free Poetry archive this is a [05:30] Cummings free Poetry archive this is a website that's at the Domain cummings.e [05:34] website that's at the Domain cummings.e and it everything about this website is [05:36] and it everything about this website is open source software that is hosted on [05:38] open source software that is hosted on GitHub and that anyone can contribute to [05:41] GitHub and that anyone can contribute to and the mission of this site [05:43] and the mission of this site um is to transcribe the Poetry of EE [05:47] um is to transcribe the Poetry of EE Cummings as it gradually enters the [05:49] Cummings as it gradually enters the public domain [05:51] public domain uh the way that copyright law works in [05:53] uh the way that copyright law works in the United States is that after a work [05:56] the United States is that after a work is created uh it is protected legally as [05:59] is created uh it is protected legally as the intellectual property of the author [06:01] the intellectual property of the author or the owner of it but then after a [06:04] or the owner of it but then after a certain number of years it expires and [06:06] certain number of years it expires and it enters What's called the public [06:08] it enters What's called the public domain which it effectively becomes open [06:11] domain which it effectively becomes open source of its own and anyone is able to [06:14] source of its own and anyone is able to resell repackage or remix it in any way [06:17] resell repackage or remix it in any way they like we're in an interesting moment [06:19] they like we're in an interesting moment now which is each January 1st when the [06:23] now which is each January 1st when the next year of old material goes live [06:25] next year of old material goes live we're gradually crawling through the [06:28] we're gradually crawling through the 1920s right now here in the United [06:30] 1920s right now here in the United States which means that many works of [06:33] States which means that many works of modernist poetry uh early Cinema uh and [06:38] modernist poetry uh early Cinema uh and uh and early popular music are beginning [06:40] uh and early popular music are beginning to enter the public domain famously last [06:43] to enter the public domain famously last year the Great Gatsby became a public [06:46] year the Great Gatsby became a public domain item and so you can look forward [06:48] domain item and so you can look forward to [06:49] to Simon's graphic novel casting his pets [06:53] Simon's graphic novel casting his pets in The Great Gatsby or I don't know what [06:55] in The Great Gatsby or I don't know what exactly right but whatever you would [06:57] exactly right but whatever you would want to do would be uh totally uh free [07:00] want to do would be uh totally uh free at this point and as someone who loves [07:02] at this point and as someone who loves open source dog software but also a [07:04] open source dog software but also a public domain and is a little bit of an [07:06] public domain and is a little bit of an amateur archivist I just took on as a [07:09] amateur archivist I just took on as a hobby during the pandemic the um [07:12] hobby during the pandemic the um the the mission of trying to open up EE [07:14] the the mission of trying to open up EE Cummings work and so for the last couple [07:17] Cummings work and so for the last couple of years I've been leading the drive to [07:20] of years I've been leading the drive to gradually enter all of the poems into [07:22] gradually enter all of the poems into the site as they open and this year on [07:25] the site as they open and this year on January 1st a book that came out in 1926 [07:28] January 1st a book that came out in 1926 called is five which is the fourth book [07:31] called is five which is the fourth book by E Cummings entered the public domain [07:33] by E Cummings entered the public domain it has 88 poems in the book and [07:36] it has 88 poems in the book and currently only 28 of them have been [07:38] currently only 28 of them have been entered into the website which is really [07:40] entered into the website which is really just the process of transcription [07:43] just the process of transcription um I've gone to the Los Angeles Public [07:45] um I've gone to the Los Angeles Public Library the Central Library downtown [07:48] Library the Central Library downtown where they have a first edition of the [07:50] where they have a first edition of the book and I scanned that in and uploaded [07:53] book and I scanned that in and uploaded it to the internet archive and so the [07:55] it to the internet archive and so the process isn't that beautiful the process [07:58] process isn't that beautiful the process of um transcription is really taking the [08:02] of um transcription is really taking the copy that appears in these scans and [08:04] copy that appears in these scans and keep punching them into a computer file [08:06] keep punching them into a computer file that can go into the website okay and [08:09] that can go into the website okay and that's all done on github.com Via what's [08:13] that's all done on github.com Via what's called a code repository which I'm [08:16] called a code repository which I'm looking at right here Simon how would [08:18] looking at right here Simon how would you define a code Repository [08:20] you define a code Repository so a repository it's [08:24] so a repository it's that's a really trick that's a [08:25] that's a really trick that's a surprisingly tricky question it's like a [08:27] surprisingly tricky question it's like a folder it's a directory on a computer [08:28] folder it's a directory on a computer where it would be a product where you [08:30] where it would be a product where you keep all of the code that exists in a [08:32] keep all of the code that exists in a single project [08:33] single project um with with a GitHub repository that's [08:35] um with with a GitHub repository that's that's the thing that you've then [08:36] that's the thing that you've then published and either publicly so anyone [08:38] published and either publicly so anyone can see it or GitHub also lets you have [08:40] can see it or GitHub also lets you have private repositories that you can use to [08:42] private repositories that you can use to collaborate with other people so um [08:44] collaborate with other people so um there are there are people who will [08:46] there are there are people who will debate how much should go into [08:48] debate how much should go into repository let's say put everything that [08:49] repository let's say put everything that your company does in a single repository [08:51] your company does in a single repository have a they call it a um a mono [08:53] have a they call it a um a mono repository this is not a debate for [08:55] repository this is not a debate for today for for our purposes something [08:58] today for for our purposes something like cummings.ee is a perfect example of [09:00] like cummings.ee is a perfect example of the size of project you might want to [09:02] the size of project you might want to have an individual project uh repository [09:04] have an individual project uh repository for [09:05] for right so all the code that makes the [09:08] right so all the code that makes the website that we're looking at right here [09:10] website that we're looking at right here everything that puts this together is [09:12] everything that puts this together is contained within this kind of magic [09:13] contained within this kind of magic folder hosted by github.com and because [09:16] folder hosted by github.com and because I've made the code open source AKA open [09:19] I've made the code open source AKA open to the Public's review I'm actually able [09:21] to the Public's review I'm actually able to host it for free which is one of the [09:23] to host it for free which is one of the nice things about GitHub and one of the [09:26] nice things about GitHub and one of the chief reasons why it's become the [09:28] chief reasons why it's become the dominant place to find open source [09:30] dominant place to find open source software in a sense GitHub is [09:32] software in a sense GitHub is effectively a social network for these [09:35] effectively a social network for these these code repositories or these folders [09:37] these code repositories or these folders and So within this website you can find [09:39] and So within this website you can find the code that powers Django the project [09:41] the code that powers Django the project that Simon worked on you can find the [09:44] that Simon worked on you can find the code that um [09:46] code that um that that what was on the initial space [09:48] that that what was on the initial space the initial space missions from NASA you [09:51] the initial space missions from NASA you can find the code that runs inside of [09:53] can find the code that runs inside of your smart watch and just literally tens [09:57] your smart watch and just literally tens of thousands or hundreds of thousands of [09:58] of thousands or hundreds of thousands of software projects each have a page like [10:01] software projects each have a page like this one that's Project Specific where [10:03] this one that's Project Specific where they store all of the files that kind of [10:06] they store all of the files that kind of make the application but then they also [10:08] make the application but then they also collaborate with other developers to [10:11] collaborate with other developers to carefully make changes to that code [10:13] carefully make changes to that code using a system called Version Control [10:15] using a system called Version Control which is just really computer [10:17] which is just really computer programming tricks for very carefully [10:20] programming tricks for very carefully managing edits to individual files to [10:22] managing edits to individual files to make sure you don't break the code or [10:24] make sure you don't break the code or the two people don't make conflicting [10:26] the two people don't make conflicting changes [10:27] changes uh any questions about GitHub or [10:31] uh any questions about GitHub or repositories [10:43] no okay so yeah by GitHub is there any good tutorial or [10:47] by GitHub is there any good tutorial or book to explain this because every time [10:49] book to explain this because every time I've tried to learn it I've just given [10:52] I've tried to learn it I've just given up [10:53] up and you get stuck with trying to like uh [10:56] and you get stuck with trying to like uh create a repository with your terminal [10:58] create a repository with your terminal or where do you get where do you get [11:00] or where do you get where do you get caught up [11:02] caught up um [11:11] I usually lose track of how to make the whole thing work [11:12] whole thing work yeah I mean it's just it's it's one of [11:15] yeah I mean it's just it's it's one of these things that's especially tricky [11:16] these things that's especially tricky because you have on the web you have [11:18] because you have on the web you have this magic folder that exists also as a [11:21] this magic folder that exists also as a web page or thing but then traditionally [11:23] web page or thing but then traditionally when you're then working on those code [11:24] when you're then working on those code files you have to have a copy of those [11:26] files you have to have a copy of those files on your computer as well right and [11:29] files on your computer as well right and so part of the dance of computer [11:31] so part of the dance of computer programming traditionally has been the [11:34] programming traditionally has been the to and fro of the changes that you make [11:37] to and fro of the changes that you make on your computer versus what you submit [11:39] on your computer versus what you submit and send to the sort of origin as they [11:42] and send to the sort of origin as they call it the sort of Mothership [11:43] call it the sort of Mothership repository that's on the web [11:45] repository that's on the web go ahead Simon so um GitHub is the [11:49] go ahead Simon so um GitHub is the website git is the software you use to [11:51] website git is the software you use to manage the changes git has notoriously [11:54] manage the changes git has notoriously it's one of the hardest pieces of [11:56] it's one of the hardest pieces of software to use in all of computer [11:57] software to use in all of computer programming like I've been using it for [12:00] programming like I've been using it for probably 15 years I use about five [12:03] probably 15 years I use about five percent of the functionality and I [12:05] percent of the functionality and I frequently find myself getting confused [12:07] frequently find myself getting confused when I dive into some of the more [12:08] when I dive into some of the more complicated belts oh good it's not just [12:10] complicated belts oh good it's not just me no oh no that's really important to [12:13] me no oh no that's really important to understand it it is a nightmare to use [12:15] understand it it is a nightmare to use yes everyone acknowledges that the thing [12:17] yes everyone acknowledges that the thing is that because we all use it it's [12:19] is that because we all use it it's difficult to adopt something else and [12:21] difficult to adopt something else and what we're going to show you today is [12:23] what we're going to show you today is ways to use the GitHub web interface to [12:26] ways to use the GitHub web interface to avoid quite a lot of the horrors of [12:28] avoid quite a lot of the horrors of having to use git so this Workshop you [12:30] having to use git so this Workshop you won't be having to open a terminal at [12:31] won't be having to open a terminal at all but you'll still be able to create [12:33] all but you'll still be able to create edits and propose changes that's exactly [12:36] edits and propose changes that's exactly right and and like I think Ron that the [12:39] right and and like I think Ron that the terminal stuff I've seen trip up [12:40] terminal stuff I've seen trip up literally hundreds of students teaching [12:42] literally hundreds of students teaching this stuff if that's where you're having [12:43] this stuff if that's where you're having trouble I think the stuff we'll cover [12:45] trouble I think the stuff we'll cover today which is pretty new technology [12:46] today which is pretty new technology will keep you entirely in the browser [12:49] will keep you entirely in the browser and I think you can do quite a lot of [12:50] and I think you can do quite a lot of coding that way it kind of depends what [12:52] coding that way it kind of depends what you're trying to do [12:53] you're trying to do um but if you want something that's in [12:55] um but if you want something that's in between everything in the browser and [12:57] between everything in the browser and the hell of the terminal there's an [12:59] the hell of the terminal there's an application called GitHub desktop and [13:02] application called GitHub desktop and it's really intended to be a bridge [13:04] it's really intended to be a bridge between the copy that's on your computer [13:07] between the copy that's on your computer and the copy that's on the web and I [13:09] and the copy that's on the web and I know that quite a lot of developers even [13:11] know that quite a lot of developers even people who are very skilled with the [13:12] people who are very skilled with the terminal prefer tools like that just [13:14] terminal prefer tools like that just because they think they're easier [13:16] because they think they're easier and so my advice would be to seek out [13:19] and so my advice would be to seek out GitHub desktop Beyond this class perhaps [13:21] GitHub desktop Beyond this class perhaps also github.com has a pretty excellent [13:24] also github.com has a pretty excellent help section and if you haven't looked [13:26] help section and if you haven't looked at it in a while I would just go look at [13:28] at it in a while I would just go look at their really introductory materials like [13:30] their really introductory materials like how do I even get started and I bet you [13:33] how do I even get started and I bet you um it would be more helpful than the [13:34] um it would be more helpful than the last time you looked [13:36] last time you looked all right [13:38] all right so now the thing I need everyone to do [13:40] so now the thing I need everyone to do is to log into github.com so if you [13:43] is to log into github.com so if you already have an account great just log [13:45] already have an account great just log into it if you don't I need you to make [13:48] into it if you don't I need you to make one now okay and I am going to open up [13:51] one now okay and I am going to open up an incognito web browser and try to do [13:54] an incognito web browser and try to do that myself okay [13:56] that myself okay I think I have [13:58] I think I have an account I made for this but let's see [14:00] an account I made for this but let's see if it shows up [14:05] uh here's an older one maybe I can use that [14:12] because I need to log in as just like a as a regular old user like you guys not [14:15] as a regular old user like you guys not as the administrator of [14:19] as the administrator of uh the the cummings.ee repository [14:21] uh the the cummings.ee repository because I'm the administrator that I [14:23] because I'm the administrator that I have special powers that the average [14:25] have special powers that the average person on GitHub doesn't if you think [14:27] person on GitHub doesn't if you think about it [14:29] about it um [14:30] um if you think about it [14:32] if you think about it um repository can be open source it can [14:35] um repository can be open source it can be legible and readable and accessible [14:37] be legible and readable and accessible to all people but you can't let edits to [14:39] to all people but you can't let edits to the code be accessible to all people [14:41] the code be accessible to all people because then anybody could hack [14:42] because then anybody could hack everything right and so the way that [14:44] everything right and so the way that open source software is managed you know [14:47] open source software is managed you know as as well as it is managed is that you [14:49] as as well as it is managed is that you have a group of sort of super users who [14:52] have a group of sort of super users who are often called maintainers or owners [14:54] are often called maintainers or owners and they are the ones who manage what is [14:57] and they are the ones who manage what is allowed to be let into the sort of main [15:00] allowed to be let into the sort of main or Master collection of code in the [15:03] or Master collection of code in the repository and then everyone else as an [15:05] repository and then everyone else as an outsider is allowed to read the code to [15:08] outsider is allowed to read the code to run the code on their own independently [15:10] run the code on their own independently right but then also make changes and [15:13] right but then also make changes and suggest those changes go back into the [15:15] suggest those changes go back into the process right and that is where the [15:18] process right and that is where the maintainers then come in to try to fix [15:19] maintainers then come in to try to fix it and we'll see how all that works okay [15:21] it and we'll see how all that works okay so I'm going to make a new [15:24] so I'm going to make a new GitHub account right here [15:27] GitHub account right here that needs a number okay [15:30] that needs a number okay you can you guys can watch me flail [15:33] you can you guys can watch me flail okay [15:42] how about that okay I'm gonna generate a password [15:51] there we go what should my news username be guys [16:01] uh first PR see if you can get that one ah how about that [16:05] ah how about that uh I do not want emails no [16:08] uh I do not want emails no all right then you have to solve a [16:09] all right then you have to solve a little puzzle this is where we prove [16:11] little puzzle this is where we prove we're human I think it's that one [16:13] we're human I think it's that one and then it's this one the piggies [16:18] and then it's this one the piggies okay now we've created our account [16:20] okay now we've created our account it's gonna email me something okay let's [16:24] it's gonna email me something okay let's see if I get that email a launch code I [16:26] see if I get that email a launch code I haven't seen this this flow in a very [16:29] haven't seen this this flow in a very long time they've done all sorts of [16:30] long time they've done all sorts of things to it yeah [16:32] things to it yeah there's my okay I just got the email it [16:35] there's my okay I just got the email it is 916-10570 [16:43] okay 50 plus okay [16:49] sorry as a person who works with data all day I love to pollute other people's [16:51] all day I love to pollute other people's data [16:52] data um it's not a nice thing about me okay [16:54] um it's not a nice thing about me okay continue for free [16:57] continue for free whoa GitHub whoa that's that's what [17:01] whoa GitHub whoa that's that's what Microsoft pays for right there dude [17:04] Microsoft pays for right there dude all right so we're in I now have a [17:06] all right so we're in I now have a totally blank GitHub [17:09] totally blank GitHub um account right I'm a total newbie on [17:11] um account right I'm a total newbie on the site you can see in the upper right [17:13] the site you can see in the upper right there's ways to customize your account [17:15] there's ways to customize your account if you haven't done it I'd recommend [17:16] if you haven't done it I'd recommend turning on two-factor authentication [17:18] turning on two-factor authentication though I won't do that here today and [17:21] though I won't do that here today and you can see there's really not a lot [17:22] you can see there's really not a lot going on here but one of the first [17:23] going on here but one of the first buttons that's available to you is [17:25] buttons that's available to you is create a repository right because that's [17:27] create a repository right because that's one of the that's what GitHub is for is [17:29] one of the that's what GitHub is for is to create these code folders and so if [17:30] to create these code folders and so if you wanted to you could create a public [17:32] you wanted to you could create a public or private uh Repository [17:35] or private uh Repository they hold your hold your work you don't [17:37] they hold your hold your work you don't need to do that here for today but just [17:38] need to do that here for today but just this is just an example of kind of why [17:39] this is just an example of kind of why it's there and now we'll see if I go to [17:42] it's there and now we'll see if I go to the address [17:43] the address for [17:45] for um cummings.ee [17:47] um cummings.ee um what I see here is slightly different [17:50] um what I see here is slightly different than in my other browser tab where I am [17:52] than in my other browser tab where I am an administrator where here you can see [17:53] an administrator where here you can see there's a settings thing that allows me [17:55] there's a settings thing that allows me to muck with the repo and here you can [17:57] to muck with the repo and here you can see there is not right because now I'm [17:59] see there is not right because now I'm an outsider contributor I'm not the [18:02] an outsider contributor I'm not the maintainer and so what I can do is a [18:03] maintainer and so what I can do is a little more restricted [18:05] little more restricted all right so has everybody been able or [18:07] all right so has everybody been able or already have a GitHub account are we all [18:09] already have a GitHub account are we all into the site and ready to go [18:12] into the site and ready to go great I see some thumbs up [18:15] great I see some thumbs up if anybody's having issues it's totally [18:17] if anybody's having issues it's totally fine just feel free to speak up [18:27] if you haven't done it yet in chapter two of the class there's a link down [18:29] two of the class there's a link down here at the bottom that goes to the code [18:31] here at the bottom that goes to the code repository I'd just like you to open [18:33] repository I'd just like you to open that in a tab so that you're in the same [18:35] that in a tab so that you're in the same place that I am right here okay once you [18:38] place that I am right here okay once you have that up you have the Repository [18:41] have that up you have the Repository okay [18:42] okay so once we have the code we should maybe [18:44] so once we have the code we should maybe like look at what's actually in here a [18:46] like look at what's actually in here a little bit you can see a sort of [18:47] little bit you can see a sort of directory structure like you would find [18:49] directory structure like you would find on your Windows or Apple computer [18:52] on your Windows or Apple computer um where it sort of has files and [18:53] um where it sort of has files and folders that are organized [18:55] folders that are organized um within like a little tree structure [18:57] um within like a little tree structure pretty traditional stuff [18:59] pretty traditional stuff um this particular collection of files [19:02] um this particular collection of files is everything necessary to build the [19:03] is everything necessary to build the website and it's organized into what's [19:05] website and it's organized into what's called a generically a framework a [19:08] called a generically a framework a framework is just like a tool belt of [19:10] framework is just like a tool belt of code that's been put together by other [19:12] code that's been put together by other developers to make it easier to just get [19:15] developers to make it easier to just get stuff done so Django which Simon [19:17] stuff done so Django which Simon mentioned is what you might call a [19:18] mentioned is what you might call a framework it's a bunch of python code [19:20] framework it's a bunch of python code that does a million different things [19:22] that does a million different things that make it easier to build a dynamic [19:26] that make it easier to build a dynamic website as well as do other things [19:29] website as well as do other things um you may have heard of other [19:30] um you may have heard of other Frameworks called like Ruby on Rails or [19:32] Frameworks called like Ruby on Rails or react or Gatsby and these are all just [19:35] react or Gatsby and these are all just different sort of competing systems in [19:37] different sort of competing systems in different programming languages to [19:39] different programming languages to create uh you know tool belts that make [19:41] create uh you know tool belts that make it easier to get stuff done and it just [19:43] it easier to get stuff done and it just so happens it's not that important but [19:44] so happens it's not that important but it just so happens that this repository [19:47] it just so happens that this repository in this website uses a framework called [19:49] in this website uses a framework called Baker which was invented at the Los [19:51] Baker which was invented at the Los Angeles Times to help us build all of [19:53] Angeles Times to help us build all of our special projects and so you know you [19:55] our special projects and so you know you want to do live election results outside [19:57] want to do live election results outside of the content management system or a [20:00] of the content management system or a big long beautiful scrolling feature [20:02] big long beautiful scrolling feature right you might need to write your own [20:04] right you might need to write your own custom code and so Baker was the tool [20:06] custom code and so Baker was the tool that we wrote to do that it's in use [20:08] that we wrote to do that it's in use currently at the LA times as well as at [20:10] currently at the LA times as well as at propublica the Baltimore banner and the [20:13] propublica the Baltimore banner and the city uh if you're interested in learning [20:15] city uh if you're interested in learning more about Baker we have a whole [20:17] more about Baker we have a whole separate class about that which I taught [20:19] separate class about that which I taught at the night car conference last year [20:21] at the night car conference last year it's called first visual story and it [20:23] it's called first visual story and it will guide you through how to use Baker [20:25] will guide you through how to use Baker or really any uh sort of static site [20:28] or really any uh sort of static site framework because it's called to build [20:29] framework because it's called to build your own custom page that you can [20:31] your own custom page that you can publish outside of the outside of the [20:34] publish outside of the outside of the content management system where you work [20:35] content management system where you work or just really your own micro site and [20:37] or just really your own micro site and so because I was familiar with using [20:39] so because I was familiar with using that at the LA Times I used it to make [20:41] that at the LA Times I used it to make this little microsite cummings.ee and it [20:44] this little microsite cummings.ee and it really can be used to make almost any [20:45] really can be used to make almost any website if you used it properly so we [20:49] website if you used it properly so we don't need to learn everything about how [20:50] don't need to learn everything about how it works but you know one challenge of [20:53] it works but you know one challenge of contributing to an open source project [20:55] contributing to an open source project is even if you just want to correct a [20:57] is even if you just want to correct a typo or add a very narrow feature or fix [21:00] typo or add a very narrow feature or fix a small bug you do kind of have to go [21:02] a small bug you do kind of have to go through the sort of like sussing out [21:04] through the sort of like sussing out process of like how has this thing even [21:06] process of like how has this thing even put together and where are all our other [21:08] put together and where are all our other things and sort of gradually learning [21:11] things and sort of gradually learning kind of the system by which the [21:13] kind of the system by which the developers have put hello and welcome to [21:15] developers have put hello and welcome to git and GitHub for poets this is [21:18] git and GitHub for poets this is and [21:20] and um [21:22] um and uh and you can and so here we won't [21:25] and uh and you can and so here we won't cover everything that has to do with it [21:26] cover everything that has to do with it but I can just tell you that [21:28] but I can just tell you that in the underscore data folder [21:30] in the underscore data folder there's another folder called poems I [21:33] there's another folder called poems I just ask everybody to click in here and [21:35] just ask everybody to click in here and then into is five right and so I just [21:39] then into is five right and so I just happen to know this is the place to go [21:40] happen to know this is the place to go because I created this repository and so [21:43] because I created this repository and so in the data directory there's a there's [21:46] in the data directory there's a there's a there's a folder for each of the four [21:47] a there's a folder for each of the four books that we've entered and then in [21:50] books that we've entered and then in each of those there's a file for each of [21:52] each of those there's a file for each of the poems right and so uh we could see [21:55] the poems right and so uh we could see that for instance in the first file that [21:57] that for instance in the first file that we're looking at which is for the the [21:59] we're looking at which is for the the first poem and the five American series [22:02] first poem and the five American series we could see a file that contains the [22:04] we could see a file that contains the poem and some extra metadata if I go to [22:07] poem and some extra metadata if I go to cummings.ee [22:09] cummings.ee and I click into the location of that [22:11] and I click into the location of that same poem here we can see that the exact [22:13] same poem here we can see that the exact same stuff [22:15] same stuff that's on the page is in that data file [22:18] that's on the page is in that data file and the way that the website works which [22:20] and the way that the website works which we won't cover in in any depth is it [22:23] we won't cover in in any depth is it really it takes the data from these [22:24] really it takes the data from these files and it templates them into the [22:27] files and it templates them into the website and that's how this kind of site [22:29] website and that's how this kind of site works it's using that particular [22:31] works it's using that particular framework all of those things are just [22:33] framework all of those things are just opinionated decisions I made as the [22:35] opinionated decisions I made as the initial developer and are up for debate [22:38] initial developer and are up for debate but you know part of figuring out or [22:41] but you know part of figuring out or contributing to somebody else's code is [22:43] contributing to somebody else's code is kind of like sniffing around how it's [22:46] kind of like sniffing around how it's set up and figuring out what you might [22:49] set up and figuring out what you might want to do or don't do like Simon when [22:51] want to do or don't do like Simon when you first encounter someone else's code [22:53] you first encounter someone else's code how do you figure out what it's doing [22:56] how do you figure out what it's doing but it depends on which programming [22:58] but it depends on which programming language they're using if it's a [23:00] language they're using if it's a JavaScript thing there's a file called [23:01] JavaScript thing there's a file called package.json you can go and look at if [23:03] package.json you can go and look at if it's python you can look at [23:04] it's python you can look at requirements.txt but generally I hope [23:07] requirements.txt but generally I hope that they've got a readme that explains [23:08] that they've got a readme that explains what's going on so the good projects do [23:11] what's going on so the good projects do a lot of projects don't bother and then [23:13] a lot of projects don't bother and then often what I'll do is I'll actually use [23:14] often what I'll do is I'll actually use the GitHub search interface so I'll say [23:17] the GitHub search interface so I'll say okay I know that there's a poem that [23:19] okay I know that there's a poem that uses the word uses the the word sinuous [23:21] uses the word uses the the word sinuous in there I will search for sinuous and [23:24] in there I will search for sinuous and that will show me which file here we go [23:26] that will show me which file here we go and so now I've gone from looking at the [23:29] and so now I've gone from looking at the front page we're actually having an idea [23:30] front page we're actually having an idea of how this thing is structured so often [23:32] of how this thing is structured so often I I will I will use github's code search [23:34] I I will I will use github's code search quite extensively just to try and figure [23:37] quite extensively just to try and figure out okay this thing I want to this this [23:39] out okay this thing I want to this this page on the website where is that in the [23:41] page on the website where is that in the repository and that'll get me there [23:42] repository and that'll get me there really quickly mm-hmm student [23:45] really quickly mm-hmm student and then also if you're looking to [23:47] and then also if you're looking to contribute a really natural place to [23:48] contribute a really natural place to look is What's called the issue tracker [23:50] look is What's called the issue tracker or the issues tab so if you see here in [23:53] or the issues tab so if you see here in the upper left where my mouse is there's [23:54] the upper left where my mouse is there's just a little link that says issue with [23:57] just a little link that says issue with I guess a bullseye I'm not even sure I [23:59] I guess a bullseye I'm not even sure I know what that is [24:00] know what that is um and in it and this is like you know [24:03] um and in it and this is like you know like you might have in your work uh [24:06] like you might have in your work uh workplace if you work anywhere close to [24:07] workplace if you work anywhere close to software this is sort of an open source [24:09] software this is sort of an open source version of a classic ticket manager like [24:12] version of a classic ticket manager like you might have um in jira or any other [24:16] you might have um in jira or any other of those tools like that and it's really [24:18] of those tools like that and it's really a place where the maintainers of a [24:20] a place where the maintainers of a project but also the users [24:23] project but also the users um can uh can raise bugs can propose [24:26] um can uh can raise bugs can propose features can hold discussions about what [24:29] features can hold discussions about what to do with the website and it is a venue [24:31] to do with the website and it is a venue for kind of managing [24:33] for kind of managing um little changes that get made to the [24:35] um little changes that get made to the code over time right I'm going to set a [24:38] code over time right I'm going to set a quick plug for GitHub issues if you've [24:41] quick plug for GitHub issues if you've used Jerry you probably hate jira I I [24:45] used Jerry you probably hate jira I I don't think I've ever met somebody who [24:46] don't think I've ever met somebody who who didn't absolutely despise it it does [24:48] who didn't absolutely despise it it does the job GitHub issues is the only issue [24:50] the job GitHub issues is the only issue tracker I've used that I don't hate and [24:53] tracker I've used that I don't hate and this is this is high price indeed I've [24:55] this is this is high price indeed I've run my life out of it I've got like [24:56] run my life out of it I've got like private GitHub repositories for [24:58] private GitHub repositories for households chores and things that use [25:00] households chores and things that use GitHub issues because it works so well [25:02] GitHub issues because it works so well for me [25:03] for me yeah it's pretty nice tool and just to [25:05] yeah it's pretty nice tool and just to show it like on another project an open [25:07] show it like on another project an open source project you've probably heard [25:09] source project you've probably heard something about in the last few months [25:10] something about in the last few months is Mastodon which is an attempt to [25:13] is Mastodon which is an attempt to create an open source competitor to [25:15] create an open source competitor to Twitter [25:16] Twitter and you can see here this is of course a [25:18] and you can see here this is of course a very active project that's been around a [25:20] very active project that's been around a number of years and you see here if you [25:22] number of years and you see here if you look in their issues tracker you'll see [25:24] look in their issues tracker you'll see that there's more than 3 000 issues [25:26] that there's more than 3 000 issues where people all around the world who [25:28] where people all around the world who are surging into the site have been [25:30] are surging into the site have been suggesting things I think I have one in [25:33] suggesting things I think I have one in here if we search for me [25:35] here if we search for me let's see if we can find it [25:37] let's see if we can find it no how do you filter for person can I [25:40] no how do you filter for person can I use a colon pale wire [25:47] oh no that didn't work at all that's everything [25:49] everything your issues how about that there we go [26:00] if that worked no hmm I definitely filed a bug whatever oh I'm not logged in as [26:02] a bug whatever oh I'm not logged in as me I'm logged in as this other weird guy [26:04] me I'm logged in as this other weird guy there you go that makes sense [26:06] there you go that makes sense ah [26:08] ah so just to just to like make the point I [26:10] so just to just to like make the point I was using Mastodon as I'm as I'm [26:12] was using Mastodon as I'm as I'm exploring it like everyone else in the [26:13] exploring it like everyone else in the world and uh I thought I found what I [26:17] world and uh I thought I found what I thought to be a bug which was that um in [26:19] thought to be a bug which was that um in the color choice that they had made for [26:21] the color choice that they had made for kind of the toot button uh wasn't [26:23] kind of the toot button uh wasn't passing a certain kind of accessibility [26:25] passing a certain kind of accessibility test not that it was such a crime or [26:27] test not that it was such a crime or whatever and so what I did is I went [26:29] whatever and so what I did is I went into their issue tracker and I tried to [26:31] into their issue tracker and I tried to document this bug right and so it was [26:33] document this bug right and so it was just like hey I ran this kind of this [26:35] just like hey I ran this kind of this one particular test for accessibility I [26:38] one particular test for accessibility I found that uh the colors are you know [26:40] found that uh the colors are you know totally up to Snuff uh I did an [26:43] totally up to Snuff uh I did an experiment where maybe we could change [26:44] experiment where maybe we could change it to something else it's within the [26:46] it to something else it's within the color scheme and so hey what do you [26:48] color scheme and so hey what do you think of that idea right and so this is [26:50] think of that idea right and so this is basically me filing a bug report with [26:52] basically me filing a bug report with the the owners of this repository and [26:55] the the owners of this repository and just kind of seeing what they think [26:56] just kind of seeing what they think trying to document what I was thinking [26:58] trying to document what I was thinking so that you know they don't have to read [26:59] so that you know they don't have to read my mind and you know somebody might get [27:02] my mind and you know somebody might get around to it at some point I think this [27:04] around to it at some point I think this particular group of developers is pretty [27:06] particular group of developers is pretty flooded with activity and so I don't [27:08] flooded with activity and so I don't really blame them for not having got to [27:10] really blame them for not having got to it yet but that's an example of kind of [27:12] it yet but that's an example of kind of a real life bug report that I made [27:14] a real life bug report that I made myself right and then the pull request [27:16] myself right and then the pull request or the change would be intended to [27:18] or the change would be intended to address that right and so issues are [27:21] address that right and so issues are often the targets of pull requests or [27:24] often the targets of pull requests or code changes where you're saying well we [27:27] code changes where you're saying well we have this particular issue that we want [27:28] have this particular issue that we want to address I've got the code that's [27:31] to address I've got the code that's intended to address it and those two [27:33] intended to address it and those two things kind of go together and so if we [27:35] things kind of go together and so if we look back at the cummings.ee [27:38] look back at the cummings.ee issue tracker I've created a couple [27:41] issue tracker I've created a couple dozen tickets right here for individual [27:44] dozen tickets right here for individual poems that are missing from the website [27:46] poems that are missing from the website right so if we look at the page for is [27:48] right so if we look at the page for is five on cummings.ee we can see that only [27:51] five on cummings.ee we can see that only 28 of the books 88 poems have been [27:54] 28 of the books 88 poems have been entered there's 60 to go and the ones [27:56] entered there's 60 to go and the ones that haven't been entered are grayed out [27:58] that haven't been entered are grayed out in the table of contents right and what [28:01] in the table of contents right and what I've done is I went through and picked [28:03] I've done is I went through and picked about 20 that aren't very long and made [28:07] about 20 that aren't very long and made tickets for each of them [28:09] tickets for each of them and then in each ticket I included a [28:12] and then in each ticket I included a link to the file in the file system [28:15] link to the file in the file system where the where the poem should go and a [28:17] where the where the poem should go and a link to the scan from the LA Public [28:20] link to the scan from the LA Public Library where the poem it appears on the [28:23] Library where the poem it appears on the page right and so what I'm now going to [28:25] page right and so what I'm now going to ask is that we just kind of go through [28:27] ask is that we just kind of go through everybody who's here as a participant [28:29] everybody who's here as a participant and we kind of assign different people [28:31] and we kind of assign different people tickets right and there actually is a [28:34] tickets right and there actually is a system for doing this within [28:37] system for doing this within um the issue tracker which I'll show [28:39] um the issue tracker which I'll show with like I'll use Simon as my example [28:41] with like I'll use Simon as my example Simon you're going to enter one right uh [28:44] Simon you're going to enter one right uh definitely yep okay so I'm gonna go down [28:46] definitely yep okay so I'm gonna go down to the one at the bottom and just start [28:47] to the one at the bottom and just start there and I'm going to say supposing I [28:49] there and I'm going to say supposing I dreamed this is going to be Simon's [28:51] dreamed this is going to be Simon's assignment and um within the interface [28:54] assignment and um within the interface of the ticket there's ways for tagging [28:56] of the ticket there's ways for tagging things and grouping them and then [28:58] things and grouping them and then there's also a way of assigning people [29:00] there's also a way of assigning people to manage the uh ticket is that your [29:03] to manage the uh ticket is that your username Simon no I don't think it's [29:06] username Simon no I don't think it's going to let you because I'm not a [29:08] going to let you because I'm not a current participant in this response [29:09] current participant in this response tree that's annoying so okay [29:16] it looks like you have to add people as maintainers so maybe the assigning [29:18] maintainers so maybe the assigning function isn't quite going to work we [29:20] function isn't quite going to work we can assign with comments instead yeah so [29:21] can assign with comments instead yeah so I'm going to say Simon you want to take [29:23] I'm going to say Simon you want to take this one and then here you can see [29:24] this one and then here you can see there's kind of a comment thread that [29:26] there's kind of a comment thread that referrals in the issues where you can [29:28] referrals in the issues where you can have a discussion about what's going on [29:29] have a discussion about what's going on so Simon's going to take that one [29:32] so Simon's going to take that one um let me just call up our chat and we [29:34] um let me just call up our chat and we have 10 folks in the chat I'm just going [29:36] have 10 folks in the chat I'm just going to go through everybody and uh assign [29:39] to go through everybody and uh assign each of you one to manage I won't tag [29:42] each of you one to manage I won't tag you or do whatever we'll just I just [29:43] you or do whatever we'll just I just want to make sure we don't have two [29:44] want to make sure we don't have two people doing the same poem is all right [29:46] people doing the same poem is all right and this is where the software can [29:48] and this is where the software can really be helpful for divvying things up [29:50] really be helpful for divvying things up so that you know people don't end up [29:52] so that you know people don't end up repeating each other's work and so just [29:54] repeating each other's work and so just looking at our class list Ron you're the [29:56] looking at our class list Ron you're the next one on the list [29:58] next one on the list Ron I'm gonna give you nobody wears a [30:01] Ron I'm gonna give you nobody wears a yellow that's ticket number one eight [30:03] yellow that's ticket number one eight two okay [30:06] two okay all right [30:07] all right next on the list is Adrian Adrian I'm [30:10] next on the list is Adrian Adrian I'm gonna give you it is so long since my [30:13] gonna give you it is so long since my heart has been with yours that's ticket [30:15] heart has been with yours that's ticket number one eight three all right [30:25] Archie Archie I'm gonna give you number one eight four which is if within [30:28] one eight four which is if within tonight's erect if within tonight's [30:31] tonight's erect if within tonight's erect goes to arkey at number 184 [30:36] erect goes to arkey at number 184 Jose you're going to get number 185 [30:40] Jose you're going to get number 185 which is I go to this window [30:44] which is I go to this window Arky is number one eight five [30:47] Arky is number one eight five that's Jose Jose's number 185 arky's [30:51] that's Jose Jose's number 185 arky's number one eight four [30:53] number one eight four Michael you're going to be number 186 [30:56] Michael you're going to be number 186 which is touching you I say it being [30:59] which is touching you I say it being spring [31:00] spring being one of the classic words in ee [31:03] being one of the classic words in ee Comics poetry recurs Through The Years [31:05] Comics poetry recurs Through The Years in many many poems touching you I say it [31:08] in many many poems touching you I say it being spring goes to Michael [31:11] being spring goes to Michael Sean you got number one eight seven [31:15] Sean you got number one eight seven that's our touching Hearts slenderly [31:17] that's our touching Hearts slenderly comprehend [31:19] comprehend our touching Hearts slenderly comprehend [31:21] our touching Hearts slenderly comprehend number 187 goes to Sean and then Tom [31:26] number 187 goes to Sean and then Tom I've got you at number 189 with poets [31:30] I've got you at number 189 with poets yegs and thirsties Poets yangs and [31:32] yegs and thirsties Poets yangs and thirsties number 189 goes to Tom okay so [31:36] thirsties number 189 goes to Tom okay so you can go in and you can leave a [31:37] you can go in and you can leave a comment if you just want to mark it but [31:39] comment if you just want to mark it but what I really ask you to do for instance [31:41] what I really ask you to do for instance Tom is to go in here and open these two [31:44] Tom is to go in here and open these two links into two different tabs so that [31:46] links into two different tabs so that you have both the empty file and the uh [31:51] you have both the empty file and the uh the poem you're gonna transcribe I'm [31:52] the poem you're gonna transcribe I'm gonna give myself a poem [31:55] gonna give myself a poem um [31:55] um yes [32:02] I'm going to go with reasoned irrefutable unastered [32:05] irrefutable unastered all right which I hope is not how you [32:07] all right which I hope is not how you feel after this class [32:12] that's going to be assigned to me and just to kind of make the Point tickets [32:14] just to kind of make the Point tickets can be assigned once you're associated [32:16] can be assigned once you're associated with a repository there's kind of a [32:18] with a repository there's kind of a process here for just like tagging [32:19] process here for just like tagging people and sticking them in and now this [32:22] people and sticking them in and now this ticket belongs to me right and there's a [32:24] ticket belongs to me right and there's a whole set of buttons and things to do [32:26] whole set of buttons and things to do all kinds of stuff with issues and to [32:28] all kinds of stuff with issues and to manage them [32:29] manage them all right [32:30] all right so everybody's got their issue [32:37] Okay cool so now we're almost ready to begin work there's just one more piece [32:40] begin work there's just one more piece of jargony software we got to cover [32:41] of jargony software we got to cover which is yaml okay so you yaml y-a-m-l [32:47] which is yaml okay so you yaml y-a-m-l you can see it in the file extension of [32:49] you can see it in the file extension of your poetry file Simon what's yaml [32:59] yaml ain't a mock-up language or very there have been various acronyms over [33:01] there have been various acronyms over time the most recent one is that [33:03] time the most recent one is that right so yaml is it's it's a file format [33:06] right so yaml is it's it's a file format it's an acronym and it's really just a [33:08] it's an acronym and it's really just a data storage language that is used [33:11] data storage language that is used across a lot of different programming [33:12] across a lot of different programming domains in different places just to hold [33:15] domains in different places just to hold data and it's so it's sort of like a [33:17] data and it's so it's sort of like a single row in a spreadsheet is one way [33:19] single row in a spreadsheet is one way to think about a yaml file it can do [33:21] to think about a yaml file it can do more than that but that's one way to [33:22] more than that but that's one way to think about it and each one of these [33:24] think about it and each one of these yaml files contains all the metadata [33:26] yaml files contains all the metadata necessary for an individual poem just to [33:29] necessary for an individual poem just to refer back to the one we were looking at [33:30] refer back to the one we were looking at initially you can see that the title of [33:33] initially you can see that the title of the poem is there the first line of the [33:36] the poem is there the first line of the poem is there which is in an index [33:37] poem is there which is in an index Elsewhere on the site and then most [33:39] Elsewhere on the site and then most importantly the content of the poem is [33:42] importantly the content of the poem is in an attribute called text so the the [33:45] in an attribute called text so the the the value that's before the colon is [33:47] the value that's before the colon is like the name of the column or the name [33:49] like the name of the column or the name of the the the the the key of the value [33:53] of the the the the the key of the value and then following the colon is the [33:55] and then following the colon is the value itself and you can see in our [33:58] value itself and you can see in our documentation that yaml supports you [34:00] documentation that yaml supports you know uh strings numbers and then lists [34:04] know uh strings numbers and then lists and also nested uh objects as well and [34:07] and also nested uh objects as well and so you can kind of use yaml to structure [34:11] so you can kind of use yaml to structure kind of whatever you want right but in [34:13] kind of whatever you want right but in the case of the Cummings ee repository [34:15] the case of the Cummings ee repository it's intended to structure a poem right [34:18] it's intended to structure a poem right so I sort of invented a very simple uh [34:21] so I sort of invented a very simple uh set of metadata for storing those pumps [34:23] set of metadata for storing those pumps and so our mission is going to be to [34:26] and so our mission is going to be to edit the yaml file that you've been [34:28] edit the yaml file that you've been assigned right and mine was [34:32] assigned right and mine was uh this one to add that text attribute [34:35] uh this one to add that text attribute and then to type in the poem all right [34:37] and then to type in the poem all right so [34:38] so let's do it Sean you raised your hand [34:40] let's do it Sean you raised your hand what's up man [34:41] what's up man I was just curious if you could mention [34:43] I was just curious if you could mention what part of your code is parsing the [34:47] what part of your code is parsing the yaml text strings and actually putting [34:50] yaml text strings and actually putting them like turning them into HTML on the [34:53] them like turning them into HTML on the website just for reference later I'd be [34:55] website just for reference later I'd be curious of course so the underscore data [34:58] curious of course so the underscore data folder in a baker project this is [35:00] folder in a baker project this is something particular to Baker right so [35:02] something particular to Baker right so in the baker framework any file that's [35:05] in the baker framework any file that's put into the underscore data folder is [35:08] put into the underscore data folder is parsed by the framework and converted [35:10] parsed by the framework and converted into like an object that then can be put [35:13] into like an object that then can be put onto the page you're making right and [35:16] onto the page you're making right and there's it it's this the baker system [35:18] there's it it's this the baker system uses the node.js programming language [35:20] uses the node.js programming language and so the code that does this is not [35:23] and so the code that does this is not even in our project it's like deep down [35:25] even in our project it's like deep down in the bowels of Baker which is which is [35:27] in the bowels of Baker which is which is itself an open source code repository on [35:30] itself an open source code repository on the LA Times account right deep down [35:32] the LA Times account right deep down within the code of this like toolkit is [35:36] within the code of this like toolkit is something that knows to look in the [35:38] something that knows to look in the underscore data folder and parse all of [35:40] underscore data folder and parse all of the files right and it's smart enough to [35:43] the files right and it's smart enough to parse comma separated files Json files a [35:47] parse comma separated files Json files a couple other formats and yaml and so [35:49] couple other formats and yaml and so basically Baker's set up to try to make [35:51] basically Baker's set up to try to make your life easier right but it sort of [35:53] your life easier right but it sort of assumes certain things to do that and so [35:56] assumes certain things to do that and so it assumes that if you put a file into [35:58] it assumes that if you put a file into the data folder you want it to be parsed [36:00] the data folder you want it to be parsed and you want it to be available to be on [36:02] and you want it to be available to be on the page and then [36:04] the page and then the name of the file is then accessible [36:07] the name of the file is then accessible when you make the template and so like [36:09] when you make the template and so like I'd have to go back in my memory here [36:11] I'd have to go back in my memory here but there's a layouts folder that has [36:14] but there's a layouts folder that has all of the HTML templates and you can [36:16] all of the HTML templates and you can see that there's for instance the book [36:18] see that there's for instance the book detail page which is what corresponds to [36:22] detail page which is what corresponds to this page on the website about is five [36:25] this page on the website about is five and this page about tulips and chimneys [36:27] and this page about tulips and chimneys all four of these pages are made with [36:29] all four of these pages are made with the same template [36:31] the same template and we see here in this template it's [36:33] and we see here in this template it's quite complicated for dumb reasons [36:34] quite complicated for dumb reasons because I'm not very good at coding you [36:36] because I'm not very good at coding you can see that it's using templating tags [36:39] can see that it's using templating tags to kind of print out the title of the [36:41] to kind of print out the title of the book its description and then that table [36:43] book its description and then that table of contents right and so that that data [36:46] of contents right and so that that data is coming from the underscore data [36:48] is coming from the underscore data folder if we look at the poem detail [36:50] folder if we look at the poem detail page [36:51] page which which makes the which takes the [36:53] which which makes the which takes the yamifi makes the poem you can see that [36:56] yamifi makes the poem you can see that here it's using a sort of little bit of [36:58] here it's using a sort of little bit of template code to Loop through each line [37:01] template code to Loop through each line of the poem and print it line by line [37:04] of the poem and print it line by line um it's not just puking the text on the [37:06] um it's not just puking the text on the page because there's some complicated [37:08] page because there's some complicated styles that have to be done to maintain [37:11] styles that have to be done to maintain the Integrity of EE Cummings unusual [37:13] the Integrity of EE Cummings unusual typography [37:15] typography um but basically the stuff you're doing [37:16] um but basically the stuff you're doing is coming out kind of right here right [37:19] is coming out kind of right here right and so the poem text which is that [37:21] and so the poem text which is that attribute that we see in the yaml file [37:23] attribute that we see in the yaml file is being parsed by a custom function [37:26] is being parsed by a custom function that I've written and then each line in [37:28] that I've written and then each line in it is being printed into the template [37:31] it is being printed into the template does that answer your question Sean yeah [37:34] does that answer your question Sean yeah thanks yep and there's a whole world [37:37] thanks yep and there's a whole world here where these line numbers are used [37:38] here where these line numbers are used to manage the custom indentations of EE [37:40] to manage the custom indentations of EE Cummings which is quite a lot of fun [37:43] Cummings which is quite a lot of fun um if you really are into CSS there's [37:45] um if you really are into CSS there's some fun ways to contribute this is part [37:47] some fun ways to contribute this is part of why I did this project uh like for [37:49] of why I did this project uh like for instance this poem is sideways which is [37:52] instance this poem is sideways which is actually how it was intended by EE [37:53] actually how it was intended by EE Cummings and so we had to customize the [37:55] Cummings and so we had to customize the CSS just for this page [37:57] CSS just for this page um my favorite ticket in our issue [37:59] um my favorite ticket in our issue tracker currently is about that poem [38:01] tracker currently is about that poem which is called life hurl my because [38:04] which is called life hurl my because it's actually a question of academic [38:06] it's actually a question of academic dispute about whether the poem should be [38:09] dispute about whether the poem should be rotated clockwise as it was done in the [38:12] rotated clockwise as it was done in the first edition or counterclockwise as it [38:15] first edition or counterclockwise as it was done in George fermage's [38:18] was done in George fermage's um [38:18] um George furman's complete poems [38:21] George furman's complete poems um I currently have this ticket being [38:23] um I currently have this ticket being reviewed by um George Webster who is [38:25] reviewed by um George Webster who is America's leading EE Cummings scholar he [38:28] America's leading EE Cummings scholar he believes that counterclockwise is [38:29] believes that counterclockwise is correct and that because that is how EE [38:32] correct and that because that is how EE Cummings initially intended it in his [38:35] Cummings initially intended it in his personal notes [38:36] personal notes um from the archives Scholars who've [38:38] um from the archives Scholars who've been reviewed he's he's going to scan [38:40] been reviewed he's he's going to scan that for me when he can find he actually [38:42] that for me when he can find he actually has EE Cummings papers uh and so he will [38:45] has EE Cummings papers uh and so he will he will try to scan that for me and we [38:46] he will try to scan that for me and we will resolve the tickets so this is a [38:48] will resolve the tickets so this is a fun ticket that's not about code it's [38:49] fun ticket that's not about code it's about something silly but anyway [38:53] about something silly but anyway what do you guys this is this and then [38:54] what do you guys this is this and then you get philosophical which is like well [38:56] you get philosophical which is like well should our website recreate what the [38:58] should our website recreate what the first edition was [38:59] first edition was Faithfully or should it recreate what EE [39:01] Faithfully or should it recreate what EE Cummings intention was that was later [39:04] Cummings intention was that was later restored by Scholars you know 60 70 [39:06] restored by Scholars you know 60 70 years later right I think the answer [39:09] years later right I think the answer there is it has to expose all the bits [39:11] there is it has to expose all the bits like if there's a poem with many [39:13] like if there's a poem with many different variants the web page can just [39:14] different variants the web page can just keep on scrolling [39:16] keep on scrolling so you would say I should we should [39:18] so you would say I should we should print it uh rotate it both ways I think [39:21] print it uh rotate it both ways I think yeah I think the original way first and [39:23] yeah I think the original way first and then the other way with copious [39:24] then the other way with copious explanations and [39:26] explanations and nitpicking about why why about why these [39:29] nitpicking about why why about why these things are I I think the library of [39:32] things are I I think the library of America tries to go with what the author [39:34] America tries to go with what the author intended [39:36] intended yeah and that's what the scholars tend [39:37] yeah and that's what the scholars tend to like so that so I have right here [39:39] to like so that so I have right here with me uh there's a there's a guy named [39:41] with me uh there's a there's a guy named George fermage and so George furmers is [39:43] George fermage and so George furmers is the guy who put together the what's [39:44] the guy who put together the what's called complete poems which was is done [39:47] called complete poems which was is done by um live right who still exists as a [39:49] by um live right who still exists as a publisher who published the first [39:51] publisher who published the first edition and um and his sort of [39:54] edition and um and his sort of philosophy in putting the book together [39:55] philosophy in putting the book together was to restore Cummings intent right but [39:58] was to restore Cummings intent right but you could do better than that you can [40:00] you could do better than that you can both have it coming and have all of the [40:02] both have it coming and have all of the nitpicky academic debates afterwards I [40:04] nitpicky academic debates afterwards I think that's right I'm kind of I I think [40:06] think that's right I'm kind of I I think we have to have a philosophy for the [40:08] we have to have a philosophy for the site which I have to deal with when I [40:09] site which I have to deal with when I merge things but I think with I kind of [40:11] merge things but I think with I kind of am leaning towards we go with the intent [40:13] am leaning towards we go with the intent once it's resolved and then maybe we [40:15] once it's resolved and then maybe we have a footnote that could link to this [40:17] have a footnote that could link to this ticket or uh I don't know what but it's [40:20] ticket or uh I don't know what but it's it's an interesting question it's an [40:21] it's an interesting question it's an interesting question so that's that's my [40:22] interesting question so that's that's my life as a maintainer uh thank you for [40:25] life as a maintainer uh thank you for indulging me [40:27] indulging me um and so where we left was we had [40:30] um and so where we left was we had Sean's question about the template and [40:32] Sean's question about the template and we got that handled and so I think we're [40:34] we got that handled and so I think we're maybe ready to start actually editing [40:37] maybe ready to start actually editing the code so everybody click that first [40:39] the code so everybody click that first link in your ticket [40:40] link in your ticket and get up [40:42] and get up your kind of file which you're going to [40:44] your kind of file which you're going to edit which should only have the title [40:46] edit which should only have the title and the first line if it has the text [40:48] and the first line if it has the text already I've made a mistake and we need [40:49] already I've made a mistake and we need to find you another one just speak up [40:51] to find you another one just speak up but [40:53] but to kind of get back to what Ron was [40:54] to kind of get back to what Ron was saying earlier I need to get this in my [40:56] saying earlier I need to get this in my other browser hold on [40:59] other browser hold on um the traditional way of doing get get [41:01] um the traditional way of doing get get until the last few years was to make a [41:03] until the last few years was to make a copy of the repository on your computer [41:05] copy of the repository on your computer and to use your terminal to sort of [41:07] and to use your terminal to sort of interact with the file right but now [41:10] interact with the file right but now GitHub has some really powerful tools [41:12] GitHub has some really powerful tools for making these edits directly in your [41:13] for making these edits directly in your browser and since what we're doing is [41:15] browser and since what we're doing is pretty simple we're going to do that and [41:17] pretty simple we're going to do that and get you guys kind of like on the board [41:20] get you guys kind of like on the board um without having to deal with all the [41:21] um without having to deal with all the terminal crap and that really awesome [41:24] terminal crap and that really awesome tool is kind of buried within github's [41:27] tool is kind of buried within github's interface like you might not even know [41:28] interface like you might not even know it's there right and what it is is it's [41:31] it's there right and what it is is it's this pencil tool right here in the right [41:33] this pencil tool right here in the right hand side the upper right of the file [41:35] hand side the upper right of the file viewer you can hit that down arrow I [41:38] viewer you can hit that down arrow I want everybody to hit that down arrow [41:39] want everybody to hit that down arrow and just look at it [41:41] and just look at it and GitHub actually offers two different [41:43] and GitHub actually offers two different ways [41:45] ways to edit your stuff in your browser if [41:46] to edit your stuff in your browser if you pick the first option edit this file [41:48] you pick the first option edit this file you'll get their kind of like Legacy [41:50] you'll get their kind of like Legacy option that they developed a few years [41:52] option that they developed a few years ago which is very nice right and it's [41:55] ago which is very nice right and it's one way to edit the file in the browser [41:56] one way to edit the file in the browser but below that you can see that there's [41:59] but below that you can see that there's a link that says open in github.dev and [42:02] a link that says open in github.dev and this is like the cool new thing that [42:04] this is like the cool new thing that they are going to gradually replace the [42:06] they are going to gradually replace the older stuff with that has a lot more [42:08] older stuff with that has a lot more cool features and things to take [42:10] cool features and things to take advantage of and so I'm going to ask [42:12] advantage of and so I'm going to ask everybody to hit open in [42:15] everybody to hit open in github.dev in that pull down [42:19] github.dev in that pull down Simon you want to explain what this is [42:21] Simon you want to explain what this is yeah this is um so Microsoft have an a [42:25] yeah this is um so Microsoft have an a text editor so you can install your [42:26] text editor so you can install your computer called vs code Visual Studio [42:29] computer called vs code Visual Studio code and it's one of the best pieces of [42:32] code and it's one of the best pieces of software they've released in years it's [42:34] software they've released in years it's completely open source and this is it it [42:37] completely open source and this is it it turns out it's written in JavaScript and [42:39] turns out it's written in JavaScript and it can run in a browser just as well as [42:41] it can run in a browser just as well as it runs on your computer so when you hit [42:42] it runs on your computer so when you hit github.dev they're actually launching [42:45] github.dev they're actually launching effectively the Leading Edge Microsoft [42:48] effectively the Leading Edge Microsoft like code editing environment purely in [42:50] like code editing environment purely in your browser for you to edit files [42:51] your browser for you to edit files directly on GitHub this is a revelation [42:54] directly on GitHub this is a revelation for me like I never thought I would [42:56] for me like I never thought I would spend most more of my time in a browser [42:58] spend most more of my time in a browser writing code than I would doing it on on [43:00] writing code than I would doing it on on like a proper computer but actually no [43:02] like a proper computer but actually no this is it's such a good editor it's so [43:04] this is it's such a good editor it's so convenient you know it's a a click in [43:06] convenient you know it's a a click in the menu to get there but I actually [43:07] the menu to get there but I actually find myself using this for all kinds of [43:09] find myself using this for all kinds of different projects now [43:11] different projects now so yeah this is effectively I think this [43:13] so yeah this is effectively I think this is best to breed um code editing [43:15] is best to breed um code editing experience and it's freely available and [43:18] experience and it's freely available and you just click a button and you browser [43:19] you just click a button and you browser and off you go yeah and you could do [43:21] and off you go yeah and you could do this on a Chromebook or even on your [43:23] this on a Chromebook or even on your phone [43:24] phone um and it makes these tools a lot more [43:26] um and it makes these tools a lot more accessible to people too you don't need [43:27] accessible to people too you don't need a two thousand dollar MacBook you know [43:29] a two thousand dollar MacBook you know which I think is very important [43:31] which I think is very important personally [43:32] personally um [43:34] um um so what I've done is I've opened up [43:36] um so what I've done is I've opened up my poem you should see yours and then in [43:38] my poem you should see yours and then in uh chapter six about editing the code I [43:40] uh chapter six about editing the code I have a little snippet just to get you [43:42] have a little snippet just to get you started and this is just intended to be [43:44] started and this is just intended to be the like shell of where your text [43:46] the like shell of where your text attribute is going to go you'll notice [43:48] attribute is going to go you'll notice that there's this sort of little [43:49] that there's this sort of little configuration bit here on this attribute [43:52] configuration bit here on this attribute that's because unlike the other [43:54] that's because unlike the other um values in our yaml file this is a [43:57] um values in our yaml file this is a multi-line entry right so the poem is [43:59] multi-line entry right so the poem is going to go over more than one line of [44:01] going to go over more than one line of code and this is just one way of telling [44:03] code and this is just one way of telling yaml that that's what's going to happen [44:05] yaml that that's what's going to happen right and then the negative one tells it [44:08] right and then the negative one tells it um each line will have one white space [44:10] um each line will have one white space at the start of it that isn't part of [44:13] at the start of it that isn't part of the column that's just there to let you [44:15] the column that's just there to let you know that this is one kind of Chunk [44:17] know that this is one kind of Chunk right and so you should just paste [44:19] right and so you should just paste something that's like in here and then [44:21] something that's like in here and then below it we just want to start typing [44:23] below it we just want to start typing the poem right and so I'm going to [44:27] the poem right and so I'm going to um [44:28] um I'm going to get to the poem myself but [44:30] I'm going to get to the poem myself but let me grab the link for my ticket so [44:32] let me grab the link for my ticket so back in my ticket I have this other link [44:34] back in my ticket I have this other link right [44:35] right and I can go to [44:37] and I can go to um [44:38] um that page [44:41] that page and what I'm going to do is just do a [44:43] and what I'm going to do is just do a split screen which you know this is [44:44] split screen which you know this is obviously a matter of taste or whatever [44:46] obviously a matter of taste or whatever different people like to do things [44:48] different people like to do things different ways but I'm going to [44:51] different ways but I'm going to um split my screen and I could see here [44:53] um split my screen and I could see here on the right hand side of this page is [44:55] on the right hand side of this page is the poem that I need to type [44:58] the poem that I need to type and so I'm just going to type it in and [45:00] and so I'm just going to type it in and so this is maybe going to take us all [45:01] so this is maybe going to take us all depending on how long your poem is you [45:03] depending on how long your poem is you know five to ten minutes and so I just [45:05] know five to ten minutes and so I just asked everybody to kind of do their best [45:08] asked everybody to kind of do their best to transcribe what they see on the page [45:11] to transcribe what they see on the page okay so I'm just going to shut up for a [45:13] okay so I'm just going to shut up for a minute and do that [45:19] and you go ahead and do yours too if you have any [45:21] if you have any Adrian what's up [45:24] Adrian what's up um just just want to confirm the we are [45:26] um just just want to confirm the we are retyping the first line like because [45:28] retyping the first line like because there's the first line attribute and [45:29] there's the first line attribute and then but in the text where you want the [45:31] then but in the text where you want the first line to start with the first line [45:33] first line to start with the first line that's correct yeah and the first line [45:36] that's correct yeah and the first line attribute is there so that I could make [45:39] attribute is there so that I could make um [45:40] um I can make this page on the website [45:42] I can make this page on the website which is a common type of index for [45:44] which is a common type of index for poetry if you've ever seen it you know [45:46] poetry if you've ever seen it you know yeah I got you just wanted to make sure [45:47] yeah I got you just wanted to make sure yep okay how do I get back to the book [45:51] yep okay how do I get back to the book oh so in your ticket run there's a link [45:54] oh so in your ticket run there's a link the second link in your ticket [45:57] the second link in your ticket um which poem is yours [45:59] um which poem is yours uh yellow ah [46:02] uh yellow ah so for instance uh nobody wears a yellow [46:05] so for instance uh nobody wears a yellow we can see the link is right here [46:07] we can see the link is right here which I'm gonna try to drop in the chat [46:10] which I'm gonna try to drop in the chat and see how I do okay [46:17] so Ron there's your link all right okay I'll just go back to the issue okay [46:19] okay I'll just go back to the issue okay awesome [46:22] awesome all right [46:34] can you tell that when EE Cummings wrote these uh typewriters were the cool new [46:36] these uh typewriters were the cool new thing [46:50] I don't think we would have these poems if they'd never invented the typewriter [46:52] if they'd never invented the typewriter thank you [47:17] and you know obviously the punctuation is inaccurate to uh according to your [47:20] is inaccurate to uh according to your copy desk or your sixth grade English [47:22] copy desk or your sixth grade English teacher but that is intentional on the [47:23] teacher but that is intentional on the poet's part so we should just try to [47:26] poet's part so we should just try to um mirror as closely as we can what he's [47:29] um mirror as closely as we can what he's up to [48:03] still makes me laugh sometimes these were of course many of these were [48:04] these were of course many of these were intended as a gag EE Cummings was a [48:07] intended as a gag EE Cummings was a goofball especially when he was young [48:09] goofball especially when he was young if you're if you don't like the Poetry [48:11] if you're if you don't like the Poetry you might be interested in his Memoir he [48:13] you might be interested in his Memoir he wrote after coming back home from World [48:15] wrote after coming back home from World War one which recently entered the [48:17] War one which recently entered the public domain and has been republished [48:19] public domain and has been republished by the New York Review of Books [48:22] by the New York Review of Books um it's called the enormous room and [48:24] um it's called the enormous room and it's about being a prisoner of war in [48:26] it's about being a prisoner of war in France but he mostly plays it for Laughs [48:30] France but he mostly plays it for Laughs uh and it's sort of a young man sort of [48:33] uh and it's sort of a young man sort of mockingly um [48:35] mockingly um describing his encounter with the [48:38] describing his encounter with the bureaucracy of War [48:50] I have proofed mine twice and I'm somewhat confident in uh my my work [48:54] somewhat confident in uh my my work ultimately all submissions will be [48:56] ultimately all submissions will be proved against the Furbish by yours [48:58] proved against the Furbish by yours truly [49:20] I'm going to give everybody two or three more minutes if you need more time than [49:22] more minutes if you need more time than that it's totally fine just speak up but [49:24] that it's totally fine just speak up but I'm going to say in two or three minutes [49:26] I'm going to say in two or three minutes we'll we'll uh we'll move on [49:28] we'll we'll uh we'll move on I have a couple quick questions yes [49:32] I have a couple quick questions yes um one I was wondering if we all should [49:35] um one I was wondering if we all should be using that like pipe minus one [49:38] be using that like pipe minus one notation or that's particularly just [49:40] notation or that's particularly just your poem that you were doing everyone [49:42] your poem that you were doing everyone should put that in there [49:44] should put that in there um because that's because the pipe tells [49:46] um because that's because the pipe tells the yaml that this will be a multi-line [49:48] the yaml that this will be a multi-line string right that it's going to go oh I [49:50] string right that it's going to go oh I see more than one line of text so it [49:51] see more than one line of text so it knows how to parse it and then the [49:53] knows how to parse it and then the negative one is a configuration option [49:55] negative one is a configuration option that tells that there will be one white [49:57] that tells that there will be one white space at the start of each row right if [50:01] space at the start of each row right if you don't get this perfectly right [50:02] you don't get this perfectly right that's something we would litigate in [50:03] that's something we would litigate in the pull request which we'll see in a [50:05] the pull request which we'll see in a minute right but that's the that's the [50:07] minute right but that's the that's the intent of how I've configured the yaml [50:09] intent of how I've configured the yaml file I admit it's a little Annoying and [50:11] file I admit it's a little Annoying and in that case we should all we should [50:13] in that case we should all we should also have a white space at the beginning [50:15] also have a white space at the beginning of each yes each I should have a single [50:17] of each yes each I should have a single white space and what you'll find in vs [50:19] white space and what you'll find in vs code is that once you start doing that [50:20] code is that once you start doing that every time you hit enter it will do it [50:23] every time you hit enter it will do it for you automatically it's sort of a [50:24] for you automatically it's sort of a smart enough to figure that out [50:26] smart enough to figure that out my other question was [50:30] my other question was um I don't know maybe now that I added [50:31] um I don't know maybe now that I added this it's not doing anymore but [50:33] this it's not doing anymore but originally there was a colon in the poem [50:35] originally there was a colon in the poem and the colon seemed to be telling the [50:38] and the colon seemed to be telling the code editor that I was [50:40] code editor that I was giving some other like yaml yes [50:42] giving some other like yaml yes configuration yeah so colons are kind of [50:45] configuration yeah so colons are kind of reserved for use in parsing the ammo [50:47] reserved for use in parsing the ammo right we see that after each of our guys [50:49] right we see that after each of our guys I think that if you see I have a colon [50:52] I think that if you see I have a colon in my poem here I think that if it [50:54] in my poem here I think that if it follows the pipe and the negative one [50:56] follows the pipe and the negative one it'll chill out and be okay with that [50:58] it'll chill out and be okay with that once I added the white space in front of [51:00] once I added the white space in front of the line then the the text editor [51:03] the line then the the text editor stopped highlighting it so I think that [51:04] stopped highlighting it so I think that it's probably that's exactly what [51:06] it's probably that's exactly what happened I bet right because because you [51:08] happened I bet right because because you know even though this is sort of like [51:09] know even though this is sort of like Arcane and like who knows what this is [51:11] Arcane and like who knows what this is it's sort of giving instructions right [51:13] it's sort of giving instructions right for like this is how you're supposed to [51:15] for like this is how you're supposed to parse me [51:22] hey Ben um quick typographical question that I'm [51:24] um quick typographical question that I'm running into [51:25] running into um now that I realize I do most of my [51:27] um now that I realize I do most of my writing in Google Docs and it it auto [51:29] writing in Google Docs and it it auto corrects the mdash when I do the two [51:31] corrects the mdash when I do the two regular dashes and there are a couple in [51:34] regular dashes and there are a couple in my poem and I actually don't know how to [51:37] my poem and I actually don't know how to do the empty I don't know if this is I [51:38] do the empty I don't know if this is I can Google it I guess really quick but [51:40] can Google it I guess really quick but I'm like kind of like M dashes are [51:42] I'm like kind of like M dashes are tricky famously you know journalists [51:44] tricky famously you know journalists love them you know what am I one of my [51:46] love them you know what am I one of my favorite things [51:47] favorite things um working at the LA Times is like [51:49] um working at the LA Times is like getting to like deal with all the old [51:50] getting to like deal with all the old newspaper technology and I I once found [51:53] newspaper technology and I I once found the coyote computer system the first [51:55] the coyote computer system the first computers that were run at the LA Times [51:57] computers that were run at the LA Times and they had a special key just for [51:59] and they had a special key just for mdashes so that's how much journalists [52:01] mdashes so that's how much journalists love the mdash that's incredible so [52:03] love the mdash that's incredible so there's different ways to do it on [52:04] there's different ways to do it on different operating systems [52:07] different operating systems um you know the easy lazy way is just to [52:09] um you know the easy lazy way is just to Google it and then copy and paste it [52:10] Google it and then copy and paste it yeah that's what I'm gonna do but since [52:12] yeah that's what I'm gonna do but since you've asked you've allowed me to bring [52:13] you've asked you've allowed me to bring up one of my favorite hobby horses you [52:16] up one of my favorite hobby horses you guys may tell that I like stupid weird [52:18] guys may tell that I like stupid weird uh type type things so I think one of [52:22] uh type type things so I think one of the great failures of Simon and the [52:24] the great failures of Simon and the Silicon Valley crowd is that they have [52:27] Silicon Valley crowd is that they have abandoned the compose key so the compose [52:29] abandoned the compose key so the compose key was once a commonly found uh key on [52:33] key was once a commonly found uh key on where the right ALT key is on your [52:34] where the right ALT key is on your computer or in other common locations on [52:37] computer or in other common locations on a keyboard and it was effectively you [52:39] a keyboard and it was effectively you would you would type that and then you [52:41] would you would type that and then you would you'd hit that key and then you [52:42] would you'd hit that key and then you would enter a pattern and it would give [52:44] would enter a pattern and it would give you uh more Arcane characters more [52:46] you uh more Arcane characters more quickly and it used it uses a pneumatic [52:49] quickly and it used it uses a pneumatic device where you would hit compose key [52:52] device where you would hit compose key then say a tick and an A and you would [52:54] then say a tick and an A and you would get the tick over the A and if you did a [52:56] get the tick over the A and if you did a tick and an e you get the tick over the [52:58] tick and an e you get the tick over the E and if you did compose and three [53:01] E and if you did compose and three hyphens you got an mdash right and so [53:05] hyphens you got an mdash right and so one thing that I've done this is another [53:06] one thing that I've done this is another pandemic Splurge is I bought myself a [53:09] pandemic Splurge is I bought myself a custom keyboard and I put a goddamn [53:11] custom keyboard and I put a goddamn compose key on it and Linux actually [53:15] compose key on it and Linux actually supports a compose key so if you're [53:17] supports a compose key so if you're smart if you're wise enough to use Linux [53:20] smart if you're wise enough to use Linux uh The Gnome operating system will [53:22] uh The Gnome operating system will support a compose key and you hold your [53:24] support a compose key and you hold your keyboard up to the web cameras [53:25] keyboard up to the web cameras everything too tight it's going to be [53:27] everything too tight it's going to be filthy but yeah it's in the right alt [53:29] filthy but yeah it's in the right alt position I've got the custom keycap dude [53:33] position I've got the custom keycap dude because the other thing about the [53:34] because the other thing about the compose key is that it has a beautiful [53:36] compose key is that it has a beautiful Unicode symbol that is actually like [53:38] Unicode symbol that is actually like super heavy metal guys like this is the [53:41] super heavy metal guys like this is the symbol of the compose key like how heavy [53:43] symbol of the compose key like how heavy metal is that [53:45] metal is that the circle and square that could be a [53:47] the circle and square that could be a tattoo right and in fact it's a t-shirt [53:50] tattoo right and in fact it's a t-shirt on my Etsy shop [53:52] on my Etsy shop right so if you really want to get into [53:55] right so if you really want to get into that I like on my Etsy page [53:58] that I like on my Etsy page there's a compose key t-shirt so long [54:00] there's a compose key t-shirt so long live the compose key [54:03] live the compose key Silicon Valley you've let us down yet [54:05] Silicon Valley you've let us down yet again [54:07] again anyway I can't find it now it's there [54:11] anyway I can't find it now it's there in that today yeah that would have been [54:14] in that today yeah that would have been that would have been pretty cool I'm on [54:15] that would have been pretty cool I'm on a I'm on Ubuntu so maybe I'll I'll um [54:17] a I'm on Ubuntu so maybe I'll I'll um I'll have it hack it into having my [54:20] I'll have it hack it into having my right right all key I can probably [54:22] right right all key I can probably that's the way to do it I think it's in [54:24] that's the way to do it I think it's in the gnome settings [54:26] the gnome settings are your keyboard settings maybe [54:29] are your keyboard settings maybe compose key right there see it yeah yeah [54:31] compose key right there see it yeah yeah there you go okay [54:33] there you go okay cool cool [54:35] cool cool I learned something new every day [54:38] I learned something new every day thank you for letting me tell that story [54:45] thing I bought during the pandemic is that tool to remove keycaps like this is [54:48] that tool to remove keycaps like this is the special tool that's just for pulling [54:49] the special tool that's just for pulling out keycaps I'm I should not admit this [54:52] out keycaps I'm I should not admit this but I did buy that [54:54] but I did buy that all right so has everybody gotten their [54:57] all right so has everybody gotten their poem in I know some of them are longer [54:58] poem in I know some of them are longer than others [55:00] than others what's that [55:07] I know you love EE Cummings but he's driving my copy editor heart crazy he [55:11] driving my copy editor heart crazy he would have loved that Ron [55:16] especially when he was young he got kind of grumpy when he got old if you ever [55:18] of grumpy when he got old if you ever read about him he was the kind of [55:20] read about him he was the kind of classic modernist really you know these [55:22] classic modernist really you know these are young bright [55:24] are young bright um people who were kind of damaged by [55:26] um people who were kind of damaged by the war and that's what a lot of their [55:28] the war and that's what a lot of their art is about you know Ezra pound or [55:30] art is about you know Ezra pound or Gertrude Stein or Ernest Hemingway would [55:32] Gertrude Stein or Ernest Hemingway would be other examples [55:34] be other examples and uh Cummings is one who unlike a lot [55:37] and uh Cummings is one who unlike a lot of the more liberal Greenwich Village [55:39] of the more liberal Greenwich Village types [55:40] types um became uh anti-communist where many [55:44] um became uh anti-communist where many of them became pro-communist and so the [55:47] of them became pro-communist and so the 1930s for a lot of these uh literary [55:49] 1930s for a lot of these uh literary characters at the time were really a [55:50] characters at the time were really a conflict between Warren camps and their [55:52] conflict between Warren camps and their position toward the Soviet Union [55:54] position toward the Soviet Union Cummings made a trip to the Soviet Union [55:56] Cummings made a trip to the Soviet Union which he also wrote about and became a [55:58] which he also wrote about and became a pretty uh virulent uh anti-soviet [56:02] pretty uh virulent uh anti-soviet uh anyway [56:04] uh anyway foreign [56:06] foreign so we got it in [56:13] love it all right so now that we have it in we have this in the text editor but [56:15] in we have this in the text editor but like how do we get this back into the [56:17] like how do we get this back into the actual repository right and so this is [56:20] actual repository right and so this is where if you're on your terminal you [56:22] where if you're on your terminal you would have to save the file and type [56:23] would have to save the file and type these insane git commands that like tell [56:26] these insane git commands that like tell it how to do that but because github.dev [56:29] it how to do that but because github.dev is so great we can now do that stuff [56:31] is so great we can now do that stuff just by clicking a couple buttons right [56:33] just by clicking a couple buttons right and you can see here on the left hand [56:35] and you can see here on the left hand side of my text editor we have a little [56:39] side of my text editor we have a little icon that kind of looks like a tree [56:41] icon that kind of looks like a tree right or like a branch coming off with [56:43] right or like a branch coming off with dots and lines and it's got a blue [56:45] dots and lines and it's got a blue circle on it right and that's like a [56:47] circle on it right and that's like a little notification thing and this is [56:49] little notification thing and this is the commit dialogue or the source [56:51] the commit dialogue or the source control dialog which allows you to log [56:54] control dialog which allows you to log your changes that you're making to the [56:55] your changes that you're making to the code and so this is another like techie [56:57] code and so this is another like techie concept of code repositories is that [56:59] concept of code repositories is that every time you make a change into the [57:01] every time you make a change into the Version Control System you have to make [57:03] Version Control System you have to make a log entry you have to say I'm going to [57:05] a log entry you have to say I'm going to change these lines of code right and [57:08] change these lines of code right and that's going to be stored as like a [57:09] that's going to be stored as like a little transaction and then then also [57:12] little transaction and then then also you typically will if you're doing a [57:13] you typically will if you're doing a good job you'll provide a description of [57:16] good job you'll provide a description of what you've done and then that [57:17] what you've done and then that description is stored along with the [57:19] description is stored along with the change and that little bundle of [57:21] change and that little bundle of information or that transaction is [57:23] information or that transaction is called a commit or a code commit right [57:26] called a commit or a code commit right and [57:28] and um and so what you typically do is is [57:31] um and so what you typically do is is you after you make a change you then [57:33] you after you make a change you then write a message and then log it with the [57:35] write a message and then log it with the code commit and the way you can do that [57:37] code commit and the way you can do that in vs code or GitHub Dev is by clicking [57:39] in vs code or GitHub Dev is by clicking that little tree button right so you get [57:41] that little tree button right so you get that thing you can see here it even [57:43] that thing you can see here it even provides a list of the changes you've [57:46] provides a list of the changes you've made and if I clicked on it I get What's [57:48] made and if I clicked on it I get What's called the diff right so it's showing [57:49] called the diff right so it's showing here on the left here's what the file [57:51] here on the left here's what the file looked like before you made the change [57:53] looked like before you made the change here's the diff or the change that you [57:55] here's the diff or the change that you made on the right so you can look at [57:57] made on the right so you can look at that it's often a good idea to do this [57:59] that it's often a good idea to do this before you commit because you might [58:00] before you commit because you might accidentally change more than one file I [58:02] accidentally change more than one file I do that like every day right or you [58:04] do that like every day right or you might have changed something made a typo [58:06] might have changed something made a typo that you didn't intend and this can [58:07] that you didn't intend and this can really highlight that change right so I [58:10] really highlight that change right so I see here no I think I I pretty much got [58:12] see here no I think I I pretty much got what I want I'm feeling good about my [58:13] what I want I'm feeling good about my diff [58:14] diff and so then then the final thing to do [58:16] and so then then the final thing to do is to then go to this text box in the [58:18] is to then go to this text box in the upper left and to write that line to [58:22] upper left and to write that line to describe what you were doing right and [58:24] describe what you were doing right and so I'm gonna and like this is always [58:26] so I'm gonna and like this is always this sort of creative challenge like [58:27] this sort of creative challenge like what did I do you know what I mean and [58:29] what did I do you know what I mean and it's a good thought exercise to see if [58:31] it's a good thought exercise to see if you can really summarize it in this case [58:33] you can really summarize it in this case it's really just gonna I'm gonna say I [58:34] it's really just gonna I'm gonna say I entered the name of this poem so I'm [58:36] entered the name of this poem so I'm just going to copy and paste that so I [58:38] just going to copy and paste that so I entered this guy [58:40] entered this guy and that would be enough I think to have [58:43] and that would be enough I think to have a good code commit message but there's [58:44] a good code commit message but there's an extra piece of sugar that you could [58:46] an extra piece of sugar that you could do on GitHub which is you can link your [58:48] do on GitHub which is you can link your code commit to the issue that you're [58:50] code commit to the issue that you're talking about so that those two things [58:52] talking about so that those two things are joined together on the website and [58:55] are joined together on the website and the way you do that [58:57] the way you do that and I'd encourage you all to do this is [59:00] and I'd encourage you all to do this is you then go back to the issue and I [59:01] you then go back to the issue and I almost always have to go back and look [59:03] almost always have to go back and look because I can't remember but if I go [59:05] because I can't remember but if I go back and look I can see reasoned [59:07] back and look I can see reasoned irrefutable unastonished was ticket [59:09] irrefutable unastonished was ticket number 190. do you see that up there [59:12] number 190. do you see that up there so that's the number of my ticket and so [59:15] so that's the number of my ticket and so then over here in the editor I'm going [59:17] then over here in the editor I'm going to say [59:18] to say fixes hash 190 and you see it's even [59:21] fixes hash 190 and you see it's even Auto completing for me right because [59:24] Auto completing for me right because it's connected to GitHub pretty cool [59:25] it's connected to GitHub pretty cool right and so then I'm going to say fixes [59:27] right and so then I'm going to say fixes number 190 fix is this kind of a magic [59:30] number 190 fix is this kind of a magic word [59:31] word which tells GitHub that if this code [59:34] which tells GitHub that if this code commit is accepted into the repository [59:36] commit is accepted into the repository you can close the ticket automatically a [59:39] you can close the ticket automatically a human doesn't even have to go to close [59:40] human doesn't even have to go to close it it'll do it for you it's kind of nice [59:41] it it'll do it for you it's kind of nice right you don't have to you could just [59:43] right you don't have to you could just put the number and that would still make [59:44] put the number and that would still make the link right but I think this will fix [59:47] the link right but I think this will fix the ticket so I'm just going to put [59:48] the ticket so I'm just going to put fixes [59:49] fixes and then so everybody do that put in [59:52] and then so everybody do that put in your description and try to tag your [59:53] your description and try to tag your issue and then hit this blue button [59:56] issue and then hit this blue button commit and push [59:58] commit and push okay then you're going to get this [60:00] okay then you're going to get this pop-up and we're going to wait for a [60:02] pop-up and we're going to wait for a second and then I'll explain what this [60:03] second and then I'll explain what this pop-up is but I'm going to give [60:05] pop-up is but I'm going to give everybody a chance just to write their [60:06] everybody a chance just to write their message and hit the button [60:21] sorry Ben can you just explain how so I've got my my tech uh the yaml file [60:23] I've got my my tech uh the yaml file there so if I how do I find uh how to [60:26] there so if I how do I find uh how to commit it's a little tricky at first [60:28] commit it's a little tricky at first because it's it's part of the odd [60:30] because it's it's part of the odd interface of the text editor but do you [60:32] interface of the text editor but do you see on the left hand side there's a [60:33] see on the left hand side there's a black bar that's up against the edge of [60:35] black bar that's up against the edge of the window [60:36] the window yeah the fourth icon down does it have [60:38] yeah the fourth icon down does it have like a little blue little blue pop-up [60:40] like a little blue little blue pop-up yeah so that click that icon and that's [60:43] yeah so that click that icon and that's that's the source control Tab and so [60:47] that's the source control Tab and so that's a tab within vs code that [60:49] that's a tab within vs code that actually this is what makes vs code so [60:51] actually this is what makes vs code so popular is that the text editor is [60:53] popular is that the text editor is actually integrated with the version [60:54] actually integrated with the version control system for you and so you can [60:57] control system for you and so you can use it to make changes to code without [60:59] use it to make changes to code without having to go into your terminal or to [61:01] having to go into your terminal or to talk to git and GitHub it will do it on [61:03] talk to git and GitHub it will do it on your behalf right and so by clicking [61:06] your behalf right and so by clicking that you then get a new [61:08] that you then get a new um box should open up from the left and [61:11] um box should open up from the left and then in that upper left text box that's [61:13] then in that upper left text box that's where you type your your commit message [61:16] where you type your your commit message and then hit the blue button [61:18] and then hit the blue button yep and you'll get to this pop-up and [61:20] yep and you'll get to this pop-up and then we'll deal with that in a second [61:56] okay I I didn't get to a pop-up I'm just getting kind of a loading [61:59] getting kind of a loading animation I don't know maybe I need to [62:02] animation I don't know maybe I need to when you hit commit and push yeah [62:04] when you hit commit and push yeah you might try clicking it again that's [62:06] you might try clicking it again that's probably a web connection bug would be [62:09] probably a web connection bug would be my guess you know because all this is [62:11] my guess you know because all this is happening over the internet [62:12] happening over the internet I'm I'm getting a similar thing but what [62:15] I'm I'm getting a similar thing but what happened is a little window popped up [62:17] happened is a little window popped up that I'm supposed to type a name of a [62:19] that I'm supposed to type a name of a branch into that's what's going to come [62:21] branch into that's what's going to come next after this so did you already hit [62:22] next after this so did you already hit the fork repository button no I just [62:25] the fork repository button no I just clicked commit and push and it went [62:27] clicked commit and push and it went right to that [62:29] right to that um well for some reason you didn't get [62:31] um well for some reason you didn't get this pop-up but you're on the next step [62:32] this pop-up but you're on the next step and so if you're on the next step you're [62:34] and so if you're on the next step you're okay right so basically just to return [62:37] okay right so basically just to return to kind of one of our initial principles [62:38] to kind of one of our initial principles we can't commit our code directly to my [62:41] we can't commit our code directly to my repository or you can't because you [62:43] repository or you can't because you don't have authority right I can't let [62:45] don't have authority right I can't let anybody change my code and so how do you [62:48] anybody change my code and so how do you get around that well the way GitHub does [62:51] get around that well the way GitHub does does it is it has you create a copy of [62:53] does it is it has you create a copy of my repository that you own and that [62:56] my repository that you own and that you're allowed to do whatever you want [62:58] you're allowed to do whatever you want with right and that's called a fork [63:00] with right and that's called a fork right so a fork is your personal copy of [63:03] right so a fork is your personal copy of somebody else's code and because it's [63:05] somebody else's code and because it's open source you can do whatever you want [63:06] open source you can do whatever you want within certain limits but you can't [63:09] within certain limits but you can't change the website right because it's my [63:10] change the website right because it's my version of the code that's connected to [63:12] version of the code that's connected to the website through a whole other set of [63:13] the website through a whole other set of technology and so the forks are the the [63:17] technology and so the forks are the the sort of um standard GitHub way of [63:20] sort of um standard GitHub way of managing uh making changes to code and [63:24] managing uh making changes to code and then proposing they'd be accepted back [63:25] then proposing they'd be accepted back in the original repository it's just [63:28] in the original repository it's just like a little cycle right you edit the [63:30] like a little cycle right you edit the code you save it in your fork and then [63:32] code you save it in your fork and then the pull request is asking the owner of [63:34] the pull request is asking the owner of the original to accept the change that [63:36] the original to accept the change that lives in your fork right but because [63:39] lives in your fork right but because this is your first commit you don't have [63:41] this is your first commit you don't have a fork yet right and so an initial step [63:44] a fork yet right and so an initial step that GitHub is going to take here is [63:46] that GitHub is going to take here is it's going to say well you're trying to [63:48] it's going to say well you're trying to make changes I'm reading right from the [63:50] make changes I'm reading right from the box now right you're trying to make [63:51] box now right you're trying to make changes to a project you don't have [63:53] changes to a project you don't have right access to AKA you can't write to [63:56] right access to AKA you can't write to the repository right do you want to [63:58] the repository right do you want to create a fork in this project to commit [64:00] create a fork in this project to commit your proposed changes and my answer is [64:02] your proposed changes and my answer is yes so I'm going to hit the blue button [64:04] yes so I'm going to hit the blue button everybody else should hit the blue [64:05] everybody else should hit the blue button too [64:06] button too and then that's going to go about [64:08] and then that's going to go about creating a fork and and this is where it [64:10] creating a fork and and this is where it starts to get a little Arcane but you [64:12] starts to get a little Arcane but you can see at the very top here there's a [64:13] can see at the very top here there's a pop-up box right and it's basically [64:16] pop-up box right and it's basically asking you to create a branch on your [64:18] asking you to create a branch on your fork So within repositories there could [64:21] fork So within repositories there could be different copies of the code that [64:24] be different copies of the code that sort of break off from each other so [64:26] sort of break off from each other so let's say you own the repository and you [64:27] let's say you own the repository and you want to work on a feature but you you [64:30] want to work on a feature but you you don't want to have that go live as [64:31] don't want to have that go live as you're working on it you want to be able [64:33] you're working on it you want to be able to make commits and then after a certain [64:35] to make commits and then after a certain amount of time send that back into the [64:37] amount of time send that back into the main line of code you do that by what's [64:39] main line of code you do that by what's making called a branch right and a [64:42] making called a branch right and a branch is really like a mini Fork it's [64:44] branch is really like a mini Fork it's like a fork that's within the repository [64:46] like a fork that's within the repository right rather than like a whole separate [64:48] right rather than like a whole separate repository and this is a little [64:50] repository and this is a little confusing but basically you know when [64:52] confusing but basically you know when you have right access to a repository [64:54] you have right access to a repository you traditionally create branches [64:57] you traditionally create branches that that you'll then send back for a [65:00] that that you'll then send back for a merge and so github's default behavior [65:02] merge and so github's default behavior is when you make a commit is to say well [65:05] is when you make a commit is to say well you want to branch that off where you [65:06] you want to branch that off where you want to Branch it and they just see that [65:08] want to Branch it and they just see that as sort of a hygienic and kind of [65:10] as sort of a hygienic and kind of professional default setting so that [65:12] professional default setting so that people aren't just like ramming code [65:14] people aren't just like ramming code into their Master Branch without [65:15] into their Master Branch without thinking about it too much right it's a [65:18] thinking about it too much right it's a little Annoying it might not be [65:19] little Annoying it might not be necessary in this case and um but this [65:22] necessary in this case and um but this is how it's set up and so here's the [65:24] is how it's set up and so here's the thing the the reason it's so useful here [65:27] thing the the reason it's so useful here is that a pull request is actually about [65:30] is that a pull request is actually about um the changes in my Branch here are the [65:32] um the changes in my Branch here are the ones that I'm proposing so it is good [65:34] ones that I'm proposing so it is good practice if you're working on lots of [65:36] practice if you're working on lots of different things that will be pull [65:37] different things that will be pull requests you want each of those things [65:39] requests you want each of those things to be in a different branch so yeah it's [65:41] to be in a different branch so yeah it's a bit of a weird esoteric thing but for [65:44] a bit of a weird esoteric thing but for this particular [65:45] this particular um exercise that we're doing here it's [65:46] um exercise that we're doing here it's actually it's a really useful default [65:48] actually it's a really useful default yeah and so some people will get serious [65:50] yeah and so some people will get serious about their Branch names and they might [65:52] about their Branch names and they might put the ticket number in the branch name [65:53] put the ticket number in the branch name or a descriptive thing but in our case [65:55] or a descriptive thing but in our case we're just going to accept the default [65:57] we're just going to accept the default which is patch one because it's your [65:59] which is patch one because it's your first patch another piece of jargon a [66:02] first patch another piece of jargon a patch is really just like code that you [66:03] patch is really just like code that you want to change right here's the change [66:05] want to change right here's the change that's the patch right and so I'm just [66:07] that's the patch right and so I'm just going to click into that box and as the [66:09] going to click into that box and as the instructions say I'm going to hit enter [66:12] instructions say I'm going to hit enter right and then it's going to say hey [66:14] right and then it's going to say hey you've committed changes to your fork do [66:16] you've committed changes to your fork do you want to switch to your fork and [66:18] you want to switch to your fork and continue making changes say yes I want [66:21] continue making changes say yes I want to switch to my Fork [66:23] to switch to my Fork I can't imagine what would happen if you [66:25] I can't imagine what would happen if you said no to that I think things would get [66:27] said no to that I think things would get very confusing yeah and so now we've [66:29] very confusing yeah and so now we've moved over to the editor has now moved [66:32] moved over to the editor has now moved and you can see that the URL if you look [66:34] and you can see that the URL if you look at it carefully is no longer pale wire [66:36] at it carefully is no longer pale wire me slash cummings.e it's first PR [66:40] me slash cummings.e it's first PR cummings.e because that's the name of my [66:42] cummings.e because that's the name of my user and so you're probably going to see [66:44] user and so you're probably going to see your username in this spot in the URL as [66:47] your username in this spot in the URL as well [66:48] well did that work for everyone [66:54] cool so now back on GitHub you have your own copy of the repository that's been [66:56] own copy of the repository that's been created and to make our pull requests we [66:58] created and to make our pull requests we need to go there and interact with it [67:00] need to go there and interact with it and so this is a little clunky as well [67:03] and so this is a little clunky as well but if you hit the menu box in the the [67:05] but if you hit the menu box in the the menu line the three lines at the LA [67:08] menu line the three lines at the LA times we call this the hamburger if you [67:10] times we call this the hamburger if you hit the uh the hamburger icon in the [67:12] hit the uh the hamburger icon in the upper left you can see that there's a [67:14] upper left you can see that there's a link at the bottom called go to [67:15] link at the bottom called go to repository does everybody see that [67:18] repository does everybody see that oh [67:25] go ahead and hit that guy and then in another tab it's just we're going to be [67:27] another tab it's just we're going to be right back at a repo but we'll see in [67:29] right back at a repo but we'll see in the upper left hand corner it's it's got [67:31] the upper left hand corner it's it's got the Little Fork icon and it's first PR [67:34] the Little Fork icon and it's first PR now right and it says below forked from [67:37] now right and it says below forked from pale wire and so this is a copy of [67:40] pale wire and so this is a copy of repository that you now own and have [67:42] repository that you now own and have right access to that contains the branch [67:46] right access to that contains the branch patch one that has your poem right and [67:49] patch one that has your poem right and so in your repo the poem has been [67:51] so in your repo the poem has been entered but since it's not in the [67:53] entered but since it's not in the original Repository [67:55] original Repository it's uh it's not on the site yet and so [67:57] it's uh it's not on the site yet and so this is kind of the final step of your [68:00] this is kind of the final step of your like secular your journey is to then say [68:03] like secular your journey is to then say I'm gonna propose to the maintainer of [68:07] I'm gonna propose to the maintainer of the original repository to accept my [68:10] the original repository to accept my patch as a pull request how about all [68:12] patch as a pull request how about all that jargon right and you can see that [68:15] that jargon right and you can see that GitHub knows this is what people do and [68:18] GitHub knows this is what people do and so they've even put a little pop-up [68:19] so they've even put a little pop-up yellow box at the top where they're [68:21] yellow box at the top where they're saying hey somebody pushed to this patch [68:23] saying hey somebody pushed to this patch just one minute ago [68:25] just one minute ago would you want to compare and make a [68:27] would you want to compare and make a pull request out of that with this big [68:29] pull request out of that with this big green button [68:30] green button it's like that is in fact exactly what I [68:33] it's like that is in fact exactly what I want to do right and there's other [68:34] want to do right and there's other buttons and other ways to do this in the [68:36] buttons and other ways to do this in the interface but they just know this is [68:38] interface but they just know this is really common so they've put this pop-up [68:40] really common so they've put this pop-up there right and so everybody should go [68:42] there right and so everybody should go ahead and click that green button which [68:44] ahead and click that green button which is compare and pull request [68:47] is compare and pull request and then you get to one final form and [68:50] and then you get to one final form and so this is the pull request form this is [68:52] so this is the pull request form this is where you the outside contributor are [68:54] where you the outside contributor are going to propose your changes to the [68:57] going to propose your changes to the maintainer you can see there's a little [68:59] maintainer you can see there's a little pull down here that says the base [69:01] pull down here that says the base repository pailwire slash EE Cummings [69:04] repository pailwire slash EE Cummings and it's Master branch is being kind of [69:06] and it's Master branch is being kind of asked to accept a patch from the head [69:10] asked to accept a patch from the head repository that's you another terrible [69:12] repository that's you another terrible piece of jargon and that repository is [69:14] piece of jargon and that repository is first PR and it's coming from its patch [69:17] first PR and it's coming from its patch one branch right and if I scroll down [69:19] one branch right and if I scroll down the page you'll see there's the diff [69:21] the page you'll see there's the diff right it's going to say this is the [69:22] right it's going to say this is the change that's being proposed to be [69:24] change that's being proposed to be included and in between there's like a [69:26] included and in between there's like a little text box and another space to [69:28] little text box and another space to write and this box is really the place [69:31] write and this box is really the place where you kind of make your case right [69:33] where you kind of make your case right so this is going to go in as a sort of [69:35] so this is going to go in as a sort of ticket for the maintainer with your code [69:38] ticket for the maintainer with your code as a proposal for inclusion and what you [69:41] as a proposal for inclusion and what you put here is really um can vary but you [69:45] put here is really um can vary but you know if you you know if your work if [69:46] know if you you know if your work if you're if you're making your first ever [69:47] you're if you're making your first ever contribution or if you're doing [69:49] contribution or if you're doing something complicated or whatever you [69:51] something complicated or whatever you know you have to realize you have to [69:52] know you have to realize you have to convince the person who runs the [69:54] convince the person who runs the repository to accept your change right [69:56] repository to accept your change right and so this this form is often a place [69:59] and so this this form is often a place where people try to be persuasive you [70:01] where people try to be persuasive you know they'll say hey there's this bug [70:03] know they'll say hey there's this bug you can see the bug in ticket number [70:05] you can see the bug in ticket number whatever and I researched it and I found [70:08] whatever and I researched it and I found out that this was the problem and then I [70:10] out that this was the problem and then I figured out here's how we're going to [70:12] figured out here's how we're going to fix it I made the change to fix it and [70:15] fix it I made the change to fix it and here it is what do you think right and [70:17] here it is what do you think right and so like that type of rhetoric is really [70:19] so like that type of rhetoric is really common and then you'll see it in a [70:21] common and then you'll see it in a second the maintainer's job is to sort [70:23] second the maintainer's job is to sort of review your proposal and try to [70:26] of review your proposal and try to responsibly decide whether to integrate [70:29] responsibly decide whether to integrate your code whether to ask for you to make [70:31] your code whether to ask for you to make some changes to it or whether to reject [70:33] some changes to it or whether to reject your proposal right and these this sort [70:36] your proposal right and these this sort of interaction that happens is often [70:38] of interaction that happens is often done between total strangers [70:40] done between total strangers um on other sides of the planet one of [70:42] um on other sides of the planet one of my favorite things in life is to wake up [70:44] my favorite things in life is to wake up in the morning and like someone in [70:45] in the morning and like someone in Ukraine or Japan and has sent me a pull [70:48] Ukraine or Japan and has sent me a pull request it's just incredible you know [70:51] request it's just incredible you know um [70:51] um and it honestly blows my mind every time [70:54] and it honestly blows my mind every time it happens but um [70:56] it happens but um but that there's there's tens of [70:58] but that there's there's tens of thousands of these little interactions [71:00] thousands of these little interactions happening all around the world every day [71:01] happening all around the world every day via GitHub and so this will be your kind [71:04] via GitHub and so this will be your kind of first shot at that [71:07] of first shot at that um uh because this is something we're [71:09] um uh because this is something we're doing in a controlled environment [71:11] doing in a controlled environment together and the change we're making is [71:13] together and the change we're making is pretty clear I think that just us saying [71:16] pretty clear I think that just us saying explicitly what we're doing which is [71:18] explicitly what we're doing which is entering a poem and tagging the ticket [71:20] entering a poem and tagging the ticket that those two things are probably uh [71:23] that those two things are probably uh kind of good enough to have a good pull [71:25] kind of good enough to have a good pull request here but I think usually I mean [71:27] request here but I think usually I mean Simon is more of a maintainer than I am [71:29] Simon is more of a maintainer than I am usually you're looking for maybe a [71:31] usually you're looking for maybe a little more than that Simon or what do [71:33] little more than that Simon or what do you look for in in with this message I [71:35] you look for in in with this message I mean the big thing is the worst thing [71:37] mean the big thing is the worst thing that can happen is somebody shows up [71:38] that can happen is somebody shows up with a 100 line pull request for [71:40] with a 100 line pull request for something that you didn't know they were [71:41] something that you didn't know they were going to do and that and now you have to [71:43] going to do and that and now you have to read through the account you don't [71:44] read through the account you don't understand the background so the link to [71:46] understand the background so the link to the issue is crucial for me because I [71:48] the issue is crucial for me because I always want things to be discussed in an [71:50] always want things to be discussed in an issue before they get to the point where [71:52] issue before they get to the point where people are submitting code and then [71:53] people are submitting code and then honestly I used to write really long [71:56] honestly I used to write really long descriptions in these until I realized [71:58] descriptions in these until I realized that a better thing to do with that is [71:59] that a better thing to do with that is to have documentation that's in the [72:02] to have documentation that's in the repository which you update as part of [72:03] repository which you update as part of the pull request so for my projects I [72:06] the pull request so for my projects I tend to encourage people to have a pull [72:07] tend to encourage people to have a pull request which has tests and [72:09] request which has tests and documentation and the implementation and [72:11] documentation and the implementation and then you can have a sentence and I don't [72:13] then you can have a sentence and I don't care but for projects that don't have [72:15] care but for projects that don't have documentation or what but you end up [72:17] documentation or what but you end up wanting wanting a bit more detail than [72:19] wanting wanting a bit more detail than that [72:20] that um something which we can demonstrate [72:21] um something which we can demonstrate actually with one of the pull requests I [72:23] actually with one of the pull requests I just filed is that you can file a pull [72:25] just filed is that you can file a pull request and then add your own comments [72:27] request and then add your own comments to it so you can actually get away with [72:29] to it so you can actually get away with a sort of very short initial thing but [72:31] a sort of very short initial thing but then start a conversation in a thread [72:33] then start a conversation in a thread and Link that into the into the into the [72:35] and Link that into the into the into the code itself if you want to to detail [72:37] code itself if you want to to detail more about how you approach something [72:39] more about how you approach something great tips so once you've kind of got [72:42] great tips so once you've kind of got your initial message together you just [72:44] your initial message together you just hit this green button here which says [72:46] hit this green button here which says create pull request and so I would ask [72:48] create pull request and so I would ask everybody to do that [72:51] everybody to do that and you can see that now we're at the [72:53] and you can see that now we're at the page that looks a lot like an issue but [72:56] page that looks a lot like an issue but unlike an issue it has a file change [72:59] unlike an issue it has a file change attached to it right that's the major [73:00] attached to it right that's the major difference that's what makes it the pull [73:02] difference that's what makes it the pull request [73:03] request and you can actually see here at the top [73:05] and you can actually see here at the top of the repository in the pull request [73:07] of the repository in the pull request tab [73:08] tab or if you click there are all the pull [73:10] or if you click there are all the pull requests that have come in and just in [73:12] requests that have come in and just in the last few minutes everybody's pull [73:13] the last few minutes everybody's pull requests are landing right we can see [73:16] requests are landing right we can see there actually were two ongoing [73:17] there actually were two ongoing discussions with uh two of our heroic [73:19] discussions with uh two of our heroic contributors here at the bottom that I [73:21] contributors here at the bottom that I haven't resolved yet and then here's all [73:23] haven't resolved yet and then here's all the transcriptions that we've been doing [73:25] the transcriptions that we've been doing here in class right and if it's one of [73:28] here in class right and if it's one of my two ones they've got a little bit of [73:29] my two ones they've got a little bit of extra commentary in them which might be [73:31] extra commentary in them which might be interesting to see excellent let me find [73:33] interesting to see excellent let me find one here so here's Simon's first one so [73:35] one here so here's Simon's first one so I'm now looking at this as me or you [73:38] I'm now looking at this as me or you know as the first PR user who is [73:39] know as the first PR user who is effectively Simon's peer right like [73:42] effectively Simon's peer right like another outside contributor and so Simon [73:44] another outside contributor and so Simon has done his little comments oh look at [73:46] has done his little comments oh look at that so you want to explain it [73:48] that so you want to explain it uh yes so um I hit the M Dash issue [73:52] uh yes so um I hit the M Dash issue um so I decided to put a comment around [73:54] um so I decided to put a comment around this and then add a little screenshot of [73:57] this and then add a little screenshot of the original so you can see I am as a [73:59] the original so you can see I am as a wind I've got my mdash there in the in [74:01] wind I've got my mdash there in the in the in the in the um origin it looked [74:03] the in the in the um origin it looked like that just so that we can have a [74:04] like that just so that we can have a conversation about whether or not that's [74:06] conversation about whether or not that's the right typographical approach for [74:08] the right typographical approach for rendering this poem yep and in a long [74:10] rendering this poem yep and in a long pull request where a bunch of code gets [74:12] pull request where a bunch of code gets changed you could have multiple threads [74:13] changed you could have multiple threads like this you can talk about this line [74:15] like this you can talk about this line or that line and they can kind of Branch [74:16] or that line and they can kind of Branch off into like a more targeted [74:18] off into like a more targeted discussions so so to someone like my [74:22] discussions so so to someone like my fake user this is a discussion that [74:24] fake user this is a discussion that they're allowed to join right but they [74:26] they're allowed to join right but they don't really have the authority to do [74:28] don't really have the authority to do anything with the code right but if I [74:30] anything with the code right but if I change browser tabs now and I go back to [74:33] change browser tabs now and I go back to the browser tab where I'm me the [74:35] the browser tab where I'm me the maintainer of it [74:36] maintainer of it and I go to that same pull request [74:39] and I go to that same pull request you'll see a slightly different [74:41] you'll see a slightly different interface you'll see at the bottom that [74:43] interface you'll see at the bottom that there's now a big green button that says [74:45] there's now a big green button that says merge pull request and if I hit that it [74:48] merge pull request and if I hit that it will accept Simon's changes into the [74:49] will accept Simon's changes into the Repository [74:51] Repository right but being part of you know one [74:53] right but being part of you know one when I look at it it's the first thing [74:54] when I look at it it's the first thing I'll do I'll read what they have and [74:56] I'll do I'll read what they have and then I hit this tab right here file [74:58] then I hit this tab right here file changed and this will show me the [75:00] changed and this will show me the changes right and so to me as a you know [75:03] changes right and so to me as a you know responsible maintainer I always want to [75:05] responsible maintainer I always want to just carefully walk through the changes [75:07] just carefully walk through the changes make sure I understand everything that's [75:09] make sure I understand everything that's happening and then I'm allowed to make [75:11] happening and then I'm allowed to make comments that are part of a code review [75:13] comments that are part of a code review that can happen through the GitHub [75:15] that can happen through the GitHub interface where I could say well I could [75:17] interface where I could say well I could ask Simon a question why did we do this [75:19] ask Simon a question why did we do this or I could suggest the change what's [75:21] or I could suggest the change what's like that this is okay but what if we we [75:23] like that this is okay but what if we we could save two lines of code if we wrote [75:25] could save two lines of code if we wrote it this other way right or this looks [75:27] it this other way right or this looks like maybe a bug you know and like and [75:30] like maybe a bug you know and like and that that conversation can happen [75:31] that that conversation can happen through this process so in our case here [75:33] through this process so in our case here today whoa my desk is going down [75:40] um my standing desk just rebelled so uh [75:43] my standing desk just rebelled so uh so in my case here today the review for [75:45] so in my case here today the review for this repository is not really code [75:47] this repository is not really code review right it's a text review and so I [75:49] review right it's a text review and so I have firmages first edition and so I'm [75:52] have firmages first edition and so I'm going to go to the index of this and I'm [75:53] going to go to the index of this and I'm going to look up Simon's poem which is [75:55] going to look up Simon's poem which is supposing I dreamed this right which is [75:58] supposing I dreamed this right which is on page 311. [76:01] on page 311. so I'm going to thumb to that and then [76:03] so I'm going to thumb to that and then I'm gonna just proof his key punching [76:06] I'm gonna just proof his key punching against uh what I find in firmages [76:09] against uh what I find in firmages Edition and that also gets us both the [76:12] Edition and that also gets us both the first edition and firmage which is kind [76:14] first edition and firmage which is kind of what I'm going for right [76:15] of what I'm going for right and so um [76:18] and so um should we have a poetry reading uh [76:20] should we have a poetry reading uh supposing I dreamed this only imagine oh [76:23] supposing I dreamed this only imagine oh I see the first thing so we see here [76:26] I see the first thing so we see here this is actually a sort of there's no [76:28] this is actually a sort of there's no way Simon would have known this but in [76:30] way Simon would have known this but in many of the first editions of Cummings [76:32] many of the first editions of Cummings there are spaces put after the commas [76:34] there are spaces put after the commas and the poems but the scholars have [76:36] and the poems but the scholars have found that in his original intention in [76:39] found that in his original intention in his archives he omits those right and so [76:42] his archives he omits those right and so this is a case where there's probably a [76:44] this is a case where there's probably a discrepancy between the first edition [76:45] discrepancy between the first edition and fermage but our policy as a site is [76:48] and fermage but our policy as a site is to exclude those spaces and so this [76:51] to exclude those spaces and so this would be a case where I could make the [76:53] would be a case where I could make the change myself or I could suggest the [76:55] change myself or I could suggest the changed to Simon I think there even is a [76:57] changed to Simon I think there even is a suggestion option right Simon's that's [77:05] directly I think because you're the owner of the repository that's allowed [77:06] owner of the repository that's allowed to I definitely could but I'm gonna do [77:08] to I definitely could but I'm gonna do like the starter review and so now I've [77:10] like the starter review and so now I've just made a kind of suggestion right [77:12] just made a kind of suggestion right that we're gonna change remove that [77:14] that we're gonna change remove that space only imagine when Dave has [77:18] space only imagine when Dave has thrilled day has thrilled I like that [77:19] thrilled day has thrilled I like that you are a house around which I am a wind [77:23] you are a house around which I am a wind your walls will not reckon how strangely [77:26] your walls will not reckon how strangely my life is curved since the best he can [77:28] my life is curved since the best he can do is to peer and then [77:31] do is to peer and then peer through windows on observe this is [77:33] peer through windows on observe this is another case where we want uh to take [77:36] another case where we want uh to take the space out [77:38] the space out and so then I'm going to add another [77:39] and so then I'm going to add another comment there [77:42] comment there right uh through space unobserved m Dash [77:45] right uh through space unobserved m Dash looks good Simon nice [77:47] looks good Simon nice and then here's another one where we [77:49] and then here's another one where we want to take the space out [77:50] want to take the space out add the review comment [77:52] add the review comment listen for out of all things and then [77:55] listen for out of all things and then there's no space after the parenthesis [77:57] there's no space after the parenthesis this is another change [77:59] this is another change right [78:01] right uh dream is no one's fool [78:05] uh dream is no one's fool I love the curly quote there Simon well [78:07] I love the curly quote there Simon well done [78:08] done semicolon [78:10] semicolon if this wind who I am prowls carefully [78:13] if this wind who I am prowls carefully around this house of you [78:16] around this house of you love being so Simon's got there I'm like [78:18] love being so Simon's got there I'm like thumbs up so I can resolve that and say [78:20] thumbs up so I can resolve that and say good job Simon and then that one closes [78:22] good job Simon and then that one closes right [78:23] right love being such and so here we have [78:25] love being such and so here we have another white space thing [78:28] another white space thing so I'm going to hit the suggestion [78:29] so I'm going to hit the suggestion button and just make that little change [78:35] such or such the normal corners of your heart will never guess how much my [78:38] heart will never guess how much my wonderful jealousy is dark if light [78:40] wonderful jealousy is dark if light should flower oh you have a semicolon [78:43] should flower oh you have a semicolon and in firmage it's a colon [78:46] and in firmage it's a colon huh [78:48] huh uh we could look back at the first [78:50] uh we could look back at the first edition I'm not you know it's pretty [78:53] edition I'm not you know it's pretty hard to read that scan sometimes [78:54] hard to read that scan sometimes or laughing Sparkle from the shut house [78:58] or laughing Sparkle from the shut house around and around which a poor wind will [79:02] around and around which a poor wind will roam okay so that's the poem with these [79:04] roam okay so that's the poem with these minor changes I would be okay with [79:06] minor changes I would be okay with including it so I've made my suggestions [79:08] including it so I've made my suggestions to Simon and then I'm going to hit [79:10] to Simon and then I'm going to hit finish review [79:12] finish review and I can hit a button here called [79:13] and I can hit a button here called request changes and so then this is [79:15] request changes and so then this is going to be a volley that I send back to [79:17] going to be a volley that I send back to him the contributor I'm going to say uh [79:20] him the contributor I'm going to say uh you know and then I can send a message [79:21] you know and then I can send a message that will go back to him so I can say [79:23] that will go back to him so I can say contribution looks great generally [79:26] contribution looks great generally and this is where again being polite is [79:28] and this is where again being polite is always uh you know a good approach [79:31] always uh you know a good approach especially if you're dealing with people [79:32] especially if you're dealing with people you don't know contribution looks great [79:34] you don't know contribution looks great generally thank you for doing this you [79:36] generally thank you for doing this you know I'll play acting a little here [79:37] know I'll play acting a little here there are a few and then explaining why [79:40] there are a few and then explaining why I want to make the changes there are a [79:42] I want to make the changes there are a few small inconsistencies [79:45] few small inconsistencies between the first editions spacing and [79:49] between the first editions spacing and what we see in firmages [79:53] what we see in firmages um [79:55] um complete poems [79:57] complete poems which is our authoritative [80:00] which is our authoritative Source I've made those changes here [80:03] Source I've made those changes here those edits here once they're accepted [80:12] um we can merge this request right so that's my little note back to Simon I [80:13] that's my little note back to Simon I have options here to either just send a [80:15] have options here to either just send a general comment to sort of do a thumbs [80:18] general comment to sort of do a thumbs up and approve it because sometimes [80:19] up and approve it because sometimes multiple people approve things before [80:21] multiple people approve things before they go out and then finally there's one [80:23] they go out and then finally there's one that's called request changes which is [80:25] that's called request changes which is maybe the most common where you're [80:26] maybe the most common where you're saying look here's what I want you to do [80:27] saying look here's what I want you to do right and so I hit submit review and [80:30] right and so I hit submit review and that is a code review if you've ever [80:32] that is a code review if you've ever heard that term we just did it and we [80:34] heard that term we just did it and we could see that back on the pull request [80:35] could see that back on the pull request there my comment appears with this code [80:38] there my comment appears with this code form for Simon because I use the [80:41] form for Simon because I use the suggestion panel [80:44] suggestion panel um he's actually able to accept my [80:45] um he's actually able to accept my suggestions with new commits simply by [80:49] suggestions with new commits simply by um hitting the little pull down in these [80:51] um hitting the little pull down in these conversations this is an incredible [80:52] conversations this is an incredible GitHub feature a great example of just [80:55] GitHub feature a great example of just making things easier through user [80:57] making things easier through user interface so Simon I'm just going to go [80:59] interface so Simon I'm just going to go ahead and accept these just to show how [81:00] ahead and accept these just to show how it works [81:03] it works oh [81:08] I've accepted some of them already this might as a suggestion Collision let's [81:09] might as a suggestion Collision let's see what happens [81:13] um I'll do the last two here don't worry about it I'd suggest doing a merged [81:16] about it I'd suggest doing a merged emerge a squash merger on this one [81:18] emerge a squash merger on this one because otherwise we'll end it with a [81:20] because otherwise we'll end it with a ugly set of times yeah that's fine so [81:22] ugly set of times yeah that's fine so we've done this and the changes are [81:24] we've done this and the changes are there and so now if I go back to files [81:26] there and so now if I go back to files changes [81:27] changes and I look we could see that those white [81:29] and I look we could see that those white spaces are gone right they've been fixed [81:32] spaces are gone right they've been fixed I'm feeling good about the poem [81:35] I'm feeling good about the poem could always be something else goes [81:37] could always be something else goes wrong [81:38] wrong but I see the change requested shows up [81:41] but I see the change requested shows up I'm not feeling good about it [81:43] I'm not feeling good about it and so um [81:45] and so um I think there's a way I can then accept [81:46] I think there's a way I can then accept the changes right so like back here I do [81:49] the changes right so like back here I do in the interface I say yep I'm good with [81:51] in the interface I say yep I'm good with it now approve [81:54] it now approve and now you can see my approval shows up [81:56] and now you can see my approval shows up everything's run through and I have this [81:58] everything's run through and I have this big green button to merge the pull [82:00] big green button to merge the pull request uh Simon was saying I should [82:03] request uh Simon was saying I should squash it which basically means combine [82:04] squash it which basically means combine everything into a single commit so that [82:07] everything into a single commit so that all our little changes don't go into the [82:08] all our little changes don't go into the log which is you know [82:10] log which is you know more of a aesthetic thing but I think [82:12] more of a aesthetic thing but I think the correct decision and so I'm just [82:14] the correct decision and so I'm just going to say let's squash it [82:16] going to say let's squash it they all get put together into one uh [82:18] they all get put together into one uh commit message [82:20] commit message and I hit that button [82:23] and I hit that button and now it says you know pale wire [82:24] and now it says you know pale wire merged this commit into master [82:27] merged this commit into master and if we look at the commit log for the [82:30] and if we look at the commit log for the repository which we see right here we [82:33] repository which we see right here we now see in the the most recent commit [82:35] now see in the the most recent commit message is Simon right and so he's now I [82:38] message is Simon right and so he's now I think for the first time an author on [82:40] think for the first time an author on this repository and the change from his [82:42] this repository and the change from his Fork has been integrated into the main [82:45] Fork has been integrated into the main branch [82:46] branch congratulations Simon thank you for [82:48] congratulations Simon thank you for doing it his ticket was number 181 if I [82:52] doing it his ticket was number 181 if I go back to that ticket [82:54] go back to that ticket oh that's the pull work this ticket it [82:56] oh that's the pull work this ticket it should close automatically but sometimes [82:58] should close automatically but sometimes that takes a minute [83:00] that takes a minute um just because GitHub has like a [83:01] um just because GitHub has like a process that has to play out [83:03] process that has to play out um he maybe didn't say fixes in his [83:05] um he maybe didn't say fixes in his message and so I'm just going to go [83:07] message and so I'm just going to go ahead and close this issue manually [83:08] ahead and close this issue manually because that poem has been entered and [83:10] because that poem has been entered and so I think we're good to go right [83:13] so I think we're good to go right um [83:14] um we have on our page now 14 pull requests [83:17] we have on our page now 14 pull requests which is so exciting for me thank you [83:19] which is so exciting for me thank you guys for putting these in this is [83:20] guys for putting these in this is awesome [83:22] awesome um once class is over I'm gonna go [83:24] um once class is over I'm gonna go through and review all of these and get [83:26] through and review all of these and get everybody's poem in by I hope the end of [83:28] everybody's poem in by I hope the end of the day uh if there's any small stuff I [83:30] the day uh if there's any small stuff I might just clean it up myself or you [83:32] might just clean it up myself or you know send it back for commit comments in [83:34] know send it back for commit comments in case anybody has any issues um one final [83:37] case anybody has any issues um one final thing I want to show you is that because [83:39] thing I want to show you is that because of how this repository is set up when [83:41] of how this repository is set up when you make a code commit it automatically [83:43] you make a code commit it automatically republishes the website and that's via [83:46] republishes the website and that's via another great GitHub feature which is [83:49] another great GitHub feature which is called actions and so actions which is [83:51] called actions and so actions which is another tab at the top is effectively a [83:54] another tab at the top is effectively a cloud computing platform dedicated just [83:57] cloud computing platform dedicated just to your repository this is a truly [83:59] to your repository this is a truly incredible feature of GitHub so [84:01] incredible feature of GitHub so basically you're able to take events [84:03] basically you're able to take events that occur within your repository or [84:04] that occur within your repository or schedule tasks that you set up yourself [84:06] schedule tasks that you set up yourself and you're able to run your code in the [84:09] and you're able to run your code in the cloud for free if your site is open [84:13] cloud for free if your site is open source which is just ah it's like the [84:15] source which is just ah it's like the greatest thing going in open source [84:17] greatest thing going in open source software if you ask me and what I've [84:19] software if you ask me and what I've done if you read the the code repository [84:21] done if you read the the code repository is I've configured this repository with [84:24] is I've configured this repository with an action that uses the baker Frameworks [84:27] an action that uses the baker Frameworks tools to republish the website every [84:30] tools to republish the website every time there's a Code commit and so we can [84:32] time there's a Code commit and so we can see here that two minutes ago when we [84:34] see here that two minutes ago when we merged Simon's code it rebuilt and [84:37] merged Simon's code it rebuilt and republished the website and so Simon's [84:39] republished the website and so Simon's poem was [84:40] poem was um [84:41] um supposing I dreamed this right Simon and [84:44] supposing I dreamed this right Simon and so now this is the big drum roll please [84:46] so now this is the big drum roll please if I go to cummings.ee and I go to the [84:49] if I go to cummings.ee and I go to the is five and I go to supposing I dream [84:52] is five and I go to supposing I dream this look it's now a hyperlink right [84:55] this look it's now a hyperlink right when before it wasn't and if I click in [84:57] when before it wasn't and if I click in there's Simon's work now transcribe and [85:00] there's Simon's work now transcribe and available on the web we hope you know [85:03] available on the web we hope you know forever or at least until the end of you [85:06] forever or at least until the end of you know the internet and I'm available in [85:08] know the internet and I'm available in Google search also available [85:10] Google search also available automatically as a CSV or Json output if [85:14] automatically as a CSV or Json output if anybody wants to create an EE Cummings [85:16] anybody wants to create an EE Cummings bot I will work with you I would love to [85:18] bot I will work with you I would love to see that happen but everything is [85:20] see that happen but everything is machine readable on the site my dream is [85:22] machine readable on the site my dream is to do more with that one of my friends [85:24] to do more with that one of my friends has said we just have to name it deep [85:26] has said we just have to name it deep fakes with two Capital E's and I think [85:29] fakes with two Capital E's and I think uh I think well that's my only request [85:34] uh I think well that's my only request um so we'll get everybody else in but [85:35] um so we'll get everybody else in but that's effectively the whole cycle and [85:37] that's effectively the whole cycle and the end of the Spiel you know if you [85:39] the end of the Spiel you know if you were to if you were to enter more than [85:40] were to if you were to enter more than one poem you know you could just repeat [85:42] one poem you know you could just repeat that over and over again to enter each [85:45] that over and over again to enter each poem sometimes people will submit [85:46] poem sometimes people will submit multiple poems at the same time this is [85:49] multiple poems at the same time this is like a a matter of art with pull [85:51] like a a matter of art with pull requests which is do you just do one [85:52] requests which is do you just do one thing or do you try to do multiple [85:54] thing or do you try to do multiple things to save time [85:56] things to save time um I think Simon and I are probably on [85:58] um I think Simon and I are probably on that one thing at a time kind of train [86:00] that one thing at a time kind of train just because that makes the life of the [86:01] just because that makes the life of the maintainer easier and the code is more [86:04] maintainer easier and the code is more easily kind of managed but honestly [86:06] easily kind of managed but honestly that's all a matter of kind of art you [86:08] that's all a matter of kind of art you know what I mean and approach so I mean [86:11] know what I mean and approach so I mean with that we've really reached the end [86:14] with that we've really reached the end of the tutorial and and what you need to [86:16] of the tutorial and and what you need to see on my screen but I'd like to leave [86:18] see on my screen but I'd like to leave some time now just to um answer your [86:20] some time now just to um answer your questions and just have a uh you know [86:22] questions and just have a uh you know talk about anything you want to talk [86:24] talk about anything you want to talk about related to pull requests or open [86:26] about related to pull requests or open source software or GitHub or modernist [86:29] source software or GitHub or modernist poetry if you want to continue to [86:31] poetry if you want to continue to indulge me [86:32] indulge me so [86:33] so what do you guys want to know [86:35] what do you guys want to know got a quick question I was curious so [86:38] got a quick question I was curious so when I was doing my poem [86:40] when I was doing my poem for this specific [86:43] for this specific against I couldn't read some [86:44] against I couldn't read some because of the the scam yeah so is there [86:48] because of the the scam yeah so is there like I don't know sort of a standardized [86:49] like I don't know sort of a standardized way or something for me to bring that to [86:52] way or something for me to bring that to you in this case your attention that [86:55] you in this case your attention that look I'm trying to submit something I [86:56] look I'm trying to submit something I know isn't done or right but it's most [86:59] know isn't done or right but it's most of the work [87:01] of the work um so this is uh with the example we [87:04] um so this is uh with the example we showed with my pull request this is I [87:05] showed with my pull request this is I like using the comments on lines feature [87:07] like using the comments on lines feature so you can put in the poem submit the [87:10] so you can put in the poem submit the pull request and then you can add your [87:12] pull request and then you can add your own comments to the pull request saying [87:13] own comments to the pull request saying these three lines here I don't think are [87:15] these three lines here I don't think are quite right so I did that by adding in a [87:18] quite right so I did that by adding in a little screenshot you don't even need to [87:19] little screenshot you don't even need to do that and yeah that's um something [87:21] do that and yeah that's um something that I think is really important is it's [87:23] that I think is really important is it's okay to talk to yourself in GitHub [87:25] okay to talk to yourself in GitHub issues and GitHub bull requests I have a [87:27] issues and GitHub bull requests I have a lot of repositories with issue threads [87:29] lot of repositories with issue threads with dozens of comments they're all just [87:31] with dozens of comments they're all just me talking back and forth and recording [87:33] me talking back and forth and recording the decisions I was making and asking [87:35] the decisions I was making and asking myself questions that I resolved later [87:36] myself questions that I resolved later on that these things are free there's no [87:38] on that these things are free there's no size limits on them there's no there's [87:40] size limits on them there's no there's no reason not to add information and [87:42] no reason not to add information and questions like that and I think raising [87:44] questions like that and I think raising it as a discussion item is definitely [87:45] it as a discussion item is definitely the way to go you know because it you [87:48] the way to go you know because it you know who knows who's maintaining the [87:50] know who knows who's maintaining the repo and if you don't know them you can [87:52] repo and if you don't know them you can get differing results but I think most [87:54] get differing results but I think most maintainers want people to be [87:55] maintainers want people to be transparent to like ask their questions [87:57] transparent to like ask their questions and just to like raise problems most [88:00] and just to like raise problems most people that's what most maintainers want [88:02] people that's what most maintainers want obviously there are jerks on the [88:04] obviously there are jerks on the internet you know what I mean and so it [88:06] internet you know what I mean and so it happens every once in a while you will [88:08] happens every once in a while you will have what we call nerd tosterone yeah [88:11] have what we call nerd tosterone yeah before I work that'll come up in these [88:13] before I work that'll come up in these conversations but I think you should err [88:15] conversations but I think you should err on the side of just clear communication [88:16] on the side of just clear communication and so like in the case of this repo I [88:18] and so like in the case of this repo I would want just like what Simon proposed [88:20] would want just like what Simon proposed or even somebody just filing an issue [88:22] or even somebody just filing an issue like honestly I am fine with people [88:24] like honestly I am fine with people filing issues that are just questions [88:25] filing issues that are just questions like what do I do and then we just have [88:27] like what do I do and then we just have the conversation and the issue it can [88:29] the conversation and the issue it can almost be like a helpline because I [88:31] almost be like a helpline because I would rather have that conversation than [88:32] would rather have that conversation than the person not contribute you know [88:35] the person not contribute you know um and I want to know about the problems [88:36] um and I want to know about the problems in this case the particular thingy thing [88:39] in this case the particular thingy thing is we already have a policy which is we [88:41] is we already have a policy which is we go to the firmage right and that's based [88:43] go to the firmage right and that's based on my reporting where basically I [88:45] on my reporting where basically I developed a little Cadre of ee coming [88:47] developed a little Cadre of ee coming Scholars who I interviewed and I got [88:49] Scholars who I interviewed and I got their advice and they were like if it's [88:51] their advice and they were like if it's ever weird just use the firmage and so [88:53] ever weird just use the firmage and so that's kind of our policy and there [88:55] that's kind of our policy and there actually is a file in the repo called [88:57] actually is a file in the repo called the contributing file which you'll see [88:59] the contributing file which you'll see on a lot of repos where I've kind of [89:00] on a lot of repos where I've kind of laid out the rules of the repo I didn't [89:03] laid out the rules of the repo I didn't show that today but in there you can [89:05] show that today but in there you can find the explanation of the yaml the [89:07] find the explanation of the yaml the links to the first position and some [89:10] links to the first position and some answers to kind of an FAQ about issues [89:12] answers to kind of an FAQ about issues like this and in there it just says we [89:14] like this and in there it just says we go to the firmage which has its own [89:17] go to the firmage which has its own problems but it's you know better than [89:19] problems but it's you know better than not knowing we could always go back to [89:20] not knowing we could always go back to the library and just like look at it [89:22] the library and just like look at it [Laughter] [89:25] [Laughter] but they actually have more than one [89:27] but they actually have more than one first edition at Central Library they've [89:29] first edition at Central Library they've been rebound by the library about 50 [89:31] been rebound by the library about 50 years ago [89:32] years ago prior to the fire so they survived the [89:34] prior to the fire so they survived the fire [89:39] um which there's a whole book about Susan Orleans wrote called the library [89:41] Susan Orleans wrote called the library book it's about the LA Library fire [89:43] book it's about the LA Library fire excellent book [89:44] excellent book and the history of Los Angeles as well [89:48] and the history of Los Angeles as well um do you mind if I just ask a [89:50] um do you mind if I just ask a clarifying question there so in terms of [89:52] clarifying question there so in terms of like Simon your workflow there where [89:54] like Simon your workflow there where you're saying your commenting so if I'm [89:56] you're saying your commenting so if I'm on [89:57] on where my pull request is in GitHub [90:00] where my pull request is in GitHub I've just got this Branch there's no [90:02] I've just got this Branch there's no conflicts with Brett based branch and [90:04] conflicts with Brett based branch and then I've got the option to leave [90:05] then I've got the option to leave comment below is that where you're [90:06] comment below is that where you're having that conversation or are you [90:08] having that conversation or are you opening up [90:10] opening up the two places I'll have I'll often if [90:13] the two places I'll have I'll often if that's an issue I tend to prefer using [90:16] that's an issue I tend to prefer using the issue for the comments once I've [90:18] the issue for the comments once I've opened a pull request I'll use comments [90:19] opened a pull request I'll use comments on the pull request and I just find that [90:21] on the pull request and I just find that they're both places where people see you [90:23] they're both places where people see you can add comments to individual commits [90:26] can add comments to individual commits but I don't feel like that sounds good a [90:28] but I don't feel like that sounds good a place just because people can miss them [90:30] place just because people can miss them there like this everyone involved in the [90:32] there like this everyone involved in the repository is going to be reading [90:34] repository is going to be reading everything on the issues and everything [90:35] everything on the issues and everything on the pull request that's the safest [90:36] on the pull request that's the safest place to put this stuff [90:52] um Ben I couldn't help but um notice you you mentioned this is actually kind of [90:53] you mentioned this is actually kind of like more of a baker related question [90:55] like more of a baker related question um I was playing around with your um [90:58] um I was playing around with your um first visual story [91:00] first visual story um setup [91:01] um setup um and it was really really well done [91:02] um and it was really really well done and I was actually trying to hack it to [91:05] and I was actually trying to hack it to redesign like my personal site because I [91:07] redesign like my personal site because I know it's mainly made to be just like a [91:09] know it's mainly made to be just like a one-page kind of thing but I I'm [91:11] one-page kind of thing but I I'm assuming in Baker you're able to like [91:14] assuming in Baker you're able to like make a somewhat more not super robust [91:17] make a somewhat more not super robust website but something that has a couple [91:18] website but something that has a couple of you know oh you have different pages [91:21] of you know oh you have different pages um is that something that's appropriate [91:23] um is that something that's appropriate because I never know I've never this is [91:25] because I never know I've never this is I've never actually submitted a pull [91:26] I've never actually submitted a pull request to an open source [91:28] request to an open source um project and I know obviously [91:29] um project and I know obviously different maintainers have their [91:30] different maintainers have their different kind of like General like uh [91:33] different kind of like General like uh what's accepted and what's not uh from [91:35] what's accepted and what's not uh from what you said is like is submitting just [91:37] what you said is like is submitting just kind of an issue even though it's not an [91:39] kind of an issue even though it's not an issue but just like hey is there a Best [91:40] issue but just like hey is there a Best practice of how to make a website [91:43] practice of how to make a website because I want to know from my users [91:45] because I want to know from my users what the problem is and so if they want [91:46] what the problem is and so if they want to email me that's fine if they want to [91:48] to email me that's fine if they want to file an issue that's fine because I I [91:50] file an issue that's fine because I I often think it's better if it's an issue [91:52] often think it's better if it's an issue because then future other people could [91:53] because then future other people could Google it and see a conversation totally [91:56] Google it and see a conversation totally sounds like in this case it may be like [91:57] sounds like in this case it may be like a documentation bug you know what I mean [91:59] a documentation bug you know what I mean there might be a way to strengthen the [92:01] there might be a way to strengthen the documentation so to answer the question [92:03] documentation so to answer the question basically every HTML file you make in [92:06] basically every HTML file you make in the baker project will be served and so [92:08] the baker project will be served and so you could just make a file called [92:09] you could just make a file called foo.html and then there'd be slash Foo [92:12] foo.html and then there'd be slash Foo on your site and so you can add hoc make [92:16] on your site and so you can add hoc make as many pages as you want which may not [92:18] as many pages as you want which may not be documented well enough now that I [92:20] be documented well enough now that I think about it right it was really much [92:21] think about it right it was really much more like I like like connecting them [92:23] more like I like like connecting them kind of before because like my and it's [92:25] kind of before because like my and it's really just my lack of general I'm not [92:27] really just my lack of general I'm not not a web developer kind of thing but it [92:29] not a web developer kind of thing but it was a desire of mine because I was like [92:31] was a desire of mine because I was like oh I really like this framework because [92:32] oh I really like this framework because you know I really was originally using [92:35] you know I really was originally using um looking at some of the other ones and [92:36] um looking at some of the other ones and I was kind of like oh wow this is really [92:37] I was kind of like oh wow this is really cool so [92:39] cool so um yeah the feature I'd point you to [92:40] um yeah the feature I'd point you to that's really powerful is you can [92:42] that's really powerful is you can dynamically generate pages right that [92:44] dynamically generate pages right that was that was kind of my Hope was that [92:46] was that was kind of my Hope was that like for like a Blog that I might have [92:47] like for like a Blog that I might have on my personal site exactly it would [92:49] on my personal site exactly it would dynamically generate so for instance [92:51] dynamically generate so for instance Baker does the LA Times coronavirus [92:53] Baker does the LA Times coronavirus tracker which has a page for each of [92:55] tracker which has a page for each of California's 58 counties but there's [92:57] California's 58 counties but there's only one template right and then there's [92:59] only one template right and then there's there's a little bit of JavaScript [93:01] there's a little bit of JavaScript that's in the configuration file that [93:03] that's in the configuration file that tells it to to generate one for each um [93:06] tells it to to generate one for each um one for each County that I think is [93:08] one for each County that I think is better documented but yeah sure could be [93:10] better documented but yeah sure could be improved so if you really wanted to be [93:11] improved so if you really wanted to be like the a plus plus student that the [93:14] like the a plus plus student that the maintainers love [93:15] maintainers love is if you figured it out you would [93:17] is if you figured it out you would submit the readme edit that like that's [93:19] submit the readme edit that like that's missing like if you if you really want [93:22] missing like if you if you really want to make friends like that stuff like [93:23] to make friends like that stuff like that people love I do yeah all the time [93:25] that people love I do yeah all the time typos anytime you see a typo in any [93:28] typos anytime you see a typo in any documentation you can submit a pull [93:29] documentation you can submit a pull request but also I love adding examples [93:32] request but also I love adding examples because everyone who writes [93:33] because everyone who writes documentation always forgets that people [93:35] documentation always forgets that people just want to see an example of the thing [93:37] just want to see an example of the thing yeah if you find something's missing [93:39] yeah if you find something's missing example you submit an example there's a [93:40] example you submit an example there's a good chance it'll be accepted [93:42] good chance it'll be accepted yeah and you might not hear back from [93:44] yeah and you might not hear back from them for months who knows if they're [93:45] them for months who knows if they're paying attention or whatever but it's [93:46] paying attention or whatever but it's still it's a nice thing to do [93:49] still it's a nice thing to do totally [93:55] I think you just commented on a question that that I had as tied to this because [93:57] that that I had as tied to this because you guys said that you know one pull [93:59] you guys said that you know one pull request at a time is uh you know better [94:02] request at a time is uh you know better handleable or whatever but so if I did [94:04] handleable or whatever but so if I did if I was looking at the doctor reading [94:05] if I was looking at the doctor reading documentation or something and I saw a [94:07] documentation or something and I saw a typo like how small of a thing is worthy [94:11] typo like how small of a thing is worthy of a pulled requester [94:18] totally worth it I I accept pull requests like that all the time I love [94:19] requests like that all the time I love them and I do those too just being a [94:21] them and I do those too just being a news person you get kind of uptight [94:22] news person you get kind of uptight about that stuff you know what I mean [94:24] about that stuff you know what I mean and so like if if honestly we just went [94:26] and so like if if honestly we just went through the class right we just went [94:28] through the class right we just went through that class so that class we just [94:30] through that class so that class we just did is a repo on GitHub right and so did [94:33] did is a repo on GitHub right and so did you guys spot any typos I'm sure they're [94:35] you guys spot any typos I'm sure they're in there did anybody you know if you saw [94:37] in there did anybody you know if you saw one we could do a pull request right now [94:39] one we could do a pull request right now I would you know or if like did I get a [94:41] I would you know or if like did I get a link wrong you know I'm sure I screwed [94:43] link wrong you know I'm sure I screwed something up I think I was I wrote that [94:45] something up I think I was I wrote that with three beers on Wednesday night so [94:47] with three beers on Wednesday night so like I'm sure something is wrong right [94:49] like I'm sure something is wrong right and uh [94:51] and uh um and so that would be a case where [94:53] um and so that would be a case where yeah I've actually had people do that on [94:55] yeah I've actually had people do that on other classes and I really appreciate it [94:57] other classes and I really appreciate it you know I think it's great [94:59] you know I think it's great sometimes it's embarrassing to see all [95:01] sometimes it's embarrassing to see all your typos but you get over that [95:07] thanks yeah I'd misspelled persuasive I saw that [95:09] I'd misspelled persuasive I saw that this morning [95:11] this morning duh [95:19] you could write a bot that just found typos on GitHub couldn't you [95:21] typos on GitHub couldn't you people have done it [95:23] people have done it yeah [95:25] yeah I actually I there are companies that do [95:28] I actually I there are companies that do bots that like run the automatic [95:30] bots that like run the automatic analysis and then spam repos with pull [95:32] analysis and then spam repos with pull requests suggesting fixes and they tend [95:34] requests suggesting fixes and they tend to get bams like people they're they're [95:37] to get bams like people they're they're limits to what people will put out if it [95:39] limits to what people will put out if it was a security flaw that's one thing but [95:41] was a security flaw that's one thing but like yeah [95:53] um then I have to have to bounce in a bit but um I um just wanted to ask you [95:56] bit but um I um just wanted to ask you so you're you're going to be at night [95:57] so you're you're going to be at night car next year yes I will be in Nashville [95:59] car next year yes I will be in Nashville that's what we were talking about [96:00] that's what we were talking about earlier so folks who don't know our data [96:03] earlier so folks who don't know our data journalism World which is kind of where [96:04] journalism World which is kind of where I was nurtured and uh brought into [96:07] I was nurtured and uh brought into adulthood uh uh allegedly [96:11] adulthood uh uh allegedly um is uh has an annual conference which [96:13] um is uh has an annual conference which is called the night car conference and [96:14] is called the night car conference and it's in a different city every year and [96:16] it's in a different city every year and so it's it's where the data journalists [96:17] so it's it's where the data journalists of the world kind of convene classes [96:19] of the world kind of convene classes like this it's what I love about it is [96:21] like this it's what I love about it is it's really a Hands-On event it's a [96:24] it's really a Hands-On event it's a place where people teach each other code [96:25] place where people teach each other code and teach each other data analysis and [96:28] and teach each other data analysis and teach each other how to file public [96:30] teach each other how to file public records requests for valuable government [96:32] records requests for valuable government databases and like all this kind of the [96:34] databases and like all this kind of the place where journalism and Technology [96:36] place where journalism and Technology meets is at this conference and it's [96:37] meets is at this conference and it's really focused on skills building and so [96:41] really focused on skills building and so um I have a little dog and pony show of [96:43] um I have a little dog and pony show of these kind of first classes where I have [96:45] these kind of first classes where I have five or six of them and and so we'll do [96:47] five or six of them and and so we'll do a couple at night car we're going to do [96:49] a couple at night car we're going to do the the one I do the most which is [96:51] the the one I do the most which is called first python notebook which is [96:53] called first python notebook which is really teaching people data analysis [96:55] really teaching people data analysis with the Jupiter notebook which Simon [96:56] with the Jupiter notebook which Simon has helped with in the past [96:58] has helped with in the past and um [96:59] and um and I want to do first visual story but [97:01] and I want to do first visual story but I haven't heard back yet but um um you [97:04] I haven't heard back yet but um um you know we have a few other ones there's [97:05] know we have a few other ones there's one so if you go to my website which is [97:07] one so if you go to my website which is palewire [97:08] palewire um you can find them in the [97:09] um you can find them in the documentation page uh there's ones for [97:11] documentation page uh there's ones for GitHub actions and uh uh Django admin [97:15] GitHub actions and uh uh Django admin panels and a couple other things [97:21] um yeah I'm bummed I'm gonna be in a wedding in India and I'm gonna miss oh [97:23] wedding in India and I'm gonna miss oh wow um yeah wedding in India though yes [97:25] wow um yeah wedding in India though yes you can't miss that you're very excited [97:27] you can't miss that you're very excited it's incredible yeah I'm very excited it [97:30] it's incredible yeah I'm very excited it happens to be like the literal weekend [97:31] happens to be like the literal weekend that it's that it's happening so which [97:34] that it's that it's happening so which city whereabouts in India it's going to [97:36] city whereabouts in India it's going to be in Agra [97:37] be in Agra um which of course has the the Taj Mahal [97:39] um which of course has the the Taj Mahal but some friends and I are going to be [97:41] but some friends and I are going to be hanging around um in Delhi beforehand [97:43] hanging around um in Delhi beforehand and yeah we're making a whole making a [97:45] and yeah we're making a whole making a whole ordeal out of it one of my first [97:46] whole ordeal out of it one of my first friends from college to kind of get [97:49] friends from college to kind of get hitched so [97:50] hitched so um oh that's awesome I've never been to [97:52] um oh that's awesome I've never been to India but I've always wanted to go I'm [97:54] India but I've always wanted to go I'm so tempted to just you know bring my [97:56] so tempted to just you know bring my computer and join virtually but my worst [97:59] computer and join virtually but my worst demons you know I'm gonna lift that up [98:01] demons you know I'm gonna lift that up they're all the other years but if you [98:03] they're all the other years but if you you said you've never been in Nashville [98:04] you said you've never been in Nashville like uh this isn't related to this class [98:06] like uh this isn't related to this class at all but you gotta you gotta try the [98:08] at all but you gotta you gotta try the hot chicken if you're uh if you're a um [98:10] hot chicken if you're uh if you're a um a spicy food it's definitely taken over [98:12] a spicy food it's definitely taken over Los Angeles it's colonized Our Fair yeah [98:15] Los Angeles it's colonized Our Fair yeah yeah I should get the real thing right [98:17] yeah I should get the real thing right no I mean if you get the off authentic [98:19] no I mean if you get the off authentic one I I mean I'm not a spicy food person [98:21] one I I mean I'm not a spicy food person but it really it was it was a different [98:24] but it really it was it was a different dimension that's the hot ones kind of [98:26] dimension that's the hot ones kind of special almost you get that whole [98:27] special almost you get that whole experience yeah I gotta do that you're [98:29] experience yeah I gotta do that you're right I got it that's going on the list [98:32] right I got it that's going on the list um but yeah Simon Ben thank you so much [98:33] um but yeah Simon Ben thank you so much I I always appreciate uh both of you [98:36] I I always appreciate uh both of you guys putting these these things on and [98:37] guys putting these these things on and they're super helpful and uh so yeah [98:39] they're super helpful and uh so yeah thank you for coming [98:41] thank you for coming thank you I'm glad I'm glad it's helpful [98:42] thank you I'm glad I'm glad it's helpful totally all right have a good day guys [98:45] totally all right have a good day guys yep you too [98:47] yep you too um anything else folks want to talk [98:48] um anything else folks want to talk about no pressure or anything but you [98:51] about no pressure or anything but you know my wife's out of town I got nothing [98:52] know my wife's out of town I got nothing to do [98:54] to do did I just confirm what actually [98:56] did I just confirm what actually happened with in terms of so I had a [98:59] happened with in terms of so I had a fork of your repo are the main changes [99:03] fork of your repo are the main changes to that my Fork yes and then what kind [99:07] to that my Fork yes and then what kind of I just get in my head around what [99:08] of I just get in my head around what actually happened when I'm creating that [99:11] actually happened when I'm creating that pool request and what goes what kind of [99:14] pool request and what goes what kind of happens there if that makes sense to [99:16] happens there if that makes sense to then [99:17] then for it then to turn up in the original [99:19] for it then to turn up in the original repo I'm just trying to get my head [99:21] repo I'm just trying to get my head around no I understand that does that [99:23] around no I understand that does that make sense so I don't know if I'm [99:24] make sense so I don't know if I'm explaining myself [99:27] explaining myself thank you [99:32] so if I mean I guess one way to think about [99:33] I mean I guess one way to think about this is nothing changes at all until the [99:37] this is nothing changes at all until the pull request is approved you know you've [99:39] pull request is approved you know you've got your changes in your in your [99:40] got your changes in your in your repository your the pull request is [99:42] repository your the pull request is almost a sort of transient sort of um [99:45] almost a sort of transient sort of um it's you've started that conversation [99:46] it's you've started that conversation you've said said to Ben here are the [99:48] you've said said to Ben here are the changes I would like to make [99:50] changes I would like to make um [99:51] um and nothing will happen then we can have [99:53] and nothing will happen then we can have a conversation around this thing and so [99:54] a conversation around this thing and so forth but until he hits that big green [99:56] forth but until he hits that big green button there are no changes made to your [99:58] button there are no changes made to your repository or to his repository when he [100:00] repository or to his repository when he hits the green button his repository [100:02] hits the green button his repository gets updated again your repository stays [100:04] gets updated again your repository stays alone and you could leave it there for [100:05] alone and you could leave it there for the rest of the time and it'll sit there [100:07] the rest of the time and it'll sit there as a sort of [100:08] as a sort of Frozen version of the thing that you [100:10] Frozen version of the thing that you were working on [100:11] were working on um but so really the um the Magic Moment [100:13] um but so really the um the Magic Moment is the it's the merge it's when those [100:15] is the it's the merge it's when those changes that you've suggested emerged [100:17] changes that you've suggested emerged into into Ben's repository that um and [100:19] into into Ben's repository that um and and added and published the website yeah [100:22] and added and published the website yeah and so I've shared my screen again so I [100:23] and so I've shared my screen again so I think this is one you entered right and [100:26] think this is one you entered right and so we could see that this green [100:27] so we could see that this green highlighted thing that's the patch that [100:30] highlighted thing that's the patch that you're nominating for inclusion and so [100:33] you're nominating for inclusion and so what closes the circle is that is sent [100:35] what closes the circle is that is sent back across to the original right and [100:37] back across to the original right and then I'm asked to merge it into mine and [100:40] then I'm asked to merge it into mine and so basically your changes would be [100:43] so basically your changes would be integrated right and so before so GitHub [100:46] integrated right and so before so GitHub is really the reason it's worth so much [100:48] is really the reason it's worth so much money and it's done so well is it just [100:50] money and it's done so well is it just makes like buttons and forms to make [100:52] makes like buttons and forms to make that easier right right but underneath [100:54] that easier right right but underneath the hood if I put a dot diff at the end [100:58] the hood if I put a dot diff at the end of the URL we see actually the code that [101:01] of the URL we see actually the code that goes to the computer and so this is the [101:03] goes to the computer and so this is the patch or what used to be called the the [101:05] patch or what used to be called the the diff for GitHub and things like GitHub [101:08] diff for GitHub and things like GitHub this this was all done over email you'd [101:10] this this was all done over email you'd have a mailing list and people would be [101:12] have a mailing list and people would be emailing each other literally these [101:14] emailing each other literally these decks would be sent via email and it was [101:17] decks would be sent via email and it was horrible it was such a difficult process [101:20] horrible it was such a difficult process for everyone involved because you have [101:22] for everyone involved because you have to manage your email inbox and apply [101:24] to manage your email inbox and apply these changes one by one and review them [101:25] these changes one by one and review them locally and so forth and GitHub made all [101:27] locally and so forth and GitHub made all of that so much smoother like the amount [101:30] of that so much smoother like the amount of value it added to open source in [101:32] of value it added to open source in general just for making the stuff not be [101:35] general just for making the stuff not be a horrifically like painful email-based [101:37] a horrifically like painful email-based process was enormous [101:39] process was enormous yeah [101:40] yeah the shoe so I think it's just because I [101:43] the shoe so I think it's just because I suppose I'm thinking of just using the [101:44] suppose I'm thinking of just using the command line and when you do that the [101:46] command line and when you do that the process is a little bit different so [101:47] process is a little bit different so from what I've seen here kind of [101:50] from what I've seen here kind of there's a bit of magic going on there so [101:52] there's a bit of magic going on there so I'm just trying to get my head around [101:53] I'm just trying to get my head around how that kind of how would relate to [101:55] how that kind of how would relate to maybe [101:56] maybe if I had my own Fork locally so if the [101:59] if I had my own Fork locally so if the changes landline the way that tends to [102:02] changes landline the way that tends to work is that it's you you do it all on [102:04] work is that it's you you do it all on your own computer you make your [102:05] your own computer you make your strangers but then you push them to [102:06] strangers but then you push them to GitHub and then you go and click the [102:08] GitHub and then you go and click the buttons on the web interface as well so [102:10] buttons on the web interface as well so once you get to the pull request bit [102:12] once you get to the pull request bit that's where you're sort of moving away [102:13] that's where you're sort of moving away from what you're doing the command line [102:14] from what you're doing the command line and moving into the things that you [102:16] and moving into the things that you exclusively go and get about there [102:17] exclusively go and get about there that's right and so I think like support [102:19] that's right and so I think like support and the so the pull request really is a [102:22] and the so the pull request really is a GitHub thing not a git thing you know [102:24] GitHub thing not a git thing you know what I mean when you really like get [102:25] what I mean when you really like get into it it's kind of like a branded [102:27] into it it's kind of like a branded thing that they invented yeah you know [102:29] thing that they invented yeah you know and it's terrible name okay it is I I [102:33] and it's terrible name okay it is I I still don't know why they called it a [102:34] still don't know why they called it a pull request but it's it's a it's been a [102:37] pull request but it's it's a it's been a revelation in in software um just [102:39] revelation in in software um just generally like the amount of [102:40] generally like the amount of productivity it's unlocked if it was [102:43] productivity it's unlocked if it was called a merge request I think I would [102:45] called a merge request I think I would be happier but like it might make sense [102:46] be happier but like it might make sense yeah my like rant on Version Control is [102:49] yeah my like rant on Version Control is it's just the number of mixed metaphors [102:51] it's just the number of mixed metaphors in Version Control is just incredible [102:53] in Version Control is just incredible like is it a tree like is it a mass [102:56] like is it a tree like is it a mass master and a slave is it uh you know [103:00] master and a slave is it uh you know what I mean is it you know what is a [103:02] what I mean is it you know what is a pull and a push like how do those how do [103:04] pull and a push like how do those how do you pull the tree you know it's like [103:07] you pull the tree you know it's like yeah and they they used to call the the [103:10] yeah and they they used to call the the main or Master Branch the trunk do you [103:12] main or Master Branch the trunk do you remember which is why it's called a [103:14] remember which is why it's called a branch right [103:15] branch right but then they stop calling it the trunk [103:17] but then they stop calling it the trunk and see like oh why are we still calling [103:20] and see like oh why are we still calling it a branch and like it's the whole [103:22] it a branch and like it's the whole thing is a mess like they just need to [103:24] thing is a mess like they just need to pick one metaphor and make it work but [103:26] pick one metaphor and make it work but that'll never happen of course because [103:27] that'll never happen of course because it's open source software so we're just [103:30] it's open source software so we're just lucky it's not full of like misogynist [103:32] lucky it's not full of like misogynist jokes or something but well the [103:34] jokes or something but well the misogynist checks have been filtered out [103:36] misogynist checks have been filtered out over time over time yeah exactly it took [103:38] over time over time yeah exactly it took it it only took 30 years so [103:42] it it only took 30 years so um the get the the default branch and [103:43] um the get the the default branch and get was called Master until a couple of [103:45] get was called Master until a couple of years ago and it was a huge like [103:48] years ago and it was a huge like industry-wide effort to switch that [103:50] industry-wide effort to switch that default to be called main instead [103:52] default to be called main instead um which was and it worked to be I think [103:55] um which was and it worked to be I think it's really impressive but it's it's [103:57] it's really impressive but it's it's it's right but if you look at my [103:59] it's right but if you look at my Cummings repo it's still the master [104:00] Cummings repo it's still the master Branch because I made it before that [104:02] Branch because I made it before that whole change happened and like I haven't [104:04] whole change happened and like I haven't spent the 30 minutes it would take to [104:06] spent the 30 minutes it would take to make that change which I probably should [104:08] make that change which I probably should do it's just like one of those things I [104:10] do it's just like one of those things I haven't got to you know [104:12] haven't got to you know is there a way to [104:15] is there a way to update my Fork [104:18] update my Fork to match the master again or do I have [104:21] to match the master again or do I have to great question [104:22] to great question there is that's called fetching Upstream [104:26] there is that's called fetching Upstream so this is another metaphor it's a river [104:28] so this is another metaphor it's a river metaphor right which is that your code [104:32] metaphor right which is that your code is is uh Downstream of the the trunk [104:37] is is uh Downstream of the the trunk right and so when changes are being made [104:41] right and so when changes are being made to what you forked from you might want [104:42] to what you forked from you might want to catch up at some point right and so [104:45] to catch up at some point right and so that's that scene is going to the [104:47] that's that scene is going to the Upstream origin right and so there's a [104:50] Upstream origin right and so there's a so in github's language they call that [104:52] so in github's language they call that fetching upstream and you can do it from [104:55] fetching upstream and you can do it from the command line by by like with a [104:57] the command line by by like with a couple command line tricks but then [104:59] couple command line tricks but then there's also a way to I have to look it [105:02] there's also a way to I have to look it up every single time I do it I've been [105:04] up every single time I do it I've been doing this stuff for like 15 years I [105:06] doing this stuff for like 15 years I can't remember how to fetch from [105:07] can't remember how to fetch from Upstream when I have to go and Google [105:08] Upstream when I have to go and Google for it every single time [105:10] for it every single time it is a pain and so GitHub interface you [105:12] it is a pain and so GitHub interface you can see my screen [105:13] can see my screen they have a little button here for this [105:15] they have a little button here for this which is uh sync Fork [105:19] which is uh sync Fork right and that'll let you do that and [105:22] right and that'll let you do that and then there's this this also this is the [105:23] then there's this this also this is the pull request button that isn't the [105:25] pull request button that isn't the pop-up and so they kind of hide that [105:27] pop-up and so they kind of hide that stuff in here [105:31] and so like a cycle would be let's say I want to contribute like something later [105:33] want to contribute like something later is I would go back to my main branch I [105:36] is I would go back to my main branch I would fetch Upstream to make sure I've [105:37] would fetch Upstream to make sure I've caught up I would then make a new Branch [105:39] caught up I would then make a new Branch where my new SEC pull request number two [105:41] where my new SEC pull request number two is going to go and then I would submit [105:43] is going to go and then I would submit that right the only time you have an [105:46] that right the only time you have an issue there is like well if your changes [105:48] issue there is like well if your changes conflict with something that's Upstream [105:49] conflict with something that's Upstream let's say in the in the in between [105:51] let's say in the in the in between period right you've edited a file that [105:54] period right you've edited a file that changed Upstream right and then when you [105:56] changed Upstream right and then when you fetch you get the most infamous hell of [106:00] fetch you get the most infamous hell of git which is a merge conflict which is [106:02] git which is a merge conflict which is well you change something that somebody [106:03] well you change something that somebody else changed and which one do we keep [106:05] else changed and which one do we keep right and there's like a whole process [106:07] right and there's like a whole process for dealing with that and slaying your [106:10] for dealing with that and slaying your first like conflict message is like part [106:12] first like conflict message is like part of your um your rite of passage is like [106:16] of your um your rite of passage is like a as a computer programmer [106:26] it's a river metaphor and then why is it called origin [106:28] called origin that's just like CIS admin talk right [106:39] anyway other questions [106:50] all right well thanks again everybody I really appreciate your contributions [106:52] really appreciate your contributions um I'm gonna go get something to eat my [106:54] um I'm gonna go get something to eat my wife's out of town so I'm thinking Ramen [106:56] wife's out of town so I'm thinking Ramen and uh and um and then I'm gonna take [107:00] and uh and um and then I'm gonna take our video and try to post it on YouTube [107:02] our video and try to post it on YouTube get all your pull requests in and I'll [107:05] get all your pull requests in and I'll probably send an email to kind of [107:06] probably send an email to kind of everybody who expressed interest so [107:08] everybody who expressed interest so people who couldn't make it today can [107:10] people who couldn't make it today can um you know maybe contribute a poem or [107:12] um you know maybe contribute a poem or watch it at their Leisure we'll see but [107:15] watch it at their Leisure we'll see but um I really appreciate you guys showing [107:16] um I really appreciate you guys showing up I really really personally appreciate [107:18] up I really really personally appreciate you helping with my little pet project I [107:21] you helping with my little pet project I hope it also helped you at the same time [107:24] hope it also helped you at the same time um my hope is is that by the end of the [107:25] um my hope is is that by the end of the month we'll have the whole book in [107:28] month we'll have the whole book in um so that's it Simon any parting words [107:35] um yeah that I mean the main thing is this stuff is really really convoluted [107:37] this stuff is really really convoluted but the um the stuff that we've shown [107:40] but the um the stuff that we've shown you on GitHub specifically the um that [107:42] you on GitHub specifically the um that that github.dev thing is such a huge [107:45] that github.dev thing is such a huge leap forward in making this stuff [107:46] leap forward in making this stuff actually Pleasant to use so I I'm really [107:49] actually Pleasant to use so I I'm really excited about it I think it it does make [107:51] excited about it I think it it does make this stuff a heck of a lot less painful [107:53] this stuff a heck of a lot less painful for people to get involved with mm-hmm [107:56] for people to get involved with mm-hmm all right so I'll see you guys on GitHub [107:59] all right so I'll see you guys on GitHub thank you Ben thank you Simon that was [108:01] thank you Ben thank you Simon that was awesome have a great weekend very much