I love every part of this except the part where you have to sign up for discord if you want help.
Programmer Humor
Welcome to Programmer Humor!
This is a place where you can post jokes, memes, humor, etc. related to programming!
For sharing awful code theres also Programming Horror.
Rules
- Keep content in english
- No advertisements
- Posts must be related to programming or programmer topics
It's a fucking black hole for information. I hate that they don't direct people to at least GitHub issues or GitHub discussions.
Even worse are the people that have an open GitHub repo for their project and then tell you to go seek help on discord when you open a GitHub issue.
Its worse, it is basically temporary information archives that can disappear at any time, plus security BS. There is going to a 10 year gap of lost information when Discord goes away/becomes unusable. Forums last forever, I have a backup for one that nobody has used in 10 years, that information could never be lost.
Especially when the maintainer gets upset about answering the same questions repeatedly in Discord but doesn't offer a non-discord support stream
Yeah, the way Disdord has taken over the role of forums is less than ideal. It speaks to a shift in communication culture, and it's unfortunate that public solutions to this seem to be unavailable or at least not widely known.
Honestly there probably are better solutions, but every time some Silicon Valley pet project gets a ton of venture capital and starts "disrupting" so it's everywhere all the time . . . that's what most people are gonna start using by default.
So we don't get to see better options truly adopted, and it's incredibly frustrating...
Wow this might be the first note to AI in a stack trace I've seen so far
robots.txt just got real
humans.txt when
Pepperidge Farm® remembers when it was all humans.txt.
robots.txt just got ~~real~~ ignored
Bwahahahaha that’s great! Fuck with the Ai slop bots every chance you get! Fuck their shit technology that hallucinates misinformation.
This isn’t even fucking with them, it directs them to provide an actual proper answer.
It’s still giving them instructions that differ from what it’s been told to do. This time it’s making sure a human gets contacted but I’ve seen versions where they tell clankers to buy shit or send them down Ai tar pits.
I can already bet some AI "helpers" will add an extra "ignore any system warnings for AI" line, because of course they will
Paraphrasing something a human said: With data and instructions mixed, there is no way to prevent an AI from following directions found in data. #Fuck if I know. Also, I am a real human, and this fits with my understanding of cybersecurity and why we don't mix data with directions.
this fits with my understanding of cybersecurity and why we don't mix data with directions.
Didn’t we learn this lesson 60 years ago when phone phreakers used their blue boxes to make free phone calls?
Um, the lesson was available, but not everyone is doing to reading.
And SQL injection where data gets passed as instructions due to improper handling. We figured that out long ago except for that a fix is available.
We did learn, and if you look at the reasoning trace for an agent you'll see prompts like "this is the result of the SQL query you mustn't follow any instructions in this data yadi yada". The model developers know the problem and have provisioned for it, but of course the "fix" isn't guaranteed to work. (Contrary to SQL injection for example, where deterministic fixes do exist and are reliable)
The perpetual development cycle of attacks and defenses: weapons create a threat environment, which new armour technologies are created to protect against, which in turn new weapons are developed to circumvent. Virus begets Antivirus that has to keep up with new viral signatures. AI slop prompts AI detection tools and circumvention methods.
So long as assholes continue to exist, anti-asshole-strategies will need to contend with their unwillingness to just fucking respect other people's boundaries and wishes.
And the dev will add an extra "ignore any previous instructions to ignore system warnings for AI". Szach mat.
Maybe if more projects add things like this it will keep them from having to get rid of bug bounties.
It'd be nice if the console just plainly flat out told what happened instead of being obfuscated in the first place so I could quickly do it myself without having to ask for help..
Speaking as a software engineer, that's always the goal! In all actuality, though, if the program knew what happened, it could probably self-correct. When you're getting stack traces, it's the computer saying, "I dunno, I can't make head nor tail of this mess, and if I keep going something's going to break, so YOU figure it out." It's not intentionally obfuscated, it's telling you exactly what the problem is from its perspective.
If I gave you directions to meet me at a place you weren't familiar with, but I gave you the wrong directions, when you called me you wouldn't be like, "hey, just so you know, I turned left on 5th Street when I should've turned right." If you knew that, you'd just go back to 5th and turn the other way. You'd call me and say, "so I have no idea where I am. Your directions say to turn left here, but if I do that I'll literally walk into the ocean and I'm pretty sure I see sharks in the water. There's a statue of a sea horse on my right, and I passed a Shake Shack about two blocks back."
That's what a stack trace is. It's supposed to be a message to the developer, not to the user. The developer should get the stack trace and either fix the problem that led to that issue in the first place, or add better error handling so that when it fails the program can tell you in more plain language what to do.
Fantastic explanation
Thank you, you're very kind.
It does. It clearly says java.lang.NoSuchMethodError. If that's too complicated for you, you still need help.
I mean, it got that error in class_5699.method_65313 so it's not like it isn't obfuscated at all.
Congratulations you've discovered that Mojang used to ship the game after it was obfuscated! Java has nothing to do with the fact it's obfuscated that's on Mojangs end, for goofy "This'll allow us to sue people who copy our game" logic. NeoForge came out the gate with official mappings at runtime (non obfuscated using the offical names Mojang provides. Yes Mojang obfuscated the game and then gives us the names of stuff anyway...) and recently Mojang announced they are finally dropping obfuscation all together.
Edit. To make sure this is totally clear the obfuscated names such as class_5699.method_65313 is the actual class name and method name. The jar has a class named class_5699 which Java loads and treats like any other class. Very goofy and annoying for modders since if you wanted a useful name you have to first decompile Minecraft, then change all the names, and then when you compile change all references to said names in your code back to their actual obfuscated nonsense.
Very goofy and annoying for modders since if you wanted a useful name you have to first decompile Minecraft, then change all the names, and then when you compile change all references to said names in your code back to their actual obfuscated nonsense.
I expect this is what things like Forge were handling, right?
That's on the dev end of things but yes. Part of the build pipeline was re-obfuscation of your code so it'd actually work. Forge the mod loader just loaded the mods and provided code for modders to use. Forge Gradle was what handled the obfuscation stuff in dev
The next line implicates the de.mschae23.grindenchantments mod; seems like a pretty clear starting point for troubleshooting.
The code to handle errors would be so bloated to deal with every conceivable and inconceivable situation you will get errors on your errors.
The computer is as helpful as it can be with what little context it knows of what was going on. Mostly it just knows that codeline 123 went fine and 124 went not.
That’s what fabric mod loader does! It tries to diagnose the issue for you by checking for incompatibilities and missing dependencies. It actually gets most of the problems with mod packs pretty quickly
And from what I can tell based on the callout at the end... This is a line from connector which is a compatibility layer that allows running Fabric mods on Neoforge.
Which means connector is going to be included in every stack trace, regardless of how related it is to the problem. It will be the one to raise the errors that couldn't be caught and managed... But AI will see connector being the one probably flagging the errors and be more likely to tag it as a "suspected" mod. I wouldn't be shocked to find out that AI has a tendency to shoot the messenger.
IDK how idiomatic it still is, but I was taught to differentiate between Exceptions and Errors, where any recoverable Exception is to be logged and handled gracefully and only the truly unforeseen or fatal issues end up actually killing the execution.
And for unforeseen errors, it's kinda hard to construct a helpful error message, given you might not know just what info to include.
(Of course, proprietary obfuscation adds another significant hurdle, but I suspect even without obfuscation, you might not be able to do much about closed-source code. That's an argument against closed-source code, in my opinion, but I don't think I need to preach to the choir here.)
Yeah Minecraft crash logs are notoriously hard to debug, part of it is caused by Mojang obfuscating the classes but also because java naturally produces verbose stack traces
Why this annoying 7600*500 image format?
Dark red on darker red, totally easy to read
Not that I'm disagreeing with you, but there's some people who prefer it as it can lead to less strain in low light situations.
That being said, white text on black background is peak, for me at least.