Well, it's that time of the week again. It's time for chitchat across the pond. This is episode number 755 for December 10th, 2020. Oh 2022 and I'm your host Allison Sheridan. This week our guest is Bart Bouchotte's back with programming by stealth number 142. What's up today, Bart? Oh It's been quite a while here. I've been having so much fun trying not to kill myself in the frost, but so far so good I'm still here. I Almost had to put on a long-sleeve shirt. So yeah, I'm suffering too. Oh Oh, woogums. We were I was delighted today that it crossed zero So that meant that the ice got to go away. I literally saw people in down jackets You know, uh, tuks It was winter winter hats and uggs and I was walking the dog in shorts and a t-shirt I was chilly. I'm not gonna lie, but really uggs Yeah, I got made fun of because I was wearing shorts to work this week But I had like really good leg warmers underneath the shorts. So but yeah, we do have shorts on I was like, yeah But my legs are really warm Well, we aren't this week in weather we're gonna have to kick in it looks like we're gonna it's an exciting week I think it is so we are kicking off the official project to migrate The pearl xk pass wd module, which I'm not going to say its name Because it's too difficult to say to a javascript module, which I'm going to call xk pass wd j s I can say that Yeah, I thought you might like that and uh, initially I I'd called it hs for haystacks because initially my thinking was to combine um Steve gibson's idea of basically repeating the same character over and over again to give you length for free With the concept of xk cd style wordy passwords And in reality the only presets I ever ended up using were ones that didn't repeat things because most Sorry, a lot of really naive password managers are like, oh, you're repeating something your password must be insecure and they stop you Oh, okay. So the repetition thing doesn't work. So actually Why bother pretending the haystacks are there? No, this is purely inspired by xk pass wd So let's let's just like I guess the long the long part could have come from haystacks, but it was just too hard to say hs xk Those those four letters just don't work together. So Uh, you know, this makes me really happy. So it's xk pass wd j s Yeah, yeah, that's what I've decided on. So yeah, I feel like we should have balloons. It's launching the project is launching Yay So I guess the biggest part of the project launching means that the gate repository exists That's probably the biggest thing and I've also put quite a bit of work into an initial read me which has helped me sort of structure How I want to put the project together Um, so you can bookmark this. This is the genuine repository Um, and then the project is going to evolve in three phases So phase one is where I'm going to build out a project skeleton And to be honest simply creating the repository and this initial read me is part of that building out the skeleton Um, so while we're in the skeleton phase It's going to be basically me arranging all the furniture and preparing for the party effectively preparing to host guests Um, so the big outcomes that need to be done before I'm before I consider the skeleton phase finished Is that the uml class diagram has to be completed because that is going to be our bible For phase two which I'll describe in a sec Um, I also need to have ready to go when I open the doors contribution guides for the developers because if you want The last thing you want to do is to start building up technical debt From the start. I mean it is going to happen, but let's have that happen as far in the future as possible So don't don't bring it into the house first Really exactly don't walk in with your dirty shoes into a clean house That's at least I keep it clean for a while So I want to have the various guides ready for developers Outlining the code style. I'll get branching policies our style guides for git commit Basically figure out exactly how we'd like to run the project and try to try to have it all documented in the in a friendly obvious Easy to follow way So because I want people to do things Right But not because I'm an evil, you know school marm But because it's just I've made it easy and I'm just asking people to please Be nice and it should just work. So that's sort of I want to make it as easy as possible for Just to flow naturally that we do things right I'm going to give you an analogy that that really says why this is such a great idea in the olden days in the Before christ was born. I used to draw Do drafting with a pencil or sometimes a pen on mylar and you know on a big old drafting board and and one of the We eventually migrated over to using the computer and that was very exciting that we had 2d cad at the time But an effort was begun to create standard notes So there were notes on die on on your parts that would say like bond per hb 8-5 That's the one I always remember was was that's what you always bonded two parts together with That was the the bonding material it was the spec for it and what they wanted was it to always be written exactly that way They wanted standard notes and a lot of people You know kind of got annoyed like I've always written it this way because I'm 100 years old and I don't ever want to change My ways and I looked at it as like I really could care less about that That's the last thing I just want to be able to go bond and it goes Okay, which one this one click and it spits out the note for me So having a structure, I think just freeze you up to do other stuff where you don't have to wonder Oh, does Bart like, you know, does Bart like spaces or tabs? You know, what am I going to need to do here? And by the way, you can teach your if you're using visual studio code At least you can tell it when you save it converts it to the way the style guide says So I can put two two spaces in and it'll make it tabs if that's what you want or vice versa I think yeah, that's that's an helmet tells me anyway Oh no, well, we're going to be using js lint So it's going to be a js lint config file in the project So your editor if it's js lint aware will pick that up automatically And it means that if you're using it any of the the modern editors, it should just work Right, but it fixes it for you. You don't have to sit there You know getting yelled at all the time and fixing these little errors Exactly exactly. Yeah Like vs code will certainly just say oh, okay That's what they want in this project and you'll type away doing what you want and vs code will have your back And it will do whatever the spec says. Yeah, so right and in theory in the big picture We don't care. We want it all just to be consistent and Now you say we in some of these sentences and I suspect that it's mostly I as in bart Will be making these rules, uh, but perhaps with a uh an appeals process I will absolutely you have 51 of the vote, right? I guess I'll do a mark zuckerburg on it and say that I have the magic extra share Ew, you know my my old boss bart always said it's a democracy, but I have 51 of the vote Okay, we'll go with that then. Um, but no, I'm completely open to you know Any sensible argument will always find a near with me Uh, but if your argument is because I have an emotional reason I want to do it this way you Less likely to succeed Right, right, but if it's practical and it solves some problems and that's that's a conversation at least to be had But I think again, that's just as important as this whole standard notes kind of thing I was talking about was you have to have somebody who has 51 of the vote. Otherwise it nothing gets done I believe the the common phrase has been evident dictator in the software world the linus torviles in the linux kernel There's one guy who led Was a python for ages a dutch guy who then retired and caused chaos it's A lot of successful projects have a person who has a who has an idea If he was in the driving seat, but it's still an open source thing with a lot happening And I'll be honest. I've a lot invested in this code. This this is my baby. So it's kind of sure sure Do let me ask you, uh, does it get down to things like, uh, british spelling versus us spelling? Because I'm actually okay with british spelling. I caught myself. I actually typed customized today with an s instead of a z You've really infected me Well, you're just giving me an idea that actually does need to go into the saga and it will be american spelling because It will because programming apis Are in american So if you don't use american for your variable names Then depending on whether it's a variable name that's come from an api You're just gonna have inconsistencies, right? If you start saying color with a u some of the time and then you use a third party module or something Which has to feel the way you're just going to break yourself Okay, okay, so it will actually be american. Um But in the documentation, you know in the read me's and such The interesting thing about okay Basically because all the because everything in coding is in american english I actually think go with the flow rather than, you know Well, I'm Irish therefore. I insist you do it this way. No, I go with the path of least resistance Okay, well, there's a good example of a discussion. Well, no this one solves the problem Whether you have an emotional attachment to the u in color I mean, it doesn't matter. I kind of prefer it, but that's not the point I would like the record to show that I have completely adopted companies are Our plurals collections of people. Yeah. Yeah, I've just changed it I'm just I'm just not doing it the american way anymore. I've just moved on But but I'm probably going to stick with my z's and my zeds Your z's yeah, I don't know whether we call them z's or z's, but I'm terribly inconsistent with them these days Because I forget which is which I don't know which I'm supposed to do I don't know which side of the Atlantic I'm supposed to be on on that one Um, I have taken your sulfur by the way I think that was a fair exchange that we say aluminium, but we'll spell sulfur the same way Wait, how do you spell sulfur? Well, I when I grew up there was a ph in there I there isn't oh, yeah, you're right Huh? I believe there was some sort of an agreement That we would spell an aluminium the european way everyone in the world like the IEEE or someone got together And as a swap sulfur was done the american way See, I think we I think we say we spell sulfur s u l p h u r Maybe it's you or versus you or but it's also it's both. Oh, no it is it's both. Oh, that's awful I never even noticed that before Oh, well, I I definitely threw you off the rails here Okay, so going back so outcomes for the skeleton phase. So the uml diagram, which is going to be the bible for phase two The contribution guides so that we're all singing off the same hemsheet from day one The configuration files for all of the build wait describe the contribution guides. What's listed in that? things like um so stuff like You know the the git policy which at the moment they show the the notes call it a branching policy But I've just realized that there's no branching because we're doing pull requests So it's just a git policy Which we will get to actually today because I've already written the bones of that Um, so it's actually in today's show notes. Well today's discussion Um and sort of style guides for for the git commits So again, a lot of this stuff is actually already written down below. So we'll get to it. Um, and I am certainly open to pointing at the gaps Because I don't know what I don't I don't know what I'm not saying that I should be saying So I'm definitely very open to being told well actually I have a question that you don't answer So that's that's very good feedback at you at this stage Okay, the other thing that has to be in place is the configuration file So we know our toolkit because we spent the last year learning it all So we know we're going to be using webpack. We know we're going to be using js lint We know we're going to be using js duck. We know we're going to be using jest So before we start actually writing the code those config files should be ready so that from day one From the very first moment that one function exists. We should be able to test it document it It should all work so that we're not worried about the plumbing Basically you lay the foundation and then you build the house So are you going to have to do all of that yourself too? Well, yeah, because I think that's important to get it sort of all set up right so basically that It will be an empty structure But it will be a structure ready to be filled in Oh Okay, no, but I mean You talk about the configuration files. So you're going to have to write the configuration files You're going to have to create the uml class diagrams. You're going to have to write the contribution guides Yes, so this is all still the skeleton phase, right? Um, and then the last thing I want to have ready to go is the automation scripts to basically go, you know npm run build And it wasn't out the world's boringest build You know a big pile of emptiness, but it should all be ready Right and should all be ready to go and at that stage then We move on to stage two Which is will the will the build come up with a failed test suite? Um, because it's supposed to fail day one, right? I Imagine it will it'll certainly fail some of its tests. Um, probably all of them in fact. Yeah, that's what it's supposed to do Right? It's supposed to start by failing Yeah, I may leave it with an empty class in which case it'll pass the first test class exists and then fail everything else Okay, but yeah, I mean yes. Yes, it's the short answer So at that stage when we have a skeleton What will be added around that skeleton then is going to be a direct port So we have the uml diagram So we're going to implement it and we're not going to add new bells or new whistles. We're going to make xk pass wd Work So with the same feature set it has now in pearl we're going to make it work feature for feature Bring it across And I know people are going to have all sorts of ideas for ways to make it better Which is great because what I'll also be opening up is the um The various features in github for tracking feature requests and stuff So we can already start to think about how to make it better But we're not going to actually make it better until we have a working port And at that stage sure 80 percent sure Let's make a little dollar bet here one dollar one dollar whether any enhancements are are included and I just can't see us Keep doing okay. I won't take the bet of zero, but I will take the bet of a small n Right, we don't want to get distracted because it needs to actually get to the point where it works before I wanted to get there soon Because the real problem here is that the the website is currently running on an ancient pearl version Right, right one of these days That is going to fall over the heap Yeah, right that version of we're racing the sands of time We really are racing obsolescence Yeah, so I really do want the direct port. So and now when you say direct port though Is this is this just pearl to javascript? It isn't the website Correct. It's just the mod is this entire repository is just the module So when this repository is done this repository will have two children It will have one for a new command line version that will probably be slow to arrive and one for a new web interface So those two projects will have as dependencies this one So they will say they will have as one of their dependencies this project So you know the way with npm you can specify your dependencies like you would bring in No j s or something We will be bringing into the web interface the xk pass of library s module exactly Yeah This is where I I'm sure I'm going to struggle is is for me Programming by stealth got more real when I could see it Yeah, I could see things happening. You know, I changed the code here. Whoops that button is lined up against the left side It's supposed to be on the right. I can see what's wrong. All right. I pressed the button and it got the wrong answer But it but it was visual and so this is going to be all Not visual Well, nothing will be Yes, I'm to know because There is going to be example code because no documentation is complete with that example code So the example code is going to have to exist in some sort of a shape something out on the screen Yeah So it may be a very it may be a very simple interface where they go a button that says go and an output as opposed to 20 million controls for setting all the different options, but it has to be something to Okay, good to show it working right Give me. Oh, yeah, they're definitely those and the other thing of course There's nothing to stop you at any point in time making a project in your git account That says one of my dependencies is xkpass wdjs and you can make the world's fanciest gooey and work away to your heart's content Well, and in the future, that's what people can do too That's the point. In fact, that is the hope Right, right desire right because the whole point of making this an open source library is that people do use it So if you have a website and you want to give people a button to say make me a default password Well, why not make some of these nice default passwords? Why why make them all suck? Or it'll be impossible to type or say over the phone and you know because that's the big thing Oh, we've set you a temporary password uppercase s lowercase j exclamation point 22 It's horrible to say over the phone versus if I just you know give you a few words and tell you that all is separated by dashes That's actually way more secure and I can say it over the phone People love getting passwords over the phone for me because I use xkpassable d style passwords That's the only way I do it. That's really secure and I was able to write it down. It's like, yeah, that was Here's how I did it. Now. I told Bart In text that I was a little worried that we were being Another thing we're racing is whether pass keys are going to be available everywhere on the internet before we're done And so he said, oh, that means we have infinite time, Alison All right and pass keys Think about it this way Did The gooey kill the command line No Will vior kill the gooey Which didn't kill the command line no So pass keys are going to become a part of the mix But pass words are going to be a part of our mix in all sorts of different places because what's your fallback going to be What are you going to like it can't be pass keys all the way down They can provide us an awful lot of Convenient security in an awful lot of places, but it's never going to be pass keys all the way down because even if your pass keys are in one password What's going to protect your pass keys? a password Yeah, the most important password to create in xk pass wd is your one password password Agreed agreed. Um, yeah that in your apple id because you have to type that all the time Yeah, people see me typing my one password and it's like wow that's long It's like, yeah, but it's actually easy to remember because it's a nice phrase. I won't say what it is But it's it's a it's an xk pass of ud so password. I have a little image in my head and that was the trick Okay, so so feature for feature of the pro module the javascript most of that Because it's all functioning and it is creating passwords in the way that they need to be created in the all the all your math entropy calculations and everything there's really no reason to enhance any of that today Correct because it it works right the problem with the old site isn't the password. It's the ui Right, right. That's where the enhancements have got to come in and and they obviously will because It would be hard to code it just like it is now It's of what I mean That site was coded before the concept of a mobile phone capable of rendering a real website existed Right at that stage it was WAP if you remember that garbage Oh Yeah, exactly. So, yeah, I mean, yeah, the current interface is just not fit for purpose So the okay, so during the structure here Yeah, so during phase two we'll be implementing the feature for feature Basically the uml class diagram will be translated into actual code That is ultimately the whole point of the direct port Uh poll requests will be open So people will be able to contribute documentation They'll be able to contribute code that follows the uml diagram I will happily take it on because any function that you guys implement that's in the uml diagram that I don't have to implement Is less work for me So the uml diagram is the bible and anyone can follow that bible and said pull requests and we will merge them in merge them in The issue tracker will be open So a we can use it to track the bugs we're making as we go because you know there will be And b we can use it to start collecting enhancement requests Sure, we're not going to do them until we have a working port, but why can't we discuss them? Why can't we have those conversations? Absolutely no reason, you know, while people are keen and while people are excited capture it Get it get it written down and we can start triaging them start ranking them. What's the most requested feature What's going to be priority one? What do we put as our first milestone? We can work on all of that in parallel to writing the code and they can be different human beings So we could have some people doing documentation pull requests We could have some people writing just a code We could have other people improving the test suite. I mean you don't have to do everything right right as long as this This is where i'm hoping that our our different skill sets will become valuable where different people are working on different pieces of it exactly exactly and Particularly during phase two here Think of it like a coloring book the uml diagram has drawn all the lines and we just have to fill it in And anyone who can color in any piece is welcome. It doesn't matter what type of piece you want to color in right? We've all of these pieces need to be colored in so get coloring and submit your pull request so the outcome of all of this will be Obviously an es6 javascript module that implements the api in the uml diagram detailed documentation A test suite with full code coverage in other words every function that exists should have a test in fact should have many tests And there will be a package in npm so you can go npm install xk pass of djs So it has to be in the official repository and ready for people to use and then we will consider phase two complete and then we move on to The effectively the indefinite life of the project so maintenance and enhancement Fix any problems that show up deal with any new apis As javascript the language evolves there are probably going to be things we want to do and you know, whatever es8 brings along We will probably want to put some of that new javascript into the api because I mean if you think about if we had if we had done this port before promises existed We would do this port very differently Right, so whatever a new philosophy comes along to javascript We'll probably want to bring it into this project over time So that's what I mean by maintenance right code that isn't looked after go stale. It's like bread, right? keep alive I like it. I like it. So there's something big missing from this Where does the website come into this? Well, the website doesn't come into this project. The website remember is a second project So once part two is complete the website can start It will be a separate git repository Which will have as a dependency this one So it's going to be like a year from now before we get to start building something that we can see what it looks like I don't think so Because a direct port is donkey work more than think you work So by Easter, I would really like To be worrying about how to lay out dropboxes and things on a web interface Hmm Okay You know once that uml diagram is there coloring in between the lines is a very different thing to Designing something from scratch. You haven't seen how long it takes me to write a single bash script. So Everybody else is faster than I am so You know practice makes perfect. I spend a lot of time writing code. I'm pretty quick it Right to me what slows me down is figuring out how to do it But when you're following a diagram, you're implementing a known spec You kind of get into a flow state and it just You know, yeah, I think I think more mature developers definitely do I'll send Dorothy a question on on some code and she'll say hang on Let me let me write you an example And you know like eight minutes later. There's a working functioning class and all this other stuff I'm just like oh geez come on I think I could write a for loop in 15 minutes But I sort of think of it like The first few times I had to write a technical document in technical voice it took me forever You get something that didn't read like it was written by a five-year-old right Something that looked like it was written by an it professional trying to communicate with other it professionals That used to take me so long to do up you know a service definition or A documenting a process or something but now I can just you know someone says oh, we need we need a service description for this new thing We're rolling out. Okay. Fine. Yeah. Give me half an hour and there you go and it will be It'll be right. It'll read right and with code. It's kind of the same when you do it enough It's like a language If you know what you want to say you can just say it But like I said the really hard part is usually figuring out what you're trying to say Okay so The longer life of the project then is going to be a mix of maintaining it by adding in whatever is needed to keep it current Fixing the the bugs which will definitely exist. We will have a test suite and we will miss things There will be bugs we will fix them And then there will be the various enhancements that people request and so forth and hopefully that keeps it running You know as a living thing Right responding to people's needs responding to changes And continuing to adapt and evolve as make sense to to the people who actually use the code Right, right And I have no idea what people will want because if I did Well, then there wouldn't be any need for if I did I'd be some sort of magician Because that's just not how it works right when you when you put code out there for others to use You have no idea what they'll do. I I like I say I don't know but I promise I'll be surprised I will be your best beta tester That I know for sure you have I can break everything because bugs. Yeah, it's great. I am a savant in that category I have a I have a colleague in work who I value greatly for his ability to break everything I give to him Just like every every thing it's like I know I'm pretty sure this is bulletproof I've been hammering out it for weeks, you know five minutes area. What about this? I never realized you could even think of doing it that way. You know, you're right. I completely breaks. Okay back to the drawing board It's a really valuable skill um So I mean that is the most important thing is Is the plan so I have already put a bit more detail into some of the stuff So the first thing I spent some time trying to figure out is the folder structure for the project because I often get very confused When I look at someone else's code like if I go to the uh github page for Something like jQuery I find it very hard to figure out what all the folders mean. So first off this repository structure section is going to stay in this Read me forever Okay, um Because I really think it's helpful for people to know what the sudden hell all the folders mean and so I've decided to try to name things with a mix of verbosity and standards so There is no standard place to put your build scripts. So I called the folder build scripts That is a folder that I was going to contain the various scripts that will turn our you know mermaid code into actual pngs We'll make our documentation will run webpack all the various scripts to make the project build will be in that folder It is A pseudo standard that your distribution in other words the thing the finished product Will go in a folder called dist short for distribution So I'm going to keep that convention because it's so universal I Yeah, basically that's the case of where I'm going. Yeah, it's not perfect But you know something everyone does it this way. So this is this is an example where it's best to be consistent Same with docs For start github likes it that way because your docs folder becomes the web root of your project's web page So that makes perfect sense to me Um doc static then is where the stuff That j s doc is going to copy straight into the documentation without editing is going to go into doc static as the static content for the documentation And in there is going to be a sub folder where all the diagrams go So doc static diagram. So in other words when we take our Mermaid source code the pngs will go into doc static diagrams Hang on uh your documentation on this doesn't say that doc static is inside docs It's not Oh, you just said it was Okay, you just said it was inside it. Okay No, no, so the content of this folder will get copied into Docs by j s doc. So the doc's folders would be built by j s doc And the static content gets copied rather than transformed Right, right. Okay Um, so yeah, it is a parallel folder that gets pushed in Uh, s or c is going to be where the source code goes again. You skipped over the diagrams back up So so inside doc static will be a sub folder named diagrams Which is where the pngs will go that are built by the build script Okay Where are the Now the uml diagrams again, though. Oh, okay the uml diagrams because we're doing now for better quarter Well, no, no you said you said the uml diagrams will be in the build scripts Now the build scripts will create them so the build scripts are the so the build scripts do the transforming All right, okay So we're getting to the real meat here the source the s or c folder is going to contain the module source code So the most obvious thing that's going to happen is that the build scripts are going to take the content of the source folder and turn it into The module in the disk folder We're going to have a j s doc command that's going to take the content of the source folder and read the doc comments and build The docs and put them in the doc's folder That same j s doc is going to take everything that's in doc's static and just copy it straight into the documentation folder So doc static just get into doc's Okay into doc's yeah And then one of the things in that doc static folder is going to be a folder of diagrams That is the finished completed diagrams because there's a final folder s or c diagrams that's going to contain the mermaid code So the build scripts will take the s or c diagrams to make the pngs and the s or c to make the java script Okay, I might need to draw a flow diagram for this because this doesn't make a lot of sense If I look at any one specific thing that you just described I can hold it in my head, but as soon as you move to the next one, I've lost it again Go and wait a minute. Which one's the real one. I might draw a diagram for you Please I could submit a pull request to uh Yeah, absolutely. Well in theory, I'll be able to but uh, yeah, okay Oh, yeah pictures is a thousand words. I am very happy to have diagrams created by people I'm usually the one who creates the diagrams for others in work But I it's a lot of work making diagrams. So if you want to volunteer for diagram making I will happily because you put fun googly eyes in your diagrams That that when you posted for um comments recently in the slack that was that was a very fun diagram Really clear really obvious and the little googly eyes were just perfect Just for anybody listening I was talking about an automation that had hazel And I wanted to designate that hazel was looking at the folder So I took the hazel logo and put googly eyes on it. That made me laugh too. I'm glad you enjoyed that Yeah, but so clear like and that's the point of a diagram and it communicates without words It worked perfectly So the other thing I spent some time writing up is the contributor and developer resources and guides And the idea here is to to lower the barrier to entry as much as I can So the first point is, you know, you're going to need to sign up for a free github account to contribute You can download the code Without anything else, but in order to contribute in some way you are going to need a free github account So there's a link there to the sign-up page if you want to just Download the code and build the project you're going to need to have No j s We're always going to we're always going to assume long-term support So if you want to run a more modern version of no j s on the long-term support version knock yourself out but If you want to expect this to build without it causing you problems, you really should be running The at least the currently supported version of no j s And the lts is the least stress way of having the most supported version because it has long-term support It just you know, it's officially supported for ages. That's that's the joy of lts You're going to need to have some sort of Basically a linuxy type shell and the official word for a linuxy type shell is a posix compliant shell Which is a very fancy word Linux and mac you just get them for free as of About two weeks ago windows users now get them as a free out-of-the-box feature too through the windows subsystem for linux Which has gone general availability. So it is no longer an enterprise only beta feature. It is now generally available I've linked to microsoft's documentation for installing it.  So if we target bash then it will work in zsh Oh, okay. So I I wouldn't have to downgrade or I wouldn't have to install bash on a on a mac that's got zsh now No, no, it's just running stuff. It's not it's not creating something using some weird thing that doesn't exist in bash Correct exactly exactly. So yeah, so basically the reason for using bash is to be more backwards compatible because Anything bash can do zsh can do but that's not true the other way around Gotcha, gotcha. Okay. Good Um, and then if you basically if you want to do this stuff yourself You need to be confident enough on the command line to go to a folder and run a command Okay, which is not the word's highest ask, but if you'd like some help taming the terminal Is this a really fun series to people who have no idea who you've ever heard of have done? I heard it was highly acclaimed Yeah, well, I certainly think it's good. There's actually a book you can download Yes, thank you. Helma. Um If you would like to go further so you can Do that and you can build the code yourself and you can edit it yourself And you can have your own private version with 20 million new features And you can just do that to your heart's content and that's fine If you'd like to take it to the next obvious step and actually contribute back to the project You need a few more things you're going to need it Um, I don't really care what version it is as long as it's one of the supported versions I don't care what client you use as long as it's you know modern Well, you don't even need a client You could do it from a command line You can hear from the command line you can do it even from the github web interface If you like typing code into a web interface, it's not the worst web interface. Yeah. Yeah Um, you need to have a working understanding of markdown really because all of the doc comments are in markdown And all of the documentation is in markdown. So if you're going to be writing a new function I do sort of expect you to write the very very basic documentation of the doc comments. So You know be able to make something bold be able to put in a few bullets or whatever The back takes for a code. That's probably what all you need really but you know, just the basics of markdown Uh, you're going to need to have a code editor And in an ideal world for your own sanity, it should support markdown and javascript syntax highlighting And if you'd like your pull request to be accepted without me coming back saying please change this this and this Some support for es lint would really help things along because then your pull request will just be right Wouldn't you prefer it be just a requirement that they whatever use has es lint support? I mean do you really want to be in a position of telling having to tell someone? Okay, go fix this this and that you doing the work to write up what they need to fix to make it meet this standard I have maybe once I have a feeling that with helmas with helmas help I can write a github action that will automatically apply es lint wherever possible and only then Basically it would auto reject the pull request with actual useful error messages without me having to do it Oh, okay. Okay Like i'm 90 sure that's easy But i've never done it before and helma keeps telling me github actions rocks and um, okay This is an opportunity for me to be educated or to educate myself I also gather together all of the links I could think of to all of the documentation that might be handy if you're contributing to the project This will expand over time, but for the moment we have javascript no npm js doc our doc dash js doc theme mermaid es lint jest Webpack i'm sure i'm forgetting stuff I will append to this list as and when it becomes important Our versioning policy is supremely simple. We're following semantic versioning or semver. There we go I don't have to write the docs link In terms would it be messy in here if I added in Links to where you these all of these concepts were were uh taught so for example, you've got documentation for the project's codeliner es lint We could also have a link to the podcast episode where helma taught it to us Yes, we could have a link to that Okay I was really hoping someone in the community would volunteer to do that Um, because you're absolutely right. It would be very convenient to have links back to the pbs pages It's yeah without making this look too messy, but it you know But it's it's the first thing we're all going to do is go do a search for mermaid in in uh pbs I I literally just did that search. How did he do that again? Yeah, I'll be doing the same so you're dead, right? It would be very handy to have So you just pop them in brackets afterwards pbs and then the number that'll do it, right? Yeah, yeah, that shouldn't be messy at all actually should be really helpful In terms of source control policy then Git commits that are going to be merged into main will be titled in line with the conventional commit approach So again, this is a standard we talked about in pbs So I am going to use conventional commits Uh, this right point two here I am going to be the one who gets this wrong so you can all shout at me when I get it wrong But I did a bit of reading a few months ago for I was doing a presentation evangelizing git in work And I decided to read the best practices for git and I was horrified to discover I have literally been doing it wrong all along It is a convention that you always use the active voice when you are writing git commits. You do not say added You say add So you the the comment is not added Documentation for whatever it's add documentation for whatever. It's what you will it's what the commit does Not what it did. Why does that matter? That is how and now that I see it if you go to anyone's release notes, they're always in that format So it is sure git best practices. I'm going to obey the best practices and I'm trying to teach myself to do it in all Because it's the best practice. I'm trying to do it everywhere So and I'm going to get this wrong, right? So so not fixed typos Fixed typos Yeah, yeah So what what that sounds like I'm telling you to do something not that I did something the commit is doing it to the code So that's why it's in the active voice Fixing typos No active not present tense. I know it took me a while but Keep an eye on When you see a changelog keep an eye on the tense and it's the active tense and it I didn't notice it. I've been doing it like years of not using the active voice Years and then once I read on the git website like right from the bloody horse's mouth, you know Um, and okay, this is the best practice and once I knew what it was I started looking for it and I was like, oh look, there it is. There it is. There it is Like I say, I look I've been doing it wrong for years. I will do it wrong At this stage, I've had about 60% of the time I get it right I mean the other 40% I go and edit and then push And sometimes I just push too quickly and then it's too hard to edit and I just started going. Yeah next time Okay But anyway, you know Say, you know do as I say not as I do might be the one here anyway Um all contributions are going to come in via pull requests. Um until we get to version 1.0 Uh, basically until we get to the point where you've implemented the uml diagram I'm only going to accept pull requests that implement the diagram So we're moving towards the diagram and I am going to be perfectly happy to merge things That don't pass tests and stuff because we're just filling in we're we're filling in the coloring book So I'm not going to be a stickler and say oh you've written a function but you haven't documented it No until we get to version 1.0 If it if it moves us towards the target, it's welcome Doesn't matter if it's half a thing or a quarter of a thing if it moves us forward Bring it on bring it on once we get to 1.0 and we have Effectively a working product where we have to be Stricter in what gets merged into main. So to merge into main it has to be the word I'm going to use is atomic It has to be a complete logical thing, right? So if you're adding a new function Well, you you actually add the whole function its doc comments and its tests, right? If you're bringing in a new thing you bring the thing But an atomic thing can be failing Not once we go to 1.0, right? No, no, no, but I'm saying beforehand. Oh, you're talking about after it's I'm talking about after yeah, yeah before Okay, as long as you're coloring within the lines bring it on That's my analogy I like that. So if I've colored within the lines, but I didn't color in all of the parts of the of the thing That's okay. That's okay. Bring it in bring it in So I come behind Dorothy Dorothy writes part of the class and or she writes the class and I write the the After she does it I write the test Or I write the test and then she writes it in either way But either one of those things could go in separately, but once it's at 1.0, then it's got to be Holy Yeah, each piece is a whole that makes sense. That makes sense. Yeah And so what do I mean by a whole? Well, all the tests have to pass or it's certainly not going to be merged into main Uh, if you're adding new code that does something new Well, then we need new tests because you're adding a new ability. So that should be tested So it should come with it's whatever You know, whatever tests are needed should come if you're only fixing something Well, then there's no need for new tests But if you're adding something new it needs to come with its test If you're adding something new it needs to come with its doc comments, right? So if you change the meaning of an attribute you have to document what's changed If you're adding a new attribute or if you're adding a new function or if you You know, it has to come with its comments because otherwise we don't know what it is, right A function that isn't documented is a mystery meeting. We don't want that Okay and I'm going to want your code to to to be in line with the project style, which is basically going to be defined in the es lint config But ultimately, right the style guide at the end of the day The simplest way to think the style guide is take your lead from the existing content, right? Look up look down if your code looks completely different to what's above you and below you Make it not look completely different. What's above you and below you? Great that ultimately that that's that is the golden rule Um a few little housekeeping things, right markdown is a very flexible language so To avoid confusion wherever markdown has multiple options I'd like us to pick one and stick to it so you could use a minus sign or an asterisk for a bullet I would like us to use the asterisks You can use underscores or stars to make things bold. I'd like us to use stars You could use underscores or stars for italics I'd like us to use underscores because to me star star looks bolder. Yeah And underscore looks softer Um in terms of headings. I would like us to use the pound sign the octa-thorpe For even h ones rather than the other thing where you can have heading colon and then the underline I've never even heard of that. Okay. Good. Great. Then you're not gonna do Rock Um And if you're adding a multi-line code block with the three back ticks, please use the language For because that will make syntax highlighting look a lot prettier Yeah, the only reason I know about that if you ever look at the raw Files for Bart's Documentation for programming by stealth. You can see how it's done. That's the only reason I know that even existed that it it causes the syntax highlighter to be happy Yeah, and if you leave it out a lot of A lot of markdown editors will guess at the syntax And so if you have a big piece of code it'll probably guess right, but if you have a one-line code snippet Yeah, you know You as a human would have trouble, right? Is that see your javascript or java? Toss a coin like so just tell it and then it won't have to guess Um There are multiple syntaxes and mermaid basically the one we taught in programming by stealth is the one I'd like us to use there is another syntax that I haven't even told you about I I don't want it Because it's horrible. Okay And If you're using Basically, if your editor has ESL enabled then 99% of the style stuff is just going to work The only thing I would say is if you're picking variable names just look up and look down and Try to keep it in tune with what's there As a general rule I prefer longer variable names so they're less Fuzzy So this is like longer variable names. Yeah um With capital letters for the camel case The camel case it will be unfortunately. Yes, lint. Um, yes, I'll make sure of that. Yeah Um, good. Well, and then when it comes to writing the doc comments There are two things where js doc is a bit like markdown. It's a bit too generous in the possibilities Please use at param not at args and please use at returns plural not at return Okay At return just breaks my head. It's an active at returns. That's an active verb, right? Right and it also goes with at throws Because there is no you can't have at throw it has to be at throws But you can have at return and it just looks so wrong to have at throws and then at return Like no if it throws it returns I don't know. I shouldn't get so cranky about these things, but that one really does my head and um, anyway, so I've tried you know, I've tried to write it all in this friendly way as I can I you know, please help if there's stuff here that's You know, that's not sensible not clear That you think is rude It's basically what I'd like to be is that it's as easy as possible To contribute as constructively as possible Because everyone who contributes something freely to open source That is that is a gift And I want to make it as easy as possible to give but at the same time You know give constructive things so I don't have to phrase it, but it's a given a take you've struck the right balance I think and by setting out expectations upfront. It's not a surprise later when people like well, I don't want to use to Spaces, I'm going to use a tab or whatever. You know, I don't want to write an active voice It's like, yeah, but I told you the rules up front. Let's try to let's try to do it I think it's easier to follow a structure than to not like I said I would agree. Um, and I used to be very I used to have My style and I would take my style with me everywhere And that just causes constant friction everywhere And my approach nowadays is If I am joining an existing anything the first question I ask is how are things done here? And I slot in And all of a sudden you become a constructive participant straight away Instead of it being like, oh god, the new guy's here. Oh he's causing trouble and I People if people like having me join a project because I'm not going to be the person who throws a spanner in the works And yeah, it means I'm forever being different, but yeah, okay, so what you know I have gotten over Microsoft insisting that we use Pascal case instead of camel case for variable names and power shell That one took me a while to not get wrong, but I got there. I got there. I can do I can do leading capitals Actually, you would love you'd love actually just an aspect of power shell It's all functions are named verb noun And there's a list of allowed verbs that have a meaning So Set has a different meaning to add has a different meaning to create and they're all And so if everyone follows Microsoft's documentation, you get this amazing consistency cross project. It's so pleasing This is verb down. What does it do to what anyway? It's a little bonus extra. I like it. I like it. Well, this is exciting. I did notice this is episode 142 So we'll always remember it was almost 42 was 142 was when the project launched And by Easter, we're going to have working code. I heard the project manager declared it. So Yes, and the fact that I probably have a week's worth of annual leave in the week before Easter is probably why that'll happen So I am I am worried about one thing in this and it's how You are going to manage if you have to do all of the pull requests Because you work for a living and you work long hours and you have important responsibilities and you got a home life and I'm not sure I have to manage all the pull requests. I need to get the skeleton done I want the skeletons in place. I think others can be trusted to manage pull requests because there will be guides I just need to make the guides exist before we can get to that stage so I actually do think that there is room for a There's like volunteers and there's like dedicated volunteer. So if people want to be dedicated volunteers, I think there's room to have a team of Core maintainers, I guess is the terminology. Yeah, don't don't let me do that I think there are one or two volunteers lurking in the slack who may jump at the opportunity But yes, I actually think that Good good because well the worst thing the world would be a bunch of people working on it up early on and you're like Overwhelmed because there's all this stuff coming in and you've got to check it all and see whether it's you know doing anything and And those sit I think that's right. I hate it when I see a repo with with pull requests and they're being ignored That's just you know, say no or say yes pick one, right? Right.  You're like, oh, I think this might be dead And people want it which is really sad. Yeah, it's dead but it's popular Yeah, I hope I hope that does work out in a way that it's it's not all on your shoulders because that would be unfair to you Well, no be fair to you. It's your project But uh, it would be unfair to the people trying to contribute because we wouldn't we wouldn't be able to get there I don't think Precisely precisely. So yeah, I think So hopefully it's December now. I have a fair bit of annual leave saved up I'm hoping the skeleton is done before I go back to work and then if the direct port is done by Easter I think we're doing very well and that doesn't seem one reasonable to me Why do it is it so God, we knows what'll happen in it. It seems probably reasonable to me I'm never allowed to be in charge of schedules because I'm always like, well, this should take eight minutes seven months later People in work are used to the fact that I work in a unit of A person days So how much work is that? I'm saying that's probably five person days and they look at me. It's like A whole week for one person. It's like, yeah Okay, so that'll be done next week. It's like, no no I have many many many demands in my time. You will probably get an eighth of a person So that'll be eight weeks I'm just so glad to hear you say person person time or person hour person day when I was working They always called it man hours And there was a there was a schedule once I remember up up on a view graph at work and it said seven men And I raised my hand being the only female engineer in the organization said so apparently I'm not working on that project And they were like, oh, I'm sorry. I'm sorry. I'm sorry. We'll fix it in the next month. It looked exactly the same Still said seven men Yeah, I left that organization after that Not because of that one thing that was just endemic, but anyway Times have changed. So that's fun. But this I'm excited Bart. This is this is cool I feel like we're we're not just fixing to make a plan. We've got a plan Yeah, it says project plan. Look it's a h1 and everything All right, Bart. Well, I think we will be we've decided to not Meet wait, do we have one more? No, no, I think this is the last time we wear this hat until next year But we have our security hat, which is a different podcast which we will be wearing again before the year is out Okay, so if anybody's listening this real time Happy holidays and we'll see you in 2023 Indeed, whatever it is you do over the Actually, it's not even the winter for everyone. I was going to say, you know, whatever you do in the winter season And then I thought a poor allister poor allister sitting in the sun Anyway, happy holidays, I think covers it perfectly So until then lots and lots of happy computing If you learn as much from Bart each week as I do I'd like you to go over to let's dash talk dot ie and press one of the buttons over there to help support him He does 98 of the work here I'm just the stooge that listens to him and asks the dumb questions If you go over to let's dash talk dot ie you can support him on patreon You can donate via paypal or you can use one of his referral links I really hope you'll go over and help him out In the meantime, you can contact me at pod feet or check out all of the shows we do over there over at pod feet dot com Thanks for listening and stay subscribed


