1
Voyager II
2
The goal
3
The idea
4
Prerequisites
5
TDD Examples
5.1
Reasons to study
5.2
Assembly
5.3
Haskell: test output as a tree
5.4
Introduction: Installing Nix
5.5
Codility: How TDD can help you get a job
5.6
C: Keep an IP address up to date
5.7
Code reviews: How TDD can help you get that PR merged
5.8
LaTeX: Testing your package
5.9
Python: Upload JPG files back to camera after modification
5.9.1
Init a project with Uv
5.10
How NOT to do TDD
5.11
The missing ingredient of TDD
6
Related sources
7
Intro to Small Hacks
7.1
What it’s all about
7.2
Organization of content
7.3
Enjoy your hacking
7.4
Principles
7.5
Features
8
Technologies
8.1
Bash: Get improvement suggestions for your code
8.2
Bash: Manage and interconnect programs
8.2.1
Basic script architecture
8.2.2
Getting help
8.2.3
History search
8.2.4
Instantly clean all content
8.2.5
Set path for new panes to current tab
8.2.6
Splitting windows
8.2.7
Connecting to Wi-Fi
8.2.8
Cat
8.2.9
Show an image
8.2.10
Redirect command output
8.2.11
List file users
8.2.12
Time a command
8.2.13
Print file contents into a pipeline
8.2.14
Conditional variable set
8.2.15
Round a number to integer in Bash
8.2.16
Enable command tab completion
8.2.17
Run function in a sub-shell by default
8.2.18
Literate shell scripting
8.2.19
Unit-testing Bash scripts
8.2.20
Returning a parameter from a lambda function
8.2.21
Change a string in a file
8.2.22
Redirect stdout to a file
8.2.23
Design complex text pipelines in a fast feedback loop
8.2.24
Find duplicate files
8.2.25
Clean up a string in the clipboard
8.2.26
Tunnel via SSH
8.3
SSH
8.3.1
Share a remote terminal session with a friend
8.4
Git: Track code changes
8.4.1
Quick demo / Getting started
8.4.2
Tracking changes in files
8.4.3
Reset repo to exactly match the origin branch
8.4.4
Summarize changes from last tag
8.4.5
Find the branch you worked on last
8.5
GitLab
8.5.1
Start with CI in GitLab
8.5.2
Establish a remote repo from the local terminal
8.6
Linux
8.6.1
Documentation
8.6.2
Development
8.6.3
Operations
8.7
Python
8.7.1
New virtual dev environment
8.7.2
Accepting input from stdin in Python
8.7.3
Parallel execution
8.7.4
Asynchronous programming
8.7.5
TDD
8.8
System configuration management
8.8.1
Nix - Pure
8.8.2
Chef - Test-driven
8.9
Windows
8.10
Docker
8.10.1
Run builds in Docker as non-root
8.10.2
Review running containers
8.10.3
Clean up
8.10.4
History
8.11
Machine Learning
8.11.1
Track model versions: DVC (Data Version Control)
8.12
Ghost
8.13
Haskell
8.13.1
Packaging
8.13.2
Getting started
8.13.3
IO
8.13.4
TempateHaskell
8.13.5
Practical use examples
8.14
C++
8.14.1
Lint
8.14.2
Run file as script
8.14.3
CMake
8.14.4
Tail-call optimization
8.15
HTML
8.16
JavaScript
8.16.1
Loading modules
8.16.2
Writing reusable functions
8.16.3
Promises
8.16.4
Composing your software
8.16.5
Managing depencencies
8.16.6
Updating a package to the newest version
8.16.7
Test headlessly
8.16.8
Track events in Web JS functions from Bash
8.16.9
Preview JSON data
8.16.10
Tweak code performance
8.16.11
Authenticate clients to a server
8.16.12
Serve file content via HTTP
8.17
Embedded devices
8.17.1
Connect with a device via UART
8.17.2
Write image to an SD card
8.17.3
Writing an image to an SD card
8.17.4
Generate a true random number
9
Disciplines
9.1
Keeping focus on results
9.1.1
Qutebrowser
9.1.2
Firefox
9.1.3
Fetch Web information through your terminal
9.1.4
Web browsers
9.1.5
Filter copycat websites from search results
9.1.6
Smartphone SSH access
9.2
Nature
9.2.1
Euler’s identity
9.2.2
The Dirac Delta equation
9.2.3
Gravity of a photon
9.2.4
Weather forecasting
9.2.5
Greek alphabet
9.2.6
Calculus
9.3
Mind: Develop better as a programmer
9.3.1
Retype instead of copy-pasting
9.3.2
Assume responsibility
9.3.3
Ignitory question
9.3.4
Specify clear goals
9.3.5
Make growth a daily routine
9.3.6
Understand what school is ‒ and what it isn’t
9.4
Software Engineering
9.4.1
Pragmatic Programmer’s Highlights
9.4.2
Tools - greatest version from all modules
9.4.3
Languages
9.4.4
Design patterns
9.4.5
Architectural patterns
9.5
Development Operations (DevOps)
9.5.1
The Joel Test
9.5.2
Testing configuration
9.6
Data analysis
9.6.1
Habits of highly effective data scientists
9.7
Team work
9.7.1
Communication
9.7.2
Satellite telecommunications
9.7.3
Licensing
9.7.4
Documentation
9.8
Crop video losslessly
9.9
Habits of highly effective learners
9.10
UI design
9.11
First year of studies
9.11.1
Notes
9.11.2
Git
9.11.3
Markdown
9.11.4
Deep work
9.11.5
How this relates to work
9.11.6
Contribute before you feel ready
9.11.7
Don’t let studies interfere with your development
9.12
Publishing
9.12.1
English language
10
Techniques
10.1
Patterns for success
10.1.1
The Lazy Perfectionist
10.1.2
The Benevolent Tyrant
10.1.3
The Earth and Sky
10.1.4
The Open Door
10.1.5
The Laughing Clown
10.1.6
The Mindful General
10.1.7
The Social Engineer
10.1.8
The Constant Gardener
10.1.9
The Rolling Stone
10.1.10
The Pirate Gang
10.1.11
The Flash Mob
10.1.12
The Canary Watcher
10.1.13
The Hangman
10.1.14
The Historian
10.1.15
The Provocateur
10.1.16
The Mystic
10.2
Object-Oriented Patterns
10.2.1
Command-Query Separation
10.3
TDD: Producing reliable software
10.4
Functional programming
10.5
Troubleshooting
10.6
System modeling and analysis
10.7
Competitive Programming
10.7.1
Challenges
10.7.2
Resources
10.7.3
Levels
10.8
Data Science for team physics exploration
11
Other languages
11.1
Java
11.2
Scheme
12
The Web
13
Gotchas
14
Quotes
14.1
Why not TDD
15
Stories
15.1
Thanks
TDD Examples
6
Related sources
“Test Driven Development: By Example 1st Edition”
13
, Kent Beck
https://www.amazon.com/Test-Driven-Development-Kent-Beck/dp/0321146530
↩︎