1
We have AI now
2
Voyager II
3
The goal
4
The idea
5
Prerequisites
6
TDD Examples
6.1
Reasons to study
6.2
Assembly
6.3
Haskell: test output as a tree
6.4
Introduction: Installing Nix
6.5
Codility: How TDD can help you get a job
6.6
C: Keep an IP address up to date
6.7
Code reviews: How TDD can help you get that PR merged
6.8
LaTeX: Testing your package
6.9
Python: Upload JPG files back to camera after modification
6.9.1
Init a project with Uv
6.10
How NOT to do TDD
6.11
The missing ingredient of TDD
7
Related sources
8
Intro to Small Hacks
8.1
What it’s all about
8.2
Organization of content
8.3
Enjoy your hacking
8.4
Principles
8.5
Features
9
Technologies
9.1
Bash: Get improvement suggestions for your code
9.2
Bash: Manage and interconnect programs
9.2.1
Basic script architecture
9.2.2
Getting help
9.2.3
History search
9.2.4
Instantly clean all content
9.2.5
Set path for new panes to current tab
9.2.6
Splitting windows
9.2.7
Connecting to Wi-Fi
9.2.8
Cat
9.2.9
Show an image
9.2.10
Redirect command output
9.2.11
List file users
9.2.12
Time a command
9.2.13
Print file contents into a pipeline
9.2.14
Conditional variable set
9.2.15
Round a number to integer in Bash
9.2.16
Enable command tab completion
9.2.17
Run function in a sub-shell by default
9.2.18
Literate shell scripting
9.2.19
Unit-testing Bash scripts
9.2.20
Returning a parameter from a lambda function
9.2.21
Change a string in a file
9.2.22
Redirect stdout to a file
9.2.23
Design complex text pipelines in a fast feedback loop
9.2.24
Find duplicate files
9.2.25
Clean up a string in the clipboard
9.2.26
Tunnel via SSH
9.3
SSH
9.3.1
Share a remote terminal session with a friend
9.4
Git: Track code changes
9.4.1
Quick demo / Getting started
9.4.2
Tracking changes in files
9.4.3
Reset repo to exactly match the origin branch
9.4.4
Summarize changes from last tag
9.4.5
Find the branch you worked on last
9.5
GitLab
9.5.1
Start with CI in GitLab
9.5.2
Establish a remote repo from the local terminal
9.6
Linux
9.6.1
Documentation
9.6.2
Development
9.6.3
Operations
9.7
Direnv
9.8
Python
9.8.1
New virtual dev environment
9.8.2
Accepting input from stdin in Python
9.8.3
Parallel execution
9.8.4
Asynchronous programming
9.8.5
TDD
9.9
System configuration management
9.9.1
Nix - Pure
9.9.2
Chef - Test-driven
9.10
Windows
9.11
Docker
9.11.1
Run builds in Docker as non-root
9.11.2
Review running containers
9.11.3
Clean up
9.11.4
History
9.12
Machine Learning
9.12.1
Track model versions: DVC (Data Version Control)
9.13
Ghost
9.14
Haskell
9.14.1
Packaging
9.14.2
Getting started
9.14.3
IO
9.14.4
TempateHaskell
9.14.5
Practical use examples
9.15
C++
9.15.1
Lint
9.15.2
Run file as script
9.15.3
CMake
9.15.4
Tail-call optimization
9.16
HTML
9.17
JavaScript
9.17.1
Loading modules
9.17.2
Writing reusable functions
9.17.3
Promises
9.17.4
Composing your software
9.17.5
Managing depencencies
9.17.6
Updating a package to the newest version
9.17.7
Test headlessly
9.17.8
Track events in Web JS functions from Bash
9.17.9
Preview JSON data
9.17.10
Tweak code performance
9.17.11
Authenticate clients to a server
9.17.12
Serve file content via HTTP
9.18
Embedded devices
9.18.1
Connect with a device via UART
9.18.2
Write image to an SD card
9.18.3
Writing an image to an SD card
9.18.4
Generate a true random number
10
Disciplines
10.1
Keeping focus on results
10.1.1
Qutebrowser
10.1.2
Firefox
10.1.3
Fetch Web information through your terminal
10.1.4
Web browsers
10.1.5
Filter copycat websites from search results
10.1.6
Smartphone SSH access
10.2
Nature
10.2.1
Euler’s identity
10.2.2
The Dirac Delta equation
10.2.3
Gravity of a photon
10.2.4
Weather forecasting
10.2.5
Greek alphabet
10.2.6
Calculus
10.3
Mind: Develop better as a programmer
10.3.1
Retype instead of copy-pasting
10.3.2
Assume responsibility
10.3.3
Ignitory question
10.3.4
Specify clear goals
10.3.5
Make growth a daily routine
10.3.6
Understand what school is ‒ and what it isn’t
10.4
Software Engineering
10.4.1
Pragmatic Programmer’s Highlights
10.4.2
Tools - greatest version from all modules
10.4.3
Languages
10.4.4
Design patterns
10.4.5
Architectural patterns
10.5
Development Operations (DevOps)
10.5.1
The Joel Test
10.5.2
Testing configuration
10.6
Data analysis
10.6.1
Habits of highly effective data scientists
10.7
Team work
10.7.1
Communication
10.7.2
Satellite telecommunications
10.7.3
Licensing
10.7.4
Documentation
10.8
Crop video losslessly
10.9
Habits of highly effective learners
10.10
UI design
10.11
First year of studies
10.11.1
Notes
10.11.2
Git
10.11.3
Markdown
10.11.4
Deep work
10.11.5
How this relates to work
10.11.6
Contribute before you feel ready
10.11.7
Don’t let studies interfere with your development
10.12
Publishing
10.12.1
English language
11
Techniques
11.1
Patterns for success
11.1.1
The Lazy Perfectionist
11.1.2
The Benevolent Tyrant
11.1.3
The Earth and Sky
11.1.4
The Open Door
11.1.5
The Laughing Clown
11.1.6
The Mindful General
11.1.7
The Social Engineer
11.1.8
The Constant Gardener
11.1.9
The Rolling Stone
11.1.10
The Pirate Gang
11.1.11
The Flash Mob
11.1.12
The Canary Watcher
11.1.13
The Hangman
11.1.14
The Historian
11.1.15
The Provocateur
11.1.16
The Mystic
11.2
Object-Oriented Patterns
11.2.1
Command-Query Separation
11.3
TDD: Producing reliable software
11.4
Functional programming
11.5
Troubleshooting
11.6
System modeling and analysis
11.7
Competitive Programming
11.7.1
Challenges
11.7.2
Resources
11.7.3
Levels
11.8
Data Science for team physics exploration
12
Other languages
12.1
Java
12.2
Scheme
13
The Web
14
Gotchas
15
Quotes
15.1
Why not TDD
16
Stories
16.1
Thanks
TDD Examples
7
Related sources
“Test Driven Development: By Example 1st Edition”
14
, Kent Beck
https://www.amazon.com/Test-Driven-Development-Kent-Beck/dp/0321146530
↩︎