9 ms·
For those short on time: "It doesn't go as planned" is explained in the middle of the article: > When everything compiled, I shipped it. And to everyone's surp
by jakub_g 4y ago
For those short on time: "It doesn't go as planned" is explained in the middle of the article:
> When everything compiled, I shipped it. And to everyone's surprise, apart from a few bugs I had created while rewriting thousands of lines of code... it worked. It just did. No explosions, no obscure bugs, no memory leak, no performance degradation. That was rather unexpected.
...followed by
> Then we saw the JVM CPU usage rise to alarming heights, with unusual patterns. And no obvious culprit in the thread dumps...
> it was just the JVM that needed some tuning.
Details: https://lichess.org/@/thibault/blog/lichess-on-scala3-help-needed/2bpotLb0 https://lichess.org/@/thibault/blog/lichess-on-scala3-help-n...
- warent 4y ago
- phoronixrly 4y agoAs opposed to what?
- vlovich123 4y agoMachine code. Assembly if you’re weak willed and need some hand holding.
- danielheath 4y agoWritten with a magnet, and a steady hand. Keyboards are a crutch.
- hinkley 4y agoShit the ROMs on the Apollo mission were hand-woven wire looms. 4K wires weaving between and around magnets. Why hold a magnet when you can use a marlin spike?
- deleted 4y ago[deleted]
- toast0 4y agoBecause nobody has ever expanded their machine code beyond the L1 cache size and experienced a huge difference in performance.
- renewiltord 4y agoPathetic. If you can't fit your code into L1, are you even a real programmer? No one has time for your Electron shit. Get real, bruh, what's your deadlift?
- nurettin 4y agoBack in my day we didn't have L1, so our code just ran on 16 registers.
- tux3 4y agoOf course _real programmers_ write forged microcode to define just the machine code instructions they need, and they flash the ucode update live in prod to deploy their app. But if you're weak willed and need some hand holding, the official ISA's machine code is tolerated too.
- deleted 4y ago[deleted]
- poulpy123 4y agoI personally use cosmic focused on a disk by the turbulences created by a butterfly to program, but it's not a competition
- deleted 4y ago[deleted]
- deleted 4y ago[deleted]
- toast0 4y agoI mean, I'm not a JVM fan, but this sort of thing happens in lots of languages, and even operating systems. Upgrade from version X to X + 1, especially with lots of changes in everything else, and you're bound to hit different limits or explore the interface with limits you were hitting and didn't realize. The other option is to never update anything; which is valid, but painful.
- smeagull 4y agoHubris. I've seen shops build servless applications with Java because "we have java developers". I left that contract very quickly.
- winrid 4y agoIs this really an issue with graalvm?
- moffkalast 4y agoAs an anecdotal case, a company a friend of mine works at has a backend workforce of primarily Java-only devs, so that's the only thing they can really maintain. There's a lot of sunk cost and inertia on the enterprise side when it comes to Java. But yeah for starting something new, with an open language choice? No way anyone sane would go for it these days. Especially after Oracle basically closed sourced it, making JRE distribution illegal.
- warent 4y agoI take the copious downvotes as confirmation!
- amackera 4y agoJVM is easily one of the best runtimes out there by any objective measure. (JVM != Java, remember)
- moffkalast 4y agoSo tell me, what does the J in JVM stand for?
- AuthorizedCust 4y agoJVM tuning is frustrating. The need for that is generally not an issue on Microsoft .NET.
- nlitened 4y agoIf I understand correctly, not being able to tune .NET is a shortcoming. It is like having a JVM which does not have tuning options, it works optimally only for some workloads, and fails severely for others.
- lamontcg 4y ago> "It doesn't go as planned" bit of an editorialized clickbait title really.
- smcin 4y agoYes it's clickbait, so I didn't upvote it; an accurate title would have been "Lessons learned upgrading Lichess from Scala 2 -> 3 and the need to tune the JVM". A drama-free title like that would have been fine, and I would have upvoted.
- jonathanyc 4y agoI agree. Clickbait titles are not universalizable. Kant would not be pleased.
- kzrdude 4y agoThe actual title seems to be Lichess & Scala 3 and the subhead is "Lichess gets a big upgrade. It doesn't go as planned."
- Yiin 4y agoPersonally I'd never click on your proposed title as I have 0 interest in Scala, but I clicked on this one and was pleasantly surprised by interesting story. Making everything sound robotic is not the way.
- smcin 4y agoDo you agree that title is clickbait? You are ok with titles that misrepresent or exaggerate to boost clicks (even if most of those viewers bounce upon discovering that)?
- bravetraveler 4y ago'if it builds it ships' in action, love to see it edit: Since I got sniped pretty hard for not divulging further, allow me to 'kill the joke' by explaining. This will read more harsh than I intended Shipping it isn't the problem. In fact, that's the expectation. Just... don't ship it to a place that matters first. I feel baited by an otherwise cavalier operator, footguns be footguns. as planned -- I'm not convinced there was a plan
- javaunsafe2019 4y agoThought the same
- opportune 4y agoI noticed this as well. There was no integration testing? No manual testing? I don’t pay for Lichess, love the UX, and I know it’s a labor of love, but come on. Surely Lichess refactoring aren’t so urgent and user critical that they should just go straight to prod?
- _carbyau_ 4y agoYeah ... but nah. Yeah, there should be some kind of shakedown test. But Nah, not every issue can be tested for within the manpower/$ budget. Issues of load being one of them. A valid strategy is: send it!, work with the beast a bit, if too unruly roll it back. In this case, they tamed the new beast. Not like Lichess is going to lose billions...
- bravetraveler 4y agoLoad testing isn't quite the expensive proposition it seems! Think about it - clients or requests are really just ephemeral ports... There are something like 30 thousand of them available by default with Linux If you use sockets you can have as many connections as your system allows for open file descriptors. The upward limit is... $ sysctl fs.file-max fs.file-max = 9223372036854775807 Spawn a ton of concurrent requests to hit the service/API! apachebench is a decent example of the idea; imagine some proprietary sauce with it It gets cheaper (and in some ways, more effective) if you actually remove the network -- latency goes down You can also rate limit it in software, but it's really not analogous in some ways (eg: net.core.somaxconn limitations/realities) Development time is totally understandable though. It's important I leave my green field of comfort
- ummonk 4y agoI feel like “it didn’t go as anticipated” would have created the same suspense without being a lie.
- palata 4y agoKindly asking: did you consider that English is possibly not the author's mothertongue?
- nicky0 4y agoThis whole subthread reads like an HN parody.