<?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>web01.fireside.fm</fireside:hostname>
    <fireside:genDate>Tue, 07 Apr 2026 03:47:21 -0500</fireside:genDate>
    <generator>Fireside (https://fireside.fm)</generator>
    <title>Coder Radio - Episodes Tagged with “Seven Languages In Seven Weeks”</title>
    <link>https://coder.show/tags/seven%20languages%20in%20seven%20weeks</link>
    <pubDate>Mon, 19 Aug 2019 23:00: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>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>
<item>
  <title>359: 7 Languages</title>
  <link>https://coder.show/359</link>
  <guid isPermaLink="false">f19a4e9e-785b-404f-9454-9b9eb3101484</guid>
  <pubDate>Tue, 28 May 2019 18:30:00 -0400</pubDate>
  <author>The Mad Botter</author>
  <enclosure url="https://aphid.fireside.fm/d/1437767933/b44de5fa-47c1-4e94-bf9e-c72f8d1c8f5d/f19a4e9e-785b-404f-9454-9b9eb3101484.mp3" length="31489172" type="audio/mp3"/>
  <itunes:episodeType>full</itunes:episodeType>
  <itunes:author>The Mad Botter</itunes:author>
  <itunes:subtitle>Wes is back and Mike's got a few surprises in store, including a new view on Electron, a hot take on titles, and a programming challenge for the both of them.</itunes:subtitle>
  <itunes:duration>43:44</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>Wes is back and Mike's got a few surprises in store, including a new view on Electron, a hot take on titles, and a programming challenge for the both of them.
Plus when it's okay to lie to the compiler, what GitHub's Sponsors program means for open source, and your feedback. 
</description>
  <itunes:keywords>Electron, wkwebview, macOS, iOS, app development, Marzipan, Apple, Uno, Uno Platform, poll, survey, web development, esoteric languages, indie business, mobile development, engineering titles, engineering, software development, GitHub Sponsors, open source development, C#, nullable reference types, functional programming, seven languages in seven weeks, typescript, elixir, jon skeet, Developer podcast, Coder Radio</itunes:keywords>
  <content:encoded>
    <![CDATA[<p>Wes is back and Mike&#39;s got a few surprises in store, including a new view on Electron, a hot take on titles, and a programming challenge for the both of them.</p>

<p>Plus when it&#39;s okay to lie to the compiler, what GitHub&#39;s Sponsors program means for open source, and your feedback.</p><p>Links:</p><ul><li><a title="Coder Radio 343: Say My Functional Name" rel="nofollow" href="https://coder.show/343">Coder Radio 343: Say My Functional Name</a> &mdash; Mike breaks down the drama around nullable reference types in C# 8.0, and we debate what it means for the future of the language.

</li><li><a title="Coder Radio 358 Feedback" rel="nofollow" href="https://www.reddit.com/r/CoderRadio/comments/braxr7/batteries_are_leaking_coder_radio_358/">Coder Radio 358 Feedback</a> &mdash; In the discussion of Marzipan and Electron I think the answer is WKWebView, which just arrived in macOS 10.10.

</li><li><a title="Show Content Poll" rel="nofollow" href="https://twitter.com/dominucco/status/1131547330019246082">Show Content Poll</a> &mdash; What Do You Want More of on #CoderRadio @CoderRadioShow this is your chance to give me some feedback for the next few months!

</li><li><a title="Why Computer Programmers Should Stop Calling Themselves Engineers" rel="nofollow" href="https://www.theatlantic.com/technology/archive/2015/11/programmers-should-not-call-themselves-engineers/414271/">Why Computer Programmers Should Stop Calling Themselves Engineers</a> &mdash; The respectability of engineering, a feature built over many decades of closely controlled, education- and apprenticeship-oriented certification, becomes reinterpreted as a fast-and-loose commitment to craftwork as business.</li><li><a title="About GitHub Sponsors" rel="nofollow" href="https://help.github.com/en/articles/about-github-sponsors">About GitHub Sponsors</a> &mdash; Anyone with a GitHub account can sponsor anyone with a sponsored developer profile through a recurring monthly payment. You can choose from multiple sponsorship tiers, with monthly payment amounts and benefits that are set by the sponsored developer.</li><li><a title="Lying to the compiler | Jon Skeet&#39;s coding blog" rel="nofollow" href="https://codeblog.jonskeet.uk/2019/05/25/lying-to-the-compiler/">Lying to the compiler | Jon Skeet's coding blog</a> &mdash;  I’m lying to the compiler to get it to stop it emitting a warning. The reason is that in the case where the value is null, it won’t matter that it’s null.</li><li><a title="Programming Language Tourism | Bushido Codes" rel="nofollow" href="https://www.bushido.codes/programming-language-tourism">Programming Language Tourism | Bushido Codes</a> &mdash;  I am attracted to this book precisely because it is impractical. You don’t gain mastery of any programming languages. Rather, you get the chance to explore and complete a series of coding katas to expand your mind about the art of programming. </li><li><a title="Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages by Bruce A. Tate | The Pragmatic Bookshelf" rel="nofollow" href="https://pragprog.com/book/btlang/seven-languages-in-seven-weeks">Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages by Bruce A. Tate | The Pragmatic Bookshelf</a> &mdash; You should learn a programming language every year, as recommended by The Pragmatic Programmer. But if one per year is good, how about Seven Languages in Seven Weeks? In this book you’ll get a hands-on tour of Clojure, Haskell, Io, Prolog, Scala, Erlang, and Ruby.</li><li><a title="Uno Platform" rel="nofollow" href="https://platform.uno/">Uno Platform</a> &mdash; The only platform for building native mobile, desktop and WebAssembly with C#, XAML from single codebase. Open source and professionally supported.</li><li><a title="Uno.QuickStart" rel="nofollow" href="https://github.com/nventive/Uno.QuickStart">Uno.QuickStart</a> &mdash; This repository is a basic sample for an Uno application which cross-targets UWP, iOS, Android and WebAssembly.

</li></ul>]]>
  </content:encoded>
  <itunes:summary>
    <![CDATA[<p>Wes is back and Mike&#39;s got a few surprises in store, including a new view on Electron, a hot take on titles, and a programming challenge for the both of them.</p>

<p>Plus when it&#39;s okay to lie to the compiler, what GitHub&#39;s Sponsors program means for open source, and your feedback.</p><p>Links:</p><ul><li><a title="Coder Radio 343: Say My Functional Name" rel="nofollow" href="https://coder.show/343">Coder Radio 343: Say My Functional Name</a> &mdash; Mike breaks down the drama around nullable reference types in C# 8.0, and we debate what it means for the future of the language.

</li><li><a title="Coder Radio 358 Feedback" rel="nofollow" href="https://www.reddit.com/r/CoderRadio/comments/braxr7/batteries_are_leaking_coder_radio_358/">Coder Radio 358 Feedback</a> &mdash; In the discussion of Marzipan and Electron I think the answer is WKWebView, which just arrived in macOS 10.10.

</li><li><a title="Show Content Poll" rel="nofollow" href="https://twitter.com/dominucco/status/1131547330019246082">Show Content Poll</a> &mdash; What Do You Want More of on #CoderRadio @CoderRadioShow this is your chance to give me some feedback for the next few months!

</li><li><a title="Why Computer Programmers Should Stop Calling Themselves Engineers" rel="nofollow" href="https://www.theatlantic.com/technology/archive/2015/11/programmers-should-not-call-themselves-engineers/414271/">Why Computer Programmers Should Stop Calling Themselves Engineers</a> &mdash; The respectability of engineering, a feature built over many decades of closely controlled, education- and apprenticeship-oriented certification, becomes reinterpreted as a fast-and-loose commitment to craftwork as business.</li><li><a title="About GitHub Sponsors" rel="nofollow" href="https://help.github.com/en/articles/about-github-sponsors">About GitHub Sponsors</a> &mdash; Anyone with a GitHub account can sponsor anyone with a sponsored developer profile through a recurring monthly payment. You can choose from multiple sponsorship tiers, with monthly payment amounts and benefits that are set by the sponsored developer.</li><li><a title="Lying to the compiler | Jon Skeet&#39;s coding blog" rel="nofollow" href="https://codeblog.jonskeet.uk/2019/05/25/lying-to-the-compiler/">Lying to the compiler | Jon Skeet's coding blog</a> &mdash;  I’m lying to the compiler to get it to stop it emitting a warning. The reason is that in the case where the value is null, it won’t matter that it’s null.</li><li><a title="Programming Language Tourism | Bushido Codes" rel="nofollow" href="https://www.bushido.codes/programming-language-tourism">Programming Language Tourism | Bushido Codes</a> &mdash;  I am attracted to this book precisely because it is impractical. You don’t gain mastery of any programming languages. Rather, you get the chance to explore and complete a series of coding katas to expand your mind about the art of programming. </li><li><a title="Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages by Bruce A. Tate | The Pragmatic Bookshelf" rel="nofollow" href="https://pragprog.com/book/btlang/seven-languages-in-seven-weeks">Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages by Bruce A. Tate | The Pragmatic Bookshelf</a> &mdash; You should learn a programming language every year, as recommended by The Pragmatic Programmer. But if one per year is good, how about Seven Languages in Seven Weeks? In this book you’ll get a hands-on tour of Clojure, Haskell, Io, Prolog, Scala, Erlang, and Ruby.</li><li><a title="Uno Platform" rel="nofollow" href="https://platform.uno/">Uno Platform</a> &mdash; The only platform for building native mobile, desktop and WebAssembly with C#, XAML from single codebase. Open source and professionally supported.</li><li><a title="Uno.QuickStart" rel="nofollow" href="https://github.com/nventive/Uno.QuickStart">Uno.QuickStart</a> &mdash; This repository is a basic sample for an Uno application which cross-targets UWP, iOS, Android and WebAssembly.

</li></ul>]]>
  </itunes:summary>
</item>
  </channel>
</rss>
