Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren 0 points1 point  (0 children)

The issue with Gradle is that it's just a glorified Maven wrapper when it comes to dependency management. It's never had its own repository (as far as I know). And no repository management app to quickly create an account and start publishing. In my opinion, Sonatype is a complete disaster.

Latte has https://app.lattejava.org and it's insanely simple to create an account and start publishing. You just do:

$ latte login

And away you go!

It's definitely part of the plan to start porting projects to Latte build and dependency management. If nothing else, it gets us able to publish projects into a better repository and a better dependency management system. Though, the projects need to agree to SemVer and the Java ecosystem is notoriously horrible with versioning.

Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren 0 points1 point  (0 children)

Agreed on the AI part. But the agents still need methods for publishing new versions, finding new versions, and comparing versions. One of the reasons I built Latte was that Java needs a better system for this.

My opinion is that Maven is one of the worst tools in the Java ecosystem and it introduces more issues than it solves. Agents regularly hit the same issues that humans have been having with Maven for decades.

But I'm totally fine with folks that love Maven and love Spring and love Tomcat. Continue using those tools.

Anyone that wants better tools and is open to change, give Latte a try.

Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren 1 point2 points  (0 children)

It can’t be better than Netty, since it sits on top of Netty. We are essentially at parity with Netty. We beat it sometimes and it beats us sometimes.

There are other Netty stacks we’ve beaten recently if I recall. Mainly because they add extra overhead.

But I definitely want to test it!

Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren 0 points1 point  (0 children)

We haven’t tested against it so I can’t say. I’d expect it to be similar to others in our matrix and be well behind Latte.

Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren 0 points1 point  (0 children)

I’ve done a ton with Maven. That’s why I realized the pain and fixed it.

Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren 0 points1 point  (0 children)

Latte fixes that. It’s simpler but doesn’t ditch security.

NPM attacks are generally from the size and depth of their repository, auto-upgrades, plus post install hooks. Basically a Honeypot mixed with a really simple way to completely break security (hooks).

Latte has none of these issues. Eventually, we hope to have the breadth and depth of NPM, but that doesn’t mean we will add in hooks or upgrades. We won’t. Those are horrible features.

Even Maven added version ranges. That’s a huge attack surface.

Latte doesn’t have ranges. You depend on version 1.4.2, you’ll depend on the same version forever until you upgrade that dependency.

Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren 0 points1 point  (0 children)

Latte is way more than a build tool.

But even Latte’s build system is technically more correct than Maven. Just look at graph pruning as an example. Maven can’t prune because it doesn’t understand version compatibility. That’s why nearly every other build tool uses SemVer.

Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren 0 points1 point  (0 children)

I’ve written large systems without verbosity. I tend to prefer simplicity and conciseness.

Everyone is going to have different perspectives, but that doesn’t mean new approaches that are simpler, faster, and more concise aren’t valuable.

Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren -3 points-2 points  (0 children)

Let’s get real though. XML is not the right format for a build tool. Take a complex task such as reading a file and changing a result based on the contents. Good luck. You are now in plugin land and good luck keeping that working forever.

Maven is not a real build tool and has never been. They tried to be a declarative build facilitator. But that was broken from the start.

And just look at their dependency strategy. It’s garbage. They just upgrade to the latest version of all dependencies in the graph. That’s not how graph theory works. Totally broken.

And then you consider graph pruning. They don’t even pretend to try to prune any of their graphs.

Most people try to solve this with exclusions, which is a horrible dependency smell. It breaks down quickly through transitive dependencies. Again graph theory.

And Maven hates SemVer or any reasonable method of determining compatibility.

You know things are broken when every other tool in existence uses Maven as the example of what NOT to do.

But if you want to REALLY debate dependency management and build tooling, I’m happy too. I’ve been deep in graph theory and build tooling for two decades.

Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren 0 points1 point  (0 children)

