Unconditional Code • Michael Feathers • GOTO 2018
GOTO Conferences2 HN recommenders · 2018–2021
61K views · talk · evergreen · Uploaded 2018-05-09
Michael Feathers' GOTO Chicago 2018 talk on reducing error checks and conditional logic in code. He offers a framework for handling errors and decisions at the level of code and architecture.
HN recommends it for the idea of giving data instead of asking for it, and ties it to zero values and exception-free design.
38:47RailsConf 2014 - All the Little Things by Sandi Metz
Confreaks
1:01:39"Simple Made Easy" - Rich Hickey (2011)
Strange Loop Conference
25:06"Making Impossible States Impossible" by Richard Feldman
elm-conf
1:03:55🚀 TDD, Where Did It All Go Wrong (Ian Cooper)
DevTernity Conference
1:00:19How To Design A Good API and Why it Matters
Google TechTalks
31:44The Value of Values with Rich Hickey
InfoQ
32:56Bret Victor The Future of Programming
Joey Reid
1:04:04Overwatch Gameplay Architecture and Netcode
GDC Festival of Gaming
3 comments from Hacker News
Blockchains Are a Bad Idea (James Mickens) [LINK] I find almost all from GOTO 2018 very insightful. [LINK] esp ones listed below. GOTO 2018 • The Do's and Don'ts of Error Handling • Joe Armstrong [LINK] GOTO 2018 • Pragmatic Event-Driven Microservices • Allard Buijze [LINK] GOTO 2018 • Why Business Cases are Toxic • Chris Matts [LINK] GOTO 2018 • Unconditional Code • Michael Feathers [VIDEO]
I was watching this the other day: [VIDEO] Unconditional Code by Michael Feathers One solution to this problem is discussed toward the middle: giving data instead of asking for data avoids error conditions. Doing so pushes use of the data farther down the call tree and pulls acquisition up near the top, where we are closer to the user and thus able to more clearly decide what if anything to do about these corner cases.
Please no on the Universal nil. Meaningful zero values for types are essential. It may be confusing to some that nil is a valid zero value for some types and not others, in which case that needs to be refined, but having a type that can either be a value, a zero value, or a nil introduces complexity where there should be simplicity. Having a zero value enables, for example, Unconditional Programming: [VIDEO]