Swayzeevery jvm implementation is platform specific
Swayzeso perhaps pick a platform as well
SwayzeLedev: we can't wait to hear it
* NeXeN joined #java
* NeXeN joined #java
* troydm joined #java
* zorone_ joined #java
* kathadris joined #java
deeboany tips on tools to generate load on a rest api locally? i've used stuff like gatling in the past but need something that's way simpler and faster to get running
Swayzek6 ...
* NeXeN joined #java
[twisti]deebo: i think jmeter is the gold standard for that
deebojmeter is pure satan
deebogatling is just half satan
[twisti]really, my bad then
[twisti]never used it myself, its just always the first thing i hear
deebounless it has changed much, it's only suggested by people that want to be paid to maintain the tests, same as with robot
* MikeBux joined #java
* NeXeN joined #java
* kcomhnall joined #java
dreamrealjmeter IS the gold standard although tehre are others
dreamrealit depends on what you're doing
dreamrealjmeter's complex because it's freaking THOROUGH and you can build sequences in it, ideal for a REST application: do this, wait for that, respond using data from "this" like that... invoke these methods, etc
deeboyeah our previous gatling tests did that, but they require as much upkeep as the applications themselves, should move back to server geenrated stuff for ease of loadtesting
deeboguess i'll just pick production request rates from dynatrace and try to approximate the same with gatling
dreamrealUnderstood yet the problem is that nothing is free
dreamrealyou could do it yourself with robot, with plenty of other tools from other languages, too, but you end up programming the load testing tool
dreamrealwhat jmeter brings isn't "avoid programming the load testing tool" but metrics and tools to take away bits your load testing tool will have to write. You still have to write the rest of it, unless your goal is "hammer this URL with this data" over and over again, which MAY be your goal, but if that's it, what are you waiting for? ab can do it, but so can jmeter, in less time than it took to write
dreamrealthis comment.
Tenchiback in the day there was a java-based closed-source tooll from a company in sweden called PureLoad
Tenchiit was really nice
dreamrealTenchi: heh, he's complaining about OPEN SOURCE being too expensive and you offer a commercial product?!
Tenchii dunno if even exists anymore but 15 years or so ago it was what i preferred
dreamrealI mean, postman can do it too
Tenchifor all i know the company went out of business and they released it as opensource, i dunno
Tenchidoesn't look like they opensourced anything heh
Tenchithey were really nice guys though... reminded me of the karl and magnus caliber of people
Tenchi馃榿
dreamrealthat's... uh... pretty high praise
dreamrealmagnus is still one of the best programmers I've ever known
Tenchiwell, i'm referring more to how nice they were in the swedish/scandinavian kind of way more so than their talent
Tenchii really liked the software too, it was really nice in that you could build functional tests and then use the same tests with the load generation thing
dreamrealhrm, I'm not sure if I recall them being "nice" in any particular way, I thought they were efficient
Tenchiit handled distributed load testing very well
javabotdreamreal's title: "The AI Dilemma | bytecode.news"
dreamrealoh, oh. Someone's sugesting moving lombok to gradle. :D
dreamrealAND cutting off support for pre-17!
deebofew years ago i wrote a tool that analyzes our logs (we used to log bodies for http requests too) and just replayed the same load with the same timing to a local service, that was the bestest
* michele joined #java
deebonow i just need some load that resembles real load to profile a services startup so i can see if there's something to warm up before accepting traffic
* michele joined #java
dreamrealI just recoiled a lot inside
dreamrealyikes
dreamreal:D
dreamrealdeebo: if it's that simple, why not ab?
deeboneed random data etc to not just hit caches etc
dreamrealhey, then, or wrk, or dumb ol' jmeter
dreamrealheh: Sentiment for irc://libera/%23java: -1/10 | Intensity mod | Themes: load testing tools, JMeter debate, tooling complexity | Summary: Calm technical exchange about REST API load testing; mild friction over JMeter complexity vs. simplicity, but cooperative problem-solving prevails.
dreamreal(from nevet, the sentiment operation)
deeboin one of our services the issue was internal locking in jackson, for some rason this seems to be different, but couldn't pin point the reason with tests we have available
dreamrealinternal... LOCKING? Um, jackson's marshalling is pretty thread-safe, but it's also pretty normal to build mappers on the fly, they're pretty light, and jackson3 emphasizes that point
kcomhnall+
deeboyep, we hit locking in jackson (de)serializer creation when swapping load from x old isntances to x new instances
deebothere was also some jdk bug with lock contention for ssl certificate loading or something weird
dreamrealThat'd be fascinating to work out. Have you looked at jackson3? (Not a recommendation, this is a query. That migration is not trivial and I know it.)
dreamrealthe security cert stuff is outside of my wheelhouse: I have NO insight there
deebowe're on jersey, which doesn't do jackson3 yet
dreamrealI don't understand - how would jackson locking affect you if you're using jersey?
deebothat's what spring boot uses for json in jersey
dreamrealoh, sorry, dang, catching up, been busy. Context switch failure on my part, you're right
dreamrealI was thinking you were using an implementation of the controllers that used the JVM's apis, not a good one
dreamrealwhich version of spring boot are you on?
deeboi just added a task that goes through jersey resources, finds body and response classes and then calls .writeAsString(new ResponseType()) or .gimmeObject("{]", BodyType.class) for all non primitive/colelction etc types before accepting traffic
deebomostly latest v3 and one service on v4
dreamrealhmm, that sounds like a pain. Good on you for finding a solution, at least. So it sounds like it was doing a failure looking up reflected types? That's... pretty awful to find
deeboyep the (de)serializer caches internal to jackson are synchronized
deeboso you get a bazillion requests for FancyObject on a cold instance and everything slows down
* odinsbane joined #java
dreamrealYeesh, yeah, although I'd hope it was smart enough to do it cleanly once. C'est la vie.
dreamrealIt'd be interesting to see if jackson3 had the same problem (again, not asking you to, that's a lot for a rando on IRC to throw out.)
* Munnu joined #java
* kcomhnall joined #java
* michele joined #java
* michele joined #java
* baier joined #java
* michele joined #java
* CodeGeek!~codegeek@about/java/CodeGeek changed the topic to: Welcome! || Read Channel Rules at https://javachannel.org/ before participating. || Paste limit is two lines; ~pastebin lists options. || No applets, please. || Minecraft, Android, and Javascript all have their own channel. || You are being logged.
* nevet joined #java
odinsbaneIt's nice how helpful the new compilers are now, but a shame nobody will see the better messages.
dreamrealhahaha
dreamrealwell, the LLMs will, and they can use the information well...
dreamrealodinsbane: ++
nevetodinsbane now has karma of 1.
dreamrealWhen's the last time you SAW a compiler error message, though? When you said that I was thinking "yeah, they're... wait." I haven't used a compiler to check syntax in a LONG LONG TIME - it's the IDE showing me errors in a window, not a compiler emitting a message.
odinsbaneI'm trying to learn rust. So I'm doing it from the command line a bit.
Paray'all need some clojure compiler exceptions in your life
ParaThey make almost zero sense.
ParaOver time you learn that specific form of error means specific problem.
dreamrealPara: that feels like the old C compiler error message dance :D
Para(it used to be a lot worse than what it is today, but it's still ridiculously bad in comparison to everything else)
dreamrealLLms are interesting: It'll be ... fascinating to see how the industry learns to work with them. One project I'm watching has like 8 *releases* a day on github... and the tests? ... what tests?
odinsbaneEven llm's dont like writing tests. Maybe that will be left to the users.
dreamrealI'm considering asking about testing methodology but I don't want to sound snarky about it, like "hey, would this release cadence be any better if you had even one test?"
dreamrealI don't care what the LLM likes to do, I demand tests and coverage is part of my acceptance criteria
dreamrealWhen I use an LLM, it's "write a test that replicates this failure" and THEN fix the failure
dreamrealtedious for everyone, yes, but it also prevents feature breakage down the road because the LLM can't just say "oh I fixed it" when it broke other stuff, and I ALSO don't allow it to remove or evade tests, a REALLY nasty habit the LLMs have
dreamrealthey're better about it now than they were but that might be something they've learned for ME (in my configs) becasue I hammer the point so hard
odinsbanedid you make a 'skill'?
dreamrealno, I'm just using the agent commands so far
* kcomhnall joined #java
dreamrealI'm not sure what making a skill entails, but that sounds useful
* kento2 joined #java
dreamrealhmm, interesting
dreamrealI should make some skills!
dreamreal(I have yet to hit token limits for some reason, so it hasn't really come up, but I can see it.)
fizzie"It's a skill issue" has an entirely new meaning in this day and age.
dreamrealfizzie: ++ hahaha
nevetfizzie now has karma of 1.
dreamrealodinsbane: ++ thanks. I might start seeing if I can make some skills out of this - my directives are pretty decent but are probably too broad. I set up an MCP server but a skill has a different focus; I wonder if the MCP server can have an attendant "here's how to get the skill locally" as well.
nevetodinsbane now has karma of 2.
deeboi used my company provided github copilot tokens on opencode creating a tool for personal use i needed, just talk to it like a product manager and keep making chaneges and committing when things work
deeboit's like a junior dev that can read documentation insanely fast, but some times doesn't know why stuff doesn't work and you might need to point out the bug for it to get fixed
kcomhnalli'll admit - I totally forgot my password to my pro github account.
dreamrealdeebo: yeah, that's how I sort of use them too
deebodefinitely useful, hard to say about how much in real work, especially with at least my current client restricting tooling used quite a lot to at least try and minimize leaking stuff
javabotodinsbane's title: "GitHub - bytedance/deer-flow: An open-source SuperAgent harness that researches, codes, and creates. With the help of sandboxes, memories, tools, skill, subagents and message gateway, it handles different levels of tasks that could take mi..."
nevetGitHub - bytedance/deer-flow: An open-source SuperAgent harness that researches, codes, and creates. With the help of sandboxes, memories, tools, skill, subagents and message gateway, it handles different levels of tasks that could take minutes to hours.
dreamrealleaking stuff is an interesting problem: the problem for me is trust, not leakage. It's not like the LLMs can go "ooo, user foobaricus just worked on code for this, i'mma integrate it into the training model, now everyone has it!" on the fly
dreamrealbut the vendors CAN serve as MITM vectors
deebothey have to be eating the code they get as context to get an edge for future stuff, i guess copilot at least tries to promise big businesses that they wont train stuff on the contexts or something
* skinkitten joined #java
dreamrealthey all do, that'd be a breaker for any sane environment
odinsbaneHow big of a model do you need to access a codebase though? Could you just use a small local model for consuming your own api.
dreamrealThat question doesn't quite make sense
dreamrealmodel sizes don't affect *access*
* michele joined #java
* GreenResponse joined #java
odinsbaneYou could query a small model that has access to your code. Small, just because your local instance might not be up to par with a cloud based solution.
* rapmoc_ joined #java
* rapmoc_ joined #java
* rapmoc joined #java
dreamrealYeah, but the model size isn't part of *access* - it only affects capabilities
* stewi joined #java
* sponkz joined #java
odinsbaneI was thinking leaking meant uploading proprietary code to a hosted LLM. So a local model would prevent the host having any access to your code.
odinsbaneI was playing with a 0.8b model and, it was funny but didn't produce anything usable.
* jamezp joined #java
dreamrealyeah. Small models don't have enough data. And uploading proprietary code IS an issue, but where does it GO? It's not like the LLMs store everything THERE - they don't. but MITM roles mean they CAN.
deebosmall models are ok, e.g. the new qwen 3.5 models, but you still need memory for the context so it's quite nontrivial to run properly at home on consumer hardware
deeboi bought an intel b50 for testing this stuff and they sure don't make it easy, maybe could get something useful done with two intel b60s
nimajeseems like llms store stuff whereever, read from an admin of a pastebin site that llms try to upload sensitive information there
dreamrealnimaje: they normally don't
dreamrealdeebo: mac mini
dreamrealMy m1 actually does all right even on constrained models
ParaI kinda wish there was more about SLMs.
ParaJust...more. Hype, discussion, development, articles. Everyone's just riding the Large wave.
* ForeverDreaming joined #java
dreamrealterm confusion, mostly
dreamrealthere are models that would comply with that definition for the most part - heck, the markov data could be "an SLM"
dreamrealand many SLMs would be as useful
Parayes
ParaLike...house automation SLM, doesn't need to know how to create a TypeScript frontend but does need to understand difference oven and door.
dreamrealwell, that's certainly doable too: imagine an LLM that used... kotlin and java. And that's it.
ParaAnd fallback to JVM SLM which knows everything but the programming languages.
dreamrealWhy not include the JVM-related content?
ParaMainly to discourage "You can also do this awesome trick!" type of foolery.
dreamrealheh
cheeserbut wait there's more!
dreamrealThe biggest problem with java and the LLMs is the preponderance of tutorial content that avoids actually DOING THE THING. They're all "step 1: do this... step 3, profit!" and step 2 turns out to be kinda important.
dreamrealthat's why my books start with tests and end with tests: "here's the full thing, period."
dreamrealand why anthropic is gonna owe me money soon :D
ParaI almost managed to coax "include a screenshot of current state" to our bug ticket DoR:s last week.
* jamezp joined #java
deeboi want "if the 16 char long identifier is in a screenshot or an .eml attachment i can't copy paste it and the ticket is invalid"
deeboalso if you can't link me a definition of how it's supposed to work, it's not a bug, but a feature request :)
dreamrealdeebo: yeah, I piss off a lot of customers and fellow coders by doing silly things like saying "what's it actually supposed to DO, a handwave isn't good enough"
dreamrealif I can't write a test that replicates the failure, and I can't write a test that validates a success, I am stamping it "done" and moving on
dreamrealI get a lot of pushback like "you didn't do anything, how can you say it's done" and my response is "you can't say it's not, so it is."
dreamrealAll four users will be very disappointed. But I mean... javafx, helidon. That's... it.
DoofusCanadensisthey're pulling javafx back?
dreamrealI think they're saying javafx WILL be supported... whatever that means
ParaAnd we'll be happy for it?
dreamrealI wouldn't know, I'm just confused what the intent is
dreamrealthe javafx channel on reddit's like "oh they remembered us, we're real woooooooOOOOOOOOOO" as they fly into the air like a balloon that's been punctured