We just turned this craft room into this craft room and we'll show you how we did it right now. What is up? A welcome back. Do you like to do a build or make it? So do we and we have a new video each week. This week we're going big. Kim's a little ambitious. Well I wouldn't say ambitious it's January and you know what the great thing about January is I have a couple of organizational projects that I want to do. So we did this wall what I think in February of last year which I love. I love this wall and it's great. Look at how much stuff is stores on it. We could store on it but it's not everything and the rest of this room is a wreck. It's okay. I mean it's okay but I can do better. So I have some new storage ideas, organization ideas that I want to implement for what Garrett calls the new season. The new season. New season and new studio. We started our first video we ever put up was January 13th. This will be this January will be three years right? Three years. So I am ready to do and every time basically at the beginning of each year we do something new and different. So I want to do organization for this year and I want to redo that side of the room and the floors and it's a lot of work and Garrett is it super stoked on it? I am not. But I can't wait to show you what we do. We have some new ideas that I think that you can implement and we'll just kind of they're right now they're still ideas so we'll just see you can walk through this little transformation with me and we'll see if we can bring them to fruition. Oh it'll happen it might just be painful. Yeah my knees, my back. Yeah that's what I was thinking. Not a spring chicken Kim. Yes you are. Yes you are. Step one. A demolition. That was my demolition move. Yeah I see it. We're gonna rip everything out. We have a shiplap on that wall. If you guys remember the video over here cheap DIY shiplap. We're gonna pull that down pull the trim off, pull the carpet out. The thing is we're in a pretty small room up here. This is the room over the garage so I can't take everything out of this room. We don't have that luxury. We have some pretty big items like this table here. It is on casters and I can roll it but I can't remove it because we're just up a flight of stairs so we are going to have to shove everything to one side of the room. Demo and then push it all back. Demo push it over again and start laying the floors. So you can a lot of moving. Yeah we did this once before in a previous house.  We pushed everything to one side. Yeah we started the floor pushed it back and it worked out great. It worked out fine. Yep since we're pulling up the carpet and we'll be laying down that laminate we can do some break dancing. Yeah we'll look forward to that Garrett. Spring chicken. Everybody will. Change of plans. We're gonna leave the trim on and see how it does. Why do you want to work then we have to. Right so when we pulled up part of the carpet here we could see that the trim is going to be close to the right amount of distance from the subfloor so when I put the laminate flooring under the trim so we're gonna put a piece of quarter round to hide that so we don't think we'll need to remove the trim. Next step we're gonna go ahead and add the wallpaper before we finish pulling up this carpet. Peel and stick. Yes today's wallpaper I mean you can go super professional but I did this in my office upstairs and it looked great so we're gonna use the same peel and stick paper for this wall here. So a couple of tips about this wallpaper so this one this is called I hope you can see that this brand is new wallpaper peel and stick from wall pops this comes from Home Depot. The trick of with getting this wallpaper is you always want to use the same lot number so ours happens to be GS32 and we made sure we have enough wallpaper to cover this whole wall so these are 18 inches no 18 feet long 18 feet 20 and a half inches wide. Yes so the instructions say to draw a straight line 20 inches from the flat wall in the corner which I'm about to do and then make sure that line is level and then start your first piece we're gonna start from work our way from top to bottom after we draw a straight line we're gonna peel back the paper backing on this sticky wallpaper and you're gonna peel that down about 12 inches and then apply that first 12 inches to the wall and then you'll just peel the paper backing use your smoother to smooth over it as you apply your first full strip. So each of these has a pattern repeat you've got to find the pattern repeat they don't all start in the same place so as I pull out the first couple here I'm looking for my pattern repeat and I can see this one starts right here so here you can see there's probably four or five inches at the top of this one before the pattern starts again so as you apply your first strip you'll need to pay attention and determine where your pattern repeat is. It looks so real you might get a splinter.  In true fashion of just-in-time DIY we're ready to do the floor so we're gonna go to the home improvement store and pick out the flooring. We have a general idea of what we're looking for. I know exactly what I'm gonna get I just want options I'm gonna look around and see if there's something I want better he is giving me a hard time because I want to look around but I already have it picked out I know they have the quantity we need we just have to go get it while in there in case something else like with something's on clearance and it's perfect and we save some money. Okay I get it yes I agree then saving money he won me over. Alright ready for day two a phase two the wool is done we got back last night late last night with the flooring. See I told you they had it and stopped. This isn't the stuff we went for just say no. It is it's just a different color variation I decided that this was more had a little more browns and grays in it so I could decorate it either way over time so that's what we've got. It's supposed to be a floating floor it says minor sub flooring imperfections will be covered up so we're not even gonna lay any yeah we're not even gonna lay any underlayment yes we're just gonna lay this right down so first things first we gotta remove all the carpet we're gonna cut it in strips roll it up tape it up throw it out the window. We have that is like the best luxury is that we can throw it right out these windows into the alleyway behind our house so I mean we don't even have to lug it down the stairs so this is like it I'm telling you this is an easy project. Oh that's that's what makes it an easy project yeah. I've been doing a lot of convincing over the last couple of days. Yes she was just talking to all of the kids trying to convince them about how easy this is. We have a bunch of them here to help us today. You'll see him you'll see him in the fast-forward none of them want to be unfilmed. All right let's start with this carpet. Let's do it. We're just going to stagger it. This first row I'm gonna leave a whole plank the next row I'm gonna cut six inches off and put 12 inches down and then the next row I'm gonna start with six inches so that it's staggered so that the seams don't line up. Give it a little whack with the mount. Yeah these are like I said this is just a floating floor so you don't have to put anything underneath and they just lock into each other. Well we gotta do it the right way. We just lock these in and you can't even see it. Tap it down with a rubber mallet. We're good to go. All right this is where my knees take the toe. Home improvement store for some quarter round and some two by fours to make our table which we'll do in the morning. We built the table behind us but we found a really good deal so we're doing this instead of building. And they're together they're looking beautiful way better than the DIY ones we were going to do. After pricing the wood these actually came out to be about the same price minus half of the cutting in the labor. We just screwed together. And I think that's simply because of the time of year or the economic conditions that we're in right now with COVID and there is a lumber shortage and so prices are extremely high. So we were going to build our tables with two by fours and plywood but by the time you add a couple of shelves and two plywood tops you know a top and a shelf it ends up being the same price as these really nice tables that we ended up picking up.  Yeah so you can get these on Amazon. We'll put a link to them down below and we'll show you some close-ups. But our next step is to it's that we're on the home stretch here just thinking now we're finally getting to the home stretch. We're going to install some metal pegboard shelving. Is it heavy? Oh no it's not that heavy. Oh man it's a little bit heavy. It's sturdy. It's metal so you can get you get the gist of it. But you know we love our pegboard that we were standing in front of on the opposite wall it's actually over there and found that we really can't live without it. So this is a new version of pegboard that we could purchase and not have to build again. That was a big project. It's beautiful but it was a big project. New floor, new wall, new pegboard, new table, new year, new season. We're really excited so let us show you how we install this pegboard and we'll be close to wrapping this project up. Since we can't hit the studs we're gonna use these drywall anchors so we have to mark the holes and drill for each one. Much finished. Almost finished. Well we don't have yet and you can see it's a big open space is our logo. We did decide to keep our logo that we've had and we're gonna do some merchandise with some of the other logos some fun stuff. But we will put our existing logo right here behind us to add some color and give it a little more pop. Yeah but I can't tell you how excited and happy I am with this new background. It just you it's so much more space for us. I love these two tables back here. We can now keep our cricket out, the pocket saws out, the glow forages out, everything is right here at our fingertips and I love all of this pegboard. I think the pegboard we made on the other wall was just a big just made us spoiled because and everything was like literally right behind us. So now we have that same thing. We have all of our cricket tools, our markers. Well my vinyl, most of my vinyl is still over here. This is for some aesthetics here. Hot glue guns, all of our paints. There's just so much right here at our fingertips and then these tables we didn't get the ones with the drawers. We really debated but I didn't feel like I had a lot of flat stuff. I have bigger stuff so we ended up adding some carts under here and now we can roll those around. I am super super excited about it. Almost everything is on wheels also. Yes. Except the tables. Everything else is on wheels so we can configure most everything. Right so if we decide we want to flip it around we can flip it around. We might be back over there next week. We don't know. No we won't. I'm excited to do. We have not had the opportunity yet to do a new project with this setup so I look forward to being able to reach back and grab my scissors and have everything right here at my fingertips. And this was pretty easy. I mean it was fairly, I think the wallpaper was probably the hardest. But the wallpaper was pretty easy. Yeah because all you had to do was stick it on and it looks great. I mean honestly this adhesive wallpaper is great stuff so it's way better than having to paste it yourself. Oh yeah way better. The floor, that was pretty easy. Time consuming. All of these things took a little time but we were able to do this in an afternoon. We did the wall in an afternoon. We did the floor in a day. I guess you came back and added the little quarter round molding around the baseboards later. Took me like 30 minutes. Yeah that didn't take very long either. We still have some things left we wanted to do that we haven't finished yet so now that we finished this side of the room we can keep filming where the windows are here. I think you'll show in some pictures. I want to put some drapes up up here. Some sort of dust catcher. Some kind of dust. Yeah some sort of Roman shades is what I really want to put up there. And paint that wall. I wanted to be a really light gray. It's pretty washed out in the video so you probably can't see the gray in the wallpaper. And then I want to put this wallpaper on that wall over there. I didn't get an opportunity to do that because I have to take down all of the pegboard over there and that's going to be quite a job. So there's a few extra things to do but for now our new set is ready to go. So I am about out of time and hungry. So we're gonna head out and grab a bite to eat and we will see you next week where we'll do it, build it, make it again. And I got nothing to balance. Like everything was super heavy. I can't balance a table. No. Piece of flooring. Nah. Alright.


