A weekly talk show taking a pragmatic look at the art and business of Software Development and related technologies.
A weekly talk show taking a pragmatic look at the art and business of Software Development and related technologies.
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.
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.
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!
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.
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.
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.
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 with
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.
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.
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.
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.
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
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.
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.
Customer ReviewsSee All
Killed off your best show....
Jupiter Broadcasting killed off its best show. Not sure what to listen to, but the other content doesn’t interest me as much as this show did.
Beyond the Code
Great show for anyone with even a mild interest in software development or information technology.
This podcast is very much about the culture of software development, so whether you’re trying to break into the software development scene or are just curious about the world of programmers, this podcast is a great listen.
Most importantly, the hosts are hilarious and they have the best memes. Keep on rocking guys.
Inexplicable hatred for the GPL
I get it. It's not for everyone. But I don't need to listen to an hour long rant about it. Cutting each other off, arguing in an unfriendly way... yikes.