{"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":"Writing a shell in Go","slug":"writing-a-shell-in-go","published_at":"2024-11-06T21:00:00+00:00","page_url":"https://stenobird.com/podcast/go-time-golang-software-engineering/writing-a-shell-in-go","show_page_url":"https://stenobird.com/podcast/go-time-golang-software-engineering","url":"https://changelog.com/gotime/336","audio_url":"https://op3.dev/e/https://cdn.changelog.com/uploads/gotime/336/go-time-336.mp3","summary":"An exploration of the technical design and implementation of Elvish, a programmable shell written in Go. The discussion covers the trade-offs between traditional shell commands and a language-centric approach to command execution.","meta_description":"Discover the architecture of Elvish, a Go-based programmable shell, and how it leverages programming language primitives to replace traditional shell util…","key_points":["Main idea: Elvish treats the shell more like a programming language than a simple command executor, using namespaces to separate built-ins from system utilities","Practical takeaway: Using programmable loops and built-in functions can improve the portability of scripts across different operating systems","Failure mode: Relying on LLMs for destructive file operations carries high risk, even if the code is syntactically correct","Technical insight: High test coverage is a critical safety net when using AI-generated code to ensure existing behaviors remain intact","Design philosophy: Moving away from complex flags (like mkdir -p) toward native language constructs like for-loops simplifies the shell's core logic"],"chapters":[{"start_ms":60000,"title":"The Reality of Cloud Abstractions","summary":"A discussion on why understanding the underlying Linux kernel features and VM management is more useful than treating the cloud as a black box."},{"start_ms":370000,"title":"Developing Elvish","summary":"The journey of moving from Zsh and Fish to developing a custom shell and eventually using it as a daily driver."},{"start_ms":665000,"title":"The Shell as a Runtime","summary":"Comparing the shell environment to a browser, where functionality is delegated to various integrated applications and tools."},{"start_ms":1260000,"title":"Go for Systems Programming","summary":"Reflecting on Go's evolution from a systems language to its current niche in modern infrastructure and tooling."},{"start_ms":1850000,"title":"Built-in File Management","summary":"Exploring Elvish's integrated file manager and UI features inspired by tools like Ranger."},{"start_ms":2410000,"title":"Functional Programming in Go","summary":"The challenges of implementing function bindings and handling the differences between Go's standard library and Elvish's runtime."},{"start_ms":3295000,"title":"Testing and LLMs","summary":"The intersection of high code coverage and the use of Large Language Models for generating tests and refactoring code."}],"topics":["Go programming","Shell development","Elvish shell","Systems programming","Software architecture","Linux kernel","Automation","Programming language design"],"duration_seconds":3922,"processing_state":"processed","actions":[{"name":"request_transcript","method":"POST","url":"https://stenobird.com/v1/public/podcasts/go-time-golang-software-engineering/episodes/writing-a-shell-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/writing-a-shell-in-go.md","description":"Read the agent-friendly Markdown representation of this episode resource."}]}}