Episode 373 | Thorsten Ball - Interpreters, Compilers, and Writing

Developer On Fire show

Summary: <div> <div>Guest:</div> <div> <div><a target="_blank" href=""></a></div> <div><a target="_blank" href="http://twitter.com/">@</a></div> </div> </div> <div class="podcast-episode"> <div class="subtitle"> Thorsten Ball talks with Dave Rael about writing code and writing books, diving deep, failure, persistence, and languages </div> <div class="podcast-summary"> <p>Thorsten Ball is a software developer and writer. He works at ioki, where he helps to build and scale the web application that powers the mobility platform. He wrote two books: "Writing An Interpreter in Go" and its sequel, "Writing A Compiler In Go". Both books are a result of his love for doing what he calls "recreational programming", where he digs deep into various topics, hoping to come out the other end with a better understanding of what it is that we do when we program. For the last few years, the two topics that kept his attention the most are systems programming and programming languages. He's also interested in the other side of doing professional software development: software engineering in a team, communicating through code, team and company culture and how to write good code together. This fascination with programming and what it means to develop software, turned into his two books and various blog posts, podcast appearances and talks.</p> </div> <div class="podcast-chapters"> <h6>Chapters:</h6> <ul> <li><a href="#!"> - Dave introduces the show and Thorsten Ball</a></li> <li><a href="#!"> - How Thorsten got started in software</a></li> <li><a href="#!"> - Thorsten on writing books</a></li> <li><a href="#!"> - Understanding why things are the way they are</a></li> <li><a href="#!"> - Similarities between writing books and software projects and other creative endeavors</a></li> <li><a href="#!"> - Persistence vs failing fast, conflicting advice, best practices, and "it depends"</a></li> <li><a href="#!"> - Writing in English for a German programmer</a></li> <li><a href="#!"> - Thorsten's choice of Golang for his books</a></li> <li><a href="#!"> - Thorsten's story of failure - bugs, overlooking missing elements, rejection</a></li> <li><a href="#!"> - Thorsten's book recommendations</a></li> <li><a href="#!"> - Thorsten's top 3 tips for delivering more value</a></li> <li><a href="#!"> - Keeping up with Thorsten</a></li> </ul> </div> <div class="podcast-resources"> <h6>Resources:</h6> <ul> <li><a href="https://thorstenball.com/" target="_blank">Thorsten's Blog, Including Signup for His Newsletter</a></li> <li><a href="https://interpreterbook.com/" target="_blank">Writing An Interpreter In Go - Thorsten Ball</a></li> <li><a href="https://compilerbook.com/" target="_blank">Writing A Compiler In Go</a></li> <li><a href="http://developeronfire.com/podcast/developer-on-fire-098-kevlin-henney-applied-philosophy" target="_blank">Kevlin Henney on Developer On Fire</a></li> <li><a href="http://developeronfire.com/podcast/episode-233-ted-neward-philosophy-for-programmers" target="_blank">Ted Neward on Developer On Fire</a></li> <li><a href="https://www.nand2tetris.org/" target="_blank">Nand to Tetris</a></li> <li><a href="https://www.amazon.com/dp/0262640686/?tag=devonfir-20" target="_blank">The Elements of Computing Systems: Building a Modern Computer from First Principles - Noam Nisan</a></li> <li><a href="https://www.amazon.com/dp/0321486811/?tag=devonfir-20" target="_blank">Compilers: Principles, Techniques, and Tools (2nd Edition) - Alfred V. Aho</a></li> <li><a href="http://developeronfire.com/podcast/episode-009-udi-dahan-understanding-and-communication" target="_blank">Udi Dahan on Developer On Fire</a></li> <li><a href="https://golang.org/cmd/gofmt/" target="_blank">The Go Format Tool</a></li> <li><a href="http://developeronfire.com/podcast/episode-114-robert-martin-master-craftsman" target="_blank">Uncle Bob Martin on Developer On Fire</a></li> <li><a href="http://developeronfire.com/podcast/episode-164-sandi-metz-grounded-leadership" target="_blank">Sandi Metz on Developer On Fire</a></li> </ul> </div> <div class="podcast-book-recommendation"> <h6>Thorsten's book recommendation:</h6> <ul> <li><a href="https://www.amazon.com/dp/020161622X/?tag=devonfir-20" target="_blank">The Pragmatic Programmer: From Journeyman to Master - Andrew Hunt</a></li> <li><a href="https://www.amazon.com/dp/0132350882/?tag=devonfir-20" target="_blank">Clean Code: A Handbook of Agile Software Craftsmanship - Robert C. Martin</a></li> <li><a href="https://www.amazon.com/dp/0321721330/?tag=devonfir-20" target="_blank">Practical Object-Oriented Design in Ruby: An Agile Primer (Addison-Wesley Professional Ruby Series) - Sandi Metz</a></li> <li><a href="https://www.amazon.com/dp/0070004226/?tag=devonfir-20" target="_blank">Structure and Interpretation of Computer Programs (The Mit Electrical Engineering and Computer Science Series) - Harold Abelson</a></li> <li><a href="https://www.amazon.com/dp/0316491977/?tag=devonfir-20" target="_blank">The Soul of A New Machine - Tracy Kidder</a></li> <li><a href="https://www.amazon.com/dp/0060891548/?tag=devonfir-20" target="_blank">On Writing Well: The Classic Guide to Writing Nonfiction - William Zinsser</a></li> <li><a href="https://www.amazon.com/dp/0374533555/?tag=devonfir-20" target="_blank">Thinking, Fast and Slow - Daniel Kahneman</a></li> <li><a href="https://www.amazon.com/dp/0976458705/?tag=devonfir-20" target="_blank">Thinking Forth - Leo Brodie</a></li> <li><a href="https://www.amazon.com/dp/0735611319/?tag=devonfir-20" target="_blank">Code: The Hidden Language of Computer Hardware and Software - Charles Petzold</a></li> <li><a href="https://www.amazon.com/dp/1430219483/?tag=devonfir-20" target="_blank">Coders at Work: Reflections on the Craft of Programming - Peter Seibel</a></li> </ul> </div> <div class="podcast-tips"> <h6>Thorsten's top 3 tips for delivering more value:</h6> <ol> <li>Learn to write well because communication is important</li> <li>Know one level of abstraction beneath you</li> <li>Write code to be changed and/or deleted</li> </ol> </div> </div>