

Coder Radio
The Mad Botter
A weekly talk show taking a pragmatic look at the art and business of Software Development and the world of technology.
Episodes
Mentioned books

Sep 3, 2020 • 55min
377: An Epic Underdog
GitHub just made a major behind-the-scenes upgrade, and we chew on some of the impressive details.
Plus, our thoughts on Epic vs. Apple, the larger story around device ownership, and a fun anecdote from running a small business.Sponsored By:A Cloud Guru: A Cloud Guru now includes Cloud Playground. Azure, AWS, or GCP Sandboxes at your fingertips.Links:Upgrading GitHub to Ruby 2.7 - The GitHub Blog — Falling behind on Ruby upgrades has drastic negative effects on the stability of your codebase. Upgrading Ruby supports your application health, improves performance, fixes language and framework bugs, and guides the future of the language!Ruby Creator Yukihiro Matsumoto on the Challenges of Updating a Programming Language — A recent presentation from Yukihiro Matsumoto, the creator and chief designer of the Ruby programming language — and Chief Architect of Ruby at the cloud platform-as-a-service company Heroku — offered a clear example of the thoughtful care with which Matsumoto leads his Ruby community. Michael Dominick on Twitter — #iOSDev what do you feel about the #AppStore rules? Is the problem the 30% or the restrictions on what you can build? I’m thinking especially of #iPad here. Sound off on this tweet thread.Hope you didn’t delete Fortnite or Infinity Blade because Apple just terminated Epic’s dev account — You can’t re-download Epic games anymoreApple apologizes to WordPress, won’t force the free app to add purchases after all — “We [...] apologize for any confusion that we have caused”Apple Confirms New App Store Policies on Bug Fix Updates and Challenging Guidelines Are Live — For apps that are already on the App Store, bug fixes will no longer be delayed over guideline violations except for those related to legal issues. You'll instead be able to address guideline violations in your next submission. And now, in addition to appealing decisions about whether an app violates guidelines, you can suggest changes to the guidelines. We also encourage you to submit your App Store and Apple development platform suggestions so we can continue to improve experiences for the developer community.

Aug 25, 2020 • 45min
376: WESA BACK!
We reboot the show to capture Mike's love of coupons and update you on what we have been up to recently since the show's fake demise.Sponsored By:A Cloud Guru: A Cloud Guru now includes Cloud Playground. Azure, AWS, or GCP Sandboxes at your fingertips.System76: One giant sale for mankind!
Upgrade and save through September 30th Promo Code: Tell them Coder sent you!Links:HEY - Email at its best, new from Basecamp.Fourth of July Contest | The Mad Botter — Based on the success of our annual Earth Day contest and our continuing commitment to STEM education and open-source software, The Mad Botter INC team is launching a Fourth of July competition for US students. We are thrilled to offer this competition to promote civic-mindedness and STEM in students and to honor the birth of our great nation.Oil and Water eBookHelp! My Teen Has Diabetes: The Resource for Frustrated Parents

Sep 17, 2019 • 33min
375: The Grey Havens
We say goodbye to the show by taking a look back at a few of our favorite moments and reflect on how much has changed in the past seven years.Links:Coder Radio Back Catalog Coder Radio - A New Developer Podcast! — A weekly talk show taking a pragmatic look at the art and business of software development and related technologies.WWDC Fallout | Coder Radio 2 — Michael and Chris cover the items from WWDC that they think developers will be impacted by, discuss the Facebook pressure, and reflect on hardware updates announced.
Docker All The Things | Coder Radio 66 — We’re joined by two gentlemen from dotCloud, the folks behind Docker. We chat about what Docker is best at, how far out the 1.0 release is, the projects use of Go, the future of Docker, and much more.
Open Season on Swift | Coder Radio 182 — The majority of our discussion this week is around the open sourcing of Swift, what Apple got really right & what areas still really need improvement.Clojure Calisthenics | Coder Radio 325 — Wes joins Mike to discuss why .NET still makes sense, the latest antics from Fortnite, a brave new hope for JVM concurrency, and the mind-expanding benefits of trying a Lisp.Mike on Twitter — Software Developer & entrepreneur at a #startup in the #Aerospace and #IOT spaces. @TheMadBotterINC.
Mike's Blog — Meditations on the Art of TechnologyCheck out Linux Headlines — Linux and open source headlines every weekday, in under 3 minutes.

