<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" encoding="UTF-8" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:atom="http://www.w3.org/2005/Atom/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:fireside="http://fireside.fm/modules/rss/fireside">
  <channel>
    <fireside:hostname>web02.fireside.fm</fireside:hostname>
    <fireside:genDate>Thu, 23 Apr 2026 14:38:46 -0500</fireside:genDate>
    <generator>Fireside (https://fireside.fm)</generator>
    <title>Coder Radio - Episodes Tagged with “Crystal”</title>
    <link>https://coder.show/tags/crystal</link>
    <pubDate>Tue, 27 Aug 2019 00:30:00 -0400</pubDate>
    <description>A weekly talk show taking a pragmatic look at the art and business of Software Development and the world of technology.
</description>
    <language>en-us</language>
    <itunes:type>episodic</itunes:type>
    <itunes:subtitle>A weekly talk show</itunes:subtitle>
    <itunes:author>The Mad Botter</itunes:author>
    <itunes:summary>A weekly talk show taking a pragmatic look at the art and business of Software Development and the world of technology.
</itunes:summary>
    <itunes:image href="https://media24.fireside.fm/file/fireside-images-2024/podcasts/images/b/b44de5fa-47c1-4e94-bf9e-c72f8d1c8f5d/cover.jpg?v=7"/>
    <itunes:explicit>no</itunes:explicit>
    <itunes:owner>
      <itunes:name>The Mad Botter</itunes:name>
      <itunes:email>michael@themadbotter.com</itunes:email>
    </itunes:owner>
<itunes:category text="Technology"/>
<itunes:category text="Education">
  <itunes:category text="How To"/>
</itunes:category>
<itunes:category text="Business"/>
<item>
  <title>372: Crystal Clear</title>
  <link>https://coder.show/372</link>
  <guid isPermaLink="false">36a4ee8c-a33b-4b1e-bfc4-174c8bb9bc09</guid>
  <pubDate>Tue, 27 Aug 2019 00:30:00 -0400</pubDate>
  <author>The Mad Botter</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/b44de5fa-47c1-4e94-bf9e-c72f8d1c8f5d/36a4ee8c-a33b-4b1e-bfc4-174c8bb9bc09.mp3" length="38901783" type="audio/mp3"/>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>The Mad Botter</itunes:author>
  <itunes:subtitle>We're back and going crazy about Crystal, a statically typed language that's as fast as C and as slick as ruby.</itunes:subtitle>
  <itunes:duration>54:01</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://media24.fireside.fm/file/fireside-images-2024/podcasts/images/b/b44de5fa-47c1-4e94-bf9e-c72f8d1c8f5d/cover.jpg?v=7"/>
  <description>We're back and going crazy about Crystal, a statically typed language that's as fast as C and as slick as ruby.
Plus an update on Rails 6, Intel's growing adoption of Rust, and the challenge of making breaking changes. 
</description>
  <itunes:keywords> Academia, math, CS, python, ABC, abstraction, breaking changes, semver, software maintenance, rails, rails 6, intel, rust, FOSS, tragedy of the commons, systems programming, concurrency, crystal, green threads, fibers, macros, static types, safety, nil, null, null-safety, julia, 7 languages, 7 languages challenge, 7 languages in 7 weeks, Jupiter Broadcasting, Developer podcast, Coder Radio</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>We&#39;re back and going crazy about Crystal, a statically typed language that&#39;s as fast as C and as slick as ruby.</p>

<p>Plus an update on Rails 6, Intel&#39;s growing adoption of Rust, and the challenge of making breaking changes.</p><p>Links:</p><ul><li><a title="Feedback: Academia and Industry" rel="nofollow" href="https://slexy.org/view/s207igrpde">Feedback: Academia and Industry</a> &mdash; Do either of you have any insights as to how the software development community would view someone with a math PhD, but no industry coding experience as a job applicant? Any advice would be appreciated.
</li><li><a title="Feedback: Absurd Abstractions" rel="nofollow" href="https://www.reddit.com/r/CoderRadio/comments/ct01ux/absurd_abstractions_coder_radio_371/">Feedback: Absurd Abstractions</a> &mdash; FYI about wanting `interface` in Python: they are called abstract base classes. Check out the standard library module, abc for that and collections.abc some useful predefined container interfaces.

</li><li><a title="Feedback: Breaking Changes" rel="nofollow" href="https://slexy.org/view/s21lBcB8Op">Feedback: Breaking Changes</a> &mdash; I developed  a niche Python package that has some user following in the network security realm.  I’m at a crossroads though as a change I want to make will subtly break scripts that worked in previous/current versions.  The end result of my pending change  is good for the project but I fear I’ll ruin the workflow of my users.  Other than my github page I don’t know how to query/inform my users of this pending change.  What should I do?</li><li><a title="Ruby on Rails 6.0 Release Notes" rel="nofollow" href="https://edgeguides.rubyonrails.org/6_0_release_notes.html">Ruby on Rails 6.0 Release Notes</a> &mdash; Make Webpacker the default JavaScript compiler for Rails 6</li><li><a title="Intel and Rust: the Future of Systems Programming: Josh Triplett" rel="nofollow" href="https://www.youtube.com/watch?v=l9hM0h6IQDo">Intel and Rust: the Future of Systems Programming: Josh Triplett</a> &mdash; Hear about how Intel is working to bring Rust to full parity with C, building the future of systems programming.</li><li><a title="Altruism Still Fuels the Web. Businesses Love to Exploit It | WIRED" rel="nofollow" href="https://www.wired.com/story/altruism-open-source-fuels-web-businesses-love-to-exploit-it/">Altruism Still Fuels the Web. Businesses Love to Exploit It | WIRED</a> &mdash; The original well-meaning, geeky architects of the web believed that there was an abundance of altruism in human nature—and they were more correct on this count, it turns out, than many esteemed social philosophers were. But they were too optimistic in overlooking the possibility that corporations would exploit and colonize this new realm. If only we had all seen it coming.</li><li><a title="The Crystal Programming Language" rel="nofollow" href="https://crystal-lang.org/">The Crystal Programming Language</a> &mdash; Crystal is statically type checked, so any type errors will be caught early by the compiler rather than fail on runtime. Moreover, and to keep the language clean, Crystal has built-in type inference, so most type annotations are unneeded.
</li><li><a title="The Imposter&#39;s Handbook by Rob Conery" rel="nofollow" href="https://www.goodreads.com/book/show/31572054-the-imposter-s-handbook">The Imposter's Handbook by Rob Conery</a> &mdash; You've had to learn on the job. New languages, new frameworks, new ways of doing things - a constant struggle just to stay current in the industry. This left no time to learn the foundational concepts and skills that come with a degree in Computer Science.</li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>We&#39;re back and going crazy about Crystal, a statically typed language that&#39;s as fast as C and as slick as ruby.</p>

<p>Plus an update on Rails 6, Intel&#39;s growing adoption of Rust, and the challenge of making breaking changes.</p><p>Links:</p><ul><li><a title="Feedback: Academia and Industry" rel="nofollow" href="https://slexy.org/view/s207igrpde">Feedback: Academia and Industry</a> &mdash; Do either of you have any insights as to how the software development community would view someone with a math PhD, but no industry coding experience as a job applicant? Any advice would be appreciated.
</li><li><a title="Feedback: Absurd Abstractions" rel="nofollow" href="https://www.reddit.com/r/CoderRadio/comments/ct01ux/absurd_abstractions_coder_radio_371/">Feedback: Absurd Abstractions</a> &mdash; FYI about wanting `interface` in Python: they are called abstract base classes. Check out the standard library module, abc for that and collections.abc some useful predefined container interfaces.

</li><li><a title="Feedback: Breaking Changes" rel="nofollow" href="https://slexy.org/view/s21lBcB8Op">Feedback: Breaking Changes</a> &mdash; I developed  a niche Python package that has some user following in the network security realm.  I’m at a crossroads though as a change I want to make will subtly break scripts that worked in previous/current versions.  The end result of my pending change  is good for the project but I fear I’ll ruin the workflow of my users.  Other than my github page I don’t know how to query/inform my users of this pending change.  What should I do?</li><li><a title="Ruby on Rails 6.0 Release Notes" rel="nofollow" href="https://edgeguides.rubyonrails.org/6_0_release_notes.html">Ruby on Rails 6.0 Release Notes</a> &mdash; Make Webpacker the default JavaScript compiler for Rails 6</li><li><a title="Intel and Rust: the Future of Systems Programming: Josh Triplett" rel="nofollow" href="https://www.youtube.com/watch?v=l9hM0h6IQDo">Intel and Rust: the Future of Systems Programming: Josh Triplett</a> &mdash; Hear about how Intel is working to bring Rust to full parity with C, building the future of systems programming.</li><li><a title="Altruism Still Fuels the Web. Businesses Love to Exploit It | WIRED" rel="nofollow" href="https://www.wired.com/story/altruism-open-source-fuels-web-businesses-love-to-exploit-it/">Altruism Still Fuels the Web. Businesses Love to Exploit It | WIRED</a> &mdash; The original well-meaning, geeky architects of the web believed that there was an abundance of altruism in human nature—and they were more correct on this count, it turns out, than many esteemed social philosophers were. But they were too optimistic in overlooking the possibility that corporations would exploit and colonize this new realm. If only we had all seen it coming.</li><li><a title="The Crystal Programming Language" rel="nofollow" href="https://crystal-lang.org/">The Crystal Programming Language</a> &mdash; Crystal is statically type checked, so any type errors will be caught early by the compiler rather than fail on runtime. Moreover, and to keep the language clean, Crystal has built-in type inference, so most type annotations are unneeded.
</li><li><a title="The Imposter&#39;s Handbook by Rob Conery" rel="nofollow" href="https://www.goodreads.com/book/show/31572054-the-imposter-s-handbook">The Imposter's Handbook by Rob Conery</a> &mdash; You've had to learn on the job. New languages, new frameworks, new ways of doing things - a constant struggle just to stay current in the industry. This left no time to learn the foundational concepts and skills that come with a degree in Computer Science.</li></ul>]]>
  </itunes:summary>
