Description
Book SynopsisGeorge V. Neville-Neil hacks, writes, teaches, and consults on security, networking, and operating systems. A FreeBSD Foundation board member, he has written the Kode Vicious column for
Queue and
Communications of the ACM magazines. He is a member of ACM's
Queue editorial board; a member of Usenix Association, ACM, and IEEE; and coauthor of
The Design and Implementation of the FreeBSD Operating System, Second Edition (Addison-Wesley, 2015). An avid traveler and ardent cyclist, he speaks several languages including Japanese, French, Dutch, and some Mandarin.
Table of ContentsForeword by Donald E. Knuth xi
Preface xiii
Acknowledgments xvi
About the Author xvii Chapter 1: The Kode at Hand 1 1.1 Resource Management 4
1.2 Big Big Memory 7
1.3 Coded Arrangements 10
1.4 Code Abuse 13
1.5 Nesting Tendencies 16
1.6 Choking on Changes 18
1.7 Cursed Code 21
1.8 Forced Exceptions 24
1.9 A Nice Piece...of Code 28
1.10 Something Rotten in... 31
1.11 Logging 34
1.12 Lost 37
1.13 Copying 39
1.14 Top Five Koding Peeves 42
1.15 Linguistically Lost 45
1.16 Check in Comments 48
Chapter 2: Koding Konundrums 51 2.1 Ode to the Method 52
2.2 How Much + in C++? 55
2.3 Something Sleek and Modern 58
2.4 What's in a Cache Miss? 61
2.5 Code Spelunking 65
2.6 Input Validation 73
2.7 Dickering with Docs 76
2.8 What's in the Foo Field? 80
2.9 Testy Tester 83
2.10 How to Test 86
2.11 Leave the Test Modes In! 90
2.12 Maintenance Mode 93
2.13 Merge Early 96
2.14 Multicore Manticore 99
2.15 This Is Not a Product 102
2.16 Heisenbugs 105
2.17 I Don't Want Your Dirty PDFs 109
2.18 Pining for a PIN 112
2.19 Reboot 115
2.20 Code Scanners 117
2.21 Debugging Hardware 119
2.22 Sanity vs. Visibility 123
Chapter 3: Systems Design 127 3.1 Abstractions 129
3.2 Driven 133
3.3 Driven Revisited 136
3.4 Changative Changes 140
3.5 Threading the Needle 143
3.6 Threads Still Unsafe? 146
3.7 Authentication vs. Encryption 149
3.8 Authentication Revisited 152
3.9 Authentication by Example 155
3.10 Cross-Site Scripting 160
3.11 Phishing and Infections 166
3.12 UI Design 172
3.13 Secure Logging 176
3.14 Java 181
3.15 Secure P2P 185
Chapter 4: Machine to Machine 189 4.1 Stepping on Toes 190
4.2 Paucity of Ports 193
4.3 Protocol Design 196
4.4 Which Came First? 200
4.5 Debugging the Network 203
4.6 Latency 208
4.7 Long Distance Runaround 211
4.8 The Network Is the Computer 215
4.9 Failure to Scale 219
4.10 Port Squatting 221
4.11 Networking in the Raw 224
4.12 Pointless PKI 227
4.13 Standard on Standards 230
Chapter 5: Human to Human 235 5.1 Of Pride and... 236
5.2 What Color Is Your...? 239
5.3 Broken Builds 242
5.4 What Is Intelligence? 245
5.5 Review the Design 248
5.6 The Naming of Hosts 252
5.7 Hosting an Interview 256
5.8 Mythical 260
5.9 The Obsolete Koder 263
5.10 With Great Power... 267
5.11 The Letter 270
5.12 The Tickets That... 273
5.13 Of Screwdrivers and Hammers 276
5.14 Security Reviews 279
5.15 Getting Back to Work 284
5.16 Open Source Licenses 287
5.17 So Many Standards 290
5.18 Books 293
5.19 More on Books 297
5.20 Keeping Up to Date 299
5.21 For My Last Trick 302
Index 305