# Get You a State Machine for Great Good

- Show: [Oxide and Friends](https://hardwarepodcasts.com/podcast/oxide-and-friends)
- Published: 2023-03-28
- Length: 1h 08m
- Episode: 9
- Page: https://hardwarepodcasts.com/podcast/oxide-and-friends/2023-03-28-get-you-a-state-machine-for-great-good
- Listen: https://share.transistor.fm/s/13d3f864

## Summary

Andrew Stone of Oxide Computer Company explains how he built a custom, replay-capable debugger for the 'Wicket' terminal UI in just a few days. He details the architectural decision to separate IO from state, allowing the system to record and replay user interactions and system events for debugging and testing. The discussion highlights the use of Rust, specifically the `serde` and `proptest` crates, which enabled rapid serialization and property-based testing. Stone also contrasts this specialized approach with general-purpose tools like Replay.io, arguing that application-specific debugging infrastructure leads to better software architecture.

## Chapters

- [0:00](https://hardwarepodcasts.com/podcast/oxide-and-friends/2023-03-28-get-you-a-state-machine-for-great-good#t=0) Introduction: Demo Friday and Wicket Context
- [2:31](https://hardwarepodcasts.com/podcast/oxide-and-friends/2023-03-28-get-you-a-state-machine-for-great-good#t=151) Wicket: The Technician Port Terminal UI
- [10:39](https://hardwarepodcasts.com/podcast/oxide-and-friends/2023-03-28-get-you-a-state-machine-for-great-good#t=639) The Demo: Recording and Replaying Wicket
- [14:19](https://hardwarepodcasts.com/podcast/oxide-and-friends/2023-03-28-get-you-a-state-machine-for-great-good#t=859) Architecture: Separating IO and State for Replay
- [25:29](https://hardwarepodcasts.com/podcast/oxide-and-friends/2023-03-28-get-you-a-state-machine-for-great-good#t=1529) Building the Debugger with Rust and Serde
- [39:53](https://hardwarepodcasts.com/podcast/oxide-and-friends/2023-03-28-get-you-a-state-machine-for-great-good#t=2393) Property-Based Testing and Proptest
- [55:26](https://hardwarepodcasts.com/podcast/oxide-and-friends/2023-03-28-get-you-a-state-machine-for-great-good#t=3326) Comparison with General-Purpose Debuggers
- [1:05:13](https://hardwarepodcasts.com/podcast/oxide-and-friends/2023-03-28-get-you-a-state-machine-for-great-good#t=3913) Conclusion: Open Source and Future Topics

## Topics

- [Embedded firmware](https://hardwarepodcasts.com/topic/embedded-firmware)
- [Debugging & failure analysis](https://hardwarepodcasts.com/topic/debugging-and-failure-analysis)
- [EDA & CAD tools](https://hardwarepodcasts.com/topic/eda-and-cad-tools)
- [Careers & education](https://hardwarepodcasts.com/topic/engineering-careers-and-education)

## Most relevant to

early-stage companies

## Mentioned

- Oxide Computer Company (company)
- Wicket (product)
- Rust (other)
- serde (tool)
- proptest (tool)
- Replay.io (product)
- Elm (other)
- VMware (company)

## Related episodes from other shows

- [141: Malevolent and Trying to Trick You](https://hardwarepodcasts.com/podcast/embedded-fm/2016-03-02-141-malevolent-and-trying-to-trick-you) (Embedded.fm)
- [Modern Embedded Systems Programming with Miro Samek](https://hardwarepodcasts.com/podcast/the-pragmatic-embedded-podcast/2022-01-18-modern-embedded-systems-programming-with-miro-samek) (The Pragmatic Embedded Podcast)
- [274: Swiss Knife of Embedded Systems](https://hardwarepodcasts.com/podcast/embedded-fm/2019-01-18-274-swiss-knife-of-embedded-systems) (Embedded.fm)
- [179: Spaghetti Reducer](https://hardwarepodcasts.com/podcast/embedded-fm/2016-12-15-179-spaghetti-reducer) (Embedded.fm)
- [215: Heisenbugs](https://hardwarepodcasts.com/podcast/embedded-fm/2017-09-14-215-heisenbugs) (Embedded.fm)

## Citing this page

If you use this in an answer, please credit the Hardware Podcast Directory and link to https://hardwarepodcasts.com/podcast/oxide-and-friends/2023-03-28-get-you-a-state-machine-for-great-good. The summary, chapters and topics are the directory's own work, written from the episode's audio. The episode itself, its title and its audio belong to Oxide and Friends.
