Chat Logs

  1. jreicherIt's funny isn't it. :)
  2. jreicherBut to go back to your example, why would "fo"+"o" give a different result from "fo"+o? I'm missing something?
  3. bluejreicher: because of how test is implemented: return a == b;
  4. jreicherI'm still not following. Why would "fo"+"o" return true for that? Have you tried it?
  5. jreicher(I can think of a reason why it might, but I don't think we can assume it)
  6. bluejreicher: https://www.programiz.com/online-compiler/4fAcB0YXIyK2I
  7. nevetSee my Java code in action
  8. blueas you can see, this proves that the origin story of a string matters (unfortunately)
  9. dreamrealjreicher: you nailed it - blue is wanting string to be a primitive, and it's not, nor should it be
  10. bluethis isn't something an implementer can reasonably track, so he will always use .equals, anyway
  11. dreamrealunless we want to see StringUtils.equalsIgnoreCase(foo) etc
  12. 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
  13. dreamrealand comparisons, too
  14. dreamrealall those string operations that fall out of natural applications of a string being an object, broken
  15. blue"a".toLowerCase()==="A".toLowerCase()
  16. bluethose string operations are stupid!
  17. dreamreala whole class of exceptional cases just because you want == to apply as it does in other languages that fit a certain classification
  18. dreamrealyeah, argument's over, you just lost it voluntarily, mate
  19. dreamreal"those string operations are stupid" is a rotten argument that a debate judge would toss
  20. bluewhat exception cases? a.equalsIgnoreCase(b) is just as broken; and equals doesn't justify it
  21. jreicherhttps://www.programiz.com/online-compiler/2fAcBchE8y3wI
  22. nevetSee my Java code in action
  23. jreicherblue: ^
  24. blueeasier: a.toLower()==b.toLower()
  25. jreicherSorry I couldn't think of anything simpler
  26. bluealmost just as long, most expressive, and WORKS!
  27. jreicherI hope you see the point I'm trying to make with that code
  28. dreamrealyou should write a very very VERY sternly worded email to brian, mark, and james
  29. dreamrealyou will have done what you can, and every other java programmer will shrug and move on
  30. bluejreicher: yes; you've made it for the jvm impossible to intern that value
  31. dreamrealjreicher: don't bother, I've already mentioned the interning
  32. dreamrealhe doesn't care, he's desperate for ==
  33. 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?
  34. 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
  35. 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.
  36. 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
  37. dreamrealwe don't think it interns JACK SHIT, that's why you use equals()
  38. dreamrealno, we've been telling you the same thing for days now
  39. dreamrealthere's no mud here
  40. bot[jottinger/bytecode.news] New PR #109: Unify docs - https://github.com/jottinger/bytecode.news/pull/109
  41. dreamrealwith equals(), the derivation is predictable
  42. 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
  43. dreamrealobjects act like objects, all the way up and down the tree: valhalla will make a class of objects act like primitives
  44. 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..."
  45. dreamrealno, I said they were a newbie java coder who projected other language characteristics on java
  46. dreamrealthere's a reason few java coders with more than a week of experience get caught by this
  47. bluedreamreal: if this is one of the things most people stumble upon learning java, then it is a VALID concern
  48. dreamrealit's a burr that gets sanded down really really quickly because EVERY object acts the same, EXCEPT for string concat
  49. dreamrealyeah, I've seen that too
  50. * dreamreal sighs
  51. dreamrealthis is why java failed after six months of its initial deployment
  52. bluejreicher: ha, I see!
  53. dreamrealprogrammers couldn't figure it out
  54. dreamrealthey was just too stupid
  55. bluedreamreal: if you got your head out of the sand, you'd realise that in very many circles, java is a red flag
  56. blueI wouldn't call it a successful language at all
  57. jreicherI don't know. Such widespread hate might be a sign of widespread use. ;)
  58. blueit's got some things right -- particularly recently, but it's been a dumpster fire for nearly forever
  59. nevetit's got some things right now has karma of -1.
  60. dreamrealI'm well aware of it, and yet for SOME reason... OMG have you seen my bill rate
  61. dreamrealit's weird
  62. * dreamreal is not rich, but lives in a nice house, has insurance, has a stable job, has a predictable employment cycle
  63. bluehere we go, the argument from authority here. *I* do java and *I* earn money with it so it must be amazing!
  64. dreamrealit's failed almost as badly as cobol has
  65. dreamrealtf are you talking about?
  66. dreamrealYou made a claim that it's failed because of *reputation* in some circles
  67. dreamrealthe counter to that is that its reputation is FINE in other circles
  68. dreamrealthat's not arguing from authority, that's contrasting evidence
  69. dreamrealhow the hell do you talk in shul
  70. bluejava has a *terrible* reputation. Maybe you've mostly been in java circles historically, but in other circles -- it's almost considered a joke
  71. nevetjava has a *terrible* reputation. Maybe you've mostly been in java circles historically, but in other circles now has karma of -1.
  72. dreamrealI'm well aware of its reputation in other circles. So what?
  73. blueThere's a reason for that
  74. 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.
  75. 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
  76. dreamrealthen don't use it! Easy peasy.
  77. dreamrealnobody here gets a puppy if you like java... or loses one if you don't.
  78. blueThat's.. not an answer. *sigh*
  79. dreamrealIt actually kinda is: you're arguing with a fencepost expecting to win.
  80. 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?
  81. 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?
  82. blues/use/do/
  83. 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
  84. 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! :(
  85. 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.
  86. dreamrealPick a criticsm that has more merit
  87. blueit's not the worst, it's *one* of the worst!
  88. dreamrealhell, I'm upset that they're getting rid of the security manager
  89. jreicherSo for me the only valid criticism is that Java isn't doing something well AND it's intended for that thing
  90. blueChronos: ha!
  91. dreamrealChronos: blue may also be unaware of java's algol heritage :D
  92. dreamrealI dunno
  93. blue"One of the biggest complaints is how much code you have to write for simple things."
  94. 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
  95. blueequals(), hashCode(), toString()
  96. bluebut YEAH, I AM the ONLY one who has a problem with equals!
  97. jreicherblue: yes, I would never use Java for throwaway or PoC code
  98. dreamrealblue: who says that, please?
  99. bluedreamreal: CHAPPI
  100. dreamrealWho's that?
  101. bluechatgpt
  102. dreamreallet me know when you're thinking for yourself and not echoing a bayesian complaint
  103. blueso you're claiming it's wrong?
  104. bluethat it's NOT one of the biggest complaints?
  105. bluebecause that reflects what I've seen in the last 20 years
  106. 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
  107. dreamrealI'm not claiming it's wrong that many people complaing about it, but using it is like saying "well the protocols say that..."
  108. blueliterally the FIRST thing chatpgt writes is VERBOSITY ("Too much boilerplate")
  109. dreamrealYes, it's quite verbose
  110. blueand mentions `equals` as one of the first things
  111. * dreamreal sighs
  112. jreicheryou know chatgpt is just an automated regurgitation of popular complaints from humans...
  113. blueYUP!
  114. bluewhich confirms what I'm saying
  115. bluenext, gemini
  116. jreicherThat these are POPULAR complainst, yes.
  117. blue1. The "Boilerplate" Tax
  118. 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
  119. blueJava is notoriously wordy. Even for simple tasks, you often have to write a significant amount of "ceremonial" code.
  120. dreamrealblue: that information's out of date, BTW
  121. blueVerbosity: Before Java 14’s Records, creating a simple data carrier required manually writing getters, setters, equals(), hashCode(), and toString().
  122. dreamrealrecords, no more class declarations
  123. dreamrealyes, before java 14's records, it's almost like java still grows and changes
  124. jreicherblue: generics are an early example of Java developing to get rid of boilerplate. That always happened, and is still happening.
  125. 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
  126. dreamrealblue: we are not the right audience for this
  127. 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?
  128. dreamrealNo, I was surprisingly able to deploy things well with java 1.02
  129. bluethen what are you talking about
  130. dreamrealbecause I don't see the language as a replacement for the programmer
  131. blueyou're just a blind fanboy at this stage
  132. blueI am able to use things like JS whilst fully criticising their issues
  133. jreicherblue: nobody is saying Java is perfect!
  134. 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
  135. dreamrealbecause java suited my needs at the time
  136. dreamrealand still does
  137. blueyes, verbosity is bad, repeating yourself like an idiot is bad and error-prone
  138. jreicherJust because this or that criticism is invalid doesn't not mean there do not exist any valid criticisms
  139. dreamrealwe criticize java too, blue
  140. ChronosIf anyone thinks Java strings are bad for any reason, have a seat and let grandpa tell you about C strings
  141. dreamrealor let's start talking about dates
  142. bluedreamreal: I've NEVER heard or seen you criticise java, and everytime I do, your hairs stand on end!
  143. dreamrealblue: and?
  144. bluethat sounds like involuntary reaction instead of actually interning the criticism and agreeing where agreement is due
  145. dreamrealyou criticize things for reasons I find insufficiently severe to be obstructed by
  146. jreicherWell my pet hate at the moment is the lack of a bottom type. I'm really annoyed about that.
  147. jreicherKeep meaning to submit a JEP
  148. dreamrealso wait - what you're saying is you're desperate for people to agree with you?
  149. bluethat's ok, then just say, criticism is valid, I just don't care
  150. dreamrealjreicher: what's a bottom type?
  151. 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?
  152. jreicherA subtype of all other types. Always the bottom of the type hierarchy.
  153. bluehe means an 'any'
  154. 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
  155. bluedreamreal: THANK YOU, now we're finally getting SOMEWHERE
  156. dreamrealhmm, how would that be fundamentally different than a top type?
  157. jreicherAn Object parameter will accept anything. A bottom value can be submitted to anything.
  158. jreicherlvalue vs rvalue. That kind of thing.
  159. jreicherOr whatever that generics mnemonic is
  160. dreamrealhmmm
  161. jreicher(That Kotlin built in to the language)
  162. bluedreamreal: in TS, there are three types: `any`, `never` and `unknown`
  163. blueany is stupid because it's both top and bottom. it's basically a copout
  164. blueunknown is a top type
  165. bluenever is a bottom type
  166. bluenever is assignable to anything
  167. blueunknown is assisnable to nothing
  168. 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.
  169. blueor rather, anything is assigned to unknown
  170. jreicherAnd it's the type counterpart of the fact that null is a value that can be assigned to any reference type variable.
  171. bluelet x: unknown; x = 42; x = "foo"; x = null;
  172. bluebut: let: x unknown; x.toString(); // error
  173. bluemust narrow first: if (typeof x === "string") x.toUpperCase();
  174. bluefunction fail(): never { throw "a"; }
  175. blueconst x: string = fail(); // no problem
  176. blueconst y: number = fail(); // same
  177. bluelet z: never = "foo"; // error, can't assign anything to bottom type
  178. jreicherAttempting to implement a generic Either type is what made me want this.
  179. jreicherFrom what I can tell it's not just the right way to do it, but perhaps the only way
  180. * NeXeN joined #nevet
  181. * jreicher joined #nevet
  182. * jreicher joined #nevet
  183. * NeXeN joined #nevet
  184. * jreicher joined #nevet
  185. * nevet` joined #nevet
  186. * nevet` joined #nevet
  187. * nevet` joined #nevet
  188. * nevet` joined #nevet
  189. * nevet` joined #nevet
  190. * dreamreal sighs. breaking stuff is fun!
  191. * nevet` joined #nevet
  192. dreamrealokay, nevet`'s autoconnect to irc is off, that'll stop :D
  193. ChronosOf possible interest: https://poc.bcachefs.org/
  194. nevetProofOfConcept
  195. dreamrealChronos: I'm building a "reference UI" for nevet, closing some gaps in the UI services - and getting OTP working. :D
  196. Chronosdreamreal: Woo hoo! \o/
  197. dreamrealit looks like absolute ass
  198. dreamrealbut that doesn't matter. I'm able to post content (including anonymously for posts), approve the content, edit it, add comments..
  199. 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. :)
  200. dreamrealso I'm basically trying to make it all out of whole cloth.
  201. bluedreamreal: currently you have one clown who uses claude for that, and another clown with a penchant for *fixing reality* before
  202. blueit's always the next release :P
  203. bluebut I guess that's good: it's showing me where the software is missing features that are GENERALLY needed
  204. 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
  205. dreamrealno worries and no hurry
  206. dreamrealand seriously, the judgement helps nothing
  207. dreamrealwe all have real jobs
  208. 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
  209. dreamrealI just created a new PR, with a working reference UI
  210. bluethe openapi code generator has been planned for a while, it's just gained more prominence by an actual use case now
  211. dreamrealthe reference UI looks ... interesting, as in "oh, really."
  212. bluedreamreal: why not a wildcard subdomain cert?
  213. blueanyway, looking at the ref impl
  214. dreamrealblue: because that requires, as best I can tell, a CDN
  215. blueit does not. I got a wildcard subdomain configured on RP and I don't have a CDN
  216. dreamrealthen maybe that's the way to go - the DNS host stuff recently would also take care of it
  217. dreamrealThis is all definitely not in my wheelhouse
  218. blueoh goodness
  219. dreamrealI told you!
  220. bluethis is...
  221. blueI'm without words
  222. dreamreal"ass"
  223. dreamreal"awful"
  224. dreamreal"... really?"
  225. dreamreal"This actually works?"
  226. dreamreal"this looks like you threw it together in an hour without knowing what you're doing"?
  227. blue`<link rel="stylesheet" href="/node_modules/@picocss/pico/css/pico.min.css" />`
  228. * blue totally loses it
  229. blueyes, ok, yes
  230. dreamrealhey, this is for *development*
  231. dreamrealthe thing is, this actually exposed some backend problems that got fixed as a result, which was the whole point
  232. * blue quotes les christians
  233. blue"and forgive us our trespasses, as we forgive those who trespass against us"
  234. bluewell, could be worse
  235. dreamrealthe only thing that bugs me is the impression that you've been offended in some way :D
  236. blueoffended?
  237. blueI'm NEVER offended!
  238. dreamrealI miss the good old days when http was enough, and https was an affectation
  239. dreamreal"oh look at YOU you're all SECURE like people can't be TRUSTED"
  240. dreamrealmeanwhile: people can definitely not be trusted and even https isn't secure, people are awful
  241. Chronosdreamreal: People are why we can't have nice things
  242. dreamrealright?
  243. bot[jottinger/bytecode.news] New PR #110: Adding a locally-working reference UI - https://github.com/jottinger/bytecode.news/pull/110
  244. bot[jottinger/bytecode.news] New issue #111: Improve karma parsing to reduce false positives - https://github.com/jottinger/bytecode.news/issues/111
  245. blue^ nice!
  246. ChronosMaybe implement a `!karma` command? Then no worries about --, ++, etc.
  247. nevetMaybe implement a `!karma` command? Then no worries about -- now has karma of 1.
  248. ChronosAnd whoops.
  249. ChronosKarma karma karma karma karma chameleon
  250. bot[jottinger/bytecode.news] New PR #112: Updating karma parsing for some common circumstances - https://github.com/jottinger/bytecode.news/pull/112
  251. * nevet joined #nevet
  252. * 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
  253. dreamrealkarma is not supposed to require a lot of interaction to record
  254. dreamrealThe rules for parsing should be better now
  255. dreamrealI really dislike C++
  256. nevetI really dislike C now has karma of 1.
  257. dreamreal... or not :D
  258. dreamrealdang it, okay, that's fine, we can track that
  259. * nevet joined #nevet
  260. * 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
  261. dreamrealThere we go!
  262. dreamrealI really dislike C++
  263. dreamrealor not
  264. dreamrealnow let's try it
  265. dreamrealChronos: ++
  266. nevetChronos now has karma of 3.
  267. dreamrealI really dislike C++
  268. dreamrealYep, there we go.
  269. dreamrealThis fix required wizardry: "git checkout main"
  270. * dreamreal sighs
  271. dreamrealOkay, I'm off for the day.
  272. * Chronos joined #nevet
  273. * PyR3X joined #nevet
  274. * NeXeN joined #nevet