PLAY PODCASTS
Programming By Stealth

Programming By Stealth

213 episodes — Page 1 of 5

PBS 185 of X: Customising Bootstrap 5 with Sass

Jun 7, 20261h 32m

PBS 184b of X: SASS Basics

May 27, 20261h 28m

PBS 184a of X: SASS Basics

May 10, 20261h 57m

PBS 183 of X: Customising Bootstrap with CSS 'Variables'

Apr 26, 20261h 25m

PBS 182 of X: CSS 'Variables'

Apr 26, 20261h 38m

PBS Tidbit 18 — A Real-World Jekyll Example

Bart taught us about creating static sites with Jekyll and even how to create custom layouts using Bootstrap 5. We learned about Markdown files with YAML front matter and more. In this Tidbit, Bart walks us through how he used everything he learned and taught us to migrate his Let's Talk website from WordPress to Jekyll hosted on GitHub Pages. It's a fun episode because we learn what worked well, what slipped through the cracks, and what he forgot to do. He built up a lot of technical debt on Let's Talk with his Let's Talk Apple and Let's Talk Photography podcast posts, so he highly encourages you to fork the site and create pull requests to help him clean up the older posts. You can see how many posts need cleanup (mostly adding contributors) at lets-talk.ie/temp-episodes-to-review.html You can find Bart's fabulous tutorial shownotes and the audio podcast at pbs.bartificer.net. Join the Conversation: [email protected] podfeet.com/slack Support the Show: Patreon Donation Apple Pay or Credit Card one-time donation PayPal one-time donation Podfeet Podcasts Mugs at Zazzle NosillaCast 20th Anniversary Shirts Referral Links: Setapp - 1 month free for you and me Wispr Flow - 1 month free for you PETLIBRO - 30% off for you and me 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 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 CleanShot X - Earns me $25%, sorry nothing in it for you but my gratitude

Mar 15, 20261h 26m

PBS Tidbit 17b — Simplifying Developer Setups with Docker

This instalment is the second half of PBS Tidbit 17 in which Helma van der Linden is the instructor and Bart Busschots is the student. We pick up the plot right where Helma begins to teach how to reuse the Docker image created in the first half of the lesson. You can find Helma's fabulous tutorial shownotes and the audio podcast at pbs.bartificer.net Join the Conversation: [email protected] podfeet.com/slack Support the Show: Patreon Donation Apple Pay or Credit Card one-time donation PayPal one-time donation Podfeet Podcasts Mugs at Zazzle NosillaCast 20th Anniversary Shirts Referral Links: Setapp - 1 month free for you and me PETLIBRO - 30% off for you and me 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 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 CleanShot X - Earns me $25%, sorry nothing in it for you but my gratitude

Feb 1, 20261h 22m

PBS Tidbit 17a — Simplifying Developer Setups with Docker

This very special episode of Programming By Stealth is a Tidbit written and taught by the lovely Helma van der Linden. Bart has wanted to understand Docker better, and Helma has some great use cases for how to use them for developer setups so it was a good opportunity for Bart to learn from Helma. The material is quite long, so the podcast was recorded in two segments, Tidbit 17a and b. Tidbit b will be along shortly, and picks up and the heading entitled "Reusing the Docker image". You can find Helma's fabulous tutorial shownotes and the audio podcast at pbs.bartificer.net Join the Conversation: [email protected] podfeet.com/slack Support the Show: Patreon Donation Apple Pay or Credit Card one-time donation PayPal one-time donation Podfeet Podcasts Mugs at Zazzle NosillaCast 20th Anniversary Shirts Referral Links: Setapp - 1 month free for you and me PETLIBRO - 30% off for you and me 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 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 CleanShot X - Earns me $25%, sorry nothing in it for you but my gratitude

Jan 28, 20261h 40m

PBS Tidbit 16 — How Podfeet.com Works

Bart continues his unofficial series where he listens for where I say, "I wish I understood..." This time, he explains the history of how Podfeet.com has evolved over the last 20 years. We started with a shared server, then a virtual machine, to a dedicated server, and to a separate database server. He explains how the LAMP Stack works (Linux, Apache, MySQL, and PHP) and all the work Apache had to do. Then he explains how, when I moved Podfeet.com to NGINX + PHP-FPM, things got much more efficient. He even takes us through how Cloudflare protects my site and provides caching to speed up access to Podfeet.com to the benefit of all. You can find Bart's fabulous tutorial shownotes and the audio podcast at pbs.bartificer.net. Read an unedited, auto-generated transcript with chapter marks: PBS_2026_01_09 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! Join the Conversation: [email protected] podfeet.com/slack Support the Show: Patreon Donation Apple Pay or Credit Card one-time donation PayPal one-time donation Podfeet Podcasts Mugs at Zazzle NosillaCast 20th Anniversary Shirts Referral Links: Setapp - 1 month free for you and me PETLIBRO - 30% off for you and me 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 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 CleanShot X - Earns me $25%, sorry nothing in it for you but my gratitude