Hey Abbott what time is it? It's time for the Abbott and Costello show. We're on the air for ABC here in Hollywood Well, what are we waiting for? Let's go with the Abbott and Costello show Since the Abbott and Costello show produced and transcribed in Hollywood for your listening and laughing pleasure Chuckles with a carload and music by Matty Malden So hold on to your chairs folks for here they are but Abbott and Lou Costello Stop that yelling Costello come over here. I need I need ten thousand dollars in a hurry. What are you learning to me? Haven't got that much, huh? Well, how about eight thousand five thousand one thousand Costello, when are you going to stop that laughing when you get down to about three dollars and a quarter? I should have known better if you stop chasing girls, you'd have money I don't chase women Abbott. I'm repulsive to women. Pulsar to women. Who told you that women? Haven't you ever had a real girl? Oh, yes, I have one Sabbath. Her name was Mabel Kumpquat Here old Mabel Kumpquat Sweet kid. Not bad Met her in a delicatessen factory in Patterson. I was a Salami Sniper A Salami Sniper? Sniper. All right. So what is? Well a Salami Sniper That's an endless chain of salami would go by me every 20 inches. I would go snip snip I looked up and there stood Mabel. I stood there looking at her for 15 minutes. What happened Abbott? Did you ever see a salami two miles long? And that was the start of your romance, eh? Oh, yes. One night I took her up. I took her up to Mountain. Wait a minute. There's no Mountain in Patterson. Abbott, when I take a girl up a mountain to a mountain, it's I slipped the ring on a finger. I didn't have a ring. So I used the cigar band Then where did you get the cigar band? Mabel happened to be smoking a white owl at the time I know it was a white owl. I could smell the feathers Castelli, you could graduate with honors from an idiot's college. Thank you, professor Hey, wait a minute boys. Here's a serious-looking fellow trying to get a word in edgewise. Let's see what he has to say Castelli, stop that yelling. Where have you been? You've been hiding my Christmas present Have you finished with your Christmas shopping, Lou? No, no. On the way down here I stopped at Nancy's department store and boy was that place crowded. Lots of people, eh? Yeah, but it was so crowded while I was in there my belt broke and it was 20 minutes before my pants fell down Another thing, I can't stand those women shoppers. What's wrong with women shoppers? Well, I was standing by the notion counter. There was one woman there She was turning everything bottom-side up to see where it was made. She was turning everything bottom-side up Everything bottom-side up. The floor work has saved me just in time I never mind. I did it for $1.94 Well, Lou, skip that. Did you write your letter to Santa Claus yet? Did I write my letter to Santa Claus?  Oh, come on. Did you or did you not write a letter to Santa Claus? Well, if you must know, I did and I asked him to bring me a new bicycle But Santa Claus brought you a new bicycle, a brand new bicycle, two years ago Yes, but don't you think I'm old enough now to have a boy's bicycle? I hate to interrupt your program, but I've got some bad news for you. Out with it, man. What is it? Mr.  What? You got a pencil. What do you want with a pencil? I want to cross Uncle Tom with my Christmas list How can you say that, Costello? How can you be so heartless? Isn't there any love in your family around Christmas time? Oh, sure. Our family all love each other. Last Christmas my aunt made me give my uncle Mike a broken arm for Christmas A broken arm? Yep. What kind of a Christmas present is that?   Well, before you know it, an argument started Well, I want to tell you something, Abbott, and speaking of arguments What are you going to get your wife for Christmas? Well, I gave her some money She wanted to buy herself a new closet. Lovely. Yes, but you can't seem to find one that will fill her budget She's so fat nothing would fit her budget Castella, my wife is just pleasantly plump. She's not fat. That reminds me, Abbott My sister would like to borrow one of your wife's stockings to hang over the fireplace on Christmas Eve What does she want with one of my wife's stockings?  Well, did you ever see her in a bathing suit? Yes, I have Repulsive isn't I? Wait a minute. Who put that in this script? I told you Abbott, you should have bought those writers presents Did you did you buy them presents? No, but I asked them what they wanted and they said to me Louie You know what we like best.  Abbott, you can't wrap up a saloon If you didn't get the writers anything you should have at least bought their wives something I did have it. I gave each one of them a corsagee. No, not corsagee. Not corsagee. That's corsage Spells at A-G-E is pronounced like odd as in corsage or our garage Now, where did you get them from the man who picks up the garbage? I gotta do some shopping for Louie B. Maire. He wants me to get a box of cigars He's gonna get in the market or Brian for Christmas. I'll wait a minute Why we don't want to give Margaret or Brian a box of cigars for Christmas. He wants a stunter growth All right, Castello that did it now.  I wouldn't come to see your show again if you gave me a million dollars. You stink It sounded good Lou. This guy means it Tough guy, huh? You want to step outside and say that? Sight me I'll step outside and say it. Why? Well, there's a lot of people out there in front that couldn't get in the studio. Maybe they'd like to hear a two That's what I thought you were a yellow rat. A yellow rat that did it. I'm not taking that sitting down Oh, you're nutty. No He got me Abbott. Where'd you get you, Castello? As I said before I'm not taking this sitting down Hey, look Castello, it's our secretary Ville Avon Well, Castello, I didn't expect to see you here tonight. I thought you'd be up at the north pole looking for Santa Claus Now, it's too cold up there. My uncle Jim moved up there to north pole last I heard him He was keeping company with a girl polar bear and he was going to get married to a girl polar bear What stopped them? Her parents objected If I remember right, your uncle Jim took your cousin Vincent to well ask you with him, didn't he? Yes, and one day Vincent was fishing for whales He hooked one and started to pull on his line then the whale pulled and Vincent pulled and the whale pulled Where's Vincent now? I don't know, but every time I get a postcard from him, he sends regards from Jonah He looks so pretty. Why don't you and I step out together after the show?  I'm feeling my oats Yes, Abbott. Have you been out to lunch with Trigger again? There's no reason why Viola shouldn't go out with me.  I don't blame him anything to get away from that face Castello, it's my turn to go out with Viola. Why you've been over to our house five nights running No, Mr. Abbott, only four nights running. Last night my father didn't chase him Ah, look, there's no use in you boys fighting over me. I want to find a big strong robust romantic man How about me? Okay, you can help me look Castello, I don't blame Viola for not wanting to go out with you. You're fat. You're ugly. Your front tooth is missing Oh, no, it's not. I got it right here in my pocket. I Uh, Castello, honey, what are you going to get me for Christmas? You know, I need a new car A new car? Well, well, Castello, as soon as a new car prices come down, maybe you can get her a new car I think so, Abbott. I went to a deal yesterday and I said how old will it be before I can get a new car for $900? He felt my pulse and says you'll never make it Don't forget about Viola. We've got a lot of people on this show We've got to get them Christmas presents. Come on. Let's go across the street to the department store See this store's crowded look over there. It's our band leader Maddie Malick. Hi you fellas I'm looking to buy some records Castello, do you know where the music department is? No, I don't well you take the down this aisle to the escalator Then you take the escalator the next floor then you go towards the front of the store Just a minute. Wait a minute. You asked me I asked you what how to get to the music department Well, you go down this aisle to the escalator then you're ready Now come on now get out of here Maddie Malick.  Look Castello, there's Santa Claus in the toy department. Hey come on. Come on over here. I want to talk to him Are you Santa Claus? I'm Santa Claus Yes, little man What's the idea of kicking me in the leg that's for last year Castello, that's no way to act Santa Claus is here to find out what you want for Christmas Now go ahead and tell him what you want for Christmas. See Santa Claus I wish that Christmas morning I could find me to hate with him my stocking with those fat legs of yours You'd have plenty of room for the Andrews sisters Say Santa Claus that was pretty good.  No, I don't want to trade I'm too fond of this penguin I keep him in a bottle of ink. Oh a fountain penguin Castello is just a kid at heart. He craves affection the thing for you to do is mother him. Oh, well, that's different Sure. Here here.   Oh, I thought you said mother up Take it up, man But it's time to change the subject for just about 60 seconds musical Christmas gift to all of you How winter's in a Christmas song along with matty malnick and his music Oh, the weather outside is frightful But the fire is so delightful And since we've no place to go Let it snow let it snow let it snow It doesn't show signs of stopping And I brought some corn for popping The lights are turned way down low Let it snow let it snow let it snow When we finally kiss good night How I'll hate going out in the storm But if you really hold me tight The fire is slowly dying And my dear we're still good-bye But as long as you love me so Let it snow let it snow let it snow And we finally kiss good night Put in the storm But if you really hold me tight And my dear we're still good-bye But as long as it's snow Let it snow My brother Pat just told me some wonderful news Tomorrow he starts playing with the girls in Phil Spatholome's orchestra What instrument will he play?  Well, he could, but the places he sings in are so small And now he can't sing shortening bread, he's got to sing right crisp What are you doing with that newspaper? I wanted to show it to you, Abbott My Sam Shovel Detective series has become so popular The newspapers have taken it off the radio page and put it in the front page Look Uh-huh Well, lay your man I don't see it on the front page There it is, there it is Under crimes committed in Los Angeles today And besides that I'm getting more fan mail than ever Listen to this one Dear Lou Costello of your Sam Shovel Detective series Not the funniest program on the air Then I'm not the next president of the United States Who's it from? Tom Dewey And that, what is your Sam Shovel Detective mystery for tonight? It's one of my latest cases, Abbott I call it the case of Clarence the dress designer Who gave himself up to the police Or I'm all yours and buttons and bows This is of Sam Shovel Private Detective I'm Sam Shovel Sam Shovel Private Detective I'm sitting here in my little office It's mighty chilly in here I think I'll throw another log on a fire Every time I build a locked fire in my office a landlord complains Maybe it's because I have no fireplace I pick up the newspaper I drop it on my desk It was the mirror I read the one ads Woman who washes Mondays and Tuesdays wants place to hang out on Wednesdays Wanted man to teach Nuclear division of atomic astrophysical cyclotronic fissures No experience necessary I glance out of my window to see what's playing in the movie across the street Chicago Cleveland Boston Must be that new picture, the cry of the city Next door to the movie is the Hollywood nightclub Those Hollywood nightclubs cut the liquor so much the bartenders have to have a barber's license In the winter they have to put alcohol in a whisky to keep it from freezing Once my pal Lieutenant Abbott of the Homicide Squad was so disgusted that he wanted that joint to drink himself to death He didn't get drunk But there was so much water in the whisky he nearly drowned Suddenly the phone rings Sam Shovel speaking Sam Shovel you're on the spot get wiser yourself You've got to play ball with us Who are you? You seal your football team we'll play anybody Online went south I look out the window again Crowds nothing but crowds everybody doing the last minute Christmas shopping the crowds give me an idea I'm going to write to my congressman and haven't changed Christmas to April The stars aren't so crowded then In the crowd I see my pal Lieutenant Abbott Abbott is the cheapest guy in the world all year round But when Christmas comes he'd give you the shirt off his back I know Last year for Christmas he gave me a dirty shirt Lieutenant Abbott is a great detective he worked on the Morelli case and in two days he had it sewed up Then he got the Mary case and it only took him three days to sew that up Then came the famous Lewis case he sewed it up in 24 hours He never carried a gun Just a sewing machine and three extra bobbins Hello Sam Shovel Sam tomorrow's Christmas Eve and I dropped in to find out what you want for Christmas Well I live just a stone's throw from head to the Mars house And my bedroom window is just a stone's throw from her window What do you want for Christmas Sam? A stone Lieutenant why don't you send me some muscle toes so I can kiss the girls under it That's not muscle toe that's missile toe Missile not muscle When I want to kiss a girl I got to use muscle Sam I want you to help me on a job I've been assigned to guard at the department store during the Christmas rush I guarded the Broadway Hollywood store last Christmas I put a man on a fifth street door a man on a Broadway door a man on a strict street door How'd you make out? They didn't lose a single door But all the windows were stolen And we're going down to the store right now Sam is the big store they sell anything from sailboats to a pound of pecans I see they got everything from sloop to nuts Come gentlemen you'll have to go to work right away The shoplifters are stealing everything in aisle nine Where is aisle nine? Well this is aisle seven that's aisle eight and that How do you like that they stole aisle nine I like this job Say who was that gorgeous girl behind the crowded counter Well that's Miss Fairchild she works in ladies slippers She's beautiful what else does she do?  All cops Johnny There you are Even him Even him I don't know what this is all about to him But I gotta get this kid to the lock up This is Christmas Eve and I gotta You gotta get a little of the Christmas spirit lieutenant I think Johnny's very sorry for what he did He'll never do it again Well he tried to get away from me He ran from the law that's a sign of guilt Honest I won't never do it again I promise I won't Besides lieutenant I think I've made Johnny understand that cops are his friends Yeah Johnny if you know the cops are a kid's best friends you You've really learned something Yeah well there's only one thing that puzzles me What is it Johnny? Well lieutenant happens a cop ain't he? Yes Well how could a guy with a face like that be any kind of a cop Oh Johnny Johnny it's Christmas Eve listen I promised my wife I'd be there I'd be in church saying my prayers and saying hymns And here I am in this broken down You don't have to be in church for that lieutenant How about it Johnny? Know the words to that song? Yeah I think so Johnny let's try it huh What do you say? Let's wish all our listeners a very merry Christmas Merry Christmas everybody And I'd also like to say merry Christmas to our fine crew that helped us put the show together Our writing staff which is headed by Eddie Fulmer With Paul Conlon, Pat Costello, Martin Ragerway and Leonard Stern Now don't forget the swell boys of the band and our leader Maddie Melnick And our vocalist Hal Winters And a merry Christmas to our producer Charles Vander Good night folks Good night everybody and Merry Christmas Night of this time we're not a great Abbott and Costello show Produced and transcribed in Hollywood And be sure to stay tuned for the outstanding entertainment Which follows throughout the evening on this ABC station