</item>
<item>
  <title>371: Absurd Abstractions</title>
  <link>https://coder.show/371</link>
  <guid isPermaLink="false">410f9406-ac0a-4502-a806-fb1ca0fe5b7b</guid>
  <pubDate>Mon, 19 Aug 2019 23:00:00 -0400</pubDate>
  <author>The Mad Botter</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/b44de5fa-47c1-4e94-bf9e-c72f8d1c8f5d/410f9406-ac0a-4502-a806-fb1ca0fe5b7b.mp3" length="28354478" type="audio/mp3"/>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>The Mad Botter</itunes:author>
  <itunes:subtitle>It’s a Coder Radio special all about abstraction. What it is, why we need it, and what to do when it leaks.</itunes:subtitle>
  <itunes:duration>39:22</itunes:duration>
  <itunes:explicit>no</itunes:explicit>
  <itunes:image href="https://media24.fireside.fm/file/fireside-images-2024/podcasts/images/b/b44de5fa-47c1-4e94-bf9e-c72f8d1c8f5d/cover.jpg?v=7"/>
  <description>It’s a Coder Radio special all about abstraction. What it is, why we need it, and what to do when it leaks.
Plus your feedback, Mike’s next language challenge, and a functional ruby pick. 
</description>
  <itunes:keywords>Crystal, minio, API, open source, knuth, donald knuth, S3, ActiveStorage, Ruby on Rails, ruby, rails, joel spolsky, abstraction, algebraic effects, functional programming, leaky abstractions, seven languages in seven weeks, seven languages challenge, interfaces, java, type dispatch, protocol, Jupiter Broadcasting, Developer podcast, Coder Radio</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>It’s a Coder Radio special all about abstraction. What it is, why we need it, and what to do when it leaks.</p>

