loader from loading.io

Episode 174: plz.review

Illegal Argument

Release Date: 07/19/2022

178: Java 22 Released! And I Am The Technical Debt show art 178: Java 22 Released! And I Am The Technical Debt

Illegal Argument

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 Java 22 Released Tomorrow JDK 22 Release Notes: JavaFX Release Notes: Does Java 22 Kill Build Tools? Update on String Templates (JEP 459) (most likely to preview in 23) — First preview feature to be unshipped and reworked entirely? Misc released — This is the first release that requires Java 17! Welcome to Claro! — The Claro Programming...

info_outline
New Year, Old Year? What Year!?! show art New Year, Old Year? What Year!?!

Illegal Argument

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 Golang [Go 1.21 Release Notes - The Go Programming Language]( (soon to be released) Misc Versioning non-project repositories (config, pipelines) Semverbot looks good, but I found a bug: DORA - Software Design and Maintainability Dagger Java SDK examples:

info_outline
176 - Better Late Than Never? show art 176 - Better Late Than Never?

Illegal Argument

Non-tech Music Banter A litany of languages and their passing, software archaeology and the issues of adopting new languages? JDK 21 to be released next month: has a good overview. 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...

info_outline
175: 18 And Life... show art 175: 18 And Life...

Illegal Argument

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 listed in the show notes, as part of GerritForge there's for online hosted Gerrit+GitHub...

info_outline
Episode 174: plz.review show art Episode 174: plz.review

Illegal Argument

Reddit Post: Blog Post: YouTube Introduction Video: Website: 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 ...

info_outline
173: The Red Zone show art 173: The Red Zone

Illegal Argument

Catchups Happy New Year! Log4j Issues, fall out, ranty commentary And now : Java Stuff Java 18 set for March 22, 2022 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: are already available Continuations - merged. - Early Continuation API sample I believe I read somewhere are coming out of the incubator soon - is an interesting example. - it hurts just reading this, let alone the reddit comments Other Stuff

info_outline
172: Separating The Release From The Build show art 172: Separating The Release From The Build

Illegal Argument

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 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...

info_outline
171: Breaking (up) The Build show art 171: Breaking (up) The Build

Illegal Argument

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 Greg Amer Guests 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...

info_outline
170: The UI is Broken! show art 170: The UI is Broken!

Illegal Argument

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...

info_outline
Don't Tweet Non Truths show art Don't Tweet Non Truths

Illegal Argument

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 Rust Programming Nix Package Management ]()

info_outline
 
More Episodes

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.
    • 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?