
Programming By Stealth
213 episodes — Page 2 of 5
PBS 152A of X — Bash: xargs & Easier Arithmetic
I don't always make the time to pre-read the shownotes for Programming By Stealth but I never regret when I do make the time. That was especially true this week. In this installment, Bart Busschots takes us through his solution to the challenge from PBS 151, which was to print a "pretty" multiplication table using the `printf` command. Being Bart, he didn't just make the columns line up nicely, he took it up a notch and added ASCII characters that build a nice border and corners around his table. The reason I said it was good I pre-read the shownotes is that while nearly everything he explains in this lesson was a reuse of things he's taught us before, the commands are so dense in Bash that it was particularly hard to read and comprehend. We had also taken 4 weeks between lessons which made it even harder to remember. Because I told Bart ahead of time that I was going to be stopping him to ask lots of questions, we decided to skip the one main topic he had planned to explain - `xargs`. This means that the next installment will start with `xargs` as Programming By Stealth 152B using the same shownotes. I'm really glad we did it this way because instead of you having to listen to a confused and thus frustrated Allison, the lesson flows well with me having time to ask the right questions. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net.
PBS 151 of X — Bash: Printf and More
This week's Programming By Stealth wasn't a heavy lift but I managed to get confused a couple of times anyway so expect lots of questions from me in this one. Bart started the show by telling us about a clever tip from listener Jill of Kent about how to detect when the Terminal talking to and from STDIN, STDOUT, and STDERR. Then we learn about how to use the `printf` command to make nicely formatted output. I especially liked that part because I love me some organized output. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net.
PBS 150 of X – Bash Script Plumbing (Take Two)
When Bart and I recorded PBS 150 on Bash Script Terminal Plumbing, neither of us was happy with it. I got very confused in the middle, and Bart decided that his original strategy might have been flawed in which he assumed everyone had heard Taming the Terminal and remembered everything taught more than 4 years ago. He completely rewrote the shownotes and we re-recorded the entire episode. It was ever so much more fun and I really understood what he was teaching this time through. He also realized after we recorded that there was a bit of information he hadn't taught us which was crucial to being able to complete the challenge he had set for us. If you understood PBS 150 the first time through and want to jump right to the new part, I put a chapter mark in the audio file that will take you to where he explains `/dev/tty`. We're proud to have done this because we are both of the same mind that we need to stay committed to the quality of what we're creating here, both for the current listeners and the future learners. *** Bart and I took a few minutes upfront to high-five each other for 150 episodes of the Programming By Stealth Podcast. Then we quickly got to work. Back in the Taming the Terminal podcast (at [ttt.bartificer.net/...](https://ttt.bartificer.net/), Bart taught us about stream redirection, or what he likes to call Terminal Plumbing. This was a long time ago and many folks may not have listened to that great series. Bart takes us through it again but from the perspective of writing Bash scripts that can do everything we can do in the Terminal. We learn about Standard Input (STDIN), Standard Output (STDOUT), and Standard Error (STDERR). We also learn how to bifurcate STDOUT and STDERR to produce desired results. He walks us through how to use the symbols `>`, ` You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Join our Slack to talk to other Programming By Stealth learners by going to podfeet.com/slack.
PBS 149 of X — Better Arguments with POSIX Special Variables and Options
In this rather mind-bendy episode of Programming By Stealth, Bart Busschots takes into the weird world of POSIX special variables and options. He refers to some of them as being like handling nuclear power, at one point he suggests mind-altering drugs must have been involved in the design, and he even compares one of our newly learned tools to a chainsaw. He powered us through amidst my many interruptions with questions to where we can now write shell scripts that take flags and optional arguments using `getopts`. The final form of the syntax is very readable but knowing the reasons behind each bit is crucially important. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Read an unedited, auto-generated transcript: CCATP_2023_04_15
PBS 148 – A Bash Potpourri (Subshells, Relative Paths & More)
This week's Programming By Stealth is a great lesson on how no matter how long you've been coding, you'll still get caught out from time to time and think that the universe makes no sense. When Bart was working on the challenge from PBS 147, he ran into a bizarre situation for many hours. He eventually figured out what was going on, but it changed this installment into a walk down what went wrong, what he learned, and gave him the opportunity to teach us even more about shell scripting. The entire installment is all about the solutions to the challenge from PBS 147 so you might want to take a shot at it yourself before listening to or reading this week's installment. Before we get started, I also explained how we now have a terrific way to share our work on the challenges, through a GitHub Organization called pbs-students. I wrote it up in the article entitled [Introducing the Programming By Stealth Student Organization in GitHub](https://www.podfeet.com/blog/2023/03/pbs-students-github) You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Read an unedited, auto-generated transcript: CCATP_2023_03_25 Join our Slack at podfeet.com/slack and look for the #pbs channel, and check out our pbs-student GitHub Organization. It's by invitation only but all you have to do is ask Allison!
PBS 147 – Bash Arrays
In this week's episode of Programming By Stealth, Bart walks us through how to create, add to, and extract from arrays using Bash. It's a very light episode, which I manage to drag out longer by making him slow down and dig into the syntax used for arrays. It's not just me being dense (this time), there are squirrely brackets, square brackets, single quotes, double quotes, and the good old octothorp thrown in for some extra fun. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Join the Conversation: [email protected] podfeet.com/slack Support the Show: Patreon Donation PayPal one-time donation Podfeet Podcasts Mugs at Zazzle Podfeet 15-Year Anniversary Shirts Referral Links: Parallels Toolbox - 3 months free for you and me Learn through MacSparky Field Guides - 15% off for you and me Backblaze - One free month for me and you Setapp - One free month for me and you Eufy - $40 for me if you spend $200. Sadly nothing in it for you. PIA VPN - One month added to Paid Accounts for both of us
PBS 146 of X – Shell Loops
As Bart continues our education in shell scripting, he explains the simplicity of looping. He explains the four types of loops: while, until, for, and select, along with the simple syntax of do/done within a loop. He walks us through a lot of examples that illustrate how each one of these loops work. He ends by giving us a challenge, because teacher's pet Allison asked for homework last time. Enjoy this episode along with Bart's fabulous tutorial shownotes at pbs.bartificer.net. Read an unedited, auto-generated transcript: CCATP_2023_03_04
PBS 145 of X — Shell Conditionals
Bart continues his miniseries on shell scripting by teaching us conditionals in the shell. In order to explain why conditionals are a bit odd in shell scripting, Bart first walks us through how it was originally done and then shows us the evolution to a much better method. It's still weird, and many things are opposite of what you'd expect (like 4 is actually > 10), but he gets us there in the end. I was most excited to finally learn what `fi` means, which shows up in shell scripting and I'd seen before in AppleScript. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Read an unedited, auto-generated transcript: CCATP_2023_02_18
PBS 144 – Basic Shell Script IO
This week our guest is Bart Busschots with Programming By Stealth 144. When last we recorded, Bart started teaching us the basics of shell scripting using Bash. We learned how to collect terminal commands into a reusable shell script, but we didn't learn how to accept any kind of input. In this installment, we learn how to take inputs either from the execution of the command or from user input and how variable names are created for the different ways of receiving input. We also learn about Exit Codes, which are really error codes, and how they can be used in boolean logic. This knowledge will come into play when we learn next time about how to do conditionals and loops. It's a short episode, and as Bart says, "not a heavy lift." You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Read an unedited, auto-generated transcript: CCATP_2023_02_04
PBS 143 — Shell Script Basics
In this week's episode of Programming By Stealth, Bart Busschots starts building out one more tool in our toolbox: shell scripts. Bart starts with the basics explaining how to tell our little scripts which shell to run using the shebang line, the structure of shell scripts, commenting, assigning, and using variables, and how to write strings without having to escape every space and unusual character. Throughout the installment, Bart refers back to things we learned in Taming the Terminal podcast and tutorial. If you haven't listened to or read this series, you can download the book Helma helped us to produce using the Apple Books Store, or access it in a beautiful HTML version at [ttt.bartificer.net/...](https://ttt.bartificer.net/book.html), both of which have the audio of the podcast embedded within. You can find even more formats at [podfeet.com/tttbook](https://www.podfeet.com/blog/download-ttt-book/). Read an unedited, auto-generated transcript: CCATP_2023_01_07
PBS 142 — The XKPasswdJS Project Kickoff!
In this week's installment of Programming By Stealth, Bart officially kicks off the XKPasswdJS project. This is what we've all been waiting for! As I said to Bart at the end of our recording, we're no longer fixing to make a plan, we _have_ a plan. The shownotes for this episode point to the README file for the GitHub project. Bart explains n the podcast that we'll have a project skeleton phase where Bart will define the code that has to be ported from Perl to JavaScript, and he'll build the guidelines that will help us work as a team of contributors. This means things like a style guide, automated scripts to build the project, and configuration files for the tooling. He has a vision that we'll work on the direct port next, with no enhancements and I tried to get him to take a dollar bet on whether that goal will be achieved, but he didn't fall for it. After that, we'll go into maintenance mode. It's a fun episode because we're finally moving forward after learning all of the tools we'll need to make the project a success! You can find Bart's shownotes that point to the README at pbs.bartificer.net. I'm having a bit of trouble with the transcripts but by the time you read this, you _might_ be able to read an unedited, auto-generated transcript: CCATP_2022_12_10
PBS 141 — Generating UML Class Diagrams with Mermaid (Don't Cuddle the Mermaid)
In the last installment of Programming By Stealth, Bart taught us all about UML class diagrams for documenting the structure of our code. In this installment, Bart teaches us how to use the ASCII diagramming tool Mermaid to make our class diagrams. The advantage of Mermaid over a graphical tool to make our diagrams is that we'll be able to use Git to do version control for them. I think the most important part of this installment was when we learned that we shouldn't ever cuddle the mermaid. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net.
PBS 140 of X — UML Class Diagrams
Bart and I are back from summer vacation to kick back into gear on Programming By Stealth. As you may remember, we've been learning all of the tools we'll need to rewrite, test, and document Bart's password generation library xkpasswd from perl to JavaScript. In order to start the rewrite, we need to understand the structure of the code we're going to write, and instead of writing up a long text requirements document, we're going to use a standard software diagramming language called UML Diagrams. In particular, we're going to be using UML Class Diagrams. Bart will probably do most of the diagramming himself as he dusts off decades-old code but we need to learn how to read UML Class Diagrams ourselves, so it will be another tool in our toolbelt. Most podcasts would stick to everyday examples, but not here at the Podfeet Podcasts. Instead, Bart will teach us some Particle Physics along the way and you get that for free with this installment of Programming By Stealth. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net.
PBS Tidbit 6 of Y — A Real-World Webpack Case Study
In the past few episodes of Programming By Stealth, Bart has been walking us through worked examples to demonstrate how to roll up a web app using Webpack. These worked examples have been contrived to show how to perform the task. This week in a Tidbit episode, Bart walks us through how he tried using the skills he's been teaching us to roll up his [this-ti.me](https://this-ti.me) web app. It's a real-world test of the technologies and it allowed him to describe some of the pitfalls he fell into (though they were few and far between). It also gave him a chance to exercise the Webpack documentation, which happily turned out to be very good. There's no heavy lifting in this episode and no work to do to follow along. Instead, sit back and relax while you listen to Bart give advice on how to approach this task in your own code. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. [audio mp3="https://media.blubrry.com/nosillacast/traffic.libsyn.com/nosillacast/CCATP_2022_09_17.mp3"] mp3 download
PBS 139 of X — Bundling a Web App/Site with Webpack (Part 2)
In our last installment of Programming By Stealth, Bart started teaching us how to bundle an app/website using our bundler of choice, Webpack. The app/website he's creating for us is very simplified but is intended to allow us to exercise every one of the kinds of things we'd want to bundle. This week we finish all of the tools he wanted to teach us to bundle. In PBS 138, after explaining to us why we would want to do this, and initializing things, he taught us to import a pure JavaScript library with jQuery as an example, and a pure CSS library with basic Bootstrap as the example. In this week's show, we learn how to install and use Mustache for templating in a Webpack world. The process is quite a bit different from how we originally learned to implement Mustache in Programming By Stealth. Then we learn how Bootstrap 5 now lets us import just what we need (instead of all of Bootstrap). We need some fancy icons so Bart teaches us about Bootstrap icons which he now favors for free icons over Font Awesome. Our web app wouldn't be complete if we didn't have a fun font, so we learn to import free web fonts from Fontsource all with Webpack. Like the first half of the Webpack worked example, Bart's process of doing repetitive actions but for different reasons definitely helped cement the concepts for me.
PBS 138 – Bundling a Web App/Site with Webpack (Part 1)
We're back in the saddle after a summer of "PBS Adjacent" installments. Our last real PBS was learning how to use Webpack to bundle a JavaScript library for sharing with the world. That was cool, but a lot of us want to use Webpack to bundle a web app we've written ourselves to include all of the libraries we're using. We also want to have an easier way to reduce dependency on having an Internet connection. We also want an easier way to keep our bundle of libraries up to date. In this installment, Bart teaches us how to do all that with NPM and Webpack. I really enjoyed this episode because he used a worked example to show us how it all works, rather than talking only about the theory. The repetitive steps for each library really helped me to understand the process. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net.
PBS Tidbit 5 of Y — Tips for the Vacationing Programmer
I'm about to go on vacation where I suspect I'll have little to no Internet to play with. It would be really cool if I could use any downtime (like on the 11-hour plane flight) to do some programming. Unfortunately, our code is often filled with references to content delivery networks to get needed libraries like jQuery and Bootstrap. While on my walk on Friday I was mentally preparing a post for our PBS Slack community to ask them how I can modify my code so that it doesn't require the Internet to function. Imagine my surprise and delight when I saw Bart's topic for this week's Programming By Stealth - it's all about how to do exactly what I wanted. He covers how to prepare your computer for departure, how it's important to clone any repos you might want to reference, and most importantly how to localize your dependencies and then what to undo when you return home. It was exactly everything I needed to know and I hope it helps you too whenever you disconnect from the Net but still want to play with your code. You can read Bart's fabulous shownotes for this installment at [pbs.bartificer.net/...](https://pbs.bartificer.net/tidbit5)
PBS 137 of X — Bundling a Library with Webpack
We have one more thing to learn as we gear up to actually start writing modern code for Bart's HSXKPasswd tool. The last piece of our tool kit is a bundler. In this installment Bart teaches what problems bundlers solve, and he explains why he chose the bundler Webpack for our project. After learning about Webpack, Bart takes us through a worked example, bundling the Joiner module we've been working on through this part of the series. When we're done, we'll have an ES6 bundle and a Universal Module Defnition (UMD) bundle to cover both modern and more legacy needs. In the episode you'll hear me say that the exercise hit errors, and after the show we diagnosed the problem and fixed the shownotes so have no worries about that! You can, as always, find Bart's fabulous show note tutorial for this installment at pbs.bartificer.net/...It's Showtime
PBS Tibit 4 of Y — Rethinking a Web App – from Web Server to Cloud Stack
Over the past few months, podfeet.com went through a period of really poor performance. My site hadn't been snappy in the last few years with page loads of up to 6 seconds, but it hit a tipping point where it was taking in excess of 40 seconds for pages to load. William Reveal and Bart migrated the services behind podfeet.com that improved performance to where most pages load in less than a quarter of a second. In this Programming By Stealth adjacent episode, Bart wanted to walk through the structure of what makes up a web server, what a web server does, what all of the components are, and then walk us through how these things have changed in the nearly 17 years podfeet.com has been around. As we continue our journey in Programming By Stealth we are moving from the client-side to the server-side, so this lesson is quite relevant to helping our fellow learners understand what's behind the next steps we'll be taking. There's no homework in this episode but it's also challenging to keep the pieces straight in your head so get ready for a fun and instructive "Tidbit". You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net.
PBS Tidbit 3 of Y
In this Programming By Stealth adjacent installment labeled Tidbits 3 of Y, Bart Busschots talks to us about the dangers of using other people's code in your code, and the danger of not using other people's code. He explains this seeming dichotomy and gives us ways to approach the problem taking a middle ground. He helps us think about how to choose whether to use other's code and whose code to use, and even how to ensure it's kept up to date with security patches. It's definitely a philosophical installment and it was triggered by a recent event where a developer maliciously broke his own code, impacting a lot of developers. It's actually sort of a success story of open source which I didn't expect. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net.
PBS 136 of X — More Jesting
Bart Busschots taught us the basics of Jest last time for our Test Driven Development environment. This week we learn to group our tests using the `describe()` function in Jest. Grouping tests with describe does more than eliminate the need to comment our code, it also provides more useful output from our tests and scopes what happens inside. As Bart describes it, we climb "Mount Jest" at one point as he explains how we can also loop our tests (instead of repeating code as we did last time) using `describe.each()()`. It's a little head bending with arrays of arrays and functions of functions but it sounds worse to describe than it actually is to read and create. He then describes ways to run certain setup and tear down functions before and after our tests are run and why we might need to do that. Finally, we get the last cool thing we'll need to understand about Jest, and that's how to use the `.only` and `.skip` modifiers on our tests so that we can focus on individual tests while we're chasing bugs. For the first time in a long time, he even gives us an optional challenge to flex these new Jest muscles. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net.
PBS 135 of X – Introducing Jest (and re-Introducing Test Driven Development & Unit Testing)
In this week's installment of Programming By Stealth, Bart takes us down memory lane to 102 episodes ago when he first introduced us to the concept of test-driven development. He explains why back then he taught us how to use QUnit for our TDD work, and why it's no longer in favor with him. It's not just the advancements in technology like ES6, but it's also because QUnit makes it terribly hard to write tests and to interpret what you've written when you've been away from it for a while. He walks us through his criteria for picking a new TDD tool, and why he chose Jest for the job. He then walks us through a worked example of how to write some simple tests on a module and of course, explains how Jest does its job running our tests. I liked it, even though my head hurt during a bit of it! You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net.
PBS Tibit2 – It's Ok to Play a Different Game!
This episode of Chit Chat Across the Pond perfectly straddles the line between Programming By Stealth and Lite. While it's definitely a nerdy discussion topic, Bart Busschots is really just telling a story. He starts by explaining how he ended up a computer scientist essentially by accident, and tells us about a fantastic CS professor he had who inspired him through an assignment about a game called 8 Queens. He tells these stories as a way to explain that when I used the Terminal and `egrep` to help me solve the game Wordle a few weeks ago, it wasn't really cheating. I think whether you're a programmer or not, you'll enjoy hearing Bart explain why. Bart's shownotes can be found at pbs.bartificer.net/...
PBS 134 of X — Firming up our Foundations (2 of 2)
In this installment of Programming By Stealth, Bart Busschots finishes firming up our foundation on a few more things before we meet Jest, which will be the Test Driven Development (TDD) environment we'll be learning next time. He explains in some adorable examples involving a parrot (named Polly of course) how getters can be used to construct short but powerful syntaxes that seem quite counterintuitive at first glance. These are heavily used by Jest, and without learning about them, they would simply look like magic. He said some purists may see this syntax as an abuse of getters but it's a pretty slick method that yields very readable APIs. The second thing he teaches us is that functions can actually return functions. That sounds like opening a hole in the space-time continuum but it's actually quite logical and useful as Bart explains the usefulness of this really well. No parrots involved, but lots of pancakes and waffles in his examples. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net.
PBS 133 of X – Firming up our Foundations (1 of 2)
In this installment of Programming By Stealth, Bart Busschots takes us through some review in order to prepare us to begin our journey into test driven development (TDD) with the tool Jest which he's chosen for our TDD. He clears up some confusion on the difference between `npm install` and `npm ci`, and then he gives us more guidance on when to use which JSDoc tags, especially when documenting plain objects. He gives us a refresher on the different ways of defining functions, and especially arrow functions which are heavily used by Jest. Jest also uses function chaining heavily so he reminds us of how that works as well. Even if you remember all of this and had it all clear in your head (I most definitely did _not_) it's great to have all of this content in one post as reference. The next installment will continue firming up our foundation with some new concepts that are heavily used by Jest. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net
PBS 132 of X — Managing JSDoc
In this final Programming By Stealth and final Chit Chat Across the Pond for 2021, Bart teaches us how to manage our documentation in JSDoc. As any good programmer, he insists on automating as much as he possibly can. He starts by showing us each step that we have to do at the command line, and methodically puts together a JSDoc configuration file that runs scripts and helps create documentation directories, and installs plugins. Even better he helps us to configure JSDoc so that it will alert us if we make a mistake in our inline or block tags, since JSDoc by default just ignores those mistakes. Finally we walk through three different themes for our documentation and we actually choose one for the XKPASSWD project and he shows us how we can even modify the theme. It all has to do with Bart preferring blue over purple. It's great fun, and really gives us the tool we need now to get ready for the next step. You can follow along with Bart's fabulous tutorial show notes pbs.bartificer.net.
PBS 131 of X – Introducing JSDoc
In our last installment, Bart explained why good documentation matters to ourselves and to other developers who want to use our code, and he also explained that using an automatic document generator like JSDoc could help make it easier for us to write good documentation and to keep it up to date more easily. In this week's installment, he starts to show us how to actually write JSDoc comments in line with our code. He explains the different elements of JSDoc comments and demonstrates how his own doc comments evolve as he figures out what he's trying to do. I really enjoyed this installment and his example is perfect for us nerds. I highly recommend you follow along in Bart's fabulous tutorial shownotes at pbs.bartificer.net
PBS 130 of X – Good Technical Documentation
As we embark on our journey to create a JavaScript module for the strong, memorable password generating service XKPASSWD, Bart explains the importance of creating good documentation. That sounds super annoying and tedious, and it is, so Bart explains why a good documentation generator will be our friend. He outlines the two distinctly different users of our documentation: those of us who will be helping to create the code itself as part of the community project, but also for the people who will be users of our JavaScript module. Those users will be interested in how to take the module and embed it into a web page to generate passwords, or to create an Alfred scheme and more. These two different users will have different requirements, and yet our documentation generator can fill both needs without unnecessary extra work. This isn't the sexiest topic, but Bart does convince me that the tools will help us to have the rigor to do it and not let our human instincts take over and allow our documentation to get out of date. You can find Bart's fabulous shownotes at pbs.bartificer.net
PBS 129 of X - ESLint with Guest Instructor Helma Van der Linden
Bart Busschots had a vision that certain things we would learn in Phase 2 of Programming By Stealth would be taught by guest lecturers. I thought he was bananas that this would work, but Helma Van der Linden, also known as Helma from the Netherlands stepped up to teach us about coding linters, and specifically ESLint. In this installment she explains what linters are, and why they're useful. Even though she's not technically fond of them, she believes in linters because of what they can do for a coding team. Once she sells that idea, she walks us through how to install ESLint inside the development environment VSCode. From there she explains style guides, and shows us how to install and use the very popular airbnb style guide. She gives us tips on usage and even how to override the linter's demands. I think it was incredibly courageous to fill Bart's shoes, and she did a fantastic job both in the podcast and in the detailed written show notes over at bartificer.net
PBS 128 of X – JavaScript Module Basics
This installment of Programming By Stealth could probably have been two segments but all of us are itching to get moving quickly so we decided to power through. In the first part of the installment, Bart introduces us to JavaScript modules by giving us a bit of a history lesson on how they've evolved. If you're brand new to modules, this will be interesting but not essential. If you have history with them though, you'll definitely need to pay close attention to understand what's changed. Then Bart gets into the details of how modules work. He explains how JavaScript modules export variables, functions, and classes and how there are named exports and default exports and how the syntax differs. What fun would learning about exports be if he didn't tell us how to import variables, functions and classes into our code for when we use these modules? We also learn about module specifiers to make it all go. Finally, Bart takes us through three worked examples where he creates some JavaScript modules that exercise everything we just learned. It's a long episode but as always, Bart's excellent show notes at pbs.bartificer.net
PBS 127 of X – Introducing NPM (and Node)
As we launch full steam into Phase 2 of Programming By Stealth, Bart Busschots introduces us to the Node Package Manager and Node itself. Unlike our mini-series within a series for Git and Chezmoi, Bart isn't going to do an exhaustive walk through NPM and Node. Instead he's going to teach use what we need as we go along. In order for that to make any sense at all, in this installment, he explain to us at a high level Node and NPM are, and what problems they solve. This lesson isn't all theory though, we actually get to use Node and NPM to build a tiny, self-contained JavaScript app. I had great fun in this installment and Bart's always fabulous tutorial shownotes are particularly well-written this time. You can find them over at pbs.bartificer.net/...
PBS 126 of X - Introducing Phase 2
At episode 700! of Chit Chat Across the Pond we take Programming By Stealth into what Bart is calling Phase 2. We've learned a great deal about the client side of programming and we're now going to move to the server side of the web. As Bart described Phase 2, I realized that it's as though we've finished out undergraduate work in computer science, and we're entering graduate school. That observation is not based on the concepts being harder, but rather because we are going to work as a collective to help our professor on a project that's near and dear to his heart. Bart created the fabulous web-based password creation tool at xkpasswd.net many years ago, in fact so long ago that it's on a very creaky set of tools that have been deprecated and the entire service will die if it doesn't move onto modern tools. This will be a great excuse for us to learn to work on the new tools as Bart is forced to learn them and at the same time we will be enlisted to help him with the development of the new and improved xkpasswd. I was really excited as I listened to Bart lay out the future of the next 100 or so episodes and everything we're going to learn. Whether you've been working alongside the rest of the listeners since Programming By Stealth 1, or whether you're a seasoned programmer who'd like to learn the new tools like Bootstrap 5 and PHP 8, I think you'll have great fun with the next phase of Programming By Stealth. You can find Bart's strategic plan for Phase 2 laid out at bartificer.net
PBS 125 of X – Chezmoi on Multiple Computers
In this final episode of Programming By Stealth before we launch into the back end of web development with PHP, Bart finishes his miniseries on Chezmoi to manage dot files. In this installment he teaches us how to effectively manage our dot files on multiple computers using templating to ensure that the correct settings end up on every computer. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net/...
PBS 124 of X – Chezmoi Templates
Bart has been really excited to teach this next installment of Programming By Stealth where we really dig into learning about Chezmoi templates, including learning functions and arguments, how to declare variables, looping over arrays, and learning the `sprig` utility functions to extend Chezmoi. I thought he was going to jump out of his chair he was so happy to teach pipelines which are a grand way of embedding function statements in a way that is very human-readable. This is our penultimate installment on Chezmoi, where next time we'll be learning how to manage our dot files across multiple computers where not everything is the same between computers, but much of it is. You can find Bart's fabulous tutorial shownotes to follow along at pbs.bartificer.net/...
PBS 123 of X — Backing up and Syncing Dot Files with Chezmoi
In this week's episode of Programming By Stealth, Bart Busschots continues his instruction on how to use the open source tool Chezmoi to manage our dot files, those hidden configuration files on our Macs. In this installment, Bart teaches us how nearly effortless it is to sync our Chezmoi-managed dot files up to a private repo on GitHub. Seriously, it's like 2 steps. Bart then teaches us how Chezmoi supports templating. When Bart started to describe it, I said, "Oh! It's just like mail merge in Microsoft Office!" He laughed, and said he hoped I would say that. With Chezmoi, let's say you have your email address in a bunch of your dot files, and you need to change it to a different address. If you use Chezmoi's templating feature, you can create one file with your email address and in every dot file you reference that address, and only have to change it in one place. Bart walks us through a couple of worked examples to help us see exactly how it works and get a little practice. The next episode of Programming By Stealth will end this mini-series within a series, and if Bart's work manages to finally slow down to where he can get some good thinking time, we should start up learning about PHP shortly after that. As always you can read along with Bart's spectacular tutorial shownotes at pbs.bartificer.net/...
PBS 122 of X – Managing Dot Files with Chezmoi
In our previous installment of Programming By Stealth, Bart introduced us to Chezmoi, an open source tool to help us manage dot files, those hidden configuration files that get created on our Macs. Configuration files contain information about how we like our Macs configured, including where to access our ssh keys and our preferred command line editor and more. If we move between computers it would be nice to have the same configuration, or if we do a clean install it would be great to be able to have these dot files in place on our newly-formatted machines. He teased us last time though but just introducing us to Chezmoi and not letting us do much. In this installment he lets us take Chezmoi out for a spin. We edit an environment variable to set our preferred text editor, and then use Chezmoi to talk to Git to add and then commit those changes. Along with more changes and actions with Chezmoi, Bart works hard to cement the terminology of Chezmoi because without it, it's easy to not realize what Chezmoi is doing under the hood and it could cause problems in the future. You can find the shownotes for this episode at pbs.bartificer.net/....
PBS 121 of X — Managing Dot Files and an Introduction to Chezmoi
As we've become nerdier while learning from Bart, we had started to add hidden configuration files to our Macs and PCs. On the Mac, these configuration files hidden by default by putting a dot in front of them, and hence they are called dot files. Maybe you've stored your ssh keys, or in our Git series you created a user-level gitconfig file, or perhaps you've installed VS Code or Sourcetree which also add hidden configuration files. In this installment of Programming By Stealth, Bart explains the problem to be solved of how we manage these configuration files if we use multiple computers or migrate to a new computer or do a nuke and pave. He lays the groundwork for why he loves the dot file manager called Chezmoi from chezmoi.io. The installment is a bit of a tease because after learning why we want to have a dot file management tool and why Bart favors Chezmoi for the job, he only lets us install it and run two commands before he says, "And next time we'll start to use Chezmoi."
PBS 120 – Ignoring Files in Git
A few weeks ago I told Bart off the air that when he was done with his mini-series within a series all about the version control system Git, I'd like a few minutes with him offline so he could explain how to ignore files in Git. I knew there was a way to do it but he hadn't covered it so I assumed it was just something quick he could explain to me. His reaction surprised me, he said, "D'oh!" because he realized that this is a _very_ important part of using Git and that he would definitely dedicate an installment to it. So this week Bart teaches us how to use `.gitignore` to tell Git _not_ to track changes to files and folders. He explains that there are files your computer or even your code editor may be creating that you don't want Git to track, and of course there all of the dummy test files we as humans create that would not be something we'd want to share with our co-workers or fellow open source contributors. I was nervous about using `git ignore` because I understood it relied on patterns, and I thought that would mean something along the lines of using Regular Expressions, which are kind of daunting. I shouldn't have been worried, `.gitignore` patterns definitely don't require any heavy lifting. I was really looking forward to this installment and it didn't disappoint. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net/...
PBS 119 of X — Open Source on GitHub
As promised, Bart takes us through the final step in our GitHub journey - learning how to contribute to an open source project. He explains three open source scenarios: using someone's code exactly as-is, using their code with a few customizations of your own, and finally the most interesting scenario, customizing the code and contributing your customizations back to the project. When he gets to the final scenario, he gives us a way to practice these newly-acquired skills, and it's something he's wanted to do for a long time. He's created a gallery for all Programming By Stealth listeners to contribute their work they've done in the various challenges we've worked in Programming By Stealth. If you have your code from the challenges for Conway's Game of Life, the number guessing game, the currency converter, the currency grid, the world clock or the time sharing clock, we'd love to have you contribute to the PBS gallery to show off your work. Bart explains that the GitHub Pages he's created will allow us to fork his code, make our own changes, and then create what's called a pull request to get them accepted into the official PBS Gallery at gallery.pbs.bartificer.net. I worked through the process for one of my projects and it was definitely a learning experience, which is the whole point of Programming By Stealth. Bart's fantastic tutorial shownotes are availale at [pbs.bartificer.net/...](https://pbs.bartificer.net/pbs119)
PBS 118 of X — JavaScript Apps with GitHub Pages
In this installment of Programming By Stealth, Bart Busschots teaches us how to use a free service of GitHub called GitHub Pages. This service literally gives you free web hosting for the web apps we've learned to make in Programming By Stealth. Bart starts by explaining to us the difference between static and dynamic webpages, and web pages created by static site generators like Jekyll which generates GitHub Pages. It's trivially easy to create a GitHub Page from an open GitHub repo (literally three clicks in the interface) but it's really important to understand what you're doing when you take advantage of this service. We'll learn what you can do and what you can't do and what you could do if you choose to dig deeper into the woods on how to use Jekyll to generate GitHub Pages. I'm really excited to learn about GitHub Pages and how easy it is to host all of the web apps we've created in this series. You can find the shownotes at pbs.bartificer.net/...
PBS 117 of X – Introducing GitHub
In this week's installment of Programming By Stealth, Bart teaches us how to use GitHub as a public repository for our code, or for anything we write for that matter. He reviews whey he chose Github, and then we dig right in. He does explain the benefits of using SSH to access Github instead of HTTPS, and if you haven't set up SSH keys before or you're rusty on the topic, he includes links to our sibling show, Taming the Terminal where you can learn how to do it. We create a new repo from scratch in Github on the web with a README file and a license, and then we get to use a command line version of Github called `gh`. With `gh` we pull the repo down from Github, we edit the files, we commit them locally, and push them back up to Github all from the command line. We then flip the tables and from the command line create another repo directly on Github, create some files, set them up to track and push and pull again to prove it's working. It's surprisingly easy and simple. Bart teases us with the next episode where we'll learn how to create a website using Github pages, which will give us a nice place to host our web apps for free. You can follow along with Bart's fabulous shownotes at pbs.bartificer.net/...
PBS 116 0f X – Team Git
In previous installments of our Git miniseries within a series in Programming By Stealth, Bart taught us how to work in Git standalone on one computer, then how to work as one developer with multiple computers. In those installments he taught us the necessary commands and their importance in the Git scheme of things. In this installment he talks about how and where to work with a team in Git. We learn about the plethora of options from free to full enterprise-size Git-as-a-service, and why he'll be focusing on Github for the future. He explains how important it is to set up conventions for your team (before you start) for things like coding styles, development paradigm and more. There's no coding in this episode as it's more philosophical than other episodes. You can find Bart's fabulous shownotes over at pbs.bartificer.net/pbs115.
PBS 115 of X – The Push & Pull of Git
When Bart started this mini-series within a series on using Git for version control, he explained that our journey would be in three Phases. Phase 1 was the section where we learned about local repositories, and Phase two was dedicated to learning how to have multiple repositories just for ourselves. In this lesson, we finish up Phase 2 by learning how to push and pull changes from our imaginary desktop to our imaginary NAS to our imaginary laptop and back. I slowed down the class a few times with some confusion I had, but Bart always claims that my confusion often helps other people who might be hung up on the same thing. I enjoyed myself immensely, even when I was confused! We are about to enter Phase 3 where we will learn how to collaborate with others. We'll be doing this collaboration using Github, because it's pretty much the defacto home for most open source projects. When you're done listening to PBS #115 and studying the shownotes, you might want to get yourself a Github account so you can be ready for the next lesson. As always you can find Bart's fabulous tutorial shownotes for this lesson at pbs.bartificer.net/...
PBS 114 – Tracking Git Branches
We continue on our journey to learn how to use Git to do version control as a single person, but this time with multiple devices. As Bart says during this episode, "Who is learning to program here who doesn't have multiple computers?" We've learned how to push our changes to a single separate repo, but we had to always say what branch we wanted to push to what branch on the origin. In this installment we learn how to tell Git to _track_ our branches so they stay in sync without us having to tell Git every time which branches to push where. We also learn how to make sure our annotated tags get pushed as well by setting a single repo or all Git repos on our computers to push our tags. Bart leaves us with a big tease at the end. We learn how to clone a repo in preparation for having two computers accessing the same code in Git with a primary source acting as the go between for them.
PBS 113 of X My First Git Remote
Last time on Programming By Stealth, Bart introduced the concept of remote repositories, also known as remotes. It was one of those episodes where we learned a lot but didn't get to apply what we learned. In this week's installment we get our hands digitally dirty as we create a _bare repository_ (a repo with no working tree), and declare it to be a backup of our local repo. We learn how to fetch and view remote branches and tags, how to push everything to the remote, and then after making some changes, push them to our remote backup. We're still in a bit of a sandbox as we do all this on one computer inside a couple of local folders, but the lessons exercise our new muscles to get ready for the big leagues. Bart's excellent tutorial show notes are as always available at pbs.bartificer.net/... [audio mp3="https://media.blubrry.com/nosillacast/traffic.libsyn.com/nosillacast/CCATP_2021_04_03.mp3"] mp3 download
PBS 112 of X – Introducing Git Remotes
In this next installment in our mini-series on learning Git, Bart Busschots gives us some foundational knowledge on how to work beyond being one person with one Git repository. He starts by reinforcing what he's explained before, that Git is a peer-to-peer technology, which is hard to wrap your head around if you're used to client-server relationships. He walks us through three scenarios to explain how every "actor" gets a repository and why. Then he explains the jargon of "local" vs "remotes". It's at this point that my head started to hurt, but Bart claims this is where I'm value-added to the podcast. I ask all the questions you might have, and I suspect many more than you have. Bart sticks with me and makes sure I fully understand. You can find Bart's tutorial show notes at: pbs.bartificer.com
PBS 111 of X – Stashing Changes
In this installment of Programming By Stealth, Bart teaches us how Git can help us when we forget to switch to the correct branch before starting to make changes to our code. We're only human, and we will forget, and Git's `stash` command allows us to set our changes aside, switch to or even create and switch to the correct branch and then apply our changes. His explanations and repetition in the exercises really cement the knowledge. As a bonus tip, he teaches us how to make shell variables inside the Terminal which will help us with some of the repetitive typing in the future. Bart's tutorial shownotes are at pbs.bartificer.net/pbs111
PBS 110 of X – Merge Conflicts
In this installment of Programming By Stealth Bart teaches us how to deal with conflicts in branches of our code. He has been purposely only changing one thing at a time before now, but it's time to face the reality of when two branches change the same line in the same file. I've been terrified of this topic for a long time, but Bart shows us how easy it is to see exactly what the conflict is, how you can back out of merging if you make "a pig's breakfast" of it, and how to resolve your conflicts without fear. It's not nearly as terrifying as I thought it would be. You can find Bart's tutorial show notes at [pbs.bartificer.net/...](https://pbs.bartificer.net/pbs110) And if you learn a lot from Bart, please consider becoming a patron of his by going to [www.patreon.com/...](https://www.patreon.com/ltpod/posts)
PBS 109 of X — SemVar & Structured Commits
We continue our mini-series within a series learning the version control system Git. We learn two methods to enhance our branching strategy. First, we'll walk through some basic principles on how to number our released versions of our code. From there we'll explore three types of changes that would cause a change in our release version: fixes, new features, and breaking changes. Each of these types of updates to the version of our code can be articulated with Semantic Versioning, also known as SerVer. This numbering convention informs users of our code on the meaning of each release. Finally, we marry these concepts by creating meaningful commit messages using another convention called Conventional Commits. Not only can a user of our code see at a glance what happened in a specific commit, documentation can be auto-formatted to explain the commits. There's not a lot of hands-on in this lesson but as a structured person, I really appreciate these conventions and why they're important. You can find Bart's tutorial shownotes at pbs.bartificer.net/...
PBS 108 of X — Merging & Tagging
In this installment of Programming By Stealth, Bart Busschots continues on his series within a series explaining the version control system Git. We advance in our branching strategy by working several commits on our dev branch and then learn to use a merge commit to bring only the final commit into the main branch, leaving the half-working intermediate commits to exist only on the dev branch. This process illustrates the need to learn about tags, both light-weight and annotated. Once we understand how these tags work and their importance, we evolve our PBS branching strategy one step further. Bart's tutorial shownotes are available at pbs.bartificer.net/...