Sep 10, 2019 • 33min
374: Python's Long Tail
As Python 2's demise draws near we reflect on Python's popularity, the growing adoption of static typing, and why the Python 3 transition took so long.
Plus Apple's audacious app store tactics, Google's troubles with Typescript, and more!Links:Correction: macOS and Zsh — I believe the new macOS Catalina shell is zsh.Feedback: What about Perl 6? — Last episode (373) that's on about shell scripting, interpreted languages, repl & cli, made me think about Perl 6.Feedback: Pry and a Pick — In the previous episode I was amazed to hear that Mike had never used pry before! It's one of the first things I show off to people when introducing them to Ruby.Feedback: Learning Web Dev — I feel woefully unready and I was wondering if either of you had suggestions for structured content around web dev/design that I could use to augment my learning? I've been using Pluralsight, which is great, and I'd be curious to know what else you might suggest.
Google feedback on TypeScript 3.5 — We know and expect every TypeScript upgrade to involve some work. For example, improvements to the standard library are expected and welcomed by us, even though they may mean removing similar but incompatible definitions from our own code base. However, TypeScript 3.5 was a lot more work for us than other recent TypeScript upgrades.Apple has copied some of the most popular apps in the App Store for its iPhone, iPad and other software updates - The Washington Post — Apple plans this month to incorporate some of Clue’s core functionality such as fertility and period prediction into its own Health app that comes pre-installed in every iPhone and is free — unlike Clue, which is free to download but earns money by selling subscriptions and services within its app. Apple’s past incorporation of functionality included in other third-party apps has often led to their demise.
How Apple’s Apps Topped Rivals in the App Store It Controls - The New York Times — But as Apple has become one of the largest competitors on a platform that it controls, suspicions that the company has been tipping the scales in its own favor are at the heart of antitrust complaints in the United States, Europe and Russia.Sunsetting Python 2 | Python.org — We have decided that January 1, 2020, will be the day that we sunset Python 2. That means that we will not improve it anymore after that day, even if someone finds a security problem in it. You should upgrade to Python 3 as soon as you can.Python 2.7 CountdownPorting Python 2 Code to Python 3Our journey to type checking 4 million lines of Python | Dropbox Tech Blog — Dropbox is a big user of Python. It’s our most widely used language both for backend services and the desktop client app (we are also heavy users of Go, TypeScript, and Rust). At our scale—millions of lines of Python—the dynamic typing in Python made code needlessly hard to understand and started to seriously impact productivity. TProjectPSX: Experimental C# Playstation Emulator — ProjectPSX is a C# coded emulator of the original Sony Playstation (Playstation 1/PS1/PSX)
junegunn/fzf — fzf is a general-purpose command-line fuzzy finder.

Sep 3, 2019 • 37min
373: Interactive Investigations
We debate the best way to package scripting language apps then explore interactive development and the importance of a good shell.
Plus npm bans terminal ads, what comes after Rust, and why Mike hates macros.Links:Feedback: Getting started on .NET? — My question is what is the easiest route to get started in .net development? When I looked online there are several different languages that can be used from C# ,F#, ASP.NEt among others. In your personal experience what is the easiest way to get started on this path?Feedback: Questioning Rust — [...] The primary issue here is that most of the work to prove that safety (beyond "trust me" blocks) is pushed onto the developer instead of having the compiler insert protections surmised from uses of the data structures outlined in the source code. After all, it can only prove what it is shown, not what it assumes.Feedback on Mike and Macros — I'd also love to hear more about what you dislike about macros. Personally, I view Rust's macro system as one of its biggest selling points. I've written more than a few macros myself and, every time, they've simplified my code in ways I couldn't have managed without them. Perhaps more importantly, I've also noticed that many of my favorite crates make heavy use of macros—and doing so lets them expose a much more ergonomic API.The Imposter's Handbook by Rob Conery — 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.
npm Bans Terminal Ads — After last week a popular JavaScript library started showing full-blown ads in the npm command-line interface, npm, Inc., the company that runs the npm tool and website, has taken a stance and plans to ban such behavior in the future.
Apple wants to remove scripting languages from macOS — Scripting language runtimes such as Python, Ruby, and Perl are included in macOS for compatibility with legacy software. In future versions of macOS, scripting language runtimes won’t be available by default, and may require you to install an additional package. If your software depends on scripting languages, it’s recommended that you bundle the runtime within the appBuilding Standalone Python Applications with PyOxidizer — Python hasn't ever had a consistent story for how I give my code to someone else, especially if that someone else isn't a developer and just wants to use my application. Traveling Ruby: self-contained, portable Ruby binaries — Traveling Ruby lets you create self-contained Ruby app packages for Windows, Linux and OS X.ruby-packer — Packing your Ruby application into a single executable.
fogus: Notes on Interactive Computing Environments — Your programming environments should be an active partner in the act of creating systems.
Tim Ewald - Clojure: Programming with Hand Tools — For most of human history, furniture was built by hand using a small set of simple tools. This approach connects you in a profoundly direct way to the work, your effort to the result. This changed with the rise of machine tools, which made production more efficient but also altered what's made and how we think about making it in in a profound way. This talk explores the effects of automation on our work, which is as relevant to software as it is to furniture, especially now that once again, with Clojure, we are building things using a small set of simple tools.Things You Didn't Know About GNU Readline — GNU Readline is an unassuming little software library that I relied on for years without realizing that it was there. Tens of thousands of people probably use it every day without thinking about it. If you use the Bash shell, every time you auto-complete a filename, or move the cursor around within a single line of input text, or search through the history of your previous commands, you are using GNU Readline. bpython — A fancy curses interface to the Python interactive interpreterpry — Pry is a runtime developer console and IRB alternative with powerful introspection capabilities. Pry aims to be more than an IRB replacement. It is an attempt to bring REPL driven programming to the Ruby language.
Ammonite — Ammonite lets you use the Scala language for scripting purposes: in the REPL, as scripts, as a library to use in existing projects, or as a standalone systems shell.
rebel-readline — A terminal readline library for Clojure Dialects
litecli — A command-line client for SQLite databases that has auto-completion and syntax highlighting.

