{"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\"!Some of the topics we hit on, in the order that we hit them:tui-rsCrosstermThe reedline crateEpisode about the \"Sidecar\" switchElm time-travel debuggingReplay.ioDevtools.fm episode on Replay.ioAADEBUG conferenceCalifornia horse meat lawThe (lightly) edited live chat from the show:MattCampbell: I'm gathering that this is more like the fancy pseudo-GUI style of TUI, which is possibly bad for accessibilityahl: we are also building with accessibility in mind, stripping away some of the non-textual elements optionallyMattCampbell: oh, coolahl: Episode about the \"Sidecar\" switch: https://github.com/oxidecomputer/oxide-and-friends/blob/master/2021_11_29.mdMattCampbell: ooh! That kind of recording is definitely better for accessibility than a video.uwaces: Were you inspired by Elm? (The programming language for web browsers?)bcantrill: Here's Andrew's PR for this, FWIW: oxidecomputer/omicron#2682uwaces: 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-easybch: I’m joining late - 1) does this state-machine replay model have a name 2) expand on (describe ) the I/o logic separation distinction?ahl: http://dtrace.org/blogs/ahl/2015/06/22/first-rust-program-pain/zk: 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.we're going to the zoo: lol i’m a web dev && we do UI tests via StorybookJS + snapshots of each story +...","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}