<p>Plus your feedback, Mike’s next language challenge, and a functional ruby pick.</p><p>Links:</p><ul><li><a title="Feedback: Clojure, Racket, and Extempore" rel="nofollow" href="https://slexy.org/view/s21wfCUdFs">Feedback: Clojure, Racket, and Extempore</a> &mdash; Thinking about the problem could take the form of leveraging the REPL to work out code to solve a problem or you could spend some time away from your computer screen (or in “Hammock Time”) working out problems.  If I have learned anything from Clojure’s creator, “Rich Hickey” its “Programming is not about not about typing, it’s about thinking”.</li><li><a title="Knuth&#39;s Sensitivity Conjecture One-Pager" rel="nofollow" href="https://www.cs.stanford.edu/~knuth/papers/huang.pdf">Knuth's Sensitivity Conjecture One-Pager</a></li><li><a title="Law Of Leaky Abstractions" rel="nofollow" href="http://www.principles-wiki.net/principles:law_of_leaky_abstractions">Law Of Leaky Abstractions</a> &mdash; All non-trivial abstractions, to some degree, are leaky.</li><li><a title="The Law of Leaky Abstractions – Joel on Software" rel="nofollow" href="https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/">The Law of Leaky Abstractions – Joel on Software</a> &mdash; This is what I call a leaky abstraction. TCP attempts to provide a complete abstraction of an underlying unreliable network, but sometimes, the network leaks through the abstraction and you feel the things that the abstraction can’t quite protect you from.</li><li><a title="Forget about Leaky Abstractions" rel="nofollow" href="http://beza1e1.tuxen.de/leaky_abstractions.html">Forget about Leaky Abstractions</a> &mdash; Even if an abstraction is leaky it can still be useful. Sometimes you cannot escape it (uniform memory) and sometimes the workaround is costly to implement (TCP, SQL). So you accept the technical debt for now. Hope the debt does not kill the project. Maybe there will come a time where it is worthwhile to pay off the debt.</li><li><a title="All Abstractions Are Failed Abstractions" rel="nofollow" href="https://blog.codinghorror.com/all-abstractions-are-failed-abstractions/">All Abstractions Are Failed Abstractions</a> &mdash; It's our job as modern programmers not to abandon abstractions due to these deficiencies, but to embrace the useful elements of them, to adapt the working parts and construct ever so slightly less leaky and broken abstractions over time.</li><li><a title="Appropriate Levels of Abstraction" rel="nofollow" href="https://www.intentsoft.com/appropriate_lev-2/">Appropriate Levels of Abstraction</a> &mdash; Instead of aspiring to higher levels of abstraction, we should instead seek to work at the appropriate level of abstraction for the problem at hand. The appropriate level is sometimes very high and sometimes very low. It varies for different situations even in the same software project. Just as other engineering disciplines require different tools for different situations, software development also requires tools and languages that support our work at multiple levels of abstraction.
</li><li><a title="Choosing The Proper Level of Abstraction" rel="nofollow" href="https://www.coderhood.com/choosing-the-proper-level-of-abstraction/">Choosing The Proper Level of Abstraction</a> &mdash; In software development, choosing the right abstraction can be tricky. If you make it too simple, it won’t let you create a model to satisfy even the immediate requirements. If you make it restricted to the urgent needs, you might have to change it almost immediately to implement the next iteration of the model. However, if you make your abstraction too generic and all-encompassing, modeling solutions might get so complicated that you’ll go out of business before you are finished.

