• 13 Posts
  • 18 Comments
Joined 1 year ago
cake
Cake day: June 16th, 2023

help-circle



  • I do think there’s a gap between hibernate and jooq that needs filling. I love the ease of querying for relational data with hibernate, along with support for validation annotations. On the flip side I love the jooq dsl, code gen, typed queries, and the flexibility you get from it, but there’s really no easy way to plug in validation annotations and querying for nested relational data requires a lot of effort. Based on a brief look of the docs, it seems like this library intends to fill that exact niche. Interested in checking it out when I get some time




  • austinMtoGolangBackward Compatibility, Go 1.21, and Go 2
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 year ago

    The backwards compatibility promises of Go definitely makes upgrading a breeze. Java is pretty much in the same boat (except it maintains bytecode compatibility instead of source). When working with languages that don’t offer these promises it’s always a nightmare to upgrade to newer versions.




  • I had never heard of Phaser, but it looks pretty cool. I just read Baeldung’s Guide to Phaser and correct me if I’m wrong, but doesn’t it kind of seem like a race condition (it could just be how they use it in the examples)?

    class LongRunningAction implements Runnable {
        private String threadName;
        private Phaser ph;
    
        LongRunningAction(String threadName, Phaser ph) {
            this.threadName = threadName;
            this.ph = ph;
            ph.register();
        }
    
        @Override
        public void run() {
            ph.arriveAndAwaitAdvance();
            try {
                Thread.sleep(20);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            ph.arriveAndDeregister();
        }
    }
    

    then

    executorService.submit(new LongRunningAction("thread-1", ph));
    executorService.submit(new LongRunningAction("thread-2", ph));
    executorService.submit(new LongRunningAction("thread-3", ph));
    

    if ph.arriveAndAwaitAdvance(); is called before all of the LongRunningActions are initialized, won’t it proceed before it is supposed to?



  • assuming you propose the idea to migrate to kotlin, it would go something like this:

    • talk to your other developers and see if they feel the same way. get other developer buy-in
    • propose the idea to management with reasons why it would be beneficial
    • management now either buys in and approves kotlin usage, or says it’s not worth it

    if management says yes, you now have like 20 people who have vetted and agreed with the idea. once you start writing Kotlin it’s not like EVERYTHING is all of the sudden Kotlin. it’s an iterative process, and hopefully you have test coverage. you can even re-use your existing java tests since the languages are interoperable. Assuming you follow a normal development process, the odds of a catastrophic bug coming out of nowhere to cause millions of dollars of losses wouldn’t even cross my mind.

    that being said, assuming the current code works decently well, management will have no motivation or reason to approve a total rewrite in a new language. it’s more likely that they will only approve starting to trickle in kotlin for new projects or features, which even further reduces the likelihood of a catastrophic bug happening.





















Moderates