1
The goal
2
The idea
3
TDD Examples
3.1
Reasons to study
3.2
Codility: How TDD can help you get a job
3.3
Code reviews: How TDD can help you get that PR merged
3.4
LaTeX: Testing your package
3.5
Python: Upload JPG files back to camera after modification
3.6
How NOT to do TDD
3.7
The missing ingredient of TDD
4
Related sources
5
Intro to Small Hacks
5.1
What it’s all about
5.2
Organization of content
5.3
Enjoy your hacking
5.4
Principles
5.5
Features
6
Technologies
6.1
Bash: Get improvement suggestions for your code
6.2
Bash: Manage and interconnect programs
6.2.1
Basic script architecture
6.2.2
Getting help
6.2.3
History search
6.2.4
Instantly clean all content
6.2.5
Set path for new panes to current tab
6.2.6
Splitting windows
6.2.7
Connecting to Wi-Fi
6.2.8
Cat
6.2.9
Show an image
6.2.10
Redirect command output
6.2.11
List file users
6.2.12
Time a command
6.2.13
Print file contents into a pipeline
6.2.14
Conditional variable set
6.2.15
Round a number to integer in Bash
6.2.16
Enable command tab completion
6.2.17
Run function in a sub-shell by default
6.2.18
Literate shell scripting
6.2.19
Unit-testing Bash scripts
6.2.20
Returning a parameter from a lambda function
6.2.21
Change a string in a file
6.2.22
Redirect stdout to a file
6.2.23
Design complex text pipelines in a fast feedback loop
6.2.24
Find duplicate files
6.2.25
Clean up a string in the clipboard
6.2.26
Tunnel via SSH
6.3
SSH
6.3.1
Share a remote terminal session with a friend
6.4
Git: Track code changes
6.4.1
Quick demo / Getting started
6.4.2
Tracking changes in files
6.4.3
Reset repo to exactly match the origin branch
6.4.4
Summarize changes from last tag
6.4.5
Find the branch you worked on last
6.5
GitLab
6.5.1
Start with CI in GitLab
6.5.2
Establish a remote repo from the local terminal
6.6
Linux
6.6.1
Documentation
6.6.2
Development
6.6.3
Operations
6.7
Python
6.7.1
New virtual dev environment
6.7.2
Accepting input from stdin in Python
6.7.3
Parallel execution
6.7.4
Asynchronous programming
6.7.5
TDD
6.8
System configuration management
6.8.1
Nix - Pure
6.8.2
Chef - Test-driven
6.9
Windows
6.10
Docker
6.10.1
Run builds in Docker as non-root
6.10.2
Review running containers
6.10.3
Clean up
6.10.4
History
6.11
Machine Learning
6.11.1
Track model versions: DVC (Data Version Control)
6.12
Ghost
6.13
Haskell
6.13.1
Packaging
6.13.2
Getting started
6.13.3
IO
6.13.4
TempateHaskell
6.13.5
Practical use examples
6.14
C++
6.14.1
Lint
6.14.2
Run file as script
6.14.3
CMake
6.14.4
Tail-call optimization
6.15
HTML
6.16
JavaScript
6.16.1
Loading modules
6.16.2
Writing reusable functions
6.16.3
Promises
6.16.4
Composing your software
6.16.5
Managing depencencies
6.16.6
Updating a package to the newest version
6.16.7
Test headlessly
6.16.8
Track events in Web JS functions from Bash
6.16.9
Preview JSON data
6.16.10
Tweak code performance
6.16.11
Authenticate clients to a server
6.16.12
Serve file content via HTTP
6.17
Embedded devices
6.17.1
Connect with a device via UART
6.17.2
Write image to an SD card
6.17.3
Writing an image to an SD card
6.17.4
Generate a true random number
7
Disciplines
7.1
Keeping focus on results
7.1.1
Qutebrowser
7.1.2
Firefox
7.1.3
Fetch Web information through your terminal
7.1.4
Web browsers
7.1.5
Filter copycat websites from search results
7.1.6
Smartphone SSH access
7.2
Nature
7.2.1
Euler’s identity
7.2.2
The Dirac Delta equation
7.2.3
Gravity of a photon
7.2.4
Weather forecasting
7.2.5
Greek alphabet
7.2.6
Calculus
7.3
Mind: Develop better as a programmer
7.3.1
Retype instead of copy-pasting
7.3.2
Assume responsibility
7.3.3
Ignitory question
7.3.4
Specify clear goals
7.3.5
Make growth a daily routine
7.3.6
Understand what school is ‒ and what it isn’t
7.4
Software Engineering
7.4.1
Pragmatic Programmer’s Highlights
7.4.2
Tools - greatest version from all modules
7.4.3
Languages
7.4.4
Design patterns
7.4.5
Architectural patterns
7.5
Development Operations (DevOps)
7.5.1
The Joel Test
7.5.2
Testing configuration
7.6
Data analysis
7.6.1
Habits of highly effective data scientists
7.7
Team work
7.7.1
Communication
7.7.2
Satellite telecommunications
7.7.3
Licensing
7.7.4
Documentation
7.8
Crop video losslessly
7.9
Habits of highly effective learners
7.10
UI design
7.11
First year of studies
7.11.1
Notes
7.11.2
Git
7.11.3
Markdown
7.11.4
Deep work
7.11.5
How this relates to work
7.11.6
Contribute before you feel ready
7.11.7
Don’t let studies interfere with your development
7.12
Publishing
7.12.1
English language
8
Techniques
8.1
Patterns for success
8.1.1
The Lazy Perfectionist
8.1.2
The Benevolent Tyrant
8.1.3
The Earth and Sky
8.1.4
The Open Door
8.1.5
The Laughing Clown
8.1.6
The Mindful General
8.1.7
The Social Engineer
8.1.8
The Constant Gardener
8.1.9
The Rolling Stone
8.1.10
The Pirate Gang
8.1.11
The Flash Mob
8.1.12
The Canary Watcher
8.1.13
The Hangman
8.1.14
The Historian
8.1.15
The Provocateur
8.1.16
The Mystic
8.2
Object-Oriented Patterns
8.2.1
Command-Query Separation
8.3
TDD: Producing reliable software
8.4
Functional programming
8.5
Troubleshooting
8.6
System modeling and analysis
8.7
Competitive Programming
8.7.1
Challenges
8.7.2
Resources
8.7.3
Levels
8.8
Data Science for team physics exploration
9
Other languages
9.1
Java
9.2
Scheme
10
The Web
11
Gotchas
12
Quotes
12.1
Why not TDD
13
Stories
13.1
Thanks
TDD Examples
4
Related sources
“Test Driven Development: By Example 1st Edition”
4
, Kent Beck
https://www.amazon.com/Test-Driven-Development-Kent-Beck/dp/0321146530
↩︎