This is stock number 8050A. We are here at Summit Automotive in Fond du Lac, Wisconsin. You're new and used SUV headquarters. Today we are taking a look at this ultra clean 2017 GMC Yukon Denali. This vehicle has the 6.2 liter V8 motor. From this HD video you will be able to tell that this Yukon is like new all the way around. It has the HID headlights, the LED running lights. It has the Bridgestone Duler 28545R22 tires on the 22 inch chromed alloy rims. No scuffs or scrapes on that rim and these tires have probably about 80 to 90 percent of the tread left on them. Onyx Black is the color. No denser dings on that front fender. Has the front sonar. No scuffs, no scrapes, no dents, no cracks on this vehicle anywhere. Very very clean. Passenger side rim is absolutely perfect. No scuffs or scrapes on that. We shoot all of our videos in 1080p so if you have HD capabilities on your computer tablet or smartphone device turn them on right now because it's like you're right here looking at the vehicle with me. And as you go down this side of the vehicle you can see just how clean that body is, how reflective and mirror-like that paint is. We take these HD videos so if you are far away or even if you're close by and just cannot make a trip down you can still see the vehicle, hear the vehicle and have confidence in what you're looking at before you even get here. We realize these are high dollar purchases and we want to make sure that we give the most accurate representation so that you can have that confidence and peace of mind that you're dealing with the right people and the right vehicle. No scuffs or scrapes on this back rim and the back tires are at same tread as the fronts. Has the factory running boards. Very very clean as we go around to the back. No dents or dings or scuffs on that rear bumper. The tailgate is in excellent condition as well. It has the full towing package of course with the seven-pin wiring and the receiver hitch. Back-up sensors has the power lift gate. We do have the cover for that receiver hitch. It's right here so that's in really nice shape as well. No scuffs or scrapes on that. And has factory all-weather floor mats throughout on the inside. And we have the power fold down seats. We got the second row that goes down and the third row goes down as well. Just like so. I'm always amazed at how fast they work and they come up really fast as well. Those are all power with those buttons right here. I was able to put that second row seat down from the back here as well. To close this gate you press this button and it'll come on down for you. You can also open up that rear glass. Of course we got the LED taillights here and as we go down this side of the vehicle just as clean as that passenger side it does have the capitalist fuel fill and you can see that this back rim is in absolutely perfect shape as well. Very very clean down this side. No dents or dings or scuffs. It has the power mirrors with the built-in directional signals and the blind spot indicators.  There are no rips or tears in any of these seats. This vehicle has never been smoked in and both these seats are heated and cooled and power. Factory all-weather floor mats in the front. Power windows, power locks, power mirrors and these mirrors do power fold in. They are also heated. Memory driver's seat and bows. Got a lot of options so I'm gonna go fast. You can always rewind though. Has the auto headlamps, the HUD or heads-up display turned out four-wheel drive, factory brake controller, stability track, backup sensors and then this is your lane departure warning and then you have your power pedals there as well. It has the digital display up here. 11,501 miles on this vehicle. Has the heated steering wheel, leather-wrapped, Bluetooth audio controls on that side, heated seat or heated steering wheel controls and then this is for your adaptive cruise control so you can pick how far you want to be behind the person in front of you. Then it has forward collision warning as well. If we go here you can see it has the factory navigation, backup camera, has the gear select transmission. This one has the eight speed in it, the dual climate control. Here you're heated and cooled seat buttons. You also have a storage area behind the radio so you can hide valuables back there or wallets or whatever you want to put back there. And then we have the cell phone wireless cell phone charger. Here's the keys. Has a remote start. You can do the gate with that as well. Pass and receipt is absolutely perfect and it'll rips or tears on that and we have the all-other floor mat on that side as well. Going back to the radio. If you go to the home button you can see it has the projection which means that you can hook up your Android Auto or Apple CarPlay phone to the vehicle and you can display your whatever you want to display on there from your phone. It has the on-star home link and then the power sunroof which is right here. And nice trim inside has wood green trim as the Denali stitched into the headrests and of course side curtain air bags. But very very clean inside like new inside and out on this vehicle. We'll take a quick look at the back seats. It has the second row heated quad seating. No rips or tears in these seats. It has the latch child safety system. Up here you can see you have your heated seat buttons, your rear air controls and then some plug-ins for an HDMI to USBs and then an aux jack. You also have a power point which is right there. Two sets of headphones right there and then that's your DVD Blu-ray player up there. So very nice system. Fully loaded as you'd expect on a Denali and the back seats are absolutely perfect as well. We'll take a quick look under the hood. 6.2 liter V8 motor engine bay is very clean runs very smooth. This vehicle has been fully safety and inspected by our service shop has a fresh oil and filter change. All the fluids have been checked and topped off. The vehicle has been gone through mechanically 100% and is 100% ready to go. To see more pictures of this GMC or one of our other 400 new and used cars, trucks, SUVs, minivans, Wranglers, half tons, three-quarter tons, you name it we got it go to our website www.SummitAuto.com. Full pictures and descriptions of every single vehicle and a lot videos of every single used vehicle that we have all at Summit Auto.com. Thank you so much for checking out the video. If you want to make this one yours give us a call right now<PHONE_NUMBER>. Ask for one of our sales professionals standing by take your call. Once again that number is<PHONE_NUMBER>. I can't imagine this one will last long and if you want to check out more videos go to youtube.com. Remember to like subscribe and share on this video and all the videos you see there. In fact in a second you'll see a link to subscribe to our YouTube channel on your left. A link to more used inventory videos like this one on your right and if you haven't been to our website on the bottom a link to this vehicle on our website click those check us out and we really look forward to helping with this super 2017 GMC Yukon Denali. Thanks again.