</li><li><a title="The Crystal Programming Language" rel="nofollow" href="https://crystal-lang.org/">The Crystal Programming Language</a> &mdash; Crystal is statically type checked, so any type errors will be caught early by the compiler rather than fail on runtime. Moreover, and to keep the language clean, Crystal has built-in type inference, so most type annotations are unneeded.

</li><li><a title="affect: Algebraic effects for Ruby" rel="nofollow" href="https://github.com/digital-fabric/affect">affect: Algebraic effects for Ruby</a> &mdash; Affect is a tiny Ruby gem providing a way to isolate and handle side-effects in functional programs. Affect implements algebraic effects in Ruby, but can also be used to implement patterns that are orthogonal to object-oriented programming, such as inversion of control and dependency injection.

</li><li><a title="Algebraic Effects for the Rest of Us" rel="nofollow" href="https://overreacted.io/algebraic-effects-for-the-rest-of-us/">Algebraic Effects for the Rest of Us</a> &mdash; Imagine that you’re writing code with goto, and somebody shows you if and for statements. Or maybe you’re deep in the callback hell, and somebody shows you async / await. Pretty cool, huh? If you’re the kind of person who likes to learn about programming ideas several years before they hit the mainstream, it might be a good time to get curious about algebraic effects. Don’t feel like you have to though. It is a bit like thinking about async / await in 1999.</li><li><a title="MinIO" rel="nofollow" href="https://min.io/index.html">MinIO</a> &mdash; The 100% Open Source, Enterprise-Grade, Amazon S3 Compatible Object Storage</li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>It’s a Coder Radio special all about abstraction. What it is, why we need it, and what to do when it leaks.</p>