Jan 10, 2026

PBS Tidbit 15 — Building an Indie Author Site with Hugo by Eddie Tonkoi

This week, we have a guest contribution by the fabulous Eddie Tonkoi. He walks us through his journey to move his wife's book series website using a static site generator called Hugo. He hosts the generated files on GitHub and serves them (for free) through Cloudflare. You can find Eddie's fabulous tutorial shownotes and the audio podcast at pbs.bartificer.net. Read an unedited, auto-generated transcript with chapter marks: PBS_2025_11_05 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! Join the Conversation: [email protected] podfeet.com/slack Support the Show: Patreon Donation Apple Pay or Credit Card one-time donation PayPal one-time donation Podfeet Podcasts Mugs at Zazzle NosillaCast 20th Anniversary Shirts Referral Links: Setapp - 1 month free for you and me PETLIBRO - 30% off for you and me 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 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 CleanShot X - Earns me $25%, sorry nothing in it for you but my gratitude

Nov 6, 202540 min

PBS Tidbit 14 — Coding with AI

You can find Bart's fabulous tutorial shownotes and the audio podcast at pbs.bartificer.net. Read an unedited, auto-generated transcript with chapter marks: PBS_2025_10_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! Join the Conversation: [email protected] podfeet.com/slack Support the Show: Patreon Donation Apple Pay or Credit Card one-time donation PayPal one-time donation Podfeet Podcasts Mugs at Zazzle NosillaCast 20th Anniversary Shirts Referral Links: Setapp - 1 month free for you and me PETLIBRO - 30% off for you and me 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 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 CleanShot X - Earns me $25%, sorry nothing in it for you but my gratitude

Oct 26, 20251h 22m

PBS Tidbit 13 — PowerShell Tames Monty

