

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

May 14, 2019 • 48min
357: 3 OSes 1 GPU
Microsoft catches Mike’s eye with WSL 2, Google gets everyone's attention with their new push for Kotlin, and we get a full eGPU report.Links:QA Feedback from Lewis — I thought I was going to be in a big rush to get out of the basement and up to a developer position, but after listening to the show I really feel like my contribution to this team is going to be important and necessary from the get go.Request: Subreddit recommendations — Anyone know any linux and/or programming subs aren't full of mindless circlejerking? Most seem to be afflicted with mindless circlejerking, free software extremism and other indiscretions.Feedback on Tools for Docs — One idea is a mind map tool (like Freeplane). This can provide a free-form way to show at a high level how all the parts link together, and attach as much details as needed Kotlin is now Google’s preferred language for Android app development — “Android development will become increasingly Kotlin-first,” Google writes in today’s announcement. “Many new Jetpack APIs and features will be offered first in Kotlin. If you’re starting a new project, you should write it in Kotlin; code written in Kotlin often mean much less code for you–less code to type, test, and maintain.”Flutter and Chrome OS: Better Together — Flutter initially focused on providing a UI toolkit for building apps for mobile devices, which typically feature touch input and small screens. However, we’ve been building keyboard and mouse support into Flutter since before our 1.0 release last December. And today, we’re pleased to announce that Flutter for Chrome OS is now stronger with scroll wheel support, hover management, and better keyboard event support.How Windows and Chrome quietly made 2019 the year of Linux on the desktop — The cleverly named Windows Subsystem for Linux 2, announced at Microsoft’s Build event this week, shakes things up by shipping a full Linux kernel (version 4.19) within Windows itself as a lightweight virtual machine. Doing so should supercharge performance for developers who use the tool.Ubuntu 19.04 – Easy-to-use setup script for your EGPU — I have created a script which automatically detects your (E)GPUs and creates the needed X-Server configuration files.
You won't have to mess around with finding the correct BUS-IDs and convert them from dec to hex or anything like that, the script takes care of it.Linux Action News 105 — RHEL 8 is released, we report from the ground of the big announcement, Microsoft announces WSL 2 with a real Linux kernel at the core, and details on their new open source terminal.

May 8, 2019 • 35min
356: Fear, Uncertainty, and .NET
.NET 5 has been announced and brings a new unified future to the platform. We dig in to Microsoft's plans and speculate about what they might mean for F#.
Plus the value of manual testing, Visual Studio Code Remote, and Conway's Game of Life in Rust.Links:Feedback: Testing as a CareerFeedback: Keeping up with Documentationruby/rdoc — RDoc produces HTML and command-line documentation for Ruby projects.Javadoc — Javadoc is a documentation generator created by Sun Microsystems for the Java language for generating API documentation in HTML format from Java source code. Literate programming — Literate programming is a programming paradigm introduced by Donald Knuth in which a program is given as an explanation of the program logic in a natural language, such as English, interspersed with snippets of macros and traditional source code, from which a compilable source code can be generated.Literate Programming — Writing a literate program is a lot more work than writing a normal program. After all, who ever documents their programs in the first place!? Moreover, who documents them in a pedagogical style that is easy to understand? And finally, who ever provides commentary on the theory and design issues behind the code as they write the documentation?A tutorial that implements Conway's Game of Life in Rust and WebAssembly. — This tutorial is for anyone who already has basic Rust and JavaScript experience, and wants to learn how to use Rust, WebAssembly, and JavaScript together.
JupiterBroadcasting/Talks — Public repository of crew talks, slides, and additional resources.
Visual Studio Code Remote Development — Visual Studio Code Remote Development allows you to use a container, remote machine, or the Windows Subsystem for Linux (WSL) as a full-featured development environment. Remote Development - Visual Studio MarketplaceIntroducing .NET 5 — There will be just one .NET going forward, and you will be able to use it to target Windows, Linux, macOS, iOS, Android, tvOS, watchOS and WebAssembly and more.The Friday Stream — Our crew from all over the world share stories, make new friends, and give each other a hard time live.