Aug 27, 2019 • 54min
372: Crystal Clear
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.Links:Feedback: Academia and Industry — 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.
Feedback: Absurd Abstractions — 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.
Feedback: Breaking Changes — 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?Ruby on Rails 6.0 Release Notes — Make Webpacker the default JavaScript compiler for Rails 6Intel and Rust: the Future of Systems Programming: Josh Triplett — Hear about how Intel is working to bring Rust to full parity with C, building the future of systems programming.Altruism Still Fuels the Web. Businesses Love to Exploit It | WIRED — 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.The Crystal Programming Language — 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.
The Imposter's Handbook by Rob Conery — 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.

Aug 20, 2019 • 39min
371: Absurd Abstractions
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.Links:Feedback: Clojure, Racket, and Extempore — 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”.Knuth's Sensitivity Conjecture One-PagerLaw Of Leaky Abstractions — All non-trivial abstractions, to some degree, are leaky.The Law of Leaky Abstractions – Joel on Software — 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.Forget about Leaky Abstractions — 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.All Abstractions Are Failed Abstractions — 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.Appropriate Levels of Abstraction — 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.
Choosing The Proper Level of Abstraction — 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.
The Crystal Programming Language — 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.
affect: Algebraic effects for Ruby — 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.
Algebraic Effects for the Rest of Us — 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.MinIO — The 100% Open Source, Enterprise-Grade, Amazon S3 Compatible Object Storage

