Episode Details
Back to EpisodesGet You a State Machine for Great Good
Season 3
Episode 9
Published 3 years ago
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-rs
- Crossterm
- The reedline crate
- Episode about the "Sidecar" switch
- Elm time-travel debugging
- Replay.io
- Devtools.fm episode on Replay.io
- AADEBUG conference
- California horse meat law
The (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 accessibility
- ahl: we are also building with accessibility in mind, stripping away some of the non-textual elements optionally
- MattCampbell: oh, cool
- ahl: Episode about the "Sidecar" switch: https://github.com/oxidecomputer/oxide-and-friends/blob/master/2021_11_29.md
- MattCampbell: 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#2682
- uwaces: 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
- bch: 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 + snapshots of the end state of an interaction
- ig: At that point you could turn the recording into an “expect test”. https://blog.janestreet.com/the-joy-of-expect-tests/
- we're going to the zoo: TOFU but for tests 🥰
- uwaces: Are you at all worried that you are replicating the horror that is the IBM 3270 terminal? — I have personal history programming on z/OS where the only interface is a graphical EBCDIC 3027 interface — the horror is that people write programs to interact with graphical window (assuming a certain size).
- ahl: https://docs.rs/serde/latest/serde/#dat