Bart had an itch to scratch, and he decided to scratch it with PowerShell. You'll remember that he gave us a teaser Tidbit seven months ago in Tidbit 11, and we still haven't started learning PowerShell so this one is yet another teaser. The itch he had was trying to understand the "Monty Hall Problem" [en.wikipedia.org/...](https://en.wikipedia.org/wiki/Monty_Hall_problem), and by writing a script to simulate a thousand rounds of the game, he was able to finally understand the solution. It is great fun hearing Bart describe how he spent the first few days of his annual leave programming ... because it was fun! You can find Bart's fabulous tutorial shownotes and the audio podcast at pbs.bartificer.net. Read an unedited, auto-generated transcript with chapter marks: PBS_2025_07_19 Join our Slack at podfeet.com/slack and check out the Programming By Stealth channel under #pbs. Support Bart by going to lets-talk.ie and pushing one of the big blue support buttons. Referral Links: Setapp - 1 month free for you and me 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 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 CleanShot X - Earns me $25%, sorry nothing in it for you but my gratitude

Jul 20, 202555 min

PBS 181 of X — Reusable Snippets with Jekyll Includes

We've been having great fun in Programming By Stealth learning how to use Jekyll to create a website using GitHub Pages. This week Bart goes through the challenge he left us with last time — to add a nav bar to our little static website using Bootstrap 5 along with Jekyll and Liquid templates. Bart had a lot of fun with his solution so it was fun to hear him dust off the cobwebs on Bootstrap. Then we turn to learning about Jekyll's `includes` feature, which is reusable snippets similar to how TextExpander snippets let you write something and change it in only one place. The worked examples simplify the code in a way, and we learn how to use `includes` to create advanced image markup. I also enjoyed learning about Liquid comments and how you can create white space between sections of your code for ease of writing and debugging that then never show up in the resultant HTML.

Jun 7, 20251h 5m

PBS 180 of X — Theming Jekyll

We continue our series on making websites using GitHub Pages. Building on our Jekyll knowledge with Liquid templates, we now learn how to create our own theme with Jekyll layouts. The terminology of Jekyll is still tricky, but with some worked examples and a challenge this time, maybe it will start to cement in our brains! You can find Bart's fabulous tutorial shownotes and the audio podcast at pbs.bartificer.net.

May 25, 20251h 12m

PBS 179 of X — Introducing Liquid Templates in GitHub Pages with Jekyll

In this episode, Bart continues teaching us about GitHub Pages using Jekyll by introducing us to Liquid Templates. Liquid allows us to move from adding static content to our web pages to auto-generated information. It's a lot for one lesson, and some of the terminology is a little weird, but as always, Bart's worked example brings it home. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net.

May 11, 20251h 10m

PBS Tidbit 12 — XKPasswd Rewrite Exits Beta

In this tidbit episode of Programming By Stealth, Bart Busschots and Helma van der Linden start by reviewing how she took the reins of the XKPasswd project to first convert it from Perl to JavaScript, then to rewrite the web app. After that, she separated the JavaScript library from the web app code. This episode is primarily walking through exactly how she accomplished that split. And now XKPasswd is officially out of beta and available at xkpasswd.net You can find Helma's fabulous tutorial shownotes and the audio podcast at pbs.bartificer.net.

Apr 23, 202551 min

PBS 178 of X — Getting Started with Jekyll Pages

Last time we learned how to install Ruby, install Bundler, install Gems, and build a very simple website using Jekyll as our static site generator into GitHub. In this installment of our Jekyll miniseries, Bart explains Jekyll's build process which is mostly automated by how you name things and the content of the files you create (like adding YAML front matter.) Then we spend some quality time bemoaning how the Jekyll developers reuse the word "assets" to mean two different things. Bart avoids some of the associated confusion by creating some naming conventions of our own. We get to do a worked example where we learn a little bit about Pages in Jekyll and do a few things the hard way that we'll redo the easy way in the coming installments. If you're following along realtime, note that we won't be recording for 6 weeks because of some birthdays and Allison's trip to Japan.

Mar 18, 20251h 13m

PBS 177 of X — Publishing A Basic Jekyll Site (GitHub Pages)

In our miniseries on GitHub Pages, we learn how to create a basic Jekyll site. To do this, we must install a modern version of Ruby, install its Gem Bundler, create a little placeholder site, and then serve Jekyll to view our site locally. We push it to GitHub where the GitHub Actions we learned about last time do their magic and create a real website all for free. But we didn't stop there. One of our goals is to create our own theme, and to build on what we get with Bootstrap. We actually download the source, not compiled version of Bootstrap and pick and choose the files we want to use. While learning about the standard conventions for directory structure in Jekyll sites, we'll also learn about Sass — Syntactically Awesome Style Sheets — and how Jekyll will turn them into standard CSS. It's a bit of a heavy lift in terms of a lot of moving pieces, but no one bit of this was hard to learn. It was great fun, and this is just the beginning of what we're going to learn about using Jekyll as a fully-functional content management system.

Mar 2, 20251h 21m

PBS 176 of X — Deploying a JavaScript Web App with Webpack & GitHub Actions

Way back in September of 2022, Bart finished off the Webpack miniseries by leaving it as an exercise for the student to deploy their web apps to GitHub Pages. Bart closes that circle in this installment while teaching us how to use GitHub Actions. We learn about workflows, jobs, steps, events, and runners. Bart includes great tables in the shownotes of the terminology, so we now have a handy reference guide for making our own YAML files to run GitHub actions. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Read an unedited, auto-generated transcript with chapter marks: PBS_2025_02_15 Join our Slack at podfeet.com/slack and check out the Programming By Stealth channel under #pbs. Support Bart by going to lets-talk.ie and pushing one of the big blue support buttons. 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 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 CleanShot X - Earns me $25%, sorry nothing in it for you but my gratitude

Feb 16, 20251h 13m

PBS 175 of X — GitHub Pages: Static Site Generators

In Programming By Stealth this week, Bart has started a new miniseries to teach us how to use GitHub Pages to create a website (for free.) In PBS 175, he starts by explaining what Static Site Generators (like GitHub Pages) are, and the pros and cons vs. a more traditional content management system like WordPress. Neither are wrong, they just solve the same problem in different ways. He then gives us the framework for the tools we'll be using and lays out the next few lessons where we'll get in and get our hands dirty. I'm extremely excited about this miniseries and I hope you will be too. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Read an unedited, auto-generated transcript with chapter marks: PBS_2025_02_01 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! Join the Conversation: [email protected] podfeet.com/slack Support the Show: Patreon Donation Apple Pay or Credit Card one-time 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 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 CleanShot X - Earns me $25%, sorry nothing in it for you but my gratitude

Feb 2, 20251h 23m

PBS Tidbit 11B — A PowerShell Teaser

As promised, we're back with part 2 of the Powershell Teaser. We pick up where we left off, starting with learning about parameter definitions and the advantages such a structured language affords us, including automatically generated help files and error checking. Bart updated the shownotes to include valuable resource links to take your PowerShell to a higher level. We walk through our plan for 2025, where Bart is going to teach us about GitHub Pages (which power the Programming By Stealth shownotes) and then how to change the style you see with Bootstrap to make it your own. After that we expect to get back to PowerShell but that's a ways down the road so things could change.

Jan 19, 20251h 17m

PBS Tidbit 11A — A PowerShell Teaser

Bart Busschots is enamored with the open source shell from Microsoft called PowerShell. His goal was to give us a teaser on this modern shell but there was enough material in his shownotes that we're recording the audio in two halves. Feel free to read ahead in the shownotes if you like, or you can wait till the second installment to read the rest. In this first half, we learn about how Bart begrudgingly started using PowerShell and what made him become such a fan. He walks us through the philosophy and then the structure of commands first. We get to play with a few tiny scripts to illustrate how the "plumbing" works in PowerShell and we learn about how message streams work with data streams. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Join our Slack at podfeet.com/slack and check out the Programming By Stealth channel under #pbs. Support Bart by going to lets-talk.ie and pushing one of the big blue support buttons. 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 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 CleanShot X - Earns me $25%, sorry nothing in it for you but my gratitude

Jan 3, 20251h 3m

PBS Tidbit 10 — Run LLMs Locally with Ollama with Steve Mattan

In a very unusual Tidbit episode of Programming By Stealth, Allison interviews NosillaCastaway and Programming By Stealth student Steve Mattan about how he's running Large Language Models locally on his Mac. He pulls this off using a series of open source tools, starting with Ollama for the models from the command line, and then Enchanted to give him a nice GUI. He explains how he's integrated the local LLM into VSCode for his coding, and how he uses Keyboard Maestro to launch all of this at once. You can find the outline and links to how Steve's doing this at pbs.bartificer.net. Read an unedited, auto-generated transcript with chapter marks: PBS_2024_12_07 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! Join the Conversation: [email protected] podfeet.com/slack Support the Show: Patreon Donation Apple Pay or Credit Card one-time 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 CleanShot X - Earns me $25%, sorry nothing in it for you but my gratitude

Dec 19, 202437 min

PBS 174 of X: Working with Git Submodules

In this installment of Programming By Stealth, Bart completes his miniseries on Git Submodules. Last time he created an imaginary company with three developers and went through three relatively simple scenarios where Git submodules were implemented. In this finale installment, he takes it up a notch in complexity and we actually get to push submodule changes. The path is fraught with danger and I get stuck on the very last scenario but Bart wouldn't let me give up and eventually helped me understand. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Read an unedited, auto-generated transcript with chapter marks: PBS_2024_12_07 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! Join the Conversation: [email protected] podfeet.com/slack Support the Show: Patreon Donation Apple Pay or Credit Card one-time 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 CleanShot X - Earns me $25%, sorry nothing in it for you but my gratitude

Dec 8, 20241h 1m

PBS 173 of X: Getting Started with Git Submodules

In PBS 172 Bart Busschots explained what Git submodules are and the kinds of problems they solve. In this practical lesson, he walks us through three scenarios where we actually get to type in Git commands to learn how the process works. We get to pretend we're in a small web app business where company branding is important. In the first scenario, we're a new developer joining an app team and we have a repo that already includes the branding submodule. In the second scenario, we're a seasoned developer on the team creating a new app and we need to import the branding submodule. Finally, in the third scenario, we're one of the brand designers and we want to update the branding. In the third scenario we learn two different ways to incorporate the branding changes into our web apps. I'm always happy when I get to play along in the Terminal, so this lesson was great fun. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Join our Slack at podfeet.com/slack and check out the Programming By Stealth channel under #pbs. Support Bart by going to lets-talk.ie and pushing one of the big blue support buttons. 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 CleanShot X - Earns me $25%, sorry nothing in it for you but my gratitude

Nov 24, 20241h 1m

PBS 172 of X: Git Submodules

Bart takes us back into our Git miniseries to explain Git submodules, which are essentially nested Git repos. After we learn what they are, he explains why nesting is needed. Then he takes us through three use cases as a way of illustrating the kinds of problems Git submodules can solve. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Join our Slack at podfeet.com/slack and check out the Programming By Stealth channel under #pbs. Support Bart by going to lets-talk.ie and pushing one of the big blue support buttons. 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 CleanShot X - Earns me $25%, sorry nothing in it for you but my gratitude

Oct 27, 202437 min

PBS Tidbit 9 – Using Git on iOS

In ye olden days, iOS kept everything sandboxed in a way that apps weren't allowed to reach outside of their own data to open individual files. But with the aptly named Files app, and an API to allow a human to do the picking, apps can now open files directly on iOS. This "innovation" allows us to have a Git client on iOS and have it use a linked repo that's stored in the Files app. This means we can use any text editor we like to open the repos files for editing. In this tidbit episode of Programming By Stealth, Bart walks us through how to configure the iOS Git client Working Copy to clone a repo from GitHub, and then open the files in his favorite text editor on iOS, Textastic. Hat's off to Jill of Kent that explained to Bart and me more than a year ago that this was possible, but a fist shake to Bart for not telling me how to do it till now! You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Join our Slack at podfeet.com/slack and check out the Programming By Stealth channel under #pbs. 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 CleanShot X - Earns me $25%, sorry nothing in it for you but my gratitude

Oct 11, 202437 min

PBS 171 of X: MVC in XKpasswd-js

We have a bit of a changeup for today's lesson. While Bart Busschots is in attendance for this episode, he is not be the instructor, he is a student like me. Our instructor today is the delightful Helma van der Linden and she's going to teach us about how she applied the Model View Controller pattern to our project XKPasswd. You can find Helma'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 CleanShot X - Earns me $25%, sorry nothing in it for you but my gratitude

Sep 29, 20241h 18m

PBS 170 of X: Model View Controller (MVC)

We're back from our summer hiatus (actually scheduled for the first time ever instead of accidentally happening!) In this week's episode, Bart takes on the task of explaining the philosophy behind why having a framework for software development is useful and even crucial as projects get bigger and more complex. We chose this topic because the XKPasswd project has already started using a framework called Model View Controller. We get the barest understanding of MVC in this explanation from Bart, and the next episode of Programming By Stealth will be the wonderful Helma van der Linden explaining the details of her implementation of MVC for the XKPasswd project. In the first episode of its kind, I won't be the only student in the class - Bart and I will be learning together. 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 CleanShot X - Earns me $25%, sorry nothing in it for you but my gratitude

Sep 15, 202454 min

PBS Tidbit 8 – Interview with jq Maintainer Mattias Wadman

In this Tidbit version of Programming By Stealth, Bart Busschots interviews Mattias Wadman, one of the maintainers of the jq project. This was great fun as we just finished learning jq in Programming By Stealth. Read an unedited, auto-generated transcript with chapter marks: PBS_2024_08_06 You can find out more about Mattias & the various projects he is working on at the links below: Follow Mattias on Mastodon: @[email protected] Mattias’ GitHub Profile which hosts some notable jq-related projects: fq for querying binary files with the jq language: github.com/wader/fq A list of presentations about fq — github.com/… The fork of the Go version of jq that powers fq — github.com/… The language definition file for adding jq support to IDEs like VS Code: github.com/wader/jq-lsp jq implemented in jq: github.com/wader/jqjq Some notable jq commits & files mentioned during the interview: The very first commit in Haskel The switch to C jq’s main function which is written in jq — https://github.com/… A version of jq implemented in Go: github.com/itchyny/gojq A version of jq implemented in Rust by Michael Färber: github.com/01mf02/jaq Michael’s formal specification of the jq language — github.com/… The “Denotational Semantics and a Fast Interpreter for jq” academic paper by Michael

Aug 6, 20241h 5m

PBS Tidbit 7 – jq to Analyze macOS Installed Apps with Helma van der Linden on

In this special tidbit installment of Programming By Stealth, Helma van der Linden joins Allison to walk through how she solved a real-world problem using jq. The problem to be solved was a need to analyze the installed applications on her Intel-based Mac before migrating to her new Apple Silicon Mac. She used a built-in Terminal command to access System Information to create a JSON file, and then used a series of jq filters to remove data she didn't need, and format what she kept into human-readable form. Helma walks us through every step of the way as she built up her jq script file to massage the data to her needs. At the end Allison explains how to take Helma's final CSV output and analyze the data in a spreadsheet using a pivot table. You can find _Helma's_ fabulous tutorial shownotes at pbs.bartificer.net. Read an unedited, auto-generated transcript with chapter marks: PBS_2024_07_20 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!

Jul 20, 20241h 0m

PBS 169 of X — Advanced YAML Topics

In this second (and final) installment about YAML, Bart teaches us who to write multi-line strings and how not to write multi-line strings. He teaches us about String Blocks which is a bit head-bendy but allows you to write human-readable strings and also tell YAML what to do with empty lines and white space. After that slightly heavy lift, we learn about how to write much simpler-looking Sequences and Mappings than the way we learned in our introduction to YAML in PBS 168. It's really nifty how you can write them in compact, sensible forms, and even easily combine separate YAML documents into the same sequence or mapping. Finally we learn how to use the `yq` language to query JSON, CSV, and XML files using a language that uses `jq` syntax so you'll feel right at home. Read an unedited, auto-generated transcript with chapter marks: PBS_2024_07_06

Jul 7, 20241h 6m

PBS 168 – Introduction to YAML

In Programming By Stealth, we've completed our series on the jq language and now Bart Busschots brings us a two-part miniseries about the YAML data format. He takes us through the history of data formats we've "enjoyed" such as fixed-width text files, Comma Separated Value files, through to JSON and XML. All of them had their place in history but also had their downsides. YAML promises to be human-readable (yay) and computer-readable (also yay.) Once we're bought into how YAML is the data format of our dreams, Bart explains that there are only two kinds of data, scalar,s and collections, and that collections can be sequences or mapping and all of these data types go into a document. Luckily this is all of the jargon we'll have to learn and there are useful synonyms from other languages (e.g. sequences are really just arrays). I found this lesson enjoyable and not too hard on my little brain so I suspect you'll enjoy it as much as I did. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Read an unedited, auto-generated transcript with chapter marks: CCATP_2024_06_22

Jun 22, 202456 min

PBS 167 of X – jq: Recursion, Syntactic Sugar, Some old Friends and a Few Honourable Mentions

It was actually bittersweet for Bart and me this week as he taught the final installment in our series of Programming By Stealth about jq. As Bart says partway through our recording, he thought this would just be a few episodes but it took 13 episodes to go through everything Bart thought was fun about this deceptively simple programming language. This final installment in the jq series covers querying nested data structures with the `recurse` command. One of the really fun parts of the episode is when he teaches us how to dramatically simplify our code, a concept that's often called syntactic sugar. We get to do `if` statements for the first time, where I wondered why he didn't let us have them earlier! I was cross with him for holding out on us with `try-catch` too because it would have made our coding so much easier. But that was the real theme of this installment – we had to learn the way everything works before learning the shortcuts. In the finale, he gives us a few of what he calls "honourable mentions" – little tidbits that came in handy at times. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Read an unedited, auto-generated transcript with chapter marks: CCATP_2024_06_07 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!

Jun 8, 20241h 20m

PBS 166 of X — jq: Processing Arrays & Dictionaries sans Explosion

In this penultimate jq episode of Programming By Stealth, Bart introduces us to three new ways to process arrays and dictionaries without exploding them first. I know that sounds crazy – we've always exploded our arrays first. He teaches us how to use the `reduce` operator which lets us take an entire array or dictionary and reduce it down to one thing. The `map` function lets us process every element in an array (or or values in a dictionary) and return a new array. Finally, `map_values` lets us apply a function against all of the values in a dictionary (or an array). It was a bitter sweet ending to the primary series on `jq` for Bart, but next time he'll do the epilogue where he'll introduce us to some rarely needed but still very useful things you can do with jq. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Read an unedited, auto-generated transcript with chapter marks: CCATP_2024_05_25

May 26, 202457 min

PBS 165 of X – jq: Variables

In this installment of Programming By Stealth, Bart explains why jq is uniquely designed not to need variables (most of the time) and then explains how to use them in the few instances when there's no other way. It's really a fairly straightforward lesson as Bart sets up some clear examples and solves them with some simple variables. It's one of my favorite episodes because the problem is clear and the solutions are clear. It really shows off how clean jq is as a language. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Read an unedited, auto-generated transcript with chapter marks: CCATP_2024_05_11

May 12, 20241h 15m

PBS 164 of X – jq: Working with Lookup Tables

In our previous episode of Programming By Stealth, Bart Busschots taught us how to create lookup tables with jq from JSON data using the `from_entries` command. Just when we have that conquered, this time he teaches us how to do the exact opposite – disassemble lookup tables. I think this was a really fun lesson because taking data apart, reassembling it the way you want and then putting it back together again is a great way to really understand what we're doing with jq. I got much more comfortable as I started to recognize the patterns in what Bart was doing. We also get to play with a new data set, the Have I Been Pwned data gathered by Troy Hunt. If you're a data nerd, and really who amongst us isn't, you'll love this episode too. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net.

Mar 31, 20241h 17m

PBS 163 of X – jq: Lookups & Records

In this episode of Programming By Stealth, Bart Busschots as usual works through his solution to the challenge from last time, and as usual I learn a lot more about how to use jq to solve problems. He takes a bit of a detour to explain a fun email we got from Jill of Kent in which she explained the vast number of headaches you'll run into when trying to alphabetize names no matter the language. Then we buckle down and learn about how to make tradeoffs between speed and efficiency of resources, and how jq lookups can help us. Bart also helps us understand _when_ lookups can help us with querying JSON files. This episode is more of a lecture, which is fine because he's introducing a new concept and explaining some philosophy. You won't hear me breaking into the conversation very much but it's only because I'm not confused! Don't worry, when we get into the final example you'll hear me get confused! Bart explains it about 3 or 4 times and when you hear why your co-host here was confused, it's kind of ironic. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net.

Mar 17, 20241h 34m

PBS 162 of X — jq: Altering Arrays & Dictionaries

Bart Busschots is back to teach us how to alter arrays and dictionaries in JSON files using jq. Bart went through his challenge solution on cleaning up the Nobel Prize database and I learned a lot from it. Maybe he'd already taught all of it to us before but I sure wouldn't have been able to put the pieces together. For the new content, we learned how to alter arrays. We mastered sorting and reversing, how to add and remove elements, how to deduplicate the values within, and how to flatten even nested arrays. From there we learned how to manipulate dictionaries by adding and removing keys. It's a very focused lesson that continues to show how powerful the jq language is. I think my favorite part though was when Bart made an existential philosophy observation when he said "Everything exists with the value of null." You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net.

Mar 3, 20241h 2m

PBS 161 of X — jq: Maths, Assignment & String Manipulation

In this week's episode of Programming By Stealth, Bart continues to expand our knowledge on how to use jq to query and manipulate JSON files. We learn how to use mathematical operators on data in our JSON files along with fun functions like floor and absolute value. I even contributed some to the learning by showing examples of how `ceil` (for ceiling), `floor`, and `round` produce curiously different results when operating on negative decimal numbers. We move onto learning about both plain assignment and update assignment. It seems like a small deal but the ability to set a parameter using the plain assignment `=` vs the ability to update a value using ` |=` is is actually huge and has lots of subtleties. I think one of my favorite parts was when Bart took us back to our JavaScript lessons and reminded us of how weird it is on one concept but how jq is much more in line with modern programming languages. I felt like a seasoned programmer because I knew the history of what we'd learned. Finally we learned how you can actually divide strings. I know, weird, right? Ok, that's enough spoilers. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Read an unedited, auto-generated transcript with chapter marks: CCATP_2024_02_17 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!

Feb 18, 20241h 6m

PBS 160 of X — jq as a Programming Language

In this week's installment of Programming By Stealth, Bart Busschots teaches us how to use jq as a programming language. Before we get into the new stuff, Bart takes us through his solution to the challenge, and I have to say I was pretty chuffed when he said my solution to the extra credit portion was more elegant than his. To be fair, it took a buddy programming session with him for me to get the _first_ part of the challenge figured out. When we got into the programming language part of the lesson, there were so many times that I said, "I needed this last week!" I think finding out these options are available after understanding the problems they solve was fantastic. We learned how to run jq filters from files, which means no more looking at our filters all on one line - we can put line feeds and indents into our filters to make them more readable. We can even add comments. Bart tells us about a couple of handy plugins for VS Code to give us syntax highlighting which will be swell. My favorite thing I learned was how to add debugging to our filters. This one is a life changer. We explore a few functions for exploring data filters that will make life easier. We wrap up with an introduction to jq variables, which the developers of jq really don't want you to use unless absolutely necessary.

Feb 5, 20241h 24m

PBS 159 of X - jq: Building Data Structures

In this very meaty episode of Programming By Stealth, Bart Busschots teaches us how to build data structures using jq with JSON files. We're not just querying existing data, we're rebuilding the data the way we want to see it. We learn how to build strings with interpolation, which I find is a very odd word to describe the process. It's really like concatenation in Excel, but maybe that's just me. We build arrays using jq, and even convert between strings and arrays with the `split` and `join` commands. We build dictionaries in a syntax that is simple and elegant. We also build dictionaries from strings using `capture` with Regular Expressions. We learn not to do string formatting and escaping using `@` – for example `@csv` can automatically create comma-separated values data for us and @uri can escape characters for us in a URL we build using jq. Like I said, it's a meaty episode but Bart and I both enjoyed the lesson quite a bit. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. And just in case I forgot to mention it earlier, remember that we now have transcripts with chapter breaks. This means you can jump pretty easily to a topic to reread exactly how Bart explained something. You even get a time stamp of when he talked on that subject, allowing you to easily skim to the portion of the audio you want to rehear for clarification. All thanks to the magic of Auphonic. Ok, it's not magic, but it _feels_ like magic! Read an unedited, auto-generated transcript: CCATP_2024_01_20

Jan 21, 20241h 24m

PBS 158B - jq More Advanced Queries

Two weeks ago, Bart Busschots and I recorded a Programming By Stealth episode covering more queries using the jq language on our JSON files. We spent so much time working through the challenges from the previous installment that we only made it halfway through his tutorial shownotes. So this week we're back with the second half of that episode, Programming By Stealth 158B. Before we got started learning, I alerted the audience to a significant enhancement to the material we create for this show. I use a service called Auphonic to do a lot of things with the audio file when we're done recording, including leveling the audio, adding metadata to it, converting it to an MP3, and FTPing it to the server for the listeners to download. Auphonic has recently added AI-generated transcripts which we've had for a while with Programming By Stealth. The NosillaCast has chapter marks you can use to jump to content in the audio file, but Chit Chat Across the Pond has never had that. Auphonic now adds auto-generated chapters based on the content in the audio file. These chapter marks are in the transcript, which allows you to jump to the text of where we cover a specific topic. Not only that, these auto-generated chapters are in the audio file so in your podcatcher you can now jump to different sections instead of having to scroll through to find something Bart explained. The chapter marks are not perfect, and we have no intention of editing them, but it should give you an easier way to find what you want to re-listen to or re-read. While Bart has spectacular tutorial shownotes, the transcript gives you the full flavor of the conversation we have while Bart is teaching me. Now back to this week's show! In this week's episode, Bart explains two powerful commands for searching JSON files with jq, the `contains` and `inside` functions. In this context, he goes through testing for containment with strings, arrays, dictionaries and he tells us about default containment. Then he explains how the `inside` function does essentially the opposite of testing for containment. Finally, he shows us how to use regular expressions with the `test` function to get as granular as we like with our jq filters. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Read an unedited, auto-generated transcript: CCATP_2023_12_30 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!

Dec 31, 202359 min

PBS 158A – jq: More Queries

In Programming By Stealth this week, Bart Busschots and I start off by going through the challenges from our previous installment. Remember how I said I was really digging jq and querying JSON files because at heart I'm a data nerd? Well, I failed completely at accomplishing the homework. It was not for lack of trying though - I worked about 4 hours on just the first challenge. Because of a fundamental building block that wasn't properly in place in my brain, I was never going to succeed. That means that this episode is almost half about the challenges and Bart carefully re-explaining the pieces he'd taught us in the previous installment. We both agree that it's good work because if I was lost, there's a reasonable chance that one other student was as well. Because of my questions, we cut the episode in half, so the shownotes are complete but the second half will be explained in PBS 158B which we'll record in a couple of weeks. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Read an unedited, auto-generated transcript: CCATP_2023_12_20 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! 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 CleanShot X - Earns me $25%, sorry nothing in it for you but my gratitude

Dec 21, 20231h 6m

PBS 157 of X — jq: Querying JSON with `jq`

In this week's episode of Programming By Stealth, Bart Busschots continues his instruction on learning more about how to use the jq language to query JSON files. We get into the thick of it as Bart teaches us three important jq concepts: filter chaining, operators, and functions. To get there we learn about the literal values in JSON and jq and how only null and false are false. Armed with that, Bart explains the `not` function and once we put those concepts together, this ridiculous command will make perfect sense: `jq -n 'true and true | not' # false` I got such a kick out of that when I first read it in the shownotes earlier this week that I posted my enjoyment of it on Mastodon, and one of the actual developers of `jq` commented that he was excited to learn we were covering jq in Programming By Stealth! The `any` and `all` functions are nearly as silly sounding but are equally useful. By the end of the episode, we can successfully query the Nobel Prize JSON file to show us all of the prizes won by anyone with the surname "Curie". We even have three fun challenges at the end of this episode. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Read an unedited, auto-generated transcript: CCATP_2023_12_09 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!

Dec 10, 20231h 16m

PBS 156 of X — Extracting Data with `jq`

After the last episode of Programming By Stealth where Bart gave us an intro to jq and the problems it can solve, this week we start to get our feet wet by learning how to extract data from JSON files. We learn how to descend into dictionaries and arrays, and how to slice arrays. Learn how jq will output sarcasm about "Bart Busschots" if you don't learn how to ask it for raw output. We even learn how to extract data from multiple files at once and how to extract multiple values from our JSON files. Finally, we learn about exploding arrays and how to suppress errors. I think I really love data manipulation because I loved this episode. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Read an unedited, auto-generated transcript: CCATP_2023_11_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!

Nov 25, 202352 min

PBS 155 – Introducing JSON Processing from the Shell with `jq`

After our annual break from Programming By Stealth that happens at an unknown time for an unknown length every single year, Bart and I are back with a new episode of Programming By Stealth. Bart introduces us to a language called jq _and_ a terminal command called `jq` which together are used to help query JSON files, see "pretty versions of them, and also to manipulate them. We don't learn a lot of commands but Bart walks us through a few examples to help illustrate why we care, or shall I say, "the problem to be solved"? I'm sold on the idea having just mucked about in a config files for homebridge this week. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Read an unedited, auto-generated transcript: CCATP_2023_11_18 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!

Nov 19, 202344 min

PBS 154 — Bash: Expansions & Brackets Redux

Bart Busschots joins us for Programming By Stealth with the final installment of our miniseries on Bash. He explains a few new concepts, but the real value of this installment and especially his fabulous tutorial shownotes is that he compiles a lot of info into some tables for us to use as reference for the future. As with all good programming, Bart is scratching his own itch - he wanted a single place to go to know which brackets mean which and which ones do you have to cuddle vs. not cuddle. He also wanted a table of the order in which Bash processes the seven distinct expansions. We're closing out Bash but Bart has a new miniseries on the horizon to look forward to. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net.

Sep 3, 20231h 6m

PBS 153 – Bash: Functions & Scope

In Programming By Stealth, we've come to the end of our journey with Bash. I'll be sad to have it complete because as I tell Bart in this episode, I've really enjoyed it. Next time he will do a final bow-tying episode where he brings everything we learned together in one set of notes as a handy reference guide. In this episode, he explains how functions work in Bash, and after about the 12th time he repeated it, I understand that functions we create in Bash work just like built-in functions such as `ls` or `cat`. After walking us through some easy-to-follow scripts to illustrate this and show us the syntax, we go into a harder concept: scope. We learn that Bash does scope differently from pretty much every other language, and so he teaches us how to avoid spooky action at a distance because of this different way of dealing with scope. Protecting ourselves isn't actually hard but it is very important to understand why we need to do this. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net.

Jul 30, 20231h 6m

PBS 152B of X — Bash: xargs & Easier Arithmetic

In Programming By Stealth 152A Bart and I decided to hold off on the middle of the lesson he'd written up. That middle bit where he said to "put a pin in it" was about the use of `xargs`. I'm really glad we did skip it in the last installment. It's a pretty useful concept and deserved a lot more attention than it would have if we'd tried to cram it into that episode. The other good news is that Bart learned a bit more about _how_ `xargs` does its magic, so he is better able to explain it, and he updated the shownotes with a lot more detail and a great worked example. As a teaser, the big problem `xargs` was designed to solve is that there are times when we want the data from the standard input stream (STDIN) to be passed to another command as one or more arguments. You can find Bart's fabulous tutorial shownotes at pbs.bartificer.net. Read an unedited, auto-generated transcript: CCATP_2023_07_08

Jul 8, 202349 min