About
Programming by Stealth is an ongoing collaborative project between Bart Busschots of Bartificer Creations and Allison Sheridan of the NosillaCast Apple Podcast. The idea is to sneak up on real programming in small easy steps, using the allure of the web as the carrot to entice people forward.
Each instalment consists of an article written by Bart and an accompanying episode of our Programming By Stealth Podcast where Bart and Allison cover the same material in a conversational form. Allisonβs role is to play the proverbial everyperson and pepper Bart with questions to help clarify the material (and to produce the podcast.) You can subscribe to the Programming By Stealth podcast directly in your podcatcher of choice, or listen from the embedded player in each instalment.
The series is intended to be evergreen, but if you play along in real-time you can join the community in the Podfeet Slack. The challenges set in the series are definitely more fun in real time.
Series Index
Looking for something in an instalment of Programming By Stealth? Check out the PBS Index, created by listener Dorothy. You can find the PBS Index at bartb.ie/pbsindex.
Instalments
Note
Most of the instalments linked below were automatically converted from HTML to Markdown in April 2020. The conversion may not always be perfect, but all mistakes are slowly being fixed as theyβre noticed. Feel free to submit pull requests on GitHub if you find and fix any problems π
A big thank-you to NosillaCastaway Helma van der Linden for doing the hard work of scripting the automatic conversion to Markdown.
- PBS 1 β Introduction
- PBS 2 β Introducing HTML
- PBS 3 β HTML Block Elements
- PBS 4 β HTML In-line Elements
- PBS 5 β Images & Links
- PBS 6 β Introducing CSS css
- PBS 7 β More CSS css
- PBS 8 β CSS Positioning css
- PBS 9 β More CSS Positioning css
- PBS 10 β Yet More CSS css
- PBS 11 β Tables
- PBS 12 β Introducing JavaScript
- PBS 13 β JS Conditionals
- PBS 14 β JS Loops & Arrays
- PBS 15 β JS Functions
- PBS 16 β JS Callbacks
- PBS 17 β JS Objects
- PBS 18 β JS Miscellany
- PBS 19 β Some JavaScript Challenges
- PBS 20 β JS in the Browser
- PBS 21 β jQuery Basics
- PBS 22 β jQuery Events
- PBS 23 β Creating Elements with jQuery
- PBS 24 β Creating a JavaScript API
- PBS 25 β A Case Study (bartificer.linkToolkit.js)
- PBS 26 β HTML Data Attributes with jQuery
- PBS 27 β JS Prototype Revision | HTML Forms
- PBS 28 β JS Prototype Revision | CSS Attribute Selectors & Buttons
- PBS 29 β JS Prototype Revision | Glyph Icons
- PBS 30 β Comparing JS Objects | Introducing WAI-ARIA
- PBS 31 β JS Static Functions | Checkboxes & Radio Buttons
- PBS 32 β JS Error Handling Revision | HTML Selects
- PBS 33 β JS Testing with QUnit testing
- PBS 34 β More JS Testing with QUnit testing
- PBS 35 β HTML Text Input | Introducing βLifeβ
- PBS 36 β More HTML Text Input | More Cellular Automata
- PBS 37 β JSDoc Demo documentation
- PBS 38 β Taking Stock
- PBS 39 β HTML5 Form Validation
- PBS 40 β HTML5 Custom Validations with jQuery
- PBS 41 β Form Events
- PBS 42 β Playing the Game of Life
- PBS 43 β Introducing JavaScript ES6
- PBS 44 β ES6 Arguments & Objects
- PBS 45 β ES6 Arrays & Strings
- PBS 46 β ES6 Spread Operator, Arrow Functions & Classes
- PBS 47 β ES6 Polymorphism
- PBS 48 β A Closer Look at βthisβ and βstaticβ
- PBS 49 β Improving Our Cellular Automata
- PBS 50 β A Worked Example (Object Explorer)
- PBS 51 β Cellular Automata Wrap-up
- PBS 52 β Bootstrap Introducing Bootstrap 4 bootstrap
- PBS 53 β Bootstrap Utilities bootstrap
- PBS 54 β Bootstrap More Utilities bootstrap
- PBS 55 β Bootstrap Content bootstrap
- PBS 56 β Bootstrap More Content bootstrap
- PBS 57 β Bootstrap The Grid bootstrap
- PBS 58 β Bootstrap Breakpoints bootstrap
- PBS 59 β Bootstrap More Breakpoints bootstrap
- PBS 60 β Bootstrap & jQuery bootstrap
- PBS 61 β Bootstrap Jumbotrons & Badges bootstrap
- PBS 62 β Bootstrap A Basic Form bootstrap
- PBS 63 β Bootstrap Buttons bootstrap
- PBS 64 β Bootstrap Form Layouts bootstrap
- PBS 65 β Bootstrap Input Groups bootstrap
- PBS 66 β Bootstrap Form Validation bootstrap
- PBS 67 β Bootstrap Introducing Drop-downs bootstrap
- PBS 68 β Bootstrap Navs bootstrap
- PBS 69 β Bootstrap Navbars bootstrap
- PBS 70 β Bootstrap Modals & Toasts bootstrap
- PBS 71 β Bootstrap Spinners bootstrap
- PBS 72 β HTML5 Templates
- PBS 73 β Mustache Templates
- PBS 74 β More Mustaches
- PBS 75 β AJAX Intro
- PBS 76 β AJAX with jQuery
- PBS 77 β More Callbacks & More AJAX
- PBS 78 β is.js & Bootstrap Popovers bootstrap
- PBS 79 β Introducing Javascript Promises
- PBS 80 β JavaScript Promise Chains
- PBS 81 β The JavaScript Promise Utilities
- PBS 82 β Async & Await
- PBS 83 β Bootstrap Cards
- PBS 84 β Objects as Dictionaries in JavaScript (Redux & Update)
- PBS 85 β Objects as Arrays in JavaScript (Redux & Update)
- PBS 86 β JavaScript Function Objects (Redux & Update)
- PBS 87 β JavaScript Iterators Objects & Generator Functions
- PBS 88 β DOM & jQuery Objects Redux
- PBS 89 β Currency Converter Challenge
- PBS 90 β JavaScript Wrapper Objects
- PBS 91 β JavaScript RE Objects
- PBS 92 β Currency Grid Solution
- PBS 93 β Encapsulation with JavaScript Objects
- PBS 94 β Basic JavaScript OO with Class
- PBS 95 β Better JavaScript Class Attributes
- PBS 96 β World Clock Challenge Solution
- PBS 97 β Class Data Attributes & Functions
- PBS 98 β Building with Classes Part 1: Has-A
- PBS 99 β Building with Classes Part 2: Is-A
- PBS 100 β Time Sharing Challenge Solution
- PBS 101 β Git Introducing Version Control
- PBS 102 β Git Introduction
- PBS 103 β Git Getting Started
- PBS 104 β Git Tracking Changes
- PBS 105 β Git Seeing the Past
- PBS 106 β Git Time Travel
- PBS 107 β Git Branching Basics
- PBS 108 β Git Merging & Tagging
- PBS 109 β Git SemVer & Structured Commits
- PBS 110 β Git Merge Conflicts
- PBS 111 β Git Stashing Changes
- PBS 112 β Git Introducing Remotes
- PBS 113 β Git My First Remote
- PBS 114 β Git Tracking Branches
- PBS 115 β Git The Push & Pull of Git
- PBS 116 β Git Team Git
- PBS 117 β Git Introducing GitHub
- PBS 118 β Git JavaScript Apps with GitHub Pages
- PBS 119 β Git Open Source on GitHub
- PBS 120 β Git Ignoring Files
- PBS 121 β Chezmoi Managing Dot Files and an Introduction
- PBS 122 β Chezmoi Managing Dot Files
- PBS 123 β Chezmoi Backing up Dot Files and Intro to Templating
- PBS 124 β Chezmoi Templates
- PBS 125 β Chezmoi on Multiple Computers
- PBS 126 β Introducing Phase 2
- PBS 127 β Introducing NPM (and Node)
- PBS 128 β JavaScript Module Basics
- PBS 129 β ESLint (by Helma van der Linden) software engineering
- PBS 130 β JSDoc Good Technical Documentation documentation
- PBS 131 β JSDoc An Introduction documentation
- PBS 132 β JSDoc Managing Documentation documentation
- PBS 133 β Firming up our Foundations (1 of 2)
- PBS 134 β Firming up our Foundations (2 of 2)
- PBS 135 β Introducing Jest (and re-Introducing Test Driven Development & Unit Testing) testing
- PBS 136 β More Jesting testing
- PBS 137 β Webpack Bundling a Library with Webpack
- PBS 138 β Webpack Bundling a Web App/Site (Part 1)
- PBS 139 β Webpack Bundling a Web App/Site (Part 2)
- PBS 140 β UML Class Diagrams software engineering UML
- PBS 141 β Generating UML Class Diagrams with Mermaid
- PBS 142 β The XKPasswdJS Project Kickoff
- PBS 143 β Bash Shell Script Basics
- PBS 144 β Bash Basic Shell Script IO
- PBS 145 β Bash Shell Conditionals
- PBS 146 β Bash Shell Loops
- PBS 147 β Bash Arrays
- PBS 148 β Bash Potpourri (Subshells, Relative Paths & More)
- PBS 149 β Bash Better Arguments with POSIX Special Variables and Options
- PBS 150 β Bash Script Plumbing
- PBS 151 β Bash Printf and More
- PBS 152 β Bash xargs & Easier Arithmetic
- PBS 153 β Bash Functions & Scope
- PBS 154 β Bash Expansions & Brackets Redux
- PBS 155 β jq Introducing JSON Processing from the Shell with jq
- PBS 156 β jq Extracting Data with jq
- PBS 157 β jq Querying JSON with jq
- PBS 158 β jq More Queries
- PBS 159 β jq Building Data Structures
- PBS 160 β jq jq as a Programming Language
- PBS 161 β jq Maths, Assignment & String Manipulation
- PBS 162 β jq Altering Arrays & Dictionaries
- PBS 163 β jq Lookup Tables & Records
- PBS 164 β jq Working with Lookup Tables
- PBS 165 β jq Variables
- PBS 166 β jq Processing Arrays & Dictionaries sans Explosions
- PBS 167 β jq Recursion, Syntactic Sugar, Some old Friends and a Few Honourable Mentions
- PBS 168 β YAML An Introduction
- PBS 169 β YAML Advanced Topics
- PBS 170 β MVC The Model View Controller Design Pattern software engineering
- PBS 171 β MVC How XKpasswd-js Applies Model View Controller software engineering javascript
- PBS 172 β Git Submodules
Related Contents
- Bart occasionally makes posts related to the series, but not strictly a part of it:
- PBS Tidbit 1 β Display Values are not Data! advice programming
- PBS Tidbit 2 β It's OK to Play a Different Game! programming fun
- PBS Tidbit 3 β Managing the NPM (or Packagist) Trade-off advice programming
- PBS Tidbit 4 β Rethinking a Web App β from Web Server to Cloud Stack advice hosting servers cloud
- PBS Tidbit 5 β Tips for the Vacationing Programmer advice
- PBS Tidbit 6 β A Real-World Webpack Case Study
- PBS Tidbit 7 β jq to Analyze macOS Installed Apps with Helma van der Linden jq macOS
- PBS Tidbit 8 β Interview with jq Maintainer Mattias Wadman jq interview
- PBS Tidbit 9 β Using Git on iOS Git iOS iPadOS
- A blog post by Allison Sheridan explaining how she added support for currencies with different numbers of decimal places to her sample solution to PBS 88: When Currency Rate Decimals Go Wrong β www.podfeet.com/β¦