Illegal Argument: Recent Episodes

Mark Derricutt, Greg Amer and Richard Vowles

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)

View Details

Episode 180: rightFolds in an AI world? 1. rightFolds as a pun on Mark's recent right vocal fold surgery, healing means we're good to record again, plus IA celebrates 17 years of existence, even if episodes have seriously lacked of late. Last episode Aug 27, 2025 - it's been a while. 2. Does language theory and evolution have a place/need in an AI world? 3. New JVM language features vs Syntactic sugar ala Clojure/Scala features 4. Bun's recent zig->rust total AI rewrite 5. Vercel engineer built Zero, a programming Language for AI Agents | Yeamt 1. Why Did They Build This? 6. jank now has its own custom IR 1. Do any of these funky languages matter in an AI world? 2. Is 'Good Enough' Good Enough: Mindsets and Behaviors for Sales Excellence 3. Is "good enough" good enough?!. A common misunderstanding of the… | by Ted Rau 4. Is Good Enough, Good Enough? (Part 1) 7. AI and the increased threat of Supply Chain attacks 8. How We Got a CISA GitHub Leak Taken Down in Under a Day 9. NPM and its recent attacks 10. Package Managers are Evil - gingerBill 1. The Aesthetic Problem of Namespacing - gingerBill

Tooling * Highlights from Git 2.54 * "Git history" FTW, unless you're using Jujitsu 🙂