Aug 13, 2019 • 44min
370: F'ing #
Things get heated when it’s time for Wes to check-in on Mike’s functional favorite, F#, and share his journey exploring modern .NET on Linux.
Plus your feedback, combining ruby and rust, and the latest scandal with JEDI.Links:Emacs Feedback from DJ — Another point for the show is a soft intro to functional programming. Wes mentioned Emacs because of the packages supporting Clojure development when he started with that. Elisp seems to be fairly intuitive and well documented, as a little functional language its own right (correct me if I'm wrong)--this makes for a soft intro to FP. Most of my coding has been in the space of embedded systems and low-level languages--not much functional programming to be had. This show has gotten me curious about FP, which is quite old in concept, and getting implemented nicely in modern languages. For me, I still rely heavily on special Vim keys that are not mapped in evil-mode, which causes some paper cuts. However, elisp makes it easy to customize the desired UI functionality with very short programs/elisp statements in a config file. It's quite a refreshing exercise for someone like me.
artichoke/artichoke: Artichoke is a Ruby made with Rust — Artichoke is a platform for building MRI-compatible Ruby implementations. Artichoke provides a Ruby runtime implemented in Rust that can be loaded into many VM backends.
AP Sources: Boeing changing Max software to use 2 computers — Boeing is working on new software for the 737 Max that will use a second flight control computer to make the system more reliable, solving a problem that surfaced in June with the grounded jet, two people briefed on the matter said Friday.
In Pentagon Contract Fight, Amazon Has Foes in High Places - The New York Times — Experts thought the contract for the Joint Enterprise Defense Infrastructure, known by the cinematic acronym JEDI, would go to Amazon Web Services, the dominant player in the field of cloud computing. They did not count on two developments: an extraordinarily aggressive public relations and lobbying campaign by Oracle, one of Amazon’s competitors, and the hostility of Mr. Trump to Amazon and its founder, Jeff Bezos.
The Early History of F# (pdf)Use F# on Linux | The F# Software FoundationIonide - Crossplatform F# Editor Tools — A Visual Studio Code package suite for cross platform F# development.
The Problem With F# Evangelism — There seems to be a constant struggle to convince seasoned C# developers to give F# a try. Which is a pity because language and concepts deserve better.
TopShell — Purely functional, reactive scripting language.

Aug 6, 2019 • 49min
369: Old Man Embraces Cloud
Chris finally gets excited about Docker just as Wes tells him it’s time to learn something new.
Plus the state of browser extension development, the value of non-technical advice, and your feedback.Links:Feedback: good mic for voice recording? — I'm looking for a good mic for voice recording since I will be a guest on a podcast soon. Since you sound good in your shows, can you share what mics you are using?
Amazon.com: Audio-Technica ATR2500-USB Cardioid Condenser USB Microphone: Musical Instruments — Side-address condenser microphone with USB output for easy connection to your computer.Google and Mozilla are failing to support browser extension developers · Armin Sebastian — We are witnessing the failure of browser vendors to recognize the value of our labor and the important role it plays in a healthy browser ecosystem.
Half of all Google Chrome extensions have fewer than 16 installs — All in all, about 50% of all Chrome extensions have fewer than 16 installs, meaning that half of the Chrome extension ecosystem is actually more of a ghost town, according to a recent scan of the entire Chrome Web Store conducted by Extension Monitor.All the best engineering advice I stole from non-technical people — As I focus on becoming a better manager of engineers, I have been reflecting more and more on the advice that produced a 10X boost in my abilities at that same stage. More often than not the best advice, the things that stuck with me, came from people who had no background at all in software.
Overview of Docker Compose | Docker Documentation — Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration.
Podman — What is Podman? Podman is a daemonless container engine for developing, managing, and running OCI Containers on your Linux System. Containers can either be run as root or in rootless mode. Simply put: `alias docker=podman`.Buildah — A tool that facilitates building OCI container images.
skopeo — skopeo is a command line utility that performs various operations on container images and image repositories.
From 30 to 230 docker containers per host — I could not find much information on the interwebs how many containers you can run per host. So here are mine and the issues we ran into along the way.

Jul 30, 2019 • 44min
368: Clojure Clash
Mike and Wes debate the merits and aesthetics of Clojure in this week's rowdy language check-in.
Plus why everyone's talking about the sensitivity conjecture, speedy TLS with rust, and more!Links:Feedback: Which Language To Use And Why? — There are so many languages out there, and I just don’t understand when or why you would want to use a language over another.Mathematician Solves Computer Science Conjecture in Two Pages | Quanta Magazine — This “sensitivity” conjecture has stumped many of the most prominent computer scientists over the years, yet the new proof is so simple that one researcher summed it up in a single tweet.ELI5: The Sensitivity Conjecture has been solved. What is it about? — Think of it like a Buzzfeed quiz. You answer a bunch of multiple-choice input questions about seemingly random topics ('What's your favourite breakfast cereal?', 'What's your favourite classic movie?', 'What did you want to be when you grew up?', and so on), and you get a response back at the end: usually which Hogwarts house you belong in.Sensitivity Conjecture resolved — Paul Erdös famously spoke of a book, maintained by God, in which was written the simplest, most beautiful proof of each theorem. The highest compliment Erdös could give a proof was that it “came straight from the book.” In this case, I find it hard to imagine that even God knows how to prove the Sensitivity Conjecture in any simpler way than this.arXiv: Induced subgraphs of hypercubes and a proof of the Sensitivity ConjectureGitHub starts blocking developers in countries facing US trade sanctions — There's a debate over free speech taking place after Microsoft-owned GitHub "restricted" the account of a developer based in the Crimea region of Ukraine, who used the service to host his website and gaming software.
GitHub blocked my account and they think I’m developing nuclear weapons1995parham/github-do-not-ban-us: Github do not ban us from open source world — GitHub restricted our access to private repositories suddenly, but at the very least we wanted GitHub to warn us before limiting our access.
A Rust-based TLS library outperformed OpenSSL in almost every category | ZDNet — The findings are the result of a recent four-part series of benchmarks carried out by Joseph Birr-Pixton, the developer behind the Rustls library.TLS performance: rustls versus OpenSSL — A TLS library will represent separate sessions in memory while they are in use. How much memory these sessions use will dictate how many sessions can be concurrently terminated on a given server.
Nat Friedman on Twitter — Users with restricted private repos can also choose to make them public. Our understanding of the law does not give us the option to give anyone advance notice of restrictions.