SKIP THE SHIPPING
Use code NOSHIP during checkout to save 40% on eligible eBooks, now through January 5. Shop now.
Register your product to gain access to bonus material or receive a coupon.
This eBook includes the following formats, accessible from your Account page after purchase:
EPUB The open industry format known for its reflowable content and usability on supported mobile devices.
PDF The popular standard, used most often with the free Acrobat® Reader® software.
This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
Pragmatic, Bite-Sized Programming Advice from Koder-with-Attitude, Kode Vicious
For many years I have been a fan of the regular columns by Kode Vicious in Communications of the ACM. The topics are not only timely, they're explained with wit and elegance.Writing as Kode Vicious (KV), George V. Neville-Neil has spent more than 15 years sharing incisive advice and fierce insights for everyone who codes, works with code, or works with coders. Now, in The Kollected Kode Vicious, he has brought together his best essays and Socratic dialogues on the topic of building more effective computer systems. These columns have been among the most popular items published in ACM Queue magazine, as well as Communications of the ACM, and KV's entertaining and perceptive explorations are supplemented here with new material that illuminates broader themes and addresses issues relevant to every software professional.
--From the Foreword by Donald E. Knuth
Foreword 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