AI and Development * The Human Cost of 10x: How AI Is Physically Breaking Senior Engineers * OpenJDK Interim Policy on Generative AI * Why Your Engineering Team Is Slow (It's the Codebase, Not the People) * The Reviewer Isn't the Bottleneck * Now more than ever: building reliable software in the age of agents | Ron Minsky | Bug Bash 2026 * I am not a Software Engineer — huronbikes

"Everyone" leaving Github * A usability study of radicle * Git is distributed, GitHub is not - Radicle brings a distributed forge for software development, including distributed issues, patches, code review, and CI solutions for a resilient forge. * HardenedBSD Officially on Radicle * Ghosty leaving Github * Zig: Migrating from GitHub to Codeberg * This, plus Zig's recent firm anti-AI stance led to the Bun port. * Thoughts on Leaving GitHub * GitHub confirms breach of 3,800 repos via malicious VSCode extension

View Details

  • C++
  • Three Cool Things in C++26: Safety, Reflection & std::execution - Herb Sutter - C++ on Sea 2025

  • Java

  • Java 25 to be released September 16
  • New Features in Java 25 | Baeldung
  • Primitive Types in Patterns (JEP 507 – Third Preview)
  • Module Import Declarations (JEP 511 – Preview)
  • Scoped Values (JEP 506 – Final)
  • Structured Concurrency (JEP 505 – Fifth Preview)
  • Stable Value API (JEP 502 – Preview)

  • Java 25 is ALSO no LTS Version

  • JVM Language Summit 2025 - YouTube
  • The not-so-final word on final #JVMLS – Inside.java - no more setAccessible!?

  • How To Upgrade to Java 25

  • Static Code Analysis vs [[Language]] Servers

  • AI / Agents and [[Security]] Woes
  • AI Expert DESTROYS the GPT-5 Hype
  • Programmable 2025: AI is a Hype-Fuelled Dumpster Fire - Chris Simon
  • Basically covers ethics of using AI (data theft, conditions of data workers and energy costs) and risks associated (data bias, stochastic parrot, psychological effects)

  • MCP Horror Stories: The GitHub Prompt Injection Data Heist

  • Claude Code: Data Exfiltration with DNS (CVE-2025-55284) · Embrace The Red
  • Black Hat 2025 Media Interview: Mimecast's Jason Morgan with ISMG

View Details

Last week, Greg and I had the pleasure of sitting down with Andres Almiray from Oracle to discuss this week's release of Java 22. I was hoping to get this episode out sooner but ended up fighting it out with a fever.

Alert Notification * https://blogs.oracle.com/java/post/java-on-macos-14-4

Java 22 Released Tomorrow * JDK 22 Release Notes: https://jdk.java.net/22/release-notes * JavaFX Release Notes: https://github.com/openjdk/jfx/blob/master/doc-files/release-notes-22.md * Does Java 22 Kill Build Tools? https://inside.java/202,4/02/15/newscast-63/ * Update on String Templates (JEP 459) (most likely to preview in 23) https://mail.openjdk.org/pipermail/amber-spec-experts/2024-March/004010.html — First preview feature to be unshipped and reworked entirely?

Misc * Apache Maven 4.0.0-alpha-13 released — This is the first release that requires Java 17! * Welcome to Claro! — The Claro Programming Language https://docs.clarolang.com/chapter_1.html * Introducing the Daggerverse - Dagger * Devin AI Website — The First AI Software Engineer Cognition

Free OracleDb 23c Release * Oracle Database Free — https://www.oracle.com/database/free/ * Oracle Database Free Container / Docker images — https://github.com/gvenzl/oci-oracle-free * Oracle NoSQL Database — https://www.oracle.com/database/nosql/technologies/nosql/ * JSON in Oracle Database Office Hours: Binary JSON formats https://apexadb.oracle.com/ords/r/tech/catalog/session-landing-page?p2_event_id=15268317198142239082325102977690035505&debug=LEVEL7&session=213101861572582

View Details

It's been a long time (again) between recording/discussions, but finally, for the end of the year, we locked some time to record.

Java * 9 Outdated Ideas About Java - Azul | Better Java Performance, Superior Java Support * Hidden gems in Java 19, Part 1: The not-so-hidden JEPs * JDK 20: The new features in Java 20 | InfoWorld * JDK 21: The new features in Java 21 | InfoWorld * Java 21 to drop generational Shenandoah GC * Why Your Choice of Java Virtual Machine (JVM) Matters More Than Ever - Azul | Better Java Performance, Superior Java Support * JDK 22: The new features in Java 22 | InfoWorld * The Java Playground - Dev.java * JEP draft: Null-Restricted Value Class Types (Preview) * JEP draft: No longer require super() and this() to appear first in a constructor * Minborg's Java Pot: Java 20: Colossal Sparse Memory Segments

Golang * What’s New in Go 1.21 a Comprehensive Notes | by Younis Jad | Lyonas | Medium * Go 1.20 Release Notes - The Go Programming Language * [Go 1.21 Release Notes - The Go Programming Language](https://tip.golang.org/doc/go1.21 * Go 1.22 Release Notes - The Go Programming Language (soon to be released)

Misc * GitHub - MichaelMure/git-bug: Distributed, offline-first bug tracker embedded in git, with bridges * So you want to write a package manager | by sam boyer | Medium * Versioning non-project repositories (config, pipelines) + Semverbot looks good, but I found a bug: blang/semver only supports "v" prefix's · Issue #58 · restechnica/semverbot · GitHub * DORA - Use Four Keys metrics like change failure rate to measure your DevOps performance | Google Cloud Blog * Software Design and Maintainability + On bad advice + Why DevOps is failing: It's Not You, It's The Tools - GigaOm + An architect’s journal -Embracing Simplicity in Software Architecture Diagramming | by Asanka Abeysinghe | architect2architect + Building Great Teams * dagger.io | Replacing your Dockerfile with Go code + Replace a Dockerfile with Go | Dagger + Dagger Java SDK examples: sample + Healing The Poisoned Repository | Theory In Practice

View Details

  • Non-tech Music Banter
    • An Updated Look At Concert Merchandise Sales & Trends in 2022
    • Why Venues Take Merch Cuts
    • The Taylor Swift Economy: The largest music tour in history is a hospitality phenomenon
  • A litany of languages and their passing, software archaeology and the issues of adopting new languages?
    • Clojure - (next Rich)
  • JDK 21 to be released next month: JDK 21 Release Candidates & JVM Language Summit has a good overview.
    • JEP 430: String Templates (Preview)
      • Not a fan of the syntax, but also appreciate it's not just "string interpolation", it makes it very clear you're doing something different. I like that it's easily expandable and not too different from other languages that use r"Raw String here".
      • NOTE: String Template Processing is runtime, not compile time, as Mark was thinking, as with being able to work well with Freemarker templates – which may work, but not as I implied.
    • JEP 431: Sequenced Collections look like a nice improvement for consistency – annoying for library writers who may find it more useful, tho.
    • Mark: 440: Record Patterns and 441: Pattern Matching for switch – having used these a bit now I love them, in places they fit – they work well for Algebraic Data Type style things, but should be used in moderation tho.
    • JEP 443: Unnamed Patterns and Variables (Preview)
      • It's a small win, but not having to name things “ignore” or “expected” etc.
    • JEP 445: Unnamed Classes and Instance Main Methods (Preview)
      • Initially didn't think I'd find much interest in this, but the more I experiment with Dagger.IO pipelines, and with the forthcoming Java SDK I can see this being enjoyable.
      • JBang as an alternative
    • JEP draft: Prepare to Restrict The Use of JNI - JDK 22 to start warning on JNI usage… The Reddit thread is well - as you expect :) JEP draft: Prepare to Restrict The Use of JNI (Updated): r/java
      • Flame threads on the JNI command flag option.
    • Quick Fire Last Minute things:
      • Dagger, a ❤️ story | Flipt Blog
      • Tutorial · arxanas/git-branchless Wiki · GitHub
    • BONUS Material
      • Apache Wicket
      • PatternFly Elements - PatternFly Elements

View Details

Episode 174 - 18 And Life Until last week, I was going to open the show saying it's been a long time since we last recorded, but we slipped in an interview with the guys from plz.review - so that's not exactly true anymore. It has, however, still been a while since we've had a normal, full session of discussion and argument.

Delayed: The publishing/editing of this episode was unfortunately delayed due to me finally catching Covid.

plz.review Updates * Github "integration" is available, we even had GerritForge - Home page listed in the show notes, as part of GerritForge there's GerritHub for online hosted Gerrit+GitHub integration which uses Gerrit's replication plugin, and a Github integration for authentication/authorization. Patch sets and comments remain in Gerrit.

JDK Related Since the last main episode, Java 18 was released (and earlier this week JDK 18.0.2 was released with various security and docker improvements.)

  • Java 19 is currently in Rampdown Phase Two with a GA release slated for 2022/09/20
    • 405: Record Patterns (Preview)
    • 422: Linux/RISC-V Port
    • 424: Foreign Function & Memory API (Preview)
    • 425: Virtual Threads (Preview)
    • 426: Vector API (Fourth Incubator)
    • 427: Pattern Matching for switch (Third Preview)
    • 428: Structured Concurrency (Incubator)
      • Rust 1.63: Scoped Threads : rust. Similar to the forthcoming Structured Concurrency for Java.
  • Deprecating java.util.Date, java.util.Calendar and java.text.DateFormat and their subclasses - Interestingly no replies to that post at all.
  • Value type companions, encapsulated
  • Project Leyden: Beginnings (r/java discussion)
  • Testing clean cleaner cleanup – Inside.java - Replacing finalizers with Cleaners.

Tooling * SD Times Open-Source Project of the Week: Adoptium - SD Times * IntelliJ IDEA 2022.2 Goes Beta | The IntelliJ IDEA Blog - Switches from running with Jetbrains' JDK11 to JDK17 * IntelliJ IDEA 2022.2 Is Out! | The IntelliJ IDEA Blog * JetBrains Fleet: The Next-Generation IDE by JetBrains

Java / JVM * Hibernate ORM 6.0 Delivers Improved Performance * Languages + Kotlin/Native vs. C++ vs. Freepascal vs. Python: A Comparison | by Alex Maryin | Apr, 2022 | Better Programming + Kotlin 1.7.0 Released | The Kotlin Blog + Scala 3.1.3 released! | The Scala Programming Language * Build + Bazel - Announcing Bazel & JetBrains co-maintenance of IntelliJ IDEA Bazel Plugin - Bazel - Bazel Community Update - 5/16/22 - YouTube - Manage external dependencies with Bzlmod | Bazel + Apache Maven Wrapper – Maven Wrapper

Alternate Languages * Celebrating 50 Years of Smalltalk | by Richard Kenneth Eng | Jul, 2022 | ITNEXT * Help Microsoft shape the Azure SDK for Rust * Shaving 40% Off Google’s B-Tree Implementation with Go Generics - ScyllaDB * Zaplib post-mortem - Zaplib docs - Post-mortem of porting JS to Rust/WASM * Simplifying Go Concurrency with Futures * Common Lisp - Repl Style. Dev visually with CLOG Builder : Common_Lisp * OCaml 5 and new Website + 1.5. Summary — OCaml Programming: Correct + Efficient + Beautiful - new OCaml site launched + Ocaml 5 concurrency tutorial - concurrent OCaml is finally here (almost) + GitHub - ocaml-multicore/eio: Effects-based direct-style IO for multicore OCaml + Will OCaml 5+ multicore be fragile? - #17 by gasche - Learning - OCaml * C++ + C++ 23 to introduce module support | InfoWorld + GitHub - carbon-language/carbon-lang: Carbon language specification and documentation. - An experimental successor to C++ - Looks like it's getting a lot of flack on Twitter - Twitter: Carbon C++ Results

Security * Reflections on Log4J Security Issues * Weeks after breach, the Heroku GitHub connections remains on ice

Misc * Major Version Numbers are Not Sacred * Decentralized Identifiers (DIDs) v1.0 is a W3C Recommendation | W3C News + Decentralized Identifiers (DIDs) v1.0 * An open-source tool to seed your dev database with real data : golang * How Apple, Google, and Microsoft will kill passwords and phishing in one stroke | Ars Technica * Complexity is killing software developers | InfoWorld

View Details

Reddit Post: Improving on the GitHub code review comment experience : programming Blog Post: Bit Complete Blog: Improving on the GitHub code review comment experience | Bit Complete Inc. YouTube Introduction Video: Introduction to plz.review - YouTube Website: plz.review Guests: Dylan Trotter, Matt Schweitz

It's been a while since recording, and as it happens, just before organizing the next episode, full of “discussion” on the recent Java 18, and forth-coming Java 19 release, I came across an r/programming post from Dylan Trotter from Bit Complete about their new stacked code review tool for Github.

After reading the post, linked blog post, and introductory YouTube video, I reached out to discuss the product, the problems with Github's default PR model, and code review in general.

Contents * 00:00:03.754 Introduction * 00:01:07.236 Bit Complete History * 00:02:24.492 What Makes A Good Code Review? * 00:12:32.219 DORA (not the Explorer) * 00:14:38.308 Bisecting Squashed Commits * 00:18:51.617 The plz.review Solution * 00:19:08.934 plz.review Stacks - Grouping PRs Together * 00:21:36.969 plz.review Revisions: Force push solutions * 00:25:37.590 plz.review Migration - Moving from Gerrit? * 00:29:34.371 Gerrit and Github Integration * 00:32:23.516 Compromising your workflow to fit Github PRs * 00:39:41.700 Code Review as Mentorship / Education * 00:41:26.759 Github: Social Coding brought code-review to mainstream * 00:45:52.124 Long Lived Support Branches * 00:50:03.479 How to signup for plx.review

Overview Before we get into plz specifics - I assume both Dylan and Matt have some interesting takes on what makes a good review:

  • What makes a good review?
  • What constitutes good review "hygiene"?
    • Mark: IMHO A review/commit/PR should ideally do one thing. What the "thing" may be intangible, but ideally:
      • If you're going to reformat code, keep it in a commit separate from business logic changes.
      • If you're updating dependencies, keep them separate from business logic changes, however do include code changes to ensure the build continues to build and pass tests.
        • If a dependency update introduces breaking API changes, keep that dependency change along with the implementation for it.
  • Laurence Tratt: Programming Style Influences
  • Practical guide to DORA metrics | Swarmia
    • DevOps Research and Assessment - The four DORA metrics are:
      • Deployment frequency: How often a software team pushes changes to production
      • Change lead time: The time it takes to get committed code to run in production
      • Change failure rate: The share of incidents, rollbacks, and failures out of all deployments
      • Time to restore service: The time it takes to restore service in production after an incident
    • The first three metrics I can see being highly impacted by small changes, automated testing and CI integration. These all intersect with code reviews – having visibility that a proposed change actually compiles, passes tests, and doesn't introduce any new security issues before a co-worker even looks at the change speeds up the process.
      • Stacked code reviews promote keeping pull requests small | Swarmia changes (with small being a subjective size),
    • We've spoken on code formatters before on the show, keeping consistency for reviews is a good thing regardless of being automated or not.

plz.review The project/platform appears to solve several issues we're facing with Gerrit, and our adoption of Azure Devops:

  1. Azure Devops is unable to pull from patch-sets, due to the private rev nature of Gerrit
  2. Writing custom Azure function(s) to listen to Gerrit events and manually trigger a Devops build is viable, but not ideal.

The prospect of abandoning Gerrit and switching to Githubs force push and squash approach makes me cry,

  • Coming from the Gerrit Code Review Tool it's great to find a stacked review tool for Github, having people getting in the habit of force pushing to remotes just promotes bad hygiene IMHO. Looking at the available docs, several interesting things come to mind:
  • Comparison: Gerrit and GerritForge - Home page - which I've used in the past for some open source work (GitHub - repaint-io/maven-tiles: Injecting maven configurations by composition rather than inheritance originally used GerritForge).
    • Gerrit keeps all patch-sets - and lets you compare diffs between patch-sets, is that also mirrored within plz.review? I guess Github would only track to latest/amended PR.
      • Looks like the plz command line generates its own form of Change-Id footer: plz-review-url which tracks revisions of a change linking to https://plz.review/review/NNNN - which doesn't appear to be name-spaced in any way (company or repo).
      • Gerrit's UI is getting better, but still leaves a lot to be desired – I still wish improvements to commenting/UX were more of a focus. plz.review's UI also seems simple in design (not necessarily a bad thing), UI/UX design is hard in general, the requirements of a stack version control also seem to make it a tricky balance between fully featured, and clean….`
    • Gerrit Migration – Given git patch-sets/comments are all in git refs, is there a migration strategy to expose them into plz.review/github?
      • Is there a potential migration strategy? plz.review feels early in the development stage. Such things may not have been considered, or deemed out-of-scope for the system.
  • Comparison: Graphite — Modern code review for fast-moving teams - Open Source CLI/web dashboard stacked review tool based on Git, designed to work with Github. - Graphite beta demo [December 2021][V2] - YouTube - Stacked diffs for fast-moving code review - The Changelog: Software Development, Open Source (Change Log Podcast Interview).
  • Automated bot responses - with CI/test results often being published back into Github PR's as validations for viable PR merges, do these get reflected in the plz UI, or even -2 rejections?
  • Dealing with commits outside of plz.review - such as automated release commits that push direct to GH / potential conflict resolution (having access to Gerrit's local git repo has often been a godsend).
  • What's the business model for plz - per repo charge? per organisation? per user?

View Details

Catchups * Happy New Year! * Log4j Issues, fall out, ranty commentary * And now PostgreSQL JDBC gets a 9.8 CVE:

Java Stuff * Java 18 set for March 22, 2022 + The new features in Java 18 + Mark Reinhold: There are no unresolved P1 bugs in build 36, so that is the first JDK 18 Release Candidate. Binaries available here, as usual: https://jdk.java.net/18/ * Java 19 builds are already available * MicroProfile 5 out * Helidon 2.4.2 released * Quarkus 2.7.1 released * Continuations + [GR-34749] Continuation support independent of Project Loom. #4114 - merged. + https://cr.openjdk.java.net/~rpressler/loom/Loom-Proposal.html + Project Loom: Fibers and Continuations for Java by Alan Bateman - YouTube - Early Continuation API sample * JEP draft: Sequenced Collections * JEP 423: Region Pinning for G1 * I believe I read somewhere JEP 389 (Foreign Linker) are coming out of the incubator soon - Using libsodium with JEP 389 is an interesting example. * Java's Options for Options - it hurts just reading this, let alone the reddit comments * AZUL Cloud Compiler * Jetbrains Fleet - Next Gen IDE/Editor

Other Stuff * Apple Removes Python 2.7 in upcoming release of macOS * Apache Groovy 4 Released * No Such Thing As Clean Code

View Details

Once again it's been a long time coming between episodes, Auckland's recent extended Covid lock down and Mark's unscheduled and temporary relocation meant we missed out on discussion the release of Java 17 - and with Java 18 not all that far away, we thought it was about time to once again get our record on. Andres Almiray once again joins us to talk releases, and specifically the JReleaser tool.

Table of Contents 00:00:11 Introduction 00:00:59 Lockdowns and Freedoms 00:03:45 Java 17 and 18 Releases 00:04:47 Java 17 Uptake 00:05:37 Misconceptions of The Module System 00:07:49 Spring 6 and Spring Boot 3 move to JDK 17 Minimum 00:08:56 Maven Enforcer Plugin: Extra Enforce Rule - Enforce Bytecode 00:11:40 Java LTS Releases Switching to 2 year cycle 00:14:13 Quality of Life Language Changes In Smaller Releases 00:16:00 Java Version Migration 00:20:11 Is The Release Process Broken 00:21:10 Reproducible Builds 00:22:32 Maven Artifact Plugin 00:24:36 Introducing JReleaser 00:28:07 OSX Package Managers vs Tarballs 00:29:23 JBang 00:31:10 JReleaser Deployment Targets 00:33:55 Replacing Ansible/Puppet? 00:41:25 JRelease for Non Java / C++ Projects 00:42:10 Live at HEAD 00:44:34 JRelease for Non Java / C++ Projects (cont) 00:51:15 JReleaser Configuration Formats 00:54:22 Upcoming 1 Release and Potential Renaming 00:58:27 Lombok and 1.x 01:01:21 SDK Man releases via JReleaser 01:04:04 Does JReleaser release itself? 01:06:10 Rolling Releases and Announcers 01:14:02 Closing Rant: Automated Code Formatters Java Related * Java 17 Arrived : JDK 17 the next LTE - Java 17 new features | TechGeekNxt>>

  • Java 17 Switches to a Free Licence Model (again)
  • JDK 18 Early-Access Builds
  • Microsoft Joins the JCP
  • Titus Winters: Live At HEAD

View Details

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)

View Details

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

View Details

  • 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

View Details

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 .

View Details

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

View Details

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.

View Details

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.

View Details

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

View Details

Topics 1. Fibre's are dead - long live "Virtual Threads" 2. Undelimited continuations are not functions 3. R2DBC 0.8.0 goes GA - Reactive database clients for Java 4. RUST: Shipping a compiler every 6 weeks 1. User reported stable regressions 2. Bisecting Rust Compiler Regressions with cargo-bisect-rustc 5. Microsoft: We're creating a new Rust-based programming language for secure coding 1. https://www.reddit.com/r/rust/comments/e5040i/microsoft_creating_new_rustbased_safe_language/ 2. https://www.reddit.com/r/rust/comments/e5kjyr/more_info_on_micrsoft_moving_away_from_rust/ 1. I.e. they're not, this is just another research language. MS is however still heavily looking at rust, and employing rust developers. 6. Unleashing the (Armed) Bear past Java 11 7. Using Jlink to shrink your webservices… including nativeimages in the followup tweets 8. Style guide for Text Blocks 9. Lambda performance in node - regressions: 1. 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

View Details

  • 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

View Details

00:00:00: Intro

00:01:25: Java 12 Is Upon Us

  • 39 New Features (and APIs) in JDK 12
  • Mapping With Switch Expressions

00:12:31: Supporting Multiple JVM Versions In Libraries

  • Apache Maven Compiler Plugin: Multi Release
  • multi-release-jar-maven-plug
  • Building Java 6-8 Libraries for JPMS in Gradle

00:34:20: Graal

  • Micronaut on Graal
  • Quarkus Microservices / Kubernetes

00:41:08: Autoscaling Is A Lie

00:50:49: Rust Is A Better C?

  • Rust Is Not A Good C Replacement

00:58:29: "Dynamic Types" In Haskell

  • Dynamic

01:01:09: Business Errors Vs Exceptions

  • JEP draft: Add detailed message to NullPointerException describing what is null

View Details

  • 00:00:00: Intro
  • 00:02:37: Java 11 Is Here
    • Java 11 Released
  • 00:07:22: JEP 342: The JVM and Spectre
  • 00:10:42: Chrome Blocking Add Blockers
    • Google Chrome could soon kill off most ad-blocker extensions
  • 00:15:06: Integrity In Tool Usage
  • 00:20:33: Pharo Release
    • Pharo 7 Released
    • Monticella is a distributed, optimistic, concurrent, versioning system for Squeak and Pharo code.
    • Using Monticello - YouTube Video
    • Iceberg: Next generation source versioning for Pharo - YouTube Video
  • 00:26:14: Java Migration And "Free Java"
  • 00:29:17: REPL Based Development
    • Functional Design In Clojure Podcast
  • 00:34:04: Racket Documentation Language - Scribble
  • 00:36:03: C++ Concepts
  • 00:37:02: New Release Of Wine
  • 00:38:42: Advanced Mac Substitute
  • 00:41:10: Looking To The Futur

View Details

  • jpackage builds available
    • building rpms, debs, MSI, and PKG installers
    • too little too late? Have we all loved to kubernetes and orchestration systems.
  • JDK 12 now in Rampdown and due in March
  • c builds / versions
    • c++ 98 to c++ 11
    • Faster Delivery of Large C/C
    • Using Facebook Folly with Conan
    • Fedora Looks To Build Firefox With Clang For Better Performance & Compilation Speed
  • Gradle source dependencies
  • Custom Apache Karaf Distributions
  • D Lang
    • What D got wrong
    • D compilation is too slow and I am forking the compiler
  • C Modules & Large-Scale Development
  • CppCon 2018: Andrei Alexandrescu “Expect the expected”
    • stdexpected spec PDF
    • Substitution failure is not an error
    • noexcept
  • Java 11 and beyond at Allegro
    • Will so many distributions of Java lead to fragmentation?
    • Oracle open sources the TCK
    • OpenJDK source has too many swear words - Resolved!
    • Opting into non-LTS and experimental features
    • tooling still lacks
  • CppCon 2018: “Closing Panel: Spectre”

View Details

It’s been a long time between episodes, with illness, work, and rock’n’roll getting in the way - but after planning to get another episode out to discuss the recent Java 11 release, not even the arrival of Japanese doom band Church of Misery (my youtube video and photos/review) was going to stop Greg and I from getting our rant on….

  • Intro to Episode 158
  • General Java
    • Helidon - new NON JEE webstack from Oracle
      • A 30MB native image with Helidon to run REST based microservices
      • Helidon Takes Flight
    • Micronaut Release Candidate 1 is finally here!
      • Actually, RC3 is now available at time of posting.
      • Natively compiling Micronaut microservices using GraalVM for insanely faster startups
    • Auto-updatable, self-contained CLI with Java 11
    • Videos are (already) ready for the Java sessions at Microsoft Ignite 2018!
  • Non Java Programming Language News
    • Ending PHP Support, and The Future Of Hack
    • LLVM 7.0 Released
  • Announcing: JavaFX 11
  • New Community Website: JavaFX
  • Kotlin 1.3 RC is Here: Migrate Your Coroutines!
  • Teh Strong Static Type Fail
    • r/haskell - GHC 8.6.1 is badly broken
  • Code Style
    • “auto to stick” and Changing Your Style
    • What makes code unreadable to human
    • Good Code Depends on Good Names
  • The Observation Deck » The relative performance of C and Rust
  • Interesting Books
    • The Design of Everyday APIs
    • Modern Java in Action
    • The Java Module System
  • Sunsetting Google+

Java 11 * Features + Fast Forward To 11 + 90 New Features (and APIs) in JDK 11 - Azul Systems, Inc. + JLink can't use automatic-modules - does that make it dead? - Apache Maven JLink Plugin - moditect/moditect— Moditect from Gunnar Morling @ Red Hat (@gunnarmorling) lets you take existing Maven Jars, and add your own module-info / module specs for inclusion in your jlink application as a migration path. + Java's new Z Garbage Collector (ZGC) is very exciting * Licensing Issues / Changes + Stephen Colebourne - Time to look beyond Oracle's JDK - Java is still available at zero-cost - Do not fall into Oracle's Java 11 trap + What JDK to Use in the Future (video from Simon Ritter, AZUL Systems) * Migrating + Why is OpenJDK 10 packaged as openjdk-11 + Running Jenkins with Java 10 and 11 (experimental support) + All You Need To Know For Migrating To Java 11 + Using Hibernate ORM with JDK 11 * AdoptOpenJDK Java 11 builds now available * MacOS binary layout changes - now conforming to the standard Mac package layout, which the official Oracle JDK release also follows. * Oracle Code One - On Demand Videos

Java 12 and Beyond * JDK 12 Early-Access Builds * JEP draft: Concise Method Bodies * JEP 342: Limit Speculative Execution * JEP 325: Switch Expressions (Preview) + Playing With JDK 12's Switch Expressions * JEP 326: Raw String Literals (Preview) * JDK-8208089 Implement C++14 Language Features - Java Bug System

View Details

  • Stuck In A Rut...
  • Java Mission Control Open Sourced - Flight Recorder JEP
  • Continuous Delivery
    • Kubernetes
    • Istio
    • No more Apache Maven Releases - only SNAPSHOTs, into Docker images.
  • Why scale?
  • Maven Plugins and compile time code generation
  • Jepsen analysis of Hazelcast 3.8.3
  • Why I’m leaving open source

View Details

It may have just clocked into April, but the first Illegal Argument of the year is finally here, much delayed, and extra long in it’s twists and turns of… well, let’s face it - you know it would be build didn’t you….

  • JEP-223 - New Version-String Scheme
  • Redfin Video on converting from Maven to Bazel (YouTube link)
  • IntelliJ Bazel Plugin/Tooling
  • Issues with Multiple Dependency Versions with Bazel
    • Mark: My suspicion is the issue came from automatically generating bazel WORKSPACE/BUILD files from Maven.
  • Guide to Writing Maven Plugins
  • Polyglot Maven
    • Polyglot Maven pom.java example
  • Maven Compiler Plugin - annotation-processor paths
  • XML namespace issues in ‘other languages’
  • Make…
  • GraalVM Released for Public Use
  • Gluon JavaFX
  • Three Rings - Get Down
  • Removal of Pack200 - Slow and unreliable downloads of the Java Runtime Environment (JRE), the Java Software Development Kit (JDK) and deployment of JAR-archives, was a serious impediment to the Java adoption in its early years. This was due to sparse class-files, and short comings of the JAR-format and compressors available. JSR-200 and pack200 attempted to mitigate this problem by hyper-compressing the class-files.

View Details

For an ostensibly forthrightly podcast, we only managed 10 episodes this year, of which one was a mini-solo cast from Mark, too many holidays and rock concerts getting in the way of recording. Hopefully we can be more organised in 2019!

  • The years podcasts:
    • 145: Java 9 and The Case of the Automatic Module
    • 146: Emanuele Ziglioli and DukeScript
    • 147: The NO Vote
    • 148: Project Glass Tile
    • 149: null == 400
    • 150: Breaching The Summit
    • 151: I’m A Teapot
    • 152: XML Beware
    • 153: Strutting Like A Cowboy
    • 154: Don’t Run Into Walls
  • Using Java 9 modules: chances and challenges: Rafael Winterhalter / JavaZone
  • Principles of XML design: When to use elements versus attributes
  • Crash ;-) Technical difficulties…
  • Unit Testing and Java 9
    • Unit testing with Java 9, Jigsaw and JUnit
    • Where should I put unit tests when migrating a Java 8 project to Jigsaw
  • AdoptOpenJDK
  • Twitter: Reasonable Scala - Experimental Scala compiler focused on compilation speed
  • Scala Native (direct link to info on garbage collectors )
  • Kotlin Native - Tool to create a Kotlin library from a native C .h file
  • DTraceand Java Profiling with DTrace
  • Rust Regex Engine on JVM, via WebAssembly, Example and Benchmark
  • Pixielang
  • Apple OSX: Why Gets You Root
  • The History of Pets vs Cattle and How to Use the Analogy Properly
  • Docker, Mesos, Marathon, and the End of Pets
  • JDK 10 Rampdown Phase One

View Details

  • Broken builds, continuous integration, feature flags and deprecations?
  • Maven Release And Sub-Directories- from Richard Vowles
  • The Future is Now by Rachel White - Grinders and Biohacking
  • Facebook Flow - Static Analyser for Javascript
  • Java 10 builds are available
  • Using JDK 10’s Local Variable Type Inference With jOOQ

View Details

  • Severe security vulnerability found in Apache Struts using lgtm.com (CVE-2017-9805)
  • XML? Be cautious!
  • The Backdoor Threat

Java News * Moving Java Forward - 6 month release cycle, breaking changes. 3 yearly LTS versions * Java 9 will NOT be an LTS release * Module Hell - java.ee not in base ( easy to fix, but ack ) * O'Reily Java 9 Modularity published * Use Stream API simpler ( or don't use it at all ) * Kevlin Henny JavaZone talk/video: Paradigms Lost, Paradigms Regained: Programming with Objects and Functions and More * Jitwatch + Project Home + IntelliJ Plugin + Video demo of Jitwatch/IntelliJ Plugin at the JVM Language Summit * Using GraphQL? Why Facebook Now Owns You * Java EE moves to the Eclipse Foundation

View Details

A short minisode on Apache Struts, XML deserialisation attacks, and Equifax.

  • XML? Be cautious!
  • Severe security vulnerability found in Apache Struts using lgtm.com (CVE-2017-9805)
  • CVE-2017-9805: Analysis of Apache Struts RCE Vulnerability in REST Plugin
  • Apache Struts Statement on Equifax Security Breach
  • Apache Struts Security Bulletins
  • OWASP Dependency Check
  • struts-pwn - an exploit tester
  • Remotely Exploitable Java Zero Day Exploits through Deserialization (2015 alert for Apache Commons Collections 3.x)
  • A critical Apache Struts security flaw makes it 'easy' to hack Fortune 100 firms

Upgrade your s**t!

View Details

Save 418 - I was hoping to actually shift the discussion of “Save 418” more towards the importance of specifications, and how ‘in the old days’ protocols/specs were king, as everything was reused and distributed - but now, it’s “the Twitter API” or “the Facebook API” — still, we managed an somewhat interesting discussion over the broadening of specification definitions.

  • Richardson Maturity Model
  • 420: Enhance Your Calm
  • application/problem+json- HTTP/MediaType Driven API error handling
  • Resource acquisition is initialisation
  • GRPC
  • clap.rs - Fast. Configurable Argument Parsing for Rust
  • The Last Frontier in Java Performance: Remove the Garbage Collector
  • The most incredible Ceylon presentation you’ll ever see: Tom Bentley(vimeo)
  • A close look at Kotlin’s “let” - Cédric Beust
  • Remote code execution vulnerability in Git

Contact Us * Google Group Mailing List * Google+ Page * Facebook Group * Twitter

View Details

Initially tonight’s episode was going to be called “The Patch Is All” (guess whose been enjoying the new season of Killjoys?) — with a discussion about pre code-review practises, however with Peter’s absence, the discussion centred mostly around the 2017 Java Language Summit which was taking place around the recording period.

Upcoming Events * DevOpsDays Auckland - 3/4th October * Pacific C++ - 26/27th October in Christchurch, NZ

JVM Topics * Java 8u144 Released - release notes - download * New Java Style Guideline for OpenJDK ( draft 6 ) - not everyone seems to like it. + Not embracing 2 space indents maketh me sad :( + Interesting to see how much conflicts with Googles standard, whose structural wrapping rules, whilst clearly delineating structural elements, can be a bit unsightly ) * Java Language Summit 2017 + Agenda - lots on value types, surprisingly little on modularity + Videos already going live + Project Sulong - After watching the JLS video - colour me (Mark) highly impressed. * Nobody puts Java in the container - Ken Sipe Video, JavaZone * Introduction to Java multitenancy - Learn about a new feature for cloud systems in the IBM SDK Java Technology Edition, Version 7 Release 1 * Ceylon on Java 9 + Jigsaw * Clojure Dependency Heaven(pdf) - introducing tools.deps.alpha * edit cough at 18:42 * JEP 307: Parallel Full GC for G1 * How Compatibility Breeds Complexity - The module system gone awry * Java Style Guidelines - Draft v6 * Developers Who Use Spaces Make More Money Than Those Who Use Tabs * The best Java books as voted by Reddit r/java ( reddit thread here )

General * Do people write insane code with multiple overlapping side effects with a straight face? * Some History of Functional Programming Languages - David Turner (Lambda Days 2017) (youtube video) + Miranda language * IntelliJ Rust Plugin now officially supported by Jetbrains + Autocomplete for macros + Minimum version is 2017.1 * Rust: The server trick - The semver trick refers to publishing a breaking change to a Rust library without requiring a coordinated upgrade across its downstream dependency graph. The trick is built around having one version of your library declare a dependency on a newer version of the same library ( reddit thread )

Contact Us * Google Group Mailing List * Google+ Page * Facebook Group * Twitter

View Details

  • Project Valhalla
    • Value Types give up value identity
    • JEP 169: Value Object specification
    • JEP 218: Generics over Primitive Types
    • Value Types in the JVM - Scaladays 2015 talk ( Youtube, 48 minutes )
  • Whats in JDK9?
  • Is SpringBoot/Grails good for Prototyping only?
  • startups: fire your dev teams
  • A Stronger Dart for everyone…
  • Takari Maven-Wrapper
  • Dr Deprecator - Interview with Stuart Marks
  • New Java 9 tool: jdeprscan
  • Batman WAT
  • Java BigInteger was made for RSA cryptography
  • Rust’s std::option type
  • DZone Series on Java command line parsing:Apache Commons CLI, args4j, jbock, Commandline, JewelCli
  • New Rustacean Podcast
  • Life in the Fastlane: Disable D’s GC

View Details

Join us for an another semi informed, highly subjective, and quite possibly wrong on all counts discussion about Java, Jigsaw.

  • Revised Jigsaw Spec - reflective access allowed by default, I'm calling it Project Glass Tile - everything is transparent and smoothly fitting together again ( if not using Modules ) - cough - yeh right says the Tui advert.
  • CDI 2.0 Released
  • JDK ServiceLoader - Creating Extensible Applications
  • Getting Started with Jigsaw Services
  • Is OSGi broken?
  • Split Package Hell?
    • Unable to share non-exported packages, including “resources”
  • Set theory?
    • Totally Ordered Set
  • Java String hashCode has an unknown author
  • The Uncomfortable Truth of Bad Code ( YouTube link )
  • The Smell of Rotting Software
  • Sonar Gerrit Plugin
  • Sputnik Checker for Github/Gerrit
  • Whose job is it to fix that bad code?

Catch us on Twitter and Google Plus+.

View Details

Apoligies one and all for the late episode delivery, our host/engineer/pulisher ( aka me, Mark ) was off galavanting taking photos of Living Colour, Greenday, and Devin Townsend this week and got waylaid in editing/publishing the show! But fret not dear listeners, come one, come all - and hear all about the NO vote...

  • Mark Reinhold (Oracle) responds to Red Hat's "critical missing pieces..." post re: JPMS/Jigsaw
  • Reinhold Publishes Open Letter to JCP Pleading That JPMS (Jigsaw) Is Approved
  • The State of the Vote on JSR 376 (on May 5th)
  • Apache Maven and Java 9- State of the Mojo
  • Java EE8 at JavaOne

View Details

  • Guest - Emanuele Ziglioli from Sirtrack on upgrading a legacy swing app to Java 8 / DukeScript
  • Netbeans Swing GUI Builder ( formally Project Matisse )
  • Totally Grid Bag(YouTube Video)
  • JavaFX Self-Contained Application Packaging
  • Inno Setup for Windows
  • JEP 282: jlink: The Java Linker
  • Iridium NEXT
  • Electron considered harmful
  • Electron is flash for the Desktop
  • Reasoning about performance (in the context of search) 30 Min YouTube Video
  • Is Java 8 Stream a safe return type?
  • Oracle Proposes G1 as the Default Garbage Collector for Java 9
  • What is Effectively Final variable of Java 8
  • Sodium - Function Reactive Programming
  • Java 9/10
    • Reactive Programming with JDK 9 Flow API
    • Pattern Matching for Java
    • Welcome to Amber!
    • Java Language and Platform Futures: A Sneak Peek by Brian Goetz (youtube).
    • 55 New Features in JDK 9
    • Inside Java 9 – Version Schema, Multi-Release JARs, and More

View Details

  • Java 9 and The Case of the Automatic Module
  • Haskell and The Case of the Sad State of Tutorials
    • Functional Education
  • KITTENS - DATATYPE-GENERIC FUNCTIONAL PROGRAMMING WITH SCALA(YouTube Video)
  • How to Bake Pi
  • Scala Macros Roadmap
    • scala.meta is the new macro system.
    • Metaprogramming 2.0 by Eugene Burmako - youtube / slides
    • scala.meta support in IntelliJ
    • c++ style templates with templates.scala (uses scala.meta ) - github
  • Build!
    • Java Dependency Analysis Tool
    • Maven JDeps Plugin
    • The State of the Module System
    • New Java Versioning Scheme
    • Alex Blewitt’s Fantasy Version Scheme Series
      • JSR294 Fantasy Version Series - Roman Numerals
      • JSR294 Fantasy Version Series - Linux
      • JSR294 Fantasy Version Series - Planets
  • Payara MicroProfile 1.0 Released
  • Unik Unikernels for Java
  • MirageOS Unikernel
  • HalVM Unikernel
  • SE-Radio Episode 282: Donny Nadolny on Debugging Distributed Systems
  • HOW WOULD A PANDA PROGRAM COMPUTERS? - youtube
  • TempleOS
  • CFV: Project Portola - Alpine Linux ( in particular the musl C library ) Java Port

View Details

  • Slack sucks, and Greg can rewrite it in a day.
  • Self hosted slack?
  • Hipchat from Atlasssian
  • Matter Most
  • Electron based Apps - scourge of memory
  • ASCIIDOCTOR is based on Ruby, and in my project which uses it I get weird JRuby/Gems problems - ONLY under jenkins on linux.
  • Pupper + Ruby + Gems / Chef ^ Clojure = Devops.
  • Feedback from last show:
    • Just use Docker for rebuilding images ( thats for the image, not the source IN the image tho )
    • Programmable builds done right with Kobalt from Cedric Beust.
  • Last Week Tonight: Journalism(youtube)
  • If programming if math - we all fail.
  • JVM Language Summit 2016 Videos
    • Jigsaw - it’ll be a pain
      • ResultSet is actually in JavaSE, not EE, and is only an interface.
      • Jigsaw moves this to the java.sql module.
    • OSGi Split Packages - a nitemare
    • Value Types - worthwhile?
    • Maps turning null for both absent/empty value, but return Optional
  • Jenkins Hate?
  • Greg dislikes Jira - like really dislikes Jira.
  • Silicon Valley - Scrum(youtube)
  • Cube Drone - Scrum (youtube)

View Details

  • The 12 Factor App
  • NixOS and NixOps
  • HuntBugs
  • Tabs slower than Spaces in Firefox
  • max combined bytecode size for Hotspot to consider inlining: 325 bytes. IntelliJ-generated assertion for one @NotNull parameter: 48 bytes.
  • Gradle hate ( not Maven this time! )
    • gradle-script-kotlin
    • Kotlin Meets Gradle

View Details

Making builds by making make make MakeFiles. * Building Go From Make - bad puns and jokes, Gentoo/Debian packaging * Maven - the best of the bunch of bad things. * Separating build from dependency management. * Releases as tagged source code - binaries are just ‘artefacts of the build’ * Gophers, please tag your releases- via reddit. * Clojure.spec * Single return points in functions, single return values? * try/catch/finally/return puzzler * java(c) shims? * Project Valhalla - algebraic data types thread, Algebraic Types on The JVM * OCaml - pattern matching totally check is a warning * API Design + Are you designing for the implementer, the consumer, the documentation, or…. + XML Schema for the win. * application/hal+xml IETF spec. * HalBuilder Test Resource Repository * Reading RSS Feeds using F# Type Providers

View Details

  • Languages with alternate base numbering systems?
  • My URL isn’t your URL
  • We explain ourselves better - or do we?
  • Swiftkey Clarity keyboard written in Clojure
  • Rust / Kotlin
    • IntelliJ Rust IDE- Gitter.im chat
    • Rust Racer
    • Functional Programming with Kotlin

Libraries * Netflix Ribbon * Kotlin + funKTionale * Java + Javaslang * Clojure + Specter

Videos * Building Scalable Stateful Services

View Details

Lately it seems we've been rather busy to record, so it was good to finally get 2/3's of us together to actually record, and discuss languages from a less argumentative level ( no wild type theory arguments or build rants ) even tho some of those familiar topics arose in passing.

Most of this weeks discussion revolve around a series of videos, or posts that Greg had recently watched:

  • Go and Quasar: a comparison of style and performance
  • "Evidence-Oriented Programming" by Andreas Stefik — Strange Loop 2015
  • "Feet in Both Worlds: From Objective-C to Swift" by Andy Matuschak — Strange Loop 2015
  • Wrapping Clojure Tooling in Containers - Mark Mandel — Clojure Conj 2015

Later in the episode we discuss my recent foray into learning/using ANTLR 4 and comparing it to jparsec and parboiled.

View Details

So it's been a quiet few months in the build cycle but we thought it was about time to release a new episode, so here - enjoy episode 139 - largely unedited, unprepared, full of ranty goodness.

  1. Jigsaw is finally in Java
  2. C# is a better language
  3. Properties...

View Details

  • Java 9 Delayed by 6 months
  • Jigsaw is a Shibboleth
  • Rust Language

    • Rusty Radio Podcast
    • New Rustacean Podcast
    • Rust Screencast Series
    • Pure4j
    • PSA: PostgreSQL JDBC Driver Bugs

    • Data corruption caused by prepared statement cache

    • fix: fix invalid values when receiving int2, int4, int8 via getBigDecimal()
    • fix: fix invalid values when receiving int2, int4, int8 via getBigDecimal
    • Reproducible builds?
    • Continuous Delivery and Zero Downtime: what your architecture needs to succeed - Axel Fontaine

View Details

  • Lambdas and C++ Performance
  • JavaZone 2015 Talks

    • JavaZone 2015 on Vimeo
    • Code Tools: jmh for micro benchmarks.
    • Introduction to JMH
    • What is -XX:+UseCompressedOops in 64bit JVM
    • JDK 8: UseCompressedClassPointers vs UseCompressedOops
    • Java Mission Control ( Flight Recorder )

View Details

This “weeks” argument was recorded on the Back to the Future day, and then eventually edited and published a long overdue time later… That’s time travel.

  • Garbage Collection in Go
  • Java Garbage Collectors
  • Adding Rusts Ownership model to Java?
  • Java 9 - State of the Java Module System

    • Java 9 and Beyond with Jigsaw and JLink
    • “Layers” for supporting different versions of modules during a JVMs lifespan. Described in the State of The Modules.
    • Ceylon uses JBoss Modules - “ceylon war” generates a war file containing all of your modules.
    • maven-dependency-plugin - Dependency Convergence
    • SemVer is a fail.

View Details

  • Emanuele Ziglioli as guest.
  • DukeScript
  • JavaScript Core
  • Netbeans HTML/Java Plugin
  • XCode Ghost - Hundreds of apps infected by fake Xcode tools, Apple removing known malicious software from App Store.
  • Instances of Non-Capturing Lambdas
  • You can’t provide a default hashCode() method from an interface.
  • 80% of Haskell packages that use floating point expressions contain numerical instabilities. The Herbie GHC Plugin automatically rewrites these expressions into a numerically stable form.
  • Totally…​Gridbag
  • Tiling window managers

    • Ratpoison
    • xmonad - Haskell based tiling Window Manager
    • Mozilla XUL
    • ICFP Talk on UrWeb - An Optimizing Compiler for a Purely Functional Web Application Language.
    • IKVM.NET is an implementation of Java for Mono and the Microsoft .NET Framework.
    • Capsule - Package and Deploy JVM Applications

View Details

  • Jetbrains License Subscription

    • Jetbrains Toolbox
    • Jetbrains Lockin: We Told You So
    • Build Tool lock-in?
    • Java Evangelists being let go?
    • AsciidocFX Editor
    • JavaOne 2015
    • JavaZone 2015
    • Project Sumartra: Letting Java Applications use the GPU.

C++

  • CMake Build Tool
  • BiiCode Dependency Management
  • CPP Cast - Podcast About C++
  • Google Test
  • C++ REPL using CLANG

IntelliJ Language Plugins

  • Haskforce - Haskell Plugin for IntelliJ IDEA
  • intellij-erlang

Clojure vs Modern Java

  • Functional Java
  • Java Slang
  • Totally Lazy

Haskell

  • Lambda Days 2015 - Justin Leitgeb - A Year of Haskell

View Details

  • Fork/Join

  • DivideTask.java from Peter.

  • Purely Functional DataStructures - PDF book by Chris Okasaki.
  • JavaZone 2014 - 6000 minutes of learning

    • Under the Hood of the HotSpot G1 Garbage Collector by Bengt Rutisson.
    • Microservices and Node.JS
    • Jenkins and the dreaded Maven Plugin

    • Jenkins Docker Plugin

    • Jenkins Build Pipeline Plugin
    • Git

    • Case Insensitive .Git directory security hole.

View Details

  • JDK 8 Adoption Problems

    • Application Services not supporting JDK8 yet
    • ANTLR 3 do not compile under JDK8 - Apache Cassandra bug link.
    • Developers Are Adopting Java 8 In Droves
    • Java 8: Will It See More Rapid Adoption?
    • Java 8 adoption rate higher than expected
    • Survey Results – Java 8, Spring 4 and Spring Boot Adoption
    • Ted Neward on Java 8 adoption
    • Java sun.misc.Unsafe

    • Java Magic. Part 4: sun.misc.Unsafe

    • dzone: Understanding sun.misc.Unsafe
    • Dangerous Code: How to be Unsafe with Java Classes & Objects in Memory
    • TRICKS WITH DIRECT MEMORY ACCESS IN JAVA
    • Removal of sun.misc.Unsafe in Java 9 - A disaster in the making
    • JavaWorld: Understanding sun.misc.Unsafe
    • JEP 238: Multi-Release JAR Files
    • What to do about sun.misc.Unsafe? ( Google Doc Discussion Proposal )
    • Java Memory Model Update
    • Object Generation

    • Project Lombok

    • Jodabeans, Google Autovalue, Immutables.org,
    • CXF / WSDLs and Generated Code up the Wazzoooooo
    • Java Beans Components
    • Stephen Colebourne on the horrors The JavaBeans specification.
    • Introducing JavaPoet - the successor to JavaWriter from Square, Inc. Java Source generation library.
    • Java Source Parser library.
    • Mark’s new ADT library using JavaPoet and Jparsec.
    • Java Generics vs Kotlin generics - discussion of use-site - http://kotlinlang.org/docs/reference/generics.html
    • Java 8 Generics Changes

View Details

Join Mark, Greg, and Peter and we wax lyrically about 4k screens, driver issues, how node.js and NPM love /tmp and somehow.... just somehow - fail to rant about types or build for a change...

View Details

  • Typesafe plans to rename the company.
  • My Journey to Mars, Eclipse Mars
  • Inventing on Principle - Bret Victor ( discussion piece )
  • CodeGlance - IntelliJ Plugin ( also Code Outline 2 - more recently updated.)
  • Code Bubbles - Rethinking the User Interface Paradigm of Integrated Development Environments.
  • Stop Mocking, Start Newing
  • Project Jigsaw - Dependency Graphs
  • Using PostgreSQL as a Document Store

    • Document Store Gymnastics in PostgreSQL
    • PostgreSQL anti-patterns: unneccessary JSON / hstore dynamic columns
    • Tests with IO boundaries?
    • Kyle Kingsbury - Call Me Maybe: MongoDB Stale Reads
    • Recent Java 9 Commit breaks fsync on directories- if you follow the thread, the problem appears to be resolved ( rollback, plus rethinking ).
    • Compiling JavaScript to JVM bytecode.
    • JVM Language Summit 2014 Videos
    • JVM Language Summit 2014: Nashorn Performance
    • JVM Language Summit 2014: Optimizing Dynnamic Codebases
    • JavaScript method missing:

    • Mozilla has Object.prototype.__noSuchMethod__(ES6)

    • Simulating __nosuchMethod__ / doesNotUnderstand in JavaScript
    • OpenJDK JEP: Enchanced Class Reloading
    • Reactive Datamodels

    • OBSERVABLES AND DATA FLOWS IN ANGULAR 2.0

    • Learn you some RX for the greater good

View Details

  • Software Archictecture as Code
  • Annotations hate from Greg

    • Annotations are a poor substitute for a good language.
    • Build - Google Bazel

    • No Transitives

    • No Ranges
    • Fast builds.
    • The Full Stack Developer

View Details

It might now be long past April, a month after we recorded this, and even a week after Easter when I finally got around to editing it.  But join us for an argument - one so illegal it's been banned in 3 countries!

View Details

  • Worship Malloc - the God of C/C++
  • Futures and Promises - Wikipedia entry - Futures (1977) followed Promises (1976)
  • sequence function
  • Thread Weaver
  • Buck Build Tool
  • Pants Build Tool
  • Git Book
  • How to destroy your project (committing bug bankruptcy)
  • Linux Conf AU in Auckland

View Details

This weeks episode is being published a little later than normal - my bad. I blame Christmas and the craziness of the year end.

  • 15 years of the Apache Software Foundation
  • ATG Dynamo
  • Apache JServ
  • Bryan Goetz - The Sobering Parts of Stewardship
  • Ten Stupid Rules That Drive Great Employees Away
  • Various Ways to get Random Wrongby Cedric Beust.

View Details

  • Rice University leads $11 million effort in big data software analytics
  • The Hoogle Search Engine
  • Don’t mock?
  • Why do need modules?
  • Every Java @FunctionalInterface you want
  • Prismatic Schema
  • Whiley Programming Language - Generating Verification Conditions for Whiley

View Details

  • More CDI suckage.

    • OSGi - class loading / reloading.
    • JSR-330 - Dependency Injection for Java
    • JSR-346 - Contexts and Dependency Injection for Java EE
    • Nathan Marz - History of Apache Storm and lessons learned
    • Front End Teams + Back End Teams vs Product Feature Teams
    • Contract First REST APIs with RAML
    • Neal Ford - Functional Thinking
    • Angular 2.0 Core by Igor Minar & Tobias Bosch at ng-europe 2014

View Details

  • An introduction - cause we like you.
  • More SSLv3 Security Holes
    • POODLE poos on flaw (in SSL) as Google causes panic
    • SSL 3.0 Protocol Vulnerability and POODLE Attack
    • This POODLE Bites: Exploiting The SSL 3.0… (PDF link)
  • Legacy software - upgrades and non-upgrades.
  • Does backwards compatability lead to code smells?
  • Herding Code 198: Damian Edwards on ASP.NET vNEXT, tag helpers and SignalR
  • Java Modularity
    • Project Jigsaw - Development List Archives
    • JSR 294 - Superpackages
    • The Open Road: Superpackages
    • OSGi Alliance Blog: JSR 294 SuperPackages
  • JavaOne
    • 6 key takeaways from the JavaOne Keynote
    • JavaOne Community Keynote
    • JavaOne Presentation Videos on Parleys.com
    • JVM Language Summit 2014 Videos
  • All morn the loss of “BUCKLAME” - Auckland on T9 Mobile Keyboard completion.
  • The Problem with Time & Timezones - Computerphile
  • T CEEEE K - not TDK.
  • Java Native Runtime - A Better FFI for Java (PDF link)
  • Dependency Injection done “right”
  • Gap Lists - a lightning-fast List implementation

View Details

  • The JVM Language Summit 2014 - Videos
  • Invoke Dynamic on JRubynot enabled by default on JDK7, but it is for JDK8.
  • finalize()
    • 10 points on finalize method in java
    • Why not to use finalize() in java
  • Changes at CloudBees
  • javolution
  • node.js and testing
  • promises
  • JVM Virtualisation with Waratek
    • Apache Harmony - Open Source Java SE ( retired project ) - wikipedia on Harmony.
  • CDI
    • Weld’s stunning documentation on Providers
  • COME FROM
  • David Mapelsden’s paper on subsuming methods (pdf) from the Performance Meetup of the revamped Auckland JUG.

View Details

  • The fragmentation of Scala
    • TypeLevel Fork
    • Paul Phillips - Policy ( Scala Fork ) following on from his we’re doing it all wrong talks.
  • CDI - Contexts and Dependency Injection
    • Producers - just add arguments for producer methods for injection of dependencies.
  • Testing - what scope should you test.
  • Dealing with Abandoned projects / languages?
    • Not scala (yet), coffeescript ;)_
  • Rewriting 100 Million Lines of Java

View Details

So.... this podcast thing - it turns out you don't just RECORD episodes, you really should edit, and POST them as well....

Yes, I (mark) dropped the ball and got side tracked with life, concerts, and TV and and woefully behind in posting this ( and the next, er last ) episode - so much that I've misplaced any and all links to articles we may have mentioned in this fairly short(ish) show.

Hope you enjoy.

View Details

Sorry this episode took so long to get packaged up and built, but you know how long those type based compilations using make go....

Seriously tho, illness, lethargy, and just plain laziness got the better of me.

Enjoy a rant-free conversation on make, builds, larps, and the evil that is JBoss Classloaders....

View Details

Join Mark, Greg, and Peter for some more absurd type level rants, whilst we weren’t exactly planning on diving once again into a big argument around types and functional programming, somehow we fell afoul of one almost immediately even before we got around to introducing the episode.

  • Memory Allocation of various and classes
  • Java Memory Model Pragmatics (transcript)
  • Functional Programming

The argument starts with an argument over whether one can do “functional programming” in Java, and the difference between “functional programming” and “a functional programming language”. In this argument Greg claims that memory allocated for a class instance constitutes the state of a class — even if the class structure holds no state, and that ‘functions’ don’t allocate memory when defined.

  • Should you always pass just the bare minimum data into a function?
  • Project Jigsaw: Phase 2

The main discussion for the evening relates to an Ars Technica article about how much information you should pass in a function: a rich object structure or individual arguments.

During the discussion, Mark suggested that simply using String as the type of the argument is probably a bad design as you may want to restrict the context of the arguments, such as using a specific Password type, this ensued with an argument over deep type hierarchies (do I smell a theme here?) to which Mark countered this by (badly) describing a way of using parametric typing (and phantom typing) to improve the contract of passwords in the API.

Unfortunately the discussion got sidetracked with factories and PK7 implementations being tightly woven into the which probably detracted from any useful discussion.

  • String Variables Considered Harmful
  • Using Phantom Types in Haskell for Extra Safety
  • Phantom Types in Java

Escaping away from type theory, Peter brings us back to the real worldwith a discussion on Web Fragments and JBoss Hell…

  • Project Lombok
    • Illegal Argument interview with Reinier Zwitserloot and Roel Spilker
  • Web Fragments
    • Webjars - Web Libraries in Jars
    • Jawr - Java Web Resource Bundling and Compression
  • Farewell Node.js

Misc:

  • Hoogle! The Haskell API Search Engine - enter the signature you want and find the matching methods.
  • Git tooling sucks

View Details

  • The Prisoner
  • Pull Request Ettiquette

    • manually merge pull requests
    • Github and Tooling
    • Github dependence - distributed VCS but centralized tooling
    • Repository Templates - git-init and --template
    • Gitosis
    • gitslave
    • git fetch and merge, don’t pull
    • Git Minutes Podcast
    • Speed of Development
    • Estimates

    • Do you count technical debt?

    • Time tracking of issue times
    • testng-issue-reporter
    • Intra-repository review builds with gerrit and apache maven
    • First Ever Maven Development Hangout
    • Evolving the POM format - Hangout #2
    • Module Systems from Alex Blewitt

    • Roman Numeral Version Scheme

    • The Linux Version Scheme
    • The Solar Version Scheme

View Details

  • Garbage Collection
  • Language/Compiler design
  • Function Types
    • A discussion on whether a functions signature is a type, or not.

During this discussion we talked about the implicit currying of haskell functions and how this could lead to run-time errors rather than compile errors, however whilst I (Mark) knew what I was talking about, I missed a fundamental part of the equation - function types include the return type, so a partially applied function that doesn’t fit a high-order function is a compile time error.

So given two functions:

``` someHof :: (String -> String) -> String take3StringsReturningString :: String -> String -> String -> String

```

The first function someHof takes a function String -> String and returns a String, if we partially apply take3StringsReturningString "test" the resulting function is String -> String -> String which doesn’t match the required syntax of someHof so wouldn’t even compile.

View Details

Illegal Argument - Episode 115

  • Learning to program is hard

    • Why Programming Is Difficult, Joe Armstrong
    • Programming enviroments and tooling make things hard
    • Pharmo Smalltalk
    • Scala Days 2013 talk: Fun programming in Scala: Games, Algorithms, and Apps

View Details

  • Copyrighted APIs - Oracle vs Google

    • Oracle’s win over Google is a loss for computer science.
    • Oracle wins Android-Java copyright appeal: API code copyrightable, new trial on fair use.
    • David Pollak: Are APIs Copyrightable?
    • David Pollak: He’s not So Fine.
    • David Pollak: Lawyers and Developers, not so different.
    • David Pollak: Every one us is an Infrigner.
    • David Pollak: Yes, we do all infringe.
    • Android Gets Java 7 support.
    • Clojure Mailing List Thread: Java API is copyright protected? .
    • Concurrency - we got it wrong

    • The Node.js CPU blocking thing.

    • ORMs

    • The Server Side: Hibernate 1.0 Announced - July 06 2002.

    • InfoQ: Domain-Driven Design Using a Functional Language.
    • InfoQ: DDD and CQRS Using the Functional Language F#.
    • InfoQ: A Discussion with Allard Buijze on CQRS with the Axon framework.
    • InfoQ: Udi Dahan on Event-Driven Architecture and Loosely Coupled Systems.
    • Java 8: No More Need for ORMs.
    • Functional Patterns in Domain Modeling - The Specification Pattern, Immutable Aggregates and Functional Updates, Anemic Models and Compositional Domain Behaviors, A Sketch as the Query Model of an EventSourced System.
    • Lambda Architecture.
    • Forget big data, small data is the real revolution.
    • 10 Reasons 2014 will be the Year of Small Data .
    • How Target Figured Out A Teen Girl Was Pregnant Before Her Father Did.
    • Black Mirror | The Entire History of You | Channel 4.

View Details

A discussion of dynamic lanugages with guest Manix Cook.

  • TCL/TK
  • DynJS JavaScript expression handling
  • The 6th Underhanded C Contest is now Open
  • TestNG Repeating Tests via the invocationCount attribute
  • JavaScript and Tail Calls

    • Functional JavaScript – Tail Call Optimization and Trampolines
    • JavaScript (ES6) Has Proper Tail Calls
    • Haskell: How to use thread safe shared variables in Haskell
    • Haskell: Control.Concurrent.STM.TVar - Transactional variables
    • Java: Pluggable Static Analyzers
    • Java: ThreadSafe static analysis tool for Java concurrency: now with command-line invocation
    • Java: Simplifying ReadWriteLock with Java 8 and Lambdas
    • NodeJS: Cluster - Stability = Experimental
    • HP Labs: SmartFrog - Deployment tool
    • SmartFrog Homepage
    • Subscribe to RSS Feed The Making of Erchef, the Chef 11 Server. The Chef 11 server moved to Erlang.
    • YouTube: Punch and Judy
    • Smalltalk: RIP James Robertson

View Details

  • Algebraic Data Types
  • Jame’s Iry’s jADT generator for Java
  • Partial Functions vs Total Functions
  • Events, Services, and Static Methods

View Details

Join Mark and Greg for a discussion on code reviews, gerrit, and the recent language releases over the last few months.

  • GoWest - Simple Continuous Integration Server in Go
  • Java 8 - Function Composition

View Details

Join Mark, Greg, and Peter for the first recording of the year where we discuss some of the recent Scala rants by Paul Phillips, along with build things...

  • Pacific Northwest Scala 2013 We're Doing It All Wrong by Paul Phillips
  • Scala Collections: Why Not?
  • Intra Repository Review Builds with Gerrit and Apache Maven

View Details

A semi "solo" cast where both Greg and Mark actually agree with other other, and stretch out a discussion way beyond its limit...  a fun chat tho...

View Details

  • The proper way to use Sublime Text Minimap
  • An introduction to the Smalltalk Browser
  • The Trouble With Types

View Details

Illegal Argument Episode 107 Hauntings and Ghost Stories Dealing with the ghost of projects past…

  • Python for Delphi
  • Why I don't use a Parser Generator
  • If you're not embarrassed by your first release - you released too late.
  • Paying for tooling and/or compilers - when did we stop having to do it?
  • Netty 4 at Twitter: Reduced GC Overhead
  • LMAX Disruptor - High Performance Inter-Thread Messaging Library
  • MOVDBZ - Move-Decrement-BranchIfZero - Page fault based processing.
  • Call Me Maybe: Split-brains and The Perils of Network Partitions.

View Details

Sit back and get your pause buttons ready for an extra long, "double episode" of Illegal Argument with a somewhat embedded, disjointed interview/discussion with Ambrose Bonnaire-Sergeant all about Typed Clojure, Clojure In Clojure, and the recent Indegogo funding campaign.

  • JavaOne 2013 Keynotes
  • Java Powers The Smart Home
  • Original Typed Clojure Episode
  • Redline SmallTalk - Interview with James Ladd
  • Typed ClojureScript Playground
  • Typed Clojure prevents Null Pointer Exceptions
  • Nil Punning (Or Null Pointers Considered Not So Bad)
  • Pristmatic Schema
  • Overloading Considered Harmful
  • Evil Code of the Day: variance and overloading
  • The Future of Programming - Bret Victor
  • OpenMirage - Cloud Operating System - write Xen operating systems in OCaml.
  • HalVM - The Haskell Lightweight Virtual Machine, or HaLVM, is a port of the Glasgow Haskell Compiler toolsuite to enable developers to write high-level, lightweight virtual machines that can run directly on the Xen hypervisor.

View Details

  • Java 7u40
  • Java 7u40 breaking applets
  • Lucene issues with 7u40
  • Java 8 Developer Preview
  • DWR
  • OSGi Application Framework
  • JsonSchema
  • Literally now means figuratively

View Details

  • Designing APIs - from the REPL to Application
  • Clojure after the honeymoon ( pdf slides )
  • Database Migrations
    • dbng from Mark Derricutt
    • git-migration experiment also from Mark Derricutt
    • MyBatis Migrations
    • Liquibase

View Details

Join Mark, Greg, and new co-host Peter as we discuss Language Productivity and Estimation.

Productivity * Using Scala will make you less productive - Is Productivity King? There are many more things in “development” which will lower your productivity than the language you eventually implement the solution in. I (Mark) think I made the comment I've never seen scala as being "a more productive language", but a more flexible, adaptable, etc. language which may lead to more productivity, but productivity is WAY more the sum of intangible parts of development * How do you measure productivity in a language, and when should you expect to get results, e.g. 6 months, 1 year, 2 years - 5 years? * Is there a correlation between small, modular, artifacts and static typing? does having a contract get better with smaller service ( even if generic type contracts ) * Is static typing a fractal cost on your code base. The better you write your code the more cost you incur? * Static typing suits large method and class as you pay the tax less times? * How do you determine the productivity of a new language? * Statically typed javascript (typescript)

Estimation * How does switching languages affect how you handle time estimates? * How do you handle time estimates in general? (Mark) I’ve often seen it said rather than just estimate how long it will take, estimate how long it will take Person X to do it ( if they’re doing the work, taking into account things you know about their productivity/skill level/work load etc.) - you may know Clojure/Scala well, but with DevY is to do the work and not yet fully up to skill with the toolset..... * Development estimates are only accurate if you are maintaining velocity. What error margin and corrective multiplier is reasonable? * What methods of estimate generation are good? Planning poker can be slow, but can be a great method of generating estimates. * Function Point Calculations as a confirmation guideline * How far out do you estimate, and how does YAGNI play into this.

View Details

  • John Carmack post on Static Analysis
  • Sonar
  • What's in your stack?
  • Ops vs Support vs Devs

View Details

In this epic episode, we talk process with guest Peter Cummuskey.

View Details

Join us for a long awaited 100th episode of Illegal Argument, we talk conferences, developing your life, and how Scala and Node.JS will die.

View Details

Due to a mixture of technical problems, and a disjointed conversation, a vast majority of what we discussed on this show was lost, or just not worth making public - but still - you get to here some of our thoughts on the recent Web Framework Benchmarks blog posts.

We hope you still enjoy the episode....

View Details

Welcome to Illegal Argument Episode 98 - Typed Clojure with Ambrose Bonnaire Sergeant.

Links: * An Intro to Typed Clojure - Jim Duey * The Typed Racket Guide * Alms programming language (affine types) * Levels of Gradual Typing - part 1, part 1 * Chez Scheme flow analysis paper: Flow-Sensitive Type Recovery in Linear-Log Time * Sketch of AST types * core.typed mailing list

People: * Ambrose Bonnaire Sergeant - @ambrosebs * Brandon Bloom - @BrandonBloom * Laurent Petit - @petitlaurent

View Details

Illegal Argument Episode 97 * Auckland Clojure Meetup * Dependency Injection in Javascript * Is a function, a Function type, a Function object, or an Object?

View Details

Join Mark, Richard and Greg as we discuss Java, JavaScript, and bid farewell to a member of the show...

View Details

Join Mark, Richard, Greg, and guest Nicholas Faiz from Moneytribe as we talk about NodeJS, JavaScript, and how Clojure is the way.

View Details

  • ext.js model binding
  • Google Go - no immutability?
  • JDK 8 and JavaFX on ARM
  • Nothing is iffy with iife
  • Play 2 vs Grails
  • Cliff Click vs Rich Hickey: STM
  • TechCast #75 - Interview with Rod Johnson part 2 - we discuss the Scala Language
  • Scala vs Clojure vs Java.NEXT?
  • Predictions

View Details

  • Testing and Coverage - JaCoCo
  • RIP Bob Zale - Father of TurboBasic
  • Testacular
  • ODROID
  • Go turns 3
  • GO Serial
  • Noduino

View Details

  • JSConf AU
  • OAuth
  • Mozilla Persona
  • Javascript Macros
  • WAT vs WTFJS
  • Don't let Webkit become IE6
  • I18N
    • GNU GetText
    • IBM ICU4J
  • REST vs Message Bus's
  • US patent chief to software patent critics: "Give it a rest already"
  • Google Ingress
  • Countries / Phones
  • IP over DNS
  • Gosu JVM Language
  • Types vs Tests

View Details

Illegal Argument 91 * APIGEE REST API Design Book * Mixed Metaphor UIs? * AngularJS Directives * LinkedIn and NodeJS * Blazing fast node.js: 10 performance tips from LinkedIn Mobile * "RealTime" Node * Maven License Checking/Build Failures + Sonatype Insite + Easy Open Source Licences Management using TeamCity + Apache Creadur (used to be RAT/maven-rat-plugin) * iText / Generating PDF in Java * Is Fast better than Readable? * Iteratees for imperative programmers * Hungarian Notation + Making Wrong Code Look Wrong - Joel Spolsky *

View Details

  • catch(e) - A possible JavaScript podcast from Richard/Mark?
  • JS Conf AU
  • Code reviews...
  • Dependencies ( again )
  • OSGi ( again )

View Details

  • REST Rants
  • Heroku Waza - videos from 2012
  • NodeJS Cluster - experimental

View Details

  • Android Goes Gradle
  • android-maven-plugin from Manfred Moser.
  • Google blocked Acer from using Aliyun
  • iOS 6 Maps
  • Microsoft releases TypeScript Preview
  • Google Dart
    • Using JavaScript from Dart: The js Library
    • Running the Dart VM on Android
  • yeoman.io
  • Maven Version Ranges (again)
    • Google Plus Discussion
    • Maven Users List thread
    • Perils of Maven's Implicit Reactor ( old post )
    • Continuous releasing of Maven artifacts
  • WITH RECURSIVE queries in PostgreSQL
  • Fun with OAUTH
    • google-oauth-java
  • Security
    • How not to Wheedle
    • Wheedle site shut down indefinitely
    • Wheedle shuts site after technology fails
    • New auction site Wheedle puts passwords at risk
  • Functional Programming Principles in Scala from Coursera
  • Algorithms vs Pixel Pushing
  • Bulk downloading Maven Artifacts idea from Tim O'Brien
  • Continuous Integration and Git
  • Gerrit Code Review Tool based on Git
  • Gerrit Plugin for Jenkins

View Details

Illegal Argument Episode 87 * XKCD Click And Drag * Jenkins and the lack of version range support. + Should version ranges be deprecated? * Tesla - Maven redefined, presentation * Airbreak * Atlassian Bonfire * Write your commit messages first. * Exit interviews - giving employers a piece of your mind?

View Details

Illegal Argument Episode 86 - Pixel Shuffling * Java 7 0day * Java 7u7 * More security holes in 7u7 * How to hack weak passwords * Developer Quits OAuth 2.0 Spec, Calls It ‘a Bad Protocol * SAML and XSLT - scarily it exists * JavaScript User Interfaces are worse, or no better than old Windows UIs * No Software Patents in New Zealand

Related Google+ Threads * Combining Functional and Imperative Programming for Multicore Software * WebStorm 5.0 - Live Editing with Google Chrome

View Details

It looks like we've been having a few DNS related issues with the website and RSS feeds lately following Dotster's new platform rollout. These should hopefully all be resolved now tho.

View Details

Illegal Argument 85 * Groovy Proxies and Exceptions * Debugging - REPLS and tools * DDD via JDB * JSwat * JDebugTool * Dell Precision M4700 Mobile Workstation * Azul’s Zing JVM free for open source developer testing * GPU Support in the JVM Proposal * Multi-tenancy * Custom domain for Google Apps * Amazon Beanstalk gets Python * Chrome Packaged Apps * iOS 5.1 broke off-line storage

View Details

Illegal Argument Episode 84 * VertX, Meteor and the rise of the client spanning event bus * Is there any steam behind cloud IDEs? Latest one was Collide, but many of them are based on CodeMirror2 * Analysis of Failure - Ariane and Exceptions * Eric Burke on Giving Effective Presentations * Iterable’s and Jackson

View Details

Join Mark and fellow podcasters Craig Smith, and Craig Aspinall for a discussion on Quality.

Note: This is the second posting of this podcast as I messed up the rendering the first time - so much for quality ;-)

  • Coding By Numbers
  • The Agile Revolution
  • Coursera Online Training

Modularity * What’s cooking in Java 8 - Jigsaw Modularity * Jigsaw Delayed to Java 9

Tools * Concordion * Git SCM * Gerrit Code Review

Misc * Kanban * Uncle Bob Martin’s Clean Coders * Manifesto for Software Craftsmanship * The Zen of Mentor Development

View Details

  • Hibernate 4.0 - SQL generates cross joins
  • Maven dependency issues
  • Known issue mentioned in the compat with 2.0 guide
  • Ranges (again)
  • PHP Sadness
  • XtraNormal on Agile

View Details

Google I/O

**Netflix Operations: Part I, Going Distributed

Google Dart removes String Concatenation from the VM.

MVC is Not Suitable for Web Development

Richard Stallman: Yay! Steve Jobs is Dead!**

**If Programmers Wrote Arithmetic Books

New great advice for TDD

Google Blocky**

View Details

Illegal Argument 80 - He’s a douche * Zed A. Shaw - The Web Will Die When OOP Dies + CSS Variables land in WebKit + W3 Web Components Specification + How to Crash Github * Test Driven Language Design * Suspected JavaC bug * Synchronized vs Lock * Angular.js * Fun and Games with Grails 2 * Upgrade to JDK 7u5 NOW

View Details

Join Mark, Greg, and Richard for a fairly hefty discussion our recent Clojure Lounge hack-day, and an education lesson on what we've learnt this past 12 months.

  • Clojure Lounge discussion
  • 5 Things we learnt over the last 12 months
  • The AGPL isn't as evil as we originally thought
  • Editor wars (again)

View Details

  • Redline Smalltalk
  • Guy Steele on “How To Think About Parallel Programming: NOT”
  • Emitting JVM bytecode with Redline
  • Adopt a Class - preparing for Red Line 1.0
  • Redline Maven Plugin
  • InvokeDynamic Backport
  • East Oriented Code ( example, more information )
  • STON - Smalltalk Object Notation
    • Paper / Examples
    • Implementation
    • Literal arrays vs json vs ston vs tirade

View Details

Episode 77 - The Lisp (cons piracy) * Sacred Cows Part 2 * APIs vs impls in different packages * ‘lisp tragics’ * 2 devs down under podcast form Kai Koenig and Mark Mandel * zeromq vs rabbitmq experiences from code lounge when to generic a Map and when to not bother looked at Go today. nice.

View Details

Illegal Argument 76 * Sproutcore - DOMless ‘Blossom’ demo * Easel.js * Tween.js * Link to Sacred Cows post from Josh * JavaScript Source Maps * The Lisp Curse * Clojure Protocols * Codelounge * Tap Keyboard * Travis CI talk on Changelog * Startup Infrafructure + Git + Git-flow + Gerrit + Jenkins + Gitblit + Vagrant / Pallet + Maven + Nexus + Bitbucket + MySql, IBM Developworks podcast on InfiniDB

View Details

Illegal Argument Episode 75 * Why you should leave Microsoft Article makes some very valid points IMHO, if ⅔ of the source you develop is non-core, why not make it open source? * How do you cope with Build which has to run integration tests where the database, user & content is created and destroyed within the build run? * Perl moves to Git * Meet The Web… with Google. * Mark’s bust