May 2, 2019 • 1h 1min
355: F# Shill
Mike and Wes dive into Bosque, Microsoft’s new research language, and debate if it represents the future of programming languages, or if we should all just be using F#.
Plus some Qt license clarity, a handy new Rust feature, and your feedback.Links:Feedback: ChromeOS vs WindowsFeedback: Hardware CoverageComplying with the Requirements of the GPL/LGPL v3 License — With the discontinuation of our continued support for Qt 5.6 also ends our support for the last Qt version licensed under LGPL v2.1. Moving forward, versions 5.7 and beyond will be subject to LGPL v3. This webinar is a great opportunity to gain a better understanding of the differences in rights and obligations between the two licensing versions.Rust Pinning — The Rust team is happy to announce a new version of Rust, 1.33.0. Rust is a programming language that is empowering everyone to build reliable and efficient software.Regularized Programming with the BOSQUE Language — We believe that, just as structured programming did years ago, this regularized programming model will lead to massively improved developer productivity, increased software quality, and enable a second golden age of developments in compilers and developer tooling.All That You Need to Know About Microsoft's New Programming Language: Bosque — The Bosque programming language is a Microsoft Research project that is investigating language designs for writing code that is simple, obvious, and easy to reason about for both humans and machines
Bosque Language OverviewMicrosoft debuts Bosque – a new programming language with no loops, inspired by TypeScriptThe Mad Botter INC on Twitter — Happy #EarthDay! We are awarding a free @system76 #DarterPro to the middle or high school student that can send our CEO @dominucco an innovative idea to fight climate change using #Linux. To submit please write up a report and diagram & email it to michael@themadbotter.com.git-secrets — Prevents you from committing secrets and credentials into git repositories.git-hound — Hound is a Git plugin that helps prevent sensitive data from being committed into a repository by sniffing potential commits against PCRE regular expressions.
truffleHog — Searches through git repositories for secrets, digging deep into commit history and branches. This is effective at finding secrets accidentally committed.

Apr 25, 2019 • 46min
354: A Life of Learning
We celebrate the life of Erlang author Dr Joe Armstrong by remembering his many contributions to computer science and unique approach to lifelong learning.
Plus some code to read, your feedback, and more!Links:Elastic Beanstalk Retirement — Feedback from SekharProfessional development — Question from AshetynFrancesco Cesarini on Twitter — It is with great sadness that I share news of Joe Armstrong's passing away earlier today. Whilst he may no longer be with us, his work has laid the foundation which will be used by generations to come. RIP @joeerl, thank you for inspiring us all.Goodbye Joe — One of the amazing things Joe mentioned in his texts that was out of the ordinary compared to everything I had read before is that developers would make mistakes and we could not prevent them all. Instead, we had to be able to cope with them. He did not just tell you about a language, he launched you on a trail that taught you how to write entire systemsGoodbye Joe in r/programming — About two weeks ago I came across Armstrong's blog for the first time and poked around at a few posts. I noticed he had recently (in the past year was my impression) discovered TiddlyWiki and rewritten his blog in it. His post talking about his eureka moment with TiddlyWiki had the feel of a very young, excited writer, so I was very surprised to later discover his age. I didn't know about him for very long, but the character described in this post really shined through.Joe the office mate — Joe would get wildly excited by one "big idea" for weeks at a time. This could be a new idea of his own or a "well known" idea of somebody else's: the Rsync algorithm; public key cryptography; diff algorithms; parsing algorithms; etc. He would take an idea off the shelf, think (and talk!) about it very intensely for a while, and then put it back for a while and dive into the next topic that felt ripe.Why OO Sucks — Note that this is an older post.Erlang/OTP 21.3 — Welcome to Erlang/OTP, a complete development environment for concurrent programming.One secret to becoming a great software engineer: read code — Similarly, seeing diverse coding practices lets you expand your palette when it comes time to write your own code. Reading others’ code exposes you to new language functionality and different coding styles.
djblue/tetris — An almost complete tetris in clojurescriptAnimated guide to building tetris with ClojurescriptThe Mad Botter INC on Twitter — Happy #EarthDay! We are awarding a free @system76 #DarterPro to the middle or high school student that can send our CEO @dominucco an innovative idea to@fight climate change using #Linux. To submit please write up a report and diagram & email it to michael@themadbotter.com

