001. Chapter 1. To the streets
002. Chapter 1. Great street coders
003. Chapter 1. The problems of modern software development
004. Chapter 1. The black boxes of technology
005. Chapter 1. Themes
006. Chapter 2. Practical theory
007. Chapter 2. Inside data structures
008. Chapter 2. Array
009. Chapter 2. Dictionary
010. Chapter 2. Whats the hype on types
011. Chapter 2. Proof of validity
012. Chapter 2. Dont framework hard, framework smart
013. Chapter 2. To be nullable or non-nullable Part 1
014. Chapter 2. To be nullable or non-nullable Part 2
015. Chapter 2. Better performance for free
016. Chapter 3. Useful anti-patterns
017. Chapter 3. Isolating common functionality
018. Chapter 3. Write it from scratch
019. Chapter 3. Fix it, even if it aint broke
020. Chapter 3. Do repeat yourself
021. Chapter 3. Invent it here
022. Chapter 3. Dont use inheritance
023. Chapter 3. Dont use classes
024. Chapter 3. Write bad code
025. Chapter 3. Dont write code comments
026. Chapter 4. Tasty testing
027. Chapter 4. How to stop worrying and love the tests
028. Chapter 4. Dont use TDD or other acronyms
029. Chapter 4. Deciding what to test
030. Chapter 4. Let the compiler test your code
031. Chapter 4. Eliminate valid value checks
032. Chapter 5. Rewarding refactoring
033. Chapter 5. Identify the components
034. Chapter 5. Refactor to make refactoring easier
035. Chapter 5. Reliable refactoring
036. Chapter 6. Security by scrutiny
037. Chapter 6. Threat modeling
038. Chapter 6. Write secure web apps
039. Chapter 6. Dont implement your own security
040. Chapter 6. SQL injection attacks
041. Chapter 6. Cross-site scripting
042. Chapter 6. Draw the first flood
043. Chapter 6. Storing secrets
044. Chapter 6. Keeping secrets in source code
045. Chapter 7. Opinionated optimization
046. Chapter 7. Anatomy of sluggishness
047. Chapter 7. Nested loops
048. Chapter 7. Breaking the bottle at the neck
049. Chapter 7. Be predictable
050. Chapter 7. 1s and 0s of IO
051. Chapter 7. Modern asyncawait
052. Chapter 8. Palatable scalability
053. Chapter 8. Dont use locks
054. Chapter 8. Embrace inconsistency
055. Chapter 8. Dont cache database connections
056. Chapter 8. Dont use threads
057. Chapter 8. Respect the monolith
058. Chapter 9. Living with bugs
059. Chapter 9. The error terror
060. Chapter 9. Dont catch exceptions
061. Chapter 9. Resiliency without transactions
062. Chapter 9. Dont debug