"Making Impossible States Impossible" by Richard Feldman
elm-conf9 HN recommenders · recommended in 13 months, 2017–2026
talk · intermediate · evergreen · 2017–2026 on HN
Richard Feldman's elm-conf talk on designing models so that bugs from impossible application states cannot occur, using Elm's compiler and types. It demonstrates techniques for making invalid states unrepresentable.
HN repeatedly recommends it as a talk that changed how people model data, with ideas that apply well beyond Elm to any typed language.
Up next
3 mo on HNRAT POISON AND BRANDY: THE 1904 ST. LOUIS OLYMPIC MARATHON.
Jon Bois
3 HN recommender · 2019–2024
3 mo on HNLambda World 2018 - What FP can learn from Smalltalk by Aditya Siram
Lambda World
2 HN recommender · 2020–2023
2 mo on HNEffective ML
Jane Street
2 HN recommender · 2018–2021
5 mo on HNPete Hunt: React - Rethinking Best Practices (updated) - JSConf.Asia 2013
JSConf
5 HN recommender · 2014–2024
18 mo on HNRuby Conf 12 - Y Not- Adventures in Functional Programming by Jim Weirich
Confreaks
17 HN recommender · 2013–2026
14 mo on HNThe Soul of Erlang and Elixir • Sasa Juric • GOTO 2019
GOTO Conferences
16 HN recommender · 2019–2024
14 mo on HN"Simple Made Easy" - Rich Hickey (2011)
Strange Loop Conference
14 HN recommender · 2022–2026
12 mo on HNWilliam Byrd on "The Most Beautiful Program Ever Written" [PWL NYC]
PapersWeLove
11 HN recommender · 2017–2026
11 mo on HNThe Value of Values with Rich Hickey
InfoQ
10 HN recommender · 2014–2023
12 mo on HNWhy Isn't Functional Programming the Norm? – Richard Feldman
Metosin
12 HN recommender · 2019–2025
11 mo on HNMaybe Not - Rich Hickey
ClojureTV
14 HN recommender · 2018–2025
11 mo on HNSolving Problems the Clojure Way - Rafal Dittwald
Clojure/north
10 HN recommender · 2019–2025
12 comments from Hacker News
one of my favorite talks on this topic, "Making Impossible States Impossible" by Richard Feldman: ▶ this video the talk is Elm lang focused, but the concepts still apply to other languages.
highly recommend the talks "making impossible states impossible" and "make data structures" by richard feldman. ▶ this video link the talks are geared towards elm but I think they offer some great advice applicable to programming in general.
Making impossible states impossible" by Richard Feldman: ▶ this video has really changed the way I approach dealing with data in my code and was very insightful.
The type system is a lot more expressive than the ones found in Java/C#/C++, thanks to Algebraic Data Types. Yaron Minsky (Jane Street, largest OCaml user) coined the term "make invalid states unrepresentable" to explain how ADTs help in enlisting the help of the compiler to help us express our intent correctly, and Richard Feldman (NoRedInk, largest Elm user) has given an absolute gem of a talk that dives into that idea with relatable, concrete examples. It is titled "Making Impossible States Impossible" and should clarify this concept nicely. ▶ this video
"Making Impossible States Impossible" by Richard Feldman ▶ this video Really changed how I think about programming.
It's a shame so many people have had bad experiences with static typing due to Typescript. In languages like Rust and Elm, static typing truly feels like a super power when I'm coding, particularly when modeling my applications possible states. This talk does a great job at articulating how to use types to disallow invalid/illegal states. ▶ this video
"Making Impossible States Impossible" by Richard Feldman (2016): ▶ this video "Understanding style" by Matthew Griffith (2017): link
A great talk on this subject is "Making Impossible States Impossible" by Richard Feldman from Elm Conf 2016 ▶ this video
I've seen this way of state modelling pop up more and more recent year in me feeds. Make impossible states impossible. It's a great way to keep you sane! ▶ this video (Elm) link (Kotlin)
* Learn to think about types first, and the algorithms as a natural consequence of the structure of your data. Richard Feldman: ▶ this video , * Use a statically typed language that allows fast refactoring. Ideally a typed functional language like Elm, Reason, OCaml, or Haskell. I recently shipped a complex Javascript project (without types) and it is one of the few instances of my decade-old professional career where I had that level of confidence in the robustness of a piece of code I wrote. It remained sturdy in production even in the presence of unforeseen conditions. This was thanks to the habits I picked up from typed FP: parsing and validating all data at the boundaries of the system, better design by modelling data to make inconsistent states impossible, and automatically handling all edge-cases at all times. So even if you don't actively use such a language in your workplace, there really is a payoff to learning it in making you a better programmer overall.
I just watched a good Elm conference talk about this same concept called "Making Impossible States Impossible" - ▶ this video
That'll be a great addition to the book. Can I also recommend Yaron Minsky's talk on OCaml, specifically the part where he talks about "making invalid states impossible": link I've found this to be the single most valuable programming technique I've learnt. Richard Feldman dives deeper into the topic with a lot more examples in ▶ this video