<p>Plus your feedback, Mike’s next language challenge, and a functional ruby pick.</p><p>Links:</p><ul><li><a title="Feedback: Clojure, Racket, and Extempore" rel="nofollow" href="https://slexy.org/view/s21wfCUdFs">Feedback: Clojure, Racket, and Extempore</a> &mdash; Thinking about the problem could take the form of leveraging the REPL to work out code to solve a problem or you could spend some time away from your computer screen (or in “Hammock Time”) working out problems.  If I have learned anything from Clojure’s creator, “Rich Hickey” its “Programming is not about not about typing, it’s about thinking”.</li><li><a title="Knuth&#39;s Sensitivity Conjecture One-Pager" rel="nofollow" href="https://www.cs.stanford.edu/~knuth/papers/huang.pdf">Knuth's Sensitivity Conjecture One-Pager</a></li><li><a title="Law Of Leaky Abstractions" rel="nofollow" href="http://www.principles-wiki.net/principles:law_of_leaky_abstractions">Law Of Leaky Abstractions</a> &mdash; All non-trivial abstractions, to some degree, are leaky.</li><li><a title="The Law of Leaky Abstractions – Joel on Software" rel="nofollow" href="https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/">The Law of Leaky Abstractions – Joel on Software</a> &mdash; This is what I call a leaky abstraction. TCP attempts to provide a complete abstraction of an underlying unreliable network, but sometimes, the network leaks through the abstraction and you feel the things that the abstraction can’t quite protect you from.</li><li><a title="Forget about Leaky Abstractions" rel="nofollow" href="http://beza1e1.tuxen.de/leaky_abstractions.html">Forget about Leaky Abstractions</a> &mdash; Even if an abstraction is leaky it can still be useful. Sometimes you cannot escape it (uniform memory) and sometimes the workaround is costly to implement (TCP, SQL). So you accept the technical debt for now. Hope the debt does not kill the project. Maybe there will come a time where it is worthwhile to pay off the debt.</li><li><a title="All Abstractions Are Failed Abstractions" rel="nofollow" href="https://blog.codinghorror.com/all-abstractions-are-failed-abstractions/">All Abstractions Are Failed Abstractions</a> &mdash; It's our job as modern programmers not to abandon abstractions due to these deficiencies, but to embrace the useful elements of them, to adapt the working parts and construct ever so slightly less leaky and broken abstractions over time.</li><li><a title="Appropriate Levels of Abstraction" rel="nofollow" href="https://www.intentsoft.com/appropriate_lev-2/">Appropriate Levels of Abstraction</a> &mdash; Instead of aspiring to higher levels of abstraction, we should instead seek to work at the appropriate level of abstraction for the problem at hand. The appropriate level is sometimes very high and sometimes very low. It varies for different situations even in the same software project. Just as other engineering disciplines require different tools for different situations, software development also requires tools and languages that support our work at multiple levels of abstraction.
</li><li><a title="Choosing The Proper Level of Abstraction" rel="nofollow" href="https://www.coderhood.com/choosing-the-proper-level-of-abstraction/">Choosing The Proper Level of Abstraction</a> &mdash; In software development, choosing the right abstraction can be tricky. If you make it too simple, it won’t let you create a model to satisfy even the immediate requirements. If you make it restricted to the urgent needs, you might have to change it almost immediately to implement the next iteration of the model. However, if you make your abstraction too generic and all-encompassing, modeling solutions might get so complicated that you’ll go out of business before you are finished.

</li><li><a title="The Crystal Programming Language" rel="nofollow" href="https://crystal-lang.org/">The Crystal Programming Language</a> &mdash; Crystal is statically type checked, so any type errors will be caught early by the compiler rather than fail on runtime. Moreover, and to keep the language clean, Crystal has built-in type inference, so most type annotations are unneeded.

</li><li><a title="affect: Algebraic effects for Ruby" rel="nofollow" href="https://github.com/digital-fabric/affect">affect: Algebraic effects for Ruby</a> &mdash; Affect is a tiny Ruby gem providing a way to isolate and handle side-effects in functional programs. Affect implements algebraic effects in Ruby, but can also be used to implement patterns that are orthogonal to object-oriented programming, such as inversion of control and dependency injection.

</li><li><a title="Algebraic Effects for the Rest of Us" rel="nofollow" href="https://overreacted.io/algebraic-effects-for-the-rest-of-us/">Algebraic Effects for the Rest of Us</a> &mdash; Imagine that you’re writing code with goto, and somebody shows you if and for statements. Or maybe you’re deep in the callback hell, and somebody shows you async / await. Pretty cool, huh? If you’re the kind of person who likes to learn about programming ideas several years before they hit the mainstream, it might be a good time to get curious about algebraic effects. Don’t feel like you have to though. It is a bit like thinking about async / await in 1999.</li><li><a title="MinIO" rel="nofollow" href="https://min.io/index.html">MinIO</a> &mdash; The 100% Open Source, Enterprise-Grade, Amazon S3 Compatible Object Storage</li></ul>]]>
  </itunes:summary>
</item>
  </channel>
</rss>