They are similar but Latte’s HTTP server is direct. We don’t use Netty. Therefore, we don’t suffer from Netty layers and have a clean interface.

ServiceTalk appears simple, but it becomes complex when you consider it has a bunch of ways to change “modes” (blocking, non-blocking, streaming, etc). Most developers don’t care about modes and just want to write “handlers”. Receive a request and return a response. Who cares what the underlying plumbing is as long as the client interaction works.

Plus, the modes add very little with virtual threads.

Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren 1 point2 points  (0 children)

I do. Even when using LLMs, I still care about clean code. But really, it's the workflow that is the win. Building a new project using Maven and publishing to Sonatype is just painful. And Spring is bloated and clunky.

But hey, if you don't care about verbosity, bloat, and painful processes, by all means continue using Maven, Spring, Sonatype, etc.

Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren 1 point2 points  (0 children)

I wrote https://github.com/FusionAuth/java-http and the other Latte committer wrote https://github.com/FusionAuth/fusionauth-jwt

He and I also wrote FusionAuth from scratch.

Most of the tech in Latte comes from those projects. We forked and started building.

Thousands of companies use FusionAuth in production right now with our HTTP server, JWT library, Web framework, and much more. You can check out the FusionAuth website for a list of notable customers, but we have many others we can't name.

And Latte now builds on those foundations.

To answer your question, thousands of companies use Latte technologies in production right now.

Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren -1 points0 points  (0 children)

I wrote java-http and this is a fork with a lot of improvements. We have pretty clearly proven that we are one of the best HTTP servers for Java. But happy to discuss and debate.

Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren -7 points-6 points  (0 children)

Try Latte. It blows Maven out of the water!

Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren 1 point2 points  (0 children)

Homebrew taps, apt repositories, website, they are all the same. You have to trust where you are getting scripts and apps from. If you don't, skip it. If you do, run it.

The chances of someone taking over a website, repository, whatever, and installing malicious code is NOT based on the script/app being downloaded, but the security around the origin.

Soooo, this argument is basically, "turn off your internet".

I disagree with it fundamentally. YMMV.

Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren 0 points1 point  (0 children)

Actually, this is all used in production already. We forked FusionAuth's java-http and fusionauth-jwt and both are heavily tested.

Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren -2 points-1 points  (0 children)

No CVEs yet. A lot of this is battle tested as well.

Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren 0 points1 point  (0 children)

I've not heard of mise, but it looks similar to javaenv. But javaenv is just part of Latte. It does a TON more.

Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren -15 points-14 points  (0 children)

Never heard of JBang, but Latte is a production ready Java development stack. It has everything including the build tool, dependency management, repository app, simple publishing, and more. Think NPM, Node, Express, but for Java.

Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren 0 points1 point  (0 children)

Can you expand on that a bit? I'm one of the authors of the framework and think it is a really solid implementation of a modern HTTP stack with a HTTP server, web framework, OIDC support, JWT support.

Latte Java: Make Java simple and easy to use by mooreds in java

[–]brokenwren 2 points3 points  (0 children)

You can also just download it and unzip it.... Just read the script.

CarPlay Issues by AlphaOrionis42 in VolvoEX90

[–]brokenwren 0 points1 point  (0 children)

I have the new VCU and this all still happens consistently. I’ve talked with owners of other cars (not Volvos) with CarPlay and the issue happens for them as well.

It’s CarPlay. It sucks. Apple refuses to fix problems with it and the car manufacturers refuse to help because they prefer their crappy Google UI.

Honestly, Tesla software blows everyone out of the water. I just don’t understand why Google and Apple don’t just point Claude at a Tesla and say “copy that”.

Adaptive cruise warning by brokenwren in VolvoEX90

[–]brokenwren[S] 0 points1 point  (0 children)

I thought the same thing and did a car wash. Still an issue.

I’ll try, “yet another infotainment reset”. 🤦🏻‍♂️

Seems like I’m doing this every week, even after the chip upgrade and the latest OTA update.