Apr 17, 2019 • 50min
353: A Week with WSL
Mike's back with thoughts on his recent adventures with the Windows Subsystem for Linux and what it might mean for the future of Linux development.
Plus the hurdles of working with an eGPU, why you should learn languages you might not use, and a neat pick for playing with HTTP.Links:Mike's eGPU GoodnessMoving on from Rails and what’s next — A lot has happened during that time. I created Diesel, an ORM for Rust. In April of last year, I began managing the operations of crates.io, which eventually led to the creation of the crates.io team which I co-lead. I also started to find myself less able to effectively contribute to Rails. It became clear that I have a different vision for the future, and that I would never make it onto the core team.Learn more programming languages, even if you won't use them — By learning a new language, even if it stays in your toolbox for all eternity, you gain a new perspective and a different way of thinking about problems.WLinux's New Name — Hayden Barnes, of Whitewater Foundry, told El Reg that WLinux was only ever supposed to be a codename, and the new name "reflects our distribution's connection to both Linux and Windows". He added "it is close to the Japanese pronunciation and transliteration of penguin, which is pengin." Japan remains the company's top market.Pengwin by Whitewater Foundry — Pengwin is the easiest to use Linux distribution on
Windows Subsystem for Linux.HTTP Prompt - An Interactive Command Line HTTP Client — HTTP Prompt (or HTTP-prompt) is an interactive command-line HTTP client built on HTTPie and prompt_toolkit, featuring autocomplete and syntax highlighting.Linux Academy Limited Time Sale!LINUX Unplugged Episode 296: Defining Desktop Linux — The way we’ve been thinking about Desktop Linux is all wrong. We start by defining Desktop Linux, and where it might be going in the future.

Apr 9, 2019 • 50min
352: Self Driving Disaster
Mike’s away so Chris joins Wes to discuss running your workstation from RAM, the disappointing realities of self driving cars, and handling the ups and downs of critical feedback.Links:America’s Cities Are Running on Software From the ’80s — Even San Francisco’s tech chops can’t save it from relying on computers that belong in a museum.Intel Optane Persistent Memory starts at $850 for 128GB — The pitch is simple, in case a mission-critical system fails, whatever data was in the memory isn’t lost; and for memory intensive applications, it offers shockingly high capacity at low prices.How to Emulate Persistent Memory Using Dynamic Random-access Memory — If you’re a software developer who wants to get started early developing software or modifying an application to have persistent memory (PMEM) awareness, you can use emulation for development before Intel Optane DC PMMs are widely available.DAX: Direct Access for files — For block devices that are memory-like, the page cache pages would be unnecessary copies of the original storage. The DAX code removes the extra copy by performing reads and writes directly to the storage device. For file mappings, the storage device is mapped directly into userspace.Persistent Memory Wiki — These pages contain instructions, links and other information related to persistent memory in Linux.
The kernel’s command-line parameters — The Linux Kernel documentation — See memmap=nn[KMG]!ss[KMG] section.Using Persistent Memory Devices with the Linux Device MapperAI “adversarial attacks” can trick self-driving cars, medicine, and the military — In a recent report, Tencent’s Keen Security Lab showed how they were able to bamboozle a Tesla Model S into switching lanes so that it drives directly into oncoming traffic. Linux Mint's Sobering Update: A Rare Glimpse Into The Personal Struggles Developers Face — Reading the latest Monthly News update from Linux Mint leader Clement Lefebvre is a sobering experience. While users do get updated on the status of Linux Mint 19.2, a considerable portion of the update deals with feelings of defeat, uncertainty and frustration.

