Community
Chat Logs
Thursday, February 26, 2026
- jreicherIt's funny isn't it. :)
- jreicherBut to go back to your example, why would "fo"+"o" give a different result from "fo"+o? I'm missing something?
- bluejreicher: because of how test is implemented: return a == b;
- jreicherI'm still not following. Why would "fo"+"o" return true for that? Have you tried it?
- jreicher(I can think of a reason why it might, but I don't think we can assume it)
- bluejreicher: https://www.programiz.com/online-compiler/4fAcB0YXIyK2I
- nevetSee my Java code in action
- blueas you can see, this proves that the origin story of a string matters (unfortunately)
- dreamrealjreicher: you nailed it - blue is wanting string to be a primitive, and it's not, nor should it be
- bluethis isn't something an implementer can reasonably track, so he will always use .equals, anyway
- dreamrealunless we want to see StringUtils.equalsIgnoreCase(foo) etc
- bluedreamreal: that's not a good example; if you want to compare two strings irregardless of case, convert them both to the same case. pretty straight in JS
- dreamrealand comparisons, too
- dreamrealall those string operations that fall out of natural applications of a string being an object, broken
- blue"a".toLowerCase()==="A".toLowerCase()
- bluethose string operations are stupid!
- dreamreala whole class of exceptional cases just because you want == to apply as it does in other languages that fit a certain classification
- dreamrealyeah, argument's over, you just lost it voluntarily, mate
- dreamreal"those string operations are stupid" is a rotten argument that a debate judge would toss
- bluewhat exception cases? a.equalsIgnoreCase(b) is just as broken; and equals doesn't justify it
- jreicherhttps://www.programiz.com/online-compiler/2fAcBchE8y3wI
- nevetSee my Java code in action
- jreicherblue: ^
- blueeasier: a.toLower()==b.toLower()
- jreicherSorry I couldn't think of anything simpler
- bluealmost just as long, most expressive, and WORKS!
- jreicherI hope you see the point I'm trying to make with that code
- dreamrealyou should write a very very VERY sternly worded email to brian, mark, and james
- dreamrealyou will have done what you can, and every other java programmer will shrug and move on
- bluejreicher: yes; you've made it for the jvm impossible to intern that value
- dreamrealjreicher: don't bother, I've already mentioned the interning
- dreamrealhe doesn't care, he's desperate for ==
- bluethat makes the criticism all the better: should we really program against implementation details of the jvm? when we think it interns something, when we think it doesn't?
- dreamrealwants it to be impossible to derive identity reference equality for strings, or MAYBE just have a special case where you call the identity reference accessor for that case and that case only
- jreicherblue: I don't think it's about interning. It's about what the compiler can do statically. It was actually performing the concatenation for you.
- bluedreamreal has lost the battle so he's resorting to mudtossing, which is ok; the grown-ups here understand my criticism is valid, and more so, correct
- dreamrealwe don't think it interns JACK SHIT, that's why you use equals()
- dreamrealno, we've been telling you the same thing for days now
- dreamrealthere's no mud here
- bot[jottinger/bytecode.news] New PR #109: Unify docs - https://github.com/jottinger/bytecode.news/pull/109
- dreamrealwith equals(), the derivation is predictable
- blueyour only reaction so far was to declare anyone who doubts this, or stumbles upon this, a bad java programmer; you prefer telling people it's THEIR issue instead of acknowledge the language is broken in that
- dreamrealobjects act like objects, all the way up and down the tree: valhalla will make a class of objects act like primitives
- jreicherblue: it's not completely relevant, but when I was an undergrad learning about functional programming I asked the lecturer why the compiler couldn't do more evaluation since there are no side effects. He responded "well most people expect the compiler to terminate..."
- dreamrealno, I said they were a newbie java coder who projected other language characteristics on java
- dreamrealthere's a reason few java coders with more than a week of experience get caught by this
- bluedreamreal: if this is one of the things most people stumble upon learning java, then it is a VALID concern
- dreamrealit's a burr that gets sanded down really really quickly because EVERY object acts the same, EXCEPT for string concat
- dreamrealyeah, I've seen that too
- * dreamreal sighs
- dreamrealthis is why java failed after six months of its initial deployment
- bluejreicher: ha, I see!
- dreamrealprogrammers couldn't figure it out
- dreamrealthey was just too stupid
- bluedreamreal: if you got your head out of the sand, you'd realise that in very many circles, java is a red flag
- blueI wouldn't call it a successful language at all
- jreicherI don't know. Such widespread hate might be a sign of widespread use. ;)
- blueit's got some things right -- particularly recently, but it's been a dumpster fire for nearly forever
- nevetit's got some things right now has karma of -1.
- dreamrealI'm well aware of it, and yet for SOME reason... OMG have you seen my bill rate
- dreamrealit's weird
- * dreamreal is not rich, but lives in a nice house, has insurance, has a stable job, has a predictable employment cycle
- bluehere we go, the argument from authority here. *I* do java and *I* earn money with it so it must be amazing!
- dreamrealit's failed almost as badly as cobol has
- dreamrealtf are you talking about?
- dreamrealYou made a claim that it's failed because of *reputation* in some circles
- dreamrealthe counter to that is that its reputation is FINE in other circles
- dreamrealthat's not arguing from authority, that's contrasting evidence
- dreamrealhow the hell do you talk in shul
- bluejava has a *terrible* reputation. Maybe you've mostly been in java circles historically, but in other circles -- it's almost considered a joke
- nevetjava has a *terrible* reputation. Maybe you've mostly been in java circles historically, but in other circles now has karma of -1.
- dreamrealI'm well aware of its reputation in other circles. So what?
- blueThere's a reason for that
- dreamrealPerl is the worst! ... meanwhile perl is doing fine. COBOL is AWFUL! ... meanwhile trillions of dollars file endlessly through cobol programs. Popularity especially among the glitterati is not a measure of success.
- bluePart of it is that it's often so very dumb to do basic things, and the language expects you to do something else instead
- dreamrealthen don't use it! Easy peasy.
- dreamrealnobody here gets a puppy if you like java... or loses one if you don't.
- blueThat's.. not an answer. *sigh*
- dreamrealIt actually kinda is: you're arguing with a fencepost expecting to win.
- dreamrealI mean, nobody here is going to argue that java has no warts. If it had none, there'd be no reason for java 26, yeah?
- blueSo I can't criticise Java, and if I do, I am either a "bad Java programmer" / "noob", or I should just not use it? That's your retort? Can you use better than a 5-year-old?
- blues/use/do/
- dreamrealbut the warts it has are survivable and if == is THE WORST FLAW the language has, I'll take it. If you won't, well, that's cool bruh
- Chronosblue: The old C programmer in me is *horrified* at the idea of creating new strings in lowercase just to compare them. So much wasted performance and memory! :(
- jreicherblue: it depends on the basis for the criticism. I'm very much against the idea of a general purpose language. I don't think it's possible.
- dreamrealPick a criticsm that has more merit
- blueit's not the worst, it's *one* of the worst!
- dreamrealhell, I'm upset that they're getting rid of the security manager
- jreicherSo for me the only valid criticism is that Java isn't doing something well AND it's intended for that thing
- blueChronos: ha!
- dreamrealChronos: blue may also be unaware of java's algol heritage :D
- dreamrealI dunno
- blue"One of the biggest complaints is how much code you have to write for simple things."
- dreamrealthe other side of ALL of this is that even if EVERY PERSON in this channel were to agree on every facet that Java has flaws X, Y, Z, A, B, and C, ESPECIALLY that dumb ol' string comparison thing, it doesn't make a single bit of difference to the wider java ecosystem, at all: the person who has THE MOST access here is dmlloyd
- blueequals(), hashCode(), toString()
- bluebut YEAH, I AM the ONLY one who has a problem with equals!
- jreicherblue: yes, I would never use Java for throwaway or PoC code
- dreamrealblue: who says that, please?
- bluedreamreal: CHAPPI
- dreamrealWho's that?
- bluechatgpt
- dreamreallet me know when you're thinking for yourself and not echoing a bayesian complaint
- blueso you're claiming it's wrong?
- bluethat it's NOT one of the biggest complaints?
- bluebecause that reflects what I've seen in the last 20 years
- dreamrealhell, surial wrote a library to get rid of a lot of that, a very popular one, and java itself mitigated much of it as well with records
- dreamrealI'm not claiming it's wrong that many people complaing about it, but using it is like saying "well the protocols say that..."
- blueliterally the FIRST thing chatpgt writes is VERBOSITY ("Too much boilerplate")
- dreamrealYes, it's quite verbose
- blueand mentions `equals` as one of the first things
- * dreamreal sighs
- jreicheryou know chatgpt is just an automated regurgitation of popular complaints from humans...
- blueYUP!
- bluewhich confirms what I'm saying
- bluenext, gemini
- jreicherThat these are POPULAR complainst, yes.
- blue1. The "Boilerplate" Tax
- dreamrealOkay, just to make you happy: OMG you're right, I've never before seen anyone complain about verbosity in a language famous for not making presumptions, it's the worst, how could i have lived this long this way, I knew Java was never going to work, I have no idea how I got nevet running
- blueJava is notoriously wordy. Even for simple tasks, you often have to write a significant amount of "ceremonial" code.
- dreamrealblue: that information's out of date, BTW
- blueVerbosity: Before Java 14’s Records, creating a simple data carrier required manually writing getters, setters, equals(), hashCode(), and toString().
- dreamrealrecords, no more class declarations
- dreamrealyes, before java 14's records, it's almost like java still grows and changes
- jreicherblue: generics are an early example of Java developing to get rid of boilerplate. That always happened, and is still happening.
- dreamrealit's like you're demanding change but no not THAT change, I demand MY change because I can'r wrap my head around == meaning reference equality
- dreamrealblue: we are not the right audience for this
- bluedude, java 14 previewed records and it came out officially in java 16 (2021). that's FAIRLY new, so before you also thought the language was garbage?
- dreamrealNo, I was surprisingly able to deploy things well with java 1.02
- bluethen what are you talking about
- dreamrealbecause I don't see the language as a replacement for the programmer
- blueyou're just a blind fanboy at this stage
- blueI am able to use things like JS whilst fully criticising their issues
- jreicherblue: nobody is saying Java is perfect!
- dreamrealit's verbose? Oh no, it's like I, as a programmer, have to write code to get something done, guess I'll write code
- dreamrealbecause java suited my needs at the time
- dreamrealand still does
- blueyes, verbosity is bad, repeating yourself like an idiot is bad and error-prone
- jreicherJust because this or that criticism is invalid doesn't not mean there do not exist any valid criticisms
- dreamrealwe criticize java too, blue
- ChronosIf anyone thinks Java strings are bad for any reason, have a seat and let grandpa tell you about C strings
- dreamrealor let's start talking about dates
- bluedreamreal: I've NEVER heard or seen you criticise java, and everytime I do, your hairs stand on end!
- dreamrealblue: and?
- bluethat sounds like involuntary reaction instead of actually interning the criticism and agreeing where agreement is due
- dreamrealyou criticize things for reasons I find insufficiently severe to be obstructed by
- jreicherWell my pet hate at the moment is the lack of a bottom type. I'm really annoyed about that.
- jreicherKeep meaning to submit a JEP
- dreamrealso wait - what you're saying is you're desperate for people to agree with you?
- bluethat's ok, then just say, criticism is valid, I just don't care
- dreamrealjreicher: what's a bottom type?
- bluebut if you don't care about ANYTHING, and everything is "so what?", then what are you doing discussing stuff with people to begin with?
- jreicherA subtype of all other types. Always the bottom of the type hierarchy.
- bluehe means an 'any'
- dreamrealblue: maybe this will satisfy you: you're right in all ways here, I tend to focus on different things than changing the underlying structure to fit what I need if I can use that structure to get stuff done
- bluedreamreal: THANK YOU, now we're finally getting SOMEWHERE
- dreamrealhmm, how would that be fundamentally different than a top type?
- jreicherAn Object parameter will accept anything. A bottom value can be submitted to anything.
- jreicherlvalue vs rvalue. That kind of thing.
- jreicherOr whatever that generics mnemonic is
- dreamrealhmmm
- jreicher(That Kotlin built in to the language)
- bluedreamreal: in TS, there are three types: `any`, `never` and `unknown`
- blueany is stupid because it's both top and bottom. it's basically a copout
- blueunknown is a top type
- bluenever is a bottom type
- bluenever is assignable to anything
- blueunknown is assisnable to nothing
- jreicherWhat's frustrating is that I can't see a reason for Null not to be treated this way. It already exists in the language.
- blueor rather, anything is assigned to unknown
- jreicherAnd it's the type counterpart of the fact that null is a value that can be assigned to any reference type variable.
- bluelet x: unknown; x = 42; x = "foo"; x = null;
- bluebut: let: x unknown; x.toString(); // error
- bluemust narrow first: if (typeof x === "string") x.toUpperCase();
- bluefunction fail(): never { throw "a"; }
- blueconst x: string = fail(); // no problem
- blueconst y: number = fail(); // same
- bluelet z: never = "foo"; // error, can't assign anything to bottom type
- jreicherAttempting to implement a generic Either type is what made me want this.
- jreicherFrom what I can tell it's not just the right way to do it, but perhaps the only way
- * dreamreal sighs. breaking stuff is fun!
- dreamrealokay, nevet`'s autoconnect to irc is off, that'll stop :D
- ChronosOf possible interest: https://poc.bcachefs.org/
- nevetProofOfConcept
- dreamrealChronos: I'm building a "reference UI" for nevet, closing some gaps in the UI services - and getting OTP working. :D
- Chronosdreamreal: Woo hoo! \o/
- dreamrealit looks like absolute ass
- dreamrealbut that doesn't matter. I'm able to post content (including anonymously for posts), approve the content, edit it, add comments..
- dreamrealWhat I really want is a *team*, where someone else owns the endpoints and I just make 'em work. But that's not likely for now. :)
- dreamrealso I'm basically trying to make it all out of whole cloth.
- bluedreamreal: currently you have one clown who uses claude for that, and another clown with a penchant for *fixing reality* before
- blueit's always the next release :P
- bluebut I guess that's good: it's showing me where the software is missing features that are GENERALLY needed
- blueanyway I've been busy with my slavework. once I have some time, maybe this weekend, I could possibly try to fast-cut the next primate release and work on the ui
- dreamrealno worries and no hurry
- dreamrealand seriously, the judgement helps nothing
- dreamrealwe all have real jobs
- blueit's neither: I *want* to do it, but I'm also not happy with the missing puzzle pieces that would allow me to talk to nevet's API properly
- dreamrealI just created a new PR, with a working reference UI
- bluethe openapi code generator has been planned for a while, it's just gained more prominence by an actual use case now
- dreamrealthe reference UI looks ... interesting, as in "oh, really."
- bluedreamreal: why not a wildcard subdomain cert?
- blueanyway, looking at the ref impl
- dreamrealblue: because that requires, as best I can tell, a CDN
- blueit does not. I got a wildcard subdomain configured on RP and I don't have a CDN
- dreamrealthen maybe that's the way to go - the DNS host stuff recently would also take care of it
- dreamrealThis is all definitely not in my wheelhouse
- blueoh goodness
- dreamrealI told you!
- bluethis is...
- blueI'm without words
- dreamreal"ass"
- dreamreal"awful"
- dreamreal"... really?"
- dreamreal"This actually works?"
- dreamreal"this looks like you threw it together in an hour without knowing what you're doing"?
- blue`<link rel="stylesheet" href="/node_modules/@picocss/pico/css/pico.min.css" />`
- * blue totally loses it
- blueyes, ok, yes
- dreamrealhey, this is for *development*
- dreamrealthe thing is, this actually exposed some backend problems that got fixed as a result, which was the whole point
- * blue quotes les christians
- blue"and forgive us our trespasses, as we forgive those who trespass against us"
- bluewell, could be worse
- dreamrealthe only thing that bugs me is the impression that you've been offended in some way :D
- blueoffended?
- blueI'm NEVER offended!
- dreamrealI miss the good old days when http was enough, and https was an affectation
- dreamreal"oh look at YOU you're all SECURE like people can't be TRUSTED"
- dreamrealmeanwhile: people can definitely not be trusted and even https isn't secure, people are awful
- Chronosdreamreal: People are why we can't have nice things
- dreamrealright?
- bot[jottinger/bytecode.news] New PR #110: Adding a locally-working reference UI - https://github.com/jottinger/bytecode.news/pull/110
- bot[jottinger/bytecode.news] New issue #111: Improve karma parsing to reduce false positives - https://github.com/jottinger/bytecode.news/issues/111
- blue^ nice!
- ChronosMaybe implement a `!karma` command? Then no worries about --, ++, etc.
- nevetMaybe implement a `!karma` command? Then no worries about -- now has karma of 1.
- ChronosAnd whoops.
- ChronosKarma karma karma karma karma chameleon
- bot[jottinger/bytecode.news] New PR #112: Updating karma parsing for some common circumstances - https://github.com/jottinger/bytecode.news/pull/112
- dreamrealkarma is not supposed to require a lot of interaction to record
- dreamrealThe rules for parsing should be better now
- dreamrealI really dislike C++
- nevetI really dislike C now has karma of 1.
- dreamreal... or not :D
- dreamrealdang it, okay, that's fine, we can track that
- dreamrealThere we go!
- dreamrealI really dislike C++
- dreamrealor not
- dreamrealnow let's try it
- dreamrealChronos: ++
- nevetChronos now has karma of 3.
- dreamrealI really dislike C++
- dreamrealYep, there we go.
- dreamrealThis fix required wizardry: "git checkout main"
- * dreamreal sighs
- dreamrealOkay, I'm off for the day.