{"podcast":{"title":"Go Time: Golang, Software Engineering","slug":"go-time-golang-software-engineering","podcast_index_feed_id":218840,"rss_url":"https://changelog.com/gotime/feed","website_url":"https://changelog.com/gotime","image_url":"https://cdn.changelog.com/uploads/covers/go-time-original.png?v=63725770357","author":"Changelog Media","episode_count":347,"summary":"Your source for wide-ranging discussions from all around the Go community. Panelists include Mat Ryer, Jon Calhoun, Natalie Pistunovich, Johnny Boursiquot, Angelica Hill, Kris Brandow, and Ian Lopshire. We discuss cloud infrastructure, distributed systems, microservices, Kubernetes, Docker... oh and also Go! Some people search for GoTime or GoTimeFM and can't find the show, so now the strings GoTime and GoTimeFM are in our description too.","last_synced_at":null,"page_url":"https://stenobird.com/podcast/go-time-golang-software-engineering"},"episode":{"title":"Crawl, walk & run your way to usable CLIs in Go","slug":"crawl-walk-run-your-way-to-usable-clis-in-go","published_at":"2024-11-12T21:30:00+00:00","page_url":"https://stenobird.com/podcast/go-time-golang-software-engineering/crawl-walk-run-your-way-to-usable-clis-in-go","show_page_url":"https://stenobird.com/podcast/go-time-golang-software-engineering","url":"https://changelog.com/gotime/337","audio_url":"https://op3.dev/e/https://cdn.changelog.com/uploads/gotime/337/go-time-337.mp3","summary":"Building a production-ready CLI in Go requires more than just picking a library like Cobra. This episode explores the technical debt and architectural decisions encountered when moving from a simple script to a robust, user-friendly tool.","meta_description":"Learn the pitfalls of building Go CLIs, from testing conflicts with Cobra flags to the importance of using flags over positional arguments for UX.","key_points":["Failure mode: Over-using generics and abstractions can make debugging significantly harder than handling simple boilerplate","Practical takeaway: Prefer flags over positional arguments to ensure knowledge transfer and consistency across different commands","Main idea: A successful CLI should act as a teaching tool, helping users understand the underlying system through explicit command structures","Technical challenge: Integrating Cobra's flag parsing with Go's native testing flags can create significant friction in test suites","Design philosophy: Avoid deviating from established patterns unless you have a specific, well-justified reason to reinvent the wheel"],"chapters":[{"start_ms":60000,"title":"The Evolution of Deployment Platforms","summary":"A discussion on the shift from Heroku-style abstractions to more flexible, low-level primitives like Fly.io."},{"start_ms":600000,"title":"The Pitfalls of Custom Implementations","summary":"The difficulty of maintaining custom logic when you deviate from the 'golden path' of established libraries."},{"start_ms":845000,"title":"Testing Network-Dependent CLIs","summary":"How to handle network calls and simulations during the testing phase of CLI development."},{"start_ms":1350000,"title":"IDEs and Refactoring Large Codebases","summary":"Comparing the refactoring capabilities of IntelliJ versus VS Code when managing multi-repository changes."},{"start_ms":2110000,"title":"Designing for User Education","summary":"Why explicit flags are superior to positional arguments for creating a predictable user experience."},{"start_ms":2650000,"title":"Learning from GitHub CLI","summary":"Analyzing the implementation of tools like the GitHub CLI and Bubble Tea to find inspiration for robust CLI design."}],"topics":["Go programming","CLI development","Cobra library","Software architecture","User Experience","Unit testing","Command line interfaces","Developer tools"],"duration_seconds":3467,"processing_state":"processed","actions":[{"name":"request_transcript","method":"POST","url":"https://stenobird.com/v1/public/podcasts/go-time-golang-software-engineering/episodes/crawl-walk-run-your-way-to-usable-clis-in-go/transcription-requests","description":"Idempotently request low-priority transcript generation for this episode."},{"name":"read_markdown","method":"GET","url":"https://stenobird.com/podcast/go-time-golang-software-engineering/crawl-walk-run-your-way-to-usable-clis-in-go.md","description":"Read the agent-friendly Markdown representation of this episode resource."}]}}