Apr 2, 2019 • 38min
351: Riding the Rails
Mike explores the state of Xamarin.Android development on Linux, and we talk frameworks versus libraries and what Rails got right.
Plus adventures with rust on MacOS, your feedback, and more!Links:Feedback from Eric — I like Python as well but since I spend most of my day in .Net Framework/Core I tend to prefer dotnet-script.dotnet-script — Run C# scripts from the .NET CLI.Feedback from Tom — I haven't tried Rust yet, but it seems to have a lof of momentum. Maybe there are issues with it, but I'm not going to take advice from someone who "really doesn't care" that Rust produces safer and more secure code.Mike's fork of stl-thumb — Stl-thumb is a fast lightweight thumbnail generator for STL files.Why I miss Rails — In the transition to the modern web stack we’ve unsolved some of what tools like Rails made easy 10 years ago. I don’t think it needs to be that way.Luminus — Luminus is a Clojure micro-framework based on a set of lightweight libraries. It aims to provide a robust, scalable, and easy to use platform. With Luminus you can focus on developing your app the way you want without any distractions.Phoenix — A productive web framework that
does not compromise speed or maintainability. Phoenix leverages the Erlang VM ability to handle millions of connections alongside Elixir's beautiful syntax and productive tooling for building fault-tolerant systems.Phoenix LiveView: Interactive, Real-Time Apps. No Need to Write JavaScript. — LiveView powered applications are stateful on the server with bidrectional communication via WebSockets, offering a vastly simplified programming model compared to JavaScript alternatives.How to develop Xamarin.Android applications on Linux with Rider – JetBrains Rider Support — Please note that Xamarin.Android on Linux is officially unsupported. However, it is possible to manually install Xamarin.Android and configure Rider so that it can build and run Xamarin.Android apps on Linux.Can not create Xamarin Application in Rider (Linux platform) – JetBrains Rider SupportCareers – Linux Academy

Mar 27, 2019 • 42min
350: Rusty Stadia
We debate Rust’s role as a replacement for C, and share our take on the future of gaming with Google's Stadia.
Plus Objective-C's return to grace, Mike’s big bet on .NET, and more!Links:The RedMonk Programming Language Rankings: January 2019 — The idea is not to offer a statistically valid representation of current usage, but rather to correlate language discussion and usage in an effort to extract insights into potential future adoption trends.
Hello .Net Foundation - dominickm.com — I am pleased to share that I have joined the .Net Foundation.
Avalonia: A multi-platform .NET UI framework — Avalonia is a WPF-inspired cross-platform XAML-based UI framework providing a flexible styling system and supporting a wide range of OSs: Windows (.NET Framework, .NET Core), Linux (GTK), MacOS, Android and iOS.
Google’s Stadia looks like an early beta of the future of gaming — “The future of gaming is not a box,” according to Google. “It’s a place.” Just like how humans have built stadiums for sports over hundreds of years, Google believes it’s building a virtual stadium, aptly dubbed Stadia, for the future of games to be played anywhere. Stadia — Push the envelope of game development with Stadia.Rust is not a good C replacement | Drew DeVault’s Blog — The kitchen sink approach doesn’t work. Rust will eventually fail to the “jack of all trades, master of none” problem that C++ has. Wise languages designers start small and stay small. Wise systems programmers extend this philosophy to designing entire systems, and Rust is probably not going to be invited. I understand that many people, particularly those already enamored with Rust, won’t agree with much of this article. But now you know why we are still writing C, and hopefully you’ll stop bloody bothering us about it.Introduction to Python Development at Linux Academy — This course is designed to teach you how to program using Python. We'll cover the building blocks of the language, programming design fundamentals, how to use the standard library, third-party packages, and how to create Python projects. In the end, you should have a grasp of how to program.Marc-Etienne M.Léveillé on Twitter — Here's something interesting: the backdoor in ASUS Update Setup.exe is _again_ located in the CRT, just like the CCleaner case and recent games with a backdoor. This time in _crtExitProcess.

