{"type":"rich","version":"1.0","provider_name":"Transistor","provider_url":"https://transistor.fm","author_name":"Oxide and Friends","title":"Get You a State Machine for Great Good","html":"<iframe width=\"100%\" height=\"180\" frameborder=\"no\" scrolling=\"no\" seamless src=\"https://share.transistor.fm/e/13d3f864\"></iframe>","width":"100%","height":180,"duration":4102,"description":"Andrew Stone of Oxide Engineering joined Bryan, Adam, and the Oxide Friends to talk about his purpose-built, replay debugger for the Oxide setup textual UI. Andrew borrowed a technique from his extensive work with distributed systems to built a UI that was well-structured... and highly amenable to debuggability. He built a custom debugger \"in a weekend\"!\nSome of the topics we hit on, in the order that we hit them:\ntui-rs\nCrossterm\nThe reedline crate\nEpisode about the \"Sidecar\" switch\nElm time-travel debugging\nReplay.io\nDevtools.fm episode on Replay.io\nAADEBUG conference\nCalifornia horse meat law\nThe (lightly) edited live chat from the show:\nMattCampbell: I'm gathering that this is more like the fancy pseudo-GUI style of TUI, which is possibly bad for accessibility\nahl: we are also building with accessibility in mind, stripping away some of the non-textual elements optionally\nMattCampbell: oh, cool\nahl: Episode about the \"Sidecar\" switch: https://github.com/oxidecomputer/oxide-and-friends/blob/master/2021_11_29.md\nMattCampbell: ooh! That kind of recording is definitely better for accessibility than a video.\nuwaces: Were you inspired by Elm? (The programming language for web browsers?)\nbcantrill: Here's Andrew's PR for this, FWIW: oxidecomputer/omicron#2682\nuwaces: Elm has a very similar model. They have even had a debugger that let you run events in reverse: https://elm-lang.org/news/time-travel-made-easy\nbch: I’m joining late - 1) does this state-machine replay model have a name 2) expand on (describe ) the I/o logic separation distinction?\nahl: http://dtrace.org/blogs/ahl/2015/06/22/first-rust-program-pain/\nzk: RE: logic separation in consensus protocols: the benefit of seperating out the state machine into a side-effect free function allows you to write a formally verified implementation in a pure FP lang or theorem prover, and then extract a reference program from the proof.\nwe're going to the zoo: lol i’m a web dev && we do UI tests via StorybookJS +...","thumbnail_url":"https://img.transistorcdn.com/cVYTzMGAZ_7gNn2i7iJYSuWlQOM4wHdJAzEuWrnLo9A/rs:fill:0:0:1/w:400/h:400/q:60/mb:500000/aHR0cHM6Ly9pbWct/dXBsb2FkLXByb2R1/Y3Rpb24udHJhbnNp/c3Rvci5mbS80OGI3/NjA5NWY4Yjc4NzE0/ZGI5ZmMzZmY4MjFi/YThiYy5wbmc.webp","thumbnail_width":300,"thumbnail_height":300}