Cover image of Illegal Argument

Illegal Argument

Greg, Mark and Richard get together weekly and talk about things of interest in the Java community. Greg works for SimWorks (http://www.simworks.com) who specialize in mobile phone software. Mark works for SecureMX (www.smx.co.nz). Richard works for Blue Train Software (http://www.bluetrainsoftware.com)

Weekly hand curated podcast episodes for learning

Popular episodes

All episodes

Warning: This podcast data isn't working.

This means that the episode rankings aren't working properly. Please revisit us at a later time to get the best episodes of this podcast!

Podcast cover

171: Breaking (up) The Build

In an unprecedented show of activity - merely two weeks after the new years first episode (170) Mark and Greg are back, this time joined by Andres Almiray (Oracle) and Stephen Connolly (Cloudbees) to discuss all things build, modules, this weeks Java 16 release, and why Java programmers should take a look at the rust programming language. Hosts Mark Derricutt - @talios Greg Amer Guests Andres Almiray - @aalmiray Stephen Connolly - @connollys Table of Contents 00:00:15 Intro 00:00:37 Guest Introductions 00:02:05 Java 16 Released! 00:02:47 Jenkins and JDK Versions 00:04:38 var changes = LIPSERVICE; 00:05:11 Improve your Java by learning Rust 00:07:31 Hey Bruno - It's NOT YAML! 00:10:22 Project Liliput 00:11:31 Java Turning 26 00:13:30 Java for CLIs? 00:16:47 Modules: Thought on The Java Platform Module System 00:18:12 Modules: Modules and Versioning 00:19:15 Modules: Semantic Versioning 00:22:19 Build: Hijacking The Maven Release Process 00:26:40 Explicit Merge Commits 00:29:16 Build: JDK Dependency (Lacking) In Maven 00:31:21 Kotlin Standard Library Versions 00:31:53 Libraries should avoid Guava 00:35:36 Jackson Version 3 Changes 00:39:10 Modules: The Lack Of Runtime Versioning In Modules 00:39:46 Modules: Agents And Module Systems 00:40:39 Run The Damn Tests Twice 00:46:00 Modules: Module Systems and Debugging 00:55:02 The Ecosystem Is More Than Code 00:55:46 Build: The Hinderance of IDEs 00:56:47 Build: Mixins In Maven 01:02:18 Build: The Perfect POM is with a BOM 01:07:17 Build: Custom Lifecycles as Mixins 01:10:09 Build: Gradle is Surprises and Deathtraps 01:11:31 Build: Maven Consumer POM and POM 4.0.0 01:14:16 Build: Project Dependency Trees Proposal 01:23:28 Build: Maven 4 and 5 Releases 01:26:49 Build: Plugin Phases and Execution Order 01:33:05 Build: Interim Hacks and Abstractions Considered Harmful 01:39:33 The Problem with Preview Features News Oracle Announces Java 16 Project Lilliput - OpenJDK proposal to reduce the Java object header by half or more would lower memory and CPU usage on all Java workloads. Pull Requests merging instanceof Pattern matching https://github.com/openjdk/jdk/pull/2544 https://github.com/openjdk/jdk/pull/2879 https://github.com/openjdk/jdk/pull/2913 JEP 401: Primitive Objects (Preview)and many other new JEPs landed for JDK 17. Caffeine cache goes 3.0 and with it - JDK11 baseline Links Semantic Versioning git-timestamp-maven-plugin Git Log's --first-parent Option The rise of Kotlin's stdlib and the versioning conflicts that may arise guava-beta-checkerfor Error Prone Jackson Release 3 Plans Build Health PomChecker 1.1.0 has been released! Problems with sorting, tidying poms Build / life cycle order Maven Bill of Materials Maven Tiles / Mixins Crafting better Gradle builds with the Kordamp Gradle Plugin suite with Andres Almiray (YouTube Video) Proposal: Project Dependency Trees schema Plugin Execution & Property Ordering Tests Module Systems Java Platform Module System / Jigsaw Layrry- Including an excellent video demonstration of Layrry in action with JavaFX. OSGi Runtime Dependencies (build is only half the picture)

1hr 45mins

19 Mar 2021

Rank #1

Podcast cover

170: The UI is Broken!

Illegal Argument Episode 170 Mark and Greg emerge from their 2020/2021 Christmas/New Year breaks, and temporary Level 3 lock down to break their silence, attempt to remember how to podcast, and further the rumor that we only record an episode on the eve of a new Java release. Table of Contents 0:44 Holiday Periods 1:27 Java 16 Release 2:35 Standalone Nashorn 3:18 Native Script 6:28 R.I.P. Chrome 12:51 Module Systems 14:37 setProtected(true) 20:42 Java 16 Release (again) 25:00 Incubation vs Preview Features 37:56 Pattern Matching FTW 43:30 Equality 44:57 Inline Types and Classes 50:34 The Need For Namespaces 55:10 Bintray Closing Down 59:27 R.I.P. netbeans.org 1:07:08 SOA in C/C++ 1:14:18 Python and Rust Crypto 1:16:11 Autotools 1:18:34 Rust backend for GCC Java Related Why Namespacing Matters in Public Open Source Repositories Major Changes to Clojars - Verified Groups / Namespaces Java 16 - March 16 Release A Discussion on jpackage OpenJDK · GitHub JEP 11: Incubator Modules JEP 338: Vector API (Incubator) Miscellaneous Is Google Locking Down Chrome to Resist the Rise of Chromium Based Browsers? - It's FOSS News Apple Card disabled my iCloud, App Store, and Apple ID accounts Modules, Releases, and Builds Java Accessible Objects and Reflection Understanding Java Modules Into the Sunset on May 1st: Bintray, JCenter, GoCenter, and ChartCenter RIP netbeans.org Modules, monoliths, and microservices New dependency on Rust causes headaches for Python Crypto lib and distributions CPP Not the SOA you think

1hr 21mins

7 Mar 2021

Rank #2

Similar Podcasts

Podcast cover

Don't Tweet Non Truths

OpenJDK · GitHub Plans for optimal performance: why CircleCI is changing our pricing model - CircleCI Standalone Nashorn is coming for Java 15+ Jbang Property-based Testing in Java: Jqwik - a JUnit 5 Test Engine - My Not So Private Tech Life ABNF for TLDS tldlabel = ALPHA *61(ldh) ld ldh = ld / "-" ld = ALPHA / DIGIT ALPHA = %x41-5A / %x61-7A ; A-Z / a-z DIGIT = %x30-39 ; 0-9 HUMBLE BOOK BUNDLE: JAVA PROGRAMMING & MORE BY O'REILLY GitHub - baidu/braft: An industrial-grade C++ implementation of RAFT consensus algorithm based on brpc, widely used inside Baidu to build highly-available distributed systems. Leaving OCaml The Birth of Unix with Brian Kernighan - CoRecursive Podcast Rust Programming Rust: Structuring and handling errors in 2020 - nick.groenen.me rust-blog/too-many-brainfuck-compilers.md at master · pretzelhammer/rust-blog · GitHub Using #[derive(Error)] Announcing .NET 5.0 | .NET Blog F# 5 | Visual Studio Toolbox | Channel 9 Nix Package Management Nixology - YouTube A tour of Nix Install Nix on macOS Catalina](https://link.medium.com/EAuytTg7s7) Modern IDEs are magic. Why are so many coders still using Vim and Emacs? - Stack Overflow Blog

1hr 54mins

30 Nov 2020

Rank #3

Podcast cover

The Greg Cast

Welcome to The Greg Cast The Virtual World Podcast On The Metal Podcast JavaZone 2020 Ron Pressler: Scalable Harmonious Concurrency for the Java Platform Virtual Threads Async / Await Why Continuations are Coming to Java Java Platform Retention Graal Based Frameworks JavaZone: Building a Distribution Pipeline Lua: Splitting a String Oracle Developer Live Java has moved to Github Java 15 is here, Nashorn is not instanceof Pattern Matching System.Logger Why The C Language Will Never Stop You Making Mistakes Microsoft Control Flow Guard now in LLVM/Rust Microsoft Core C++ Checker gains Rust like checks Fuzz 2020 Report Wither Reason Why Jonny Won't Upgrade Full links and more available .

1hr 17mins

12 Sep 2020

Rank #4

Most Popular Podcasts

Podcast cover

The Joy of Java

After a lockdown/reopen period we're back with another argument. WARNING: The recording dropped out half way thru, and… creative edits were made. Your ears have been warned. Java 15 Ramp Down Second preview of Records Greg doesn't care for new JDKs whereas Mark wants to treat the JDK as "just a library/dependency" Microservices Reuse or no-reuse? Both Hellidon and Micronaut recently released 2.0 releases of their modern JVM web stacks HTTP Structured Headers Roy Fieldings Misappropriated REST Dissertation A toy JVM in AWK Perl 7 Annoucement A Tribute to Bill Shannon – A Giant of the Java Ecosystem Full links are available on https://raindrop.io/collection/12086308

1hr 5mins

2 Jul 2020

Rank #5

Podcast cover

Technical Writing

What’s this? Another Illegal Argument episode already? And so close to the last one - it seems the shift to working from home and remote recording has already showed a payoff. During the last episode, I’d had it in my mind to discuss the need to improve our documentation, and general communication skills that developers, and development teams often overlook. More so now that many organisations are moving into distributed, remote teams - many of which may never return to normal “office life”. With this in mind, I thought I’d make use of our new remote recording facilities and bring on both Tim McNamara (Vice-President of NZOSS, Canonical Guy, Author of Rust In Action) and Josh Addison (Technical Writer at MYOB, Game Developer, Conspiracy Podcaster) to lend their voices to our argument. On this episode we cover (or planned, as always - things got sidetracked): Java News JEP 384: Records (Second Preview) Why #Java record getters have no 'get' prefix? Call for Discussion: New Project: Leyden (static compilation for Java - the return of GCJ?) Technical Writing Why Writing Software Design Documents Matters Things Markdown got Wrong Writing Test Plans Architecture Design Records How to write better tickets/commit messages/emails etc. etc. Tooling? Asciidoc ProWritingAid, Grammarly Dropbox Paper Vale - cross platform command line style checker Question-led docs, e.g. cookbook type Doctests are better than you think Knowing your audience - differences between "documentation" and "book writing" Rust In Action WriteTheDocs Slack Full links to everything discussed and planned to discuss are found over on my raindrop bookmarks.

1hr 7mins

17 May 2020

Rank #6

Podcast cover

Illegal Argument - Episode 165

Welcome to the “Locked Down Dependencies” remote recorded using Squadcast.fm whilst both Greg and I are stuck in a national COVID-19 lockdown. Full links to topics discussed can be found in the shared bookmark folder on Raindrop, but during tonights episode we discuss: How lockdown is affecting us The Release of Java 14 Beyond Java 8 and the Java Module System - a discussion over two recent streams/videos from Nicolai Parlog on new features in Java 9-14, and issues with the module system. Maven Dependency Pop Quiz Managing Technical Debt at scale, and designing large scale systems. Improving communication among teams in a work-from-home/remote-work world. Guides to writing technical documentation, test plans, better emails and bug reports.

1hr 10mins

23 Apr 2020

Rank #7

Podcast cover

Episode 164 - Moments before Isolation

Welcome to the first episode of 2020 - recorded just before all of Coronavirus Mania and then promptly the editing and publishing got unfortunately thrown to the sidelines for a week. This week (ha) Greg and I discuss the upcoming Java 14 release, along with C++20, and the granddaddy of functional programming - Miranda. Multiline String literals with Java Text Blocks Preview APIs in the Java Platform Java 14 Arrives with a Host of New Features JDK 14: The new features in Java 14 Stephen Colebourne’s Tweet Thread on JDK Modules Miranda (forerunner to Haskell) open sourced C++20 IS FEATURE COMPLETE; HERE’S WHAT CHANGES ARE COMING Project LightSpeed: Rewriting the Messenger codebase for a faster, smaller, and simpler messaging app


16 Mar 2020

Rank #8

Podcast cover

163: The Continuation

Topics Fibre's are dead - long live "Virtual Threads" Undelimited continuations are not functions R2DBC 0.8.0 goes GA - Reactive database clients for Java RUST: Shipping a compiler every 6 weeks User reported stable regressions Bisecting Rust Compiler Regressions with cargo-bisect-rustc Microsoft: We're creating a new Rust-based programming language for secure coding https://www.reddit.com/r/rust/comments/e5040i/microsoft_creating_new_rustbased_safe_language/ https://www.reddit.com/r/rust/comments/e5kjyr/more_info_on_micrsoft_moving_away_from_rust/ I.e. they're not, this is just another research language. MS is however still heavily looking at rust, and employing rust developers. Unleashing the (Armed) Bear past Java 11 Using Jlink to shrink your webservices… including nativeimages in the followup tweets Style guide for Text Blocks Lambda performance in node - regressions: Version 13.5.0 -- Questionable Changes? "My testing indicates that the for...of construct is about 60-70% slower as opposed to a classic for(let i; i; i++)." JEPs for JDK 14 JEP 305: Pattern Matching for instanceof (Preview) was proposed to target. JEP 343: Packaging Tool (Incubator) was proposed to target. JEP 345: NUMA-Aware Memory Allocation for G1 was integrated. JEP 349: JFR Event Streaming was integrated. JEP 352: Non-Volatile Mapped Byte Buffers was targeted. JEP 358: Helpful NullPointerExceptions was integrated. JEP 359: Records (Preview) was integrated. JEP 361: Switch Expressions (Standard) was integrated. JEP 362: Deprecate the Solaris and SPARC Ports JEP 363: Remove the Concurrent Mark Sweep (CMS) Garbage Collector was targeted. JEP 364: ZGC on macOS was targeted. JEP 366: Deprecate the ParallelScavenge + SerialOld GC Combination was proposed to target. JEP 367: Remove the Pack200 Tools and API was targeted to JDK 14. JEP 368: Text Blocks (Second Preview) was proposed to target. Thread suspend/resume are now deprecated for removal (build 21) Added LuxTrust Global Root 2 Certificate (build 24) NUMA JEP mentioned last week now has an Implementation merged for "NUMA-Aware Memory Allocation for G1": http://hg.openjdk.java.net/jdk/jdk/rev/fce1fa1bdc91?revcount=1000 http://hg.openjdk.java.net/jdk/jdk/rev/df6f2350edfa?revcount=1000 http://hg.openjdk.java.net/jdk/jdk/rev/6530de931b8e?revcount=1000 New JEPs JEP 370: Foreign-Memory Access API Draft JEP: Elastic Metaspace


22 Dec 2019

Rank #9

Podcast cover

162. A Conservative JDK/Java Migration Path

CppCon 2018: Thoughts on a more powerful and simpler C++ (5 of N) - Herb Sutter Resources for writing modern Java Java 8 adoption process Conservative migration Build under new JDK Deploy on JDK THEN switch bytecode target to new JDK or... keep main build JDK target, move tests to target new JDK and use new features in non production code records Local records inside a method JEP 345: NUMA-Aware Memory Allocation for G1 Java switch - 4 wrongs don't make a right - Stephen Colebourne Jakarta EE 8: The new era of Java EE explained Git Partial clones give shallow checkouts, whilst sparse checkout yields a restricted subset of the working copy to check out. Dart native


24 Nov 2019

Rank #10