Mar 19, 2019 • 45min
349: Their Rules, Your Choice
We join the fight between Apple and Spotify, and debate the meaning of 'fair play' in the App Store and the browser wars.
Plus some thoughts on the lessons learned from the 737 MAX, an Elastic Beanstalk PSA, and more!Links:Microsoft proves the critics right: We’re heading toward a Chrome-only Web | Ars Technica — Last week, Microsoft made a major update to the Web version of its Skype client, bringing HD video calling, call recording, and other features already found on the other clients. And as if to prove a point, the update works only in Edge and Chrome. Firefox, Safari, and even Opera are locked out.The 737Max and Why Software Engineers Might Want to Pay Attention — What is different here is: the MCAS commands the trim in this condition without notifying the pilots AND to override the input, the pilots must deactivate the system via a switch on a console, NOT by retrimming the aircraft via the yoke, which is a more common way to manage the airplane’s trim.How a 50-year-old design came back to haunt Boeing with its troubled 737 Max jet - Los Angeles Times — The crisis comes after 50 years of remarkable success in making the 737 a profitable workhorse. Today, the aerospace giant has a massive backlog of more than 4,700 orders for the jetliner and its sales account for nearly a third of Boeing’s profit. But the decision to continue modernizing the jet, rather than starting at some point with a clean design, resulted in engineering challenges that created unforeseen risks.Trevor Sumner on Twitter: — Some people are calling the 737MAX tragedies a #software failure. Here's my response: It's not a software problem. Timeline - Time to Play Fair — Apple’s behavior isn’t new. In fact, there are countless times over the years that demonstrate that they don’t play fair. Addressing Spotify’s Claims - Apple — At its core, the App Store is a safe, secure platform where users can have faith in the apps they discover and the transactions they make. And developers, from first-time engineers to larger companies, can rest assured that everyone is playing by the same set of rules.Introduction to Python Development at Linux Academy — This course is designed to teach you how to program using Python. We'll cover the building blocks of the language, programming design fundamentals, how to use the standard library, third-party packages, and how to create Python projects. In the end, you should have a grasp of how to program.AWS Elastic Beanstalk Platform Support Policy — Elastic Beanstalk is retiring these platform versions containing Nginx 1.12 or earlier, which are marked end of life by its supplier. We recommend that you migrate your environments to the latest supported platform version as soon as possible. Here is a complete list of your environments in the us-west-2 Region running on platform versions with a retirement date of March 01, 2020.TechSNAP Episode 399: Ethics in AI — Machine learning promises to change many industries, but with these changes come dangerous new risks. Join Jim and Wes as they explore some of the surprising ways bias can creep in and the serious consequences of ignoring these problems.User Error Episode 61: Faith in Microsoft — Maybe it's finally time to cut Microsoft some slack, the pace of technological change, and what a couple of common terms actually mean.

Mar 12, 2019 • 40min
348: Dependency Dangers
Mike has salvaged a success story from the dumpster fire of the Google+ shutdown, and Wes shares his grief about brittle and repetitive unit tests.
Plus Mike reviews the System76 Darter Pro, our tool of the week, and some fantastic audience feedback.Links:TechSNAP Episode 388: The One About eBPF — eBPF is a technology that you’re going to be hearing more and more about. It powers low-overhead custom analysis tools, handles network security in a containerized world, and powers tools you use every day.
Feedback from Tom — I don't think people need to worry about Google's/Chrome's dominance the way we did about IE6. It's not just that Chrome is cross-platform and open-source, and (with Chrome Web Apps well behind us) sticks to the standards in a way that IE did not. Practically speaking, we must keep in mind that the browser is locked down on iOS in a way that didn't exist (and wouldn't have been tolerated) back then. This means that no matter how popular Chrome becomes, an importnat portion of mobile users must use Apple's browser (engine). But also, now matter how much effort, money Google puts into their web initiatives and in spite of their browser share dominance, they can lose big as they did with web components and webasm. That's the beauty of a standards based platform.How to publish iOS apps to the App Store with GitLab and fastlane — See how GitLab, together with fastlane, can build, sign, and publish apps for iOS to the App Store.Inside Clojure: Journal 2019.10 — Some tests I wrote were posted on Reddit this week, which was unexpected. The one thing in there that I think is worth thinking about is how to write tests that validate returns while also being open to accretion.
QuickCheck: Automatic testing of Haskell programs — QuickCheck is a library for random testing of program properties. The programmer provides a specification of the program, in the form of properties which functions should satisfy, and QuickCheck then tests that the properties hold in a large number of randomly generated cases.Darter Pro Review - dominickm.com — My continuing adventures in Linux hardware and working on Linux as a software developer has lead me to check out the System 76 Darter Pro.Google+ API Shutdown — Legacy Google+ APIs have been shut down as of March 7, 2019.omniauth-google-oauth2: Oauth2 strategy for Google — A ruby gem for Oauth2 with Google.Mention removal of Google+ API usage in CHANGELOG by stanhu · Pull Request #350 · zquestz/omniauth-google-oauth2code-server: Run VS Code on a remote server. — Code on your Chromebook, tablet, and laptop with a consistent dev environment, take advantage of large cloud servers to speed up tests, compilations, downloads, and
preserve battery life when you're on the go.