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
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
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
* NeXeN joined #nevet
* jreicher joined #nevet
* jreicher joined #nevet
* NeXeN joined #nevet
* jreicher joined #nevet
* nevet` joined #nevet
* nevet` joined #nevet
* nevet` joined #nevet
* nevet` joined #nevet
* nevet` joined #nevet
* dreamreal sighs. breaking stuff is fun!
* nevet` joined #nevet
dreamrealokay, nevet`'s autoconnect to irc is off, that'll stop :D
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"?
* dreamreal!~dreamreal@about/java/dreamreal changed the topic to: This is the channel for the development of the software that runs nevet: https://github.com/jottinger/streampack
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
* dreamreal!~dreamreal@about/java/dreamreal changed the topic to: This is the channel for the development of the software that runs nevet: https://github.com/jottinger/streampack