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
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
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
Episode 175 - 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
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: Azure Devops is unable to pull from patch-sets, due to the private rev nature of Gerrit 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?
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
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 Introduction00:00:59 Lockdowns and Freedoms00:03:45 Java 17 and 18 Releases00:04:47 Java 17 Uptake00:05:37 Misconceptions of The Module System00:07:49 Spring 6 and Spring Boot 3 move to JDK 17 Minimum00:08:56 Maven Enforcer Plugin: Extra Enforce Rule - Enforce Bytecode00:11:40 Java LTS Releases Switching to 2 year cycle00:14:13 Quality of Life Language Changes In Smaller Releases00:16:00 Java Version Migration00:20:11 Is The Release Process Broken00:21:10 Reproducible Builds00:22:32 Maven Artifact Plugin00:24:36 Introducing JReleaser00:28:07 OSX Package Managers vs Tarballs00:29:23 JBang00:31:10 JReleaser Deployment Targets00:33:55 Replacing Ansible/Puppet?00:41:25 JRelease for Non Java / C++ Projects00:42:10 Live at HEAD00:44:34 JRelease for Non Java / C++ Projects (cont)00:51:15 JReleaser Configuration Formats00:54:22 Upcoming 1 Release and Potential Renaming00:58:27 Lombok and 1.x01:01:21 SDK Man releases via JReleaser01:04:04 Does JReleaser release itself?01:06:10 Rolling Releases and Announcers01: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
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)
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
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
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 .
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
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.
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.
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
Topics Fibre's are dead - long live "Virtual Threads" Undelimited continuations are not functions R2DBC 0.8.0 goes GA - Reactive database clients for Java RUST: Shipping a compiler every 6 weeks User reported stable regressions Bisecting Rust Compiler Regressions with cargo-bisect-rustc Microsoft: We're creating a new Rust-based programming language for secure coding https://www.reddit.com/r/rust/comments/e5040i/microsoft_creating_new_rustbased_safe_language/ https://www.reddit.com/r/rust/comments/e5kjyr/more_info_on_micrsoft_moving_away_from_rust/ I.e. they're not, this is just another research language. MS is however still heavily looking at rust, and employing rust developers. Unleashing the (Armed) Bear past Java 11 Using Jlink to shrink your webservices… including nativeimages in the followup tweets Style guide for Text Blocks Lambda performance in node - regressions: Version 13.5.0 -- Questionable Changes? "My testing indicates that the for...of construct is about 60-70% slower as opposed to a classic for(let i; i; i++)." JEPs for JDK 14 JEP 305: Pattern Matching for instanceof (Preview) was proposed to target. JEP 343: Packaging Tool (Incubator) was proposed to target. JEP 345: NUMA-Aware Memory Allocation for G1 was integrated. JEP 349: JFR Event Streaming was integrated. JEP 352: Non-Volatile Mapped Byte Buffers was targeted. JEP 358: Helpful NullPointerExceptions was integrated. JEP 359: Records (Preview) was integrated. JEP 361: Switch Expressions (Standard) was integrated. JEP 362: Deprecate the Solaris and SPARC Ports JEP 363: Remove the Concurrent Mark Sweep (CMS) Garbage Collector was targeted. JEP 364: ZGC on macOS was targeted. JEP 366: Deprecate the ParallelScavenge + SerialOld GC Combination was proposed to target. JEP 367: Remove the Pack200 Tools and API was targeted to JDK 14. JEP 368: Text Blocks (Second Preview) was proposed to target. Thread suspend/resume are now deprecated for removal (build 21) Added LuxTrust Global Root 2 Certificate (build 24) NUMA JEP mentioned last week now has an Implementation merged for "NUMA-Aware Memory Allocation for G1": http://hg.openjdk.java.net/jdk/jdk/rev/fce1fa1bdc91?revcount=1000 http://hg.openjdk.java.net/jdk/jdk/rev/df6f2350edfa?revcount=1000 http://hg.openjdk.java.net/jdk/jdk/rev/6530de931b8e?revcount=1000 New JEPs JEP 370: Foreign-Memory Access API Draft JEP: Elastic Metaspace
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
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
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
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”
Anantha Subramanian
tribute xx