About
Programming by Stealth is an on-going collaborative project between Bart Busschots of Bartificer Creations and Allison Sheridan of the NosillaCast 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 an article written by Bart, and an accompanying episode of Allisonβs Chit Chat Across the Pond podcast where Bart and Allison cover the same material in a conversational form. Allisonβs role is to play the proverbial everyman and pepper Bart with questions to help clarify the material.
The series is intended to be ever-green, but if you play along in real-time you can join the community in the NosillaCast 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
- PBS 7 β More CSS
- PBS 8 β CSS Positioning
- PBS 9 β More CSS Positioning
- PBS 10 β Yet More 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
- PBS 34 β More JS Testing with QUnit
- PBS 35 β HTML Text Input | Introducing βLifeβ
- PBS 36 β More HTML Text Input | More Cellular Automata
- PBS 37 β JSDoc Demo
- 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 β Introducing Bootstrap 4
- PBS 53 β Bootstrap Utilities
- PBS 54 β More Bootstrap Utilities
- PBS 55 β Bootstrap Content
- PBS 56 β More Bootstrap Content
- PBS 57 β The Bootstrap Grid
- PBS 58 β Bootstrap Breakpoints
- PBS 59 β More Bootstrap Breakpoints
- PBS 60 β Bootstrap & jQuery
- PBS 61 β Bootstrap Jumbotrons & Badges
- PBS 62 β A Basic Bootstrap Form
- PBS 63 β Bootstrap Buttons
- PBS 64 β Bootstrap Form Layouts
- PBS 65 β Bootstrap Input Groups
- PBS 66 β Bootstrap Form Validation
- PBS 67 β Introducing Bootstrap Dropdowns
- PBS 68 β Bootstrap Navs
- PBS 69 β Bootstrap Navbars
- PBS 70 β Bootstrap Modals & Toasts
- PBS 71 β Bootstrap Spinners
- 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
- 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 Challenge
- 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 β 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 Intro
- PBS 122 β Chezmoi: Managing Dot Files with Chezmoi
- 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)
- PBS 130 β Good Technical Documentation
- PBS 131 β Introducing JSDoc
- PBS 132 β Managing JSDoc
- 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)
- PBS 136 β More Jesting
- PBS 137 β Bundling a Library with Webpack
- PBS 138 β Bundling a Web App/Site with Webpack (Part 1)
- PBS 139 β Bundling a Web App/Site with Webpack (Part 2)
- PBS 140 β UML Class Diagrams
- 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
Youβll find the original HTML versions of the notes at bartb.ie/pbs.
Related Contents
- Bart occasionally makes posts related to the series, but not strictly a part of it:
- PBS Tidbit 1 of Y β Display Values are not Data!
- PBS Tidbit 2 of Y β Itβs OK to Play a Different Game!
- PBS Tidbit 3 of Y β Managing the NPM (or Packagist) Trade-off
- PBS Tidbit 4 of Y β Rethinking a Web App β from Web Server to Cloud Stack
- PBS Tidbit 5 of Y β Tips for the Vacationing Programmer
- PBS Tidbit 6 of Y β A Real-World Webpack Case Study
- 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/β¦