@izzion obviously New Zealand is what's left when the cat pushed Australia off the table and then went elsewhere because there wasn't anything left worth playing with.
Posts made by remi
-
RE: Fun with maps
-
RE: Help Bites
@remi said in Help Bites:
Obviously regular sandpaper isn't going to get me anywhere.
So, obviously regular sandpaper did get me somewhere, namely to a smoothed out dish.
Well, smooth-ish because I got bored pretty quickly and called it a day as soon as it wasn't too sharp anymore. Also the sandpaper got worn pretty quickly, but as I already said that's probably because it's cheap low quality sandpaper. At this point, I don't care, I shouldn't cut myself anymore so mission accomplished.
-
RE: Today in reading the headlines...
@DogsB well, that was that or some obscure Japanese manga-turned-into-anime and since I'm not as much of a weeb as you, I couldn't think of one.
Also, I'm now pretty sure that whatever you might write in response, internally you'll be thinking about a manga-turned-into-anime.
-
RE: Today in reading the headlines...
I heard this morning that apparently about 1 in 20 people are unable to form mental images when e.g. reading a book.
The report quoted one such person who said that one upside was they never got angry or disappointed that movie adaptations of books weren't matching what they thought the characters looked like, as they never had such a picture in their mind.
Wait, I forgot which thread I was in.
Study shows 1 in 20 Harry Potter's fans liked the movies.
Happy, ?
-
RE: Today in reading the headlines...
@boomzilla I just watched it for the first time (well done social media, you've made me watch an ad!) and... I can sort of see both sides.
I see the intended (by Apple) message and how, yes, the ad is quite fun (well I wouldn't say "fun" but... let's say "not boring?"). OTOH, I also see how the ad pretty much portrays the ipad as destroying all of those things, rather than incorporating them.
I think this is due to the ad visually showing things exploding into unusable pieces. If, instead of that, the ad just compacted all of those into a tinier and tinier space (either by not showing how the items fit into that too-small space, or by making the items themselves smaller, or maybe some other graphical trick of merging them one into another, or something else (*)), I don't think anyone would have any issue.
I think it's really the "bits and pieces of stuff flying around and dripping like some sort of blood" that makes the ad a bit weird.
OTTH, this got even people like me who don't care about Apple to watch the ad, so maybe that's not such a bad one.
(*) while spending all of 2 min writing this message, I had an idea of morphing subsets of the items into various electronic gizmos (maybe recognisable as older Apple ones?), until they all collapsed into the ipad. But what do I know, I'm not a creative in an ad agency...
-
RE: Help Bites
@HardwareGeek said in Help Bites:
Why not? The abrasive used for sandpaper is much harder than glass. Some fine sandpaper should smooth the sharp edges with no difficulty at all.
Mmm... my stash of sandpaper sounds far too flimsy to work, in particular because the paper itself on which the sand is (if that makes sense...) looks a lot like some sort of paper that'll get teared immediately. But then again, I didn't try, so maybe it'll work. And this batch is just some cheap assorted various grains sandpaper (good enough for random small jobs but certainly not good quality), so maybe what I need is just to get one sheet of good (better) quality sandpaper.
Based on the other answer I'm thinking I also need to make sure it's the right stuff, which also probably means not the cheapest stuff, no big surprise here. I'll give it a try with what I have in my workshop and then most likely I'll see what my hardware store has.
I did a quick search and the annoying thing is that in French "sandpaper" is called "papier de verre" i.e. literally "glass paper" (probably because the bits of sand sometimes look like small shiny fragments of glass?). You can imagine how successful searching for "glass paper for glass" on hardware stores is...
Thanks!
-
RE: Help Bites
So that other question, totally unrelated. It's about DIY, no computer or electronics (or even electricity) involved.
I have a cooking dish (for stuff that goes in the oven, think... I don't know, mac & cheese?) with two small handles. Something like this:
We use it a lot and as a result both handles are chipped. Nothing that prevents using it, just the usual wear & tear. But this being glass, the broken bits are quite sharp -- and what provoked me to post here is that the other day I got a nasty cut while cleaning it.Now I could just throw it away and buy a new one. It's not particularly valuable, financially or sentimentally or otherwise.
But first I'm wondering if there is an easy way to smooth out the edges?
If it was wood I'd just sand it. If it was metal I could also file it. But I don't know how to work glass? It's not particularly fragile (it's not cristal or anything like it) but it's obviously glass. Obviously regular sandpaper isn't going to get me anywhere. I have an angle grinder but also obviously the likelihood of shattering the glass is pretty high.
So, without buying some specialist tools, is there anything I can use to sand it and just round a bit the cutting edge?
-
RE: Help Bites
I'm about to ask another question on an absolutely not related topic so first some closure on the previous one, in the vain hope that it'll stop that discussion:
In the end I hard-coded the size of messages, to 4 MB (i.e. the same as the library default value), when I start the server (in the C++ code). Then the rest of the C++ code can trivially get this size (I stored it somewhere that my code can access).
The only complication that I hadn't thought about was that I also need to pass the same size when I open a channel to the server (from the Python side). I could have hard-coded it again in the Python code, but instead I decided to be a bit smarter (or er?). I added a request to the server to get the size (that one was trivial to implement), and now when I open a channel I first open it with the default size, then send this request to get the proper size, then close the channel and reopen a new one with the correct size.
This way if we ever want to change the size, there is only one place where it's hard-coded.
Job done. and wait for bug reports to do something (or nothing ).
-
RE: Things that remind you of WDTWTF members
@Arantor said in Things that remind you of WDTWTF members:
So what I'm hearing is that we need a script that can be fed logos to auto create the emojis for
:old-man-yells-at-x:
such that it will generate the emojiscorrectly, and then leave the images likeold-man-yells-at-cloudas edgein all cases?FTF
-
RE: Help Bites
@Bulb said in Help Bites:
You need to think about [whatever]
But that's the thing, I don't want to have to think about things I don't have any clue about!
(this is getting way out of a simple "help" question, and turning into a rant, but since I'm the one who asked, I don't feel any guilt in derailing it)
Yes, yes, you could probably make an argument that if I'm using a library to do X then I should learn how to do X and if that means setting some special parameters, I should learn about it. And you have a point, blindly calling into a library without having a clue as to what it does it not a good idea, to put it mildly. But the point of using a library rather than reinventing the wheel is to avoid having to think about all those nitty-gritty details. And now we're getting into the "leaky abstraction" thing -- that always happens, yes, as this example shows, but that still doesn't make it a good thing when that happens, on the contrary.
This is one of the things I dislike with a lot of neural network stuff. To get it to work you have to set some values of something or some other thing (number of neurons, layers, activation functions and what-not) and as someone tackling whatever domain-specific problem I'm looking at, I don't have the slightest clue as to what those are.
I've read many, many papers in my domain where people show how to get some result with a NN and there's always this part where they describe the setup of the thing and there is never any justification as to why they used
n
rather thann+1
for this parameter -- at best it's pure cargo-cult "we're reusing the values used by Smith & Smith as it worked for them."Anyway. Moving on.
-
RE: Fun with maps
Also Garcia apparently means something in Andorra but not in Spain.
Still, an interesting/amusing map.
-
RE: Sportsball WTF
@izzion reminds me of a quip that entered pop culture in . There was a satirical TV show with puppets mocking the news, so when a cyclist tested positive and defended himself with some poorly phrased half-baked excuse, they mocked him by having his puppet saying that it happened "hidden from his free will" or something similar (the French original was "à l'insu de mon plein gré" which is about 100% idiomatic...).
That show coined quite a few other expressions and memes, a few of them still alive 20 or 30 years later, and I'm sure many people aren't even aware they came from there.
-
RE: The Official Funny Stuff Thread™
@Gern_Blaanston said in The Official Funny Stuff Thread™:
You 're a professional fucking writer.
That's a different kind of stories you're thinking about here...
-
RE: Help Bites
All those things about MTU and the like (@dkf, @cvi) are part of the reason why I would prefer not to set any message size! I don't know much about network, but I know just enough to know that here lies dragons and that picking a good value isn't easy. Which is why I originally thought that whatever the library picks by default has a good chance to be a better compromise than whatever I might come up with.
Now of course that is assuming I'm using the library in the context where the compromise was decided upon, and more importantly that the library did think about this value rather than slap whatever was hardcoded by the rockstar developer who hacked version 0.0.1-prealpha. But even that came out of the mind of someone who knows more than I do about networks.
That said and tbh, the main reason I used the default was . And since coding a size is just a couple of lines, it's not like I'd have to go hugely out of my way to do it. So using the default size was probably fine as long as nothing really relied on it (all messages were small-enough to fit into the default size), now that I need to worry about message size, hard-coding something, anything really (i.e. the same as the default, but explicitly coded instead of it being a hidden default!) is probably the best solution.
Besides, I'm far from concerned about performances here. This is moving maybe a couple of tens of MB, at worst 100 MB or so, between a C++ application and some Python code (both are on the same computer) which is used to test ideas and tinker with the data. The code isn't optimised anywhere, so it's unlikely any additional communication cost caused by the message size would matter.
@Zerosquare said in Help Bites:
And if you don't want to abandon your clever hack
Calling it "clever" is probably way too generous. Parsing an error string to get a value is something worthy of the front page (inb4...). Yes, yes, I was pretty smug to have thought about it and made it work, but that was never more than "could that actually work? " so the faster it disappears, the better.
-
RE: Aviation Antipatterns Thread
@Arantor this reminds me of a story my mother told me about some distant relative (so at that point, this might as well be an urban legend...).
An old women, 70-something years old, had an accident and was brought to the hospital. Doctors and staff thought that she had some mental issue, maybe dementia, because she kept saying that she had to get home quickly as her mother was waiting for her.
Until someone put one and one together and realised that the lady still had her mother, who was 100-something and being cared for by her daughter!
-
RE: The Official Funny Stuff Thread™
@Zerosquare Pretty well played, Wikipedia
:obama_not_bad:
My first reaction was " has this got to do with the US army " and I had to click and then realised how the Pentagon was indeed such a perfect example of a metonym that even when it was right next to the word "metonymy" I still wondered why it was there.
-
RE: Help Bites
@Bulb said in Help Bites:
In the best tradition of HTTP. You configure maximum request size in all HTTP servers, and there ain't no way to query them for it either.
That sounds... well I don't know, I've never really worked with network so for once I'm going to withhold judgement and not just about how dumb that is, but... yeah, not what I was intuitively expecting.
But this still helps me: knowing that this is how HTTP servers work means I understand why grpc would behave in the same way, and that it might truly be something that doesn't exist rather than me looking in the wrong place.
I'm thinking that the proper solution is to simply specify the size as part of your protocol (i.e. your protocol only works with the default size) and call it a fortnight. Because I don't think there is actually a good reason to tweak that parameter, is there?
You're right, there is no good reason to tweak it. I could very well hard-code to whatever I want (either in both client and server, or in some sort of shared config if I want to be fancy) and indeed call it a day.
But this initially didn't appeal to me because I have no idea which value to use, so since the protocol has a default, I thought it was best (easier...) to just let the protocol pick whatever it wants (on the, probably hugely over-optimistic, assumption that this default was wisely picked -- or even, one can dream, that it could be auto-tuned to... whatever matters for it!) and then just ask it to tell me what it chose. But since that route is pretty well closed to me, I guess I'll either leave my horrible hacks or hard-code the size (depending on how strong the is today!).
@Tsaukpaetra said in Help Bites:
Duck programming at its best!
Yeah, I guess so. Thanks to all you little ducklings then!
-
RE: Help Bites
@Tsaukpaetra hey, this is the Help thread, not a TD Code Challenge!
For what it's worth, I spent a bit of time digging into the source code of
grpc
and there really doesn't seem to be any way to get this information, even from the server. The relevant variable ismax_receive_message_size
. It is stored within theServer
class and there is a neat accessormax_receive_message_size()
which is... private!So one more possible hack would be to define my own derived
Server
object just to get to look at the private parts of its parent () (in theServerInterface
where this function is first defined, it's protected, so the reimplementation could easily cast its way around the private-ness). But it's obviously ugly.Also, there are both a maximum
receive
and a maximumsend
size, the latter follows a different path and as far as I can see isn't really used anywhere, apart from being stored in theChannelArguments
. So I'm starting to think that maybe I'm supposed to be querying that (with some generic function that takes the macro nameGRPC_ARG_MAX_SEND_MESSAGE_LENGTH
?) and hoping that it is the same as thereceive
size?
Wait, actually that last parenthesis might be the way to go? Maybe I'm supposed to get the
ChannelArguments
(not sure how but I haven't looked, this is becoming a stream of consciousness post...) and query them for this or that weird enum string (well, not that weird, they're pretty well documented).Hmmm, let me check all that...
ETA: well, no, it looks like the
ChannelArguments
are something you pass when creating stuff, not something you can query later. So I can't get this object back and I'm still anywhere nearer to a proper solution.Well I've got something that "works" (for, uh, some definition of working...) so and let future-me hate on past-me when I'll have to debug that.
-
RE: Is it a duck or a rabbit?
@LaoC out of curiosity, is it possible to get other fake colours?
I don't know much about human perception so I have no idea which other pairs of colours might work, maybe red/cyan instead of cyan/red (but it's not even obvious that simply reversing colours would work!)?
-
RE: D&D thread
@Mason_Wheeler the game you describe is actually closer to a wargame than an RPG (but then so is D&D for many groups), but if you like
fake footballrugby, it is very fun and quite accurately reproduces the actual thing (minus the actual concussions & physical violence (inb4: where's the fun then?)): -
RE: Is it a duck or a rabbit?
Yes, of course. I'm not gonna go honk and delete my post, so you can all at my stupidity. But ignore I said anything.
So yeah, this is pretty much the whole effect and it clearly works even when the brain has no idea that the object (screwdriver or trackball) is supposed to be red.
-
RE: Help Bites
@Tsaukpaetra I didn't think of that, and actually that could be a solution. A fucked-up solution as this seems like something that I shouldn't have to do myself, but a solution nonetheless. Thanks for the idea!
Except... I would still need to find a way to get this information! Granted, that's in the server now and not the client, but I still have no idea how to get this.
Now since I can control the size when I start the server, I could store that information somewhere next to the server and have the code in the server read that information. At that point and since client and server are actually both running on the same machine, I could store that in e.g. a parameters file and read it from the client as well. In any case, that's really not very nice, and besides it wouldn't work unless I specify the size when starting the server (as opposed to what I currently do which is to let the server use the default size), which is one more ugliness.
So while that's an idea that could work in theory, in practice... meh.
(ETA: another idea that I initially had was the empirical approach of trying various sizes to find out which one works and which doesn't but while that's slightly less hacky than reading out the size in the error message, it's not very satisfying either)
-
RE: Is it a duck or a rabbit?
@LaoC I don't know how much the blue background skews the perception (see the (in)famous dress or other similar confusing images). So I'm not convinced this is a fair reproduction of the original (black & white) effect.
-
RE: Is it a duck or a rabbit?
@dkf I guess it would be relatively easy to check that if you could edit the image to replace the Coca-Cola logo by that of another drink (I'm thinking Orangina or Seven Up or Mountain Dew which are mostly blue or green).
But I have no idea how difficult it was to generate the original image, and thus how difficult it might be to generate another similar one.
-
RE: Is it a duck or a rabbit?
@hungrier not sure whether that really helps deciding anything, but I've noticed that if I scroll so that the top part of the picture, including the Coca-Cola logo, is hidden above the fold, then I still get the same red effect, although a bit weakened.
The weakening of the effect could just be that I'm now only seeing a small area of black & white and thus the triggered effect is not as strong. Or it could be that the effect is weak anyway, even with the full picture the intensity of the red very much depends of how I look at it. And the fact I still see some red could mean the logo isn't the key here (of course I consciously know that it's there, but maybe that doesn't really matter for the automatic colour-interpretation done on the fly by the brain?).
Then again, the weakening could also be that I'm no longer influenced by the logo.
Still, my hunch here is that the logo isn't really critical to the effect.
You could say it's a
redblack and white herring. -
RE: Driving Anti-Patterns - Necro Edition
@TwelveBaud that was a spur of the moment decision, taken on the hoof.
-
RE: Driving Anti-Patterns - Necro Edition
@Carnage I'm sure someone will tell me to get off my high horses but I'm just chomping at the bit to tell you that too many people are given free rein to repeat the same puns again and again, and saying they're not funny isn't just being a naysayer. But it's too late, that horse has already bolted.
-
RE: Driving Anti-Patterns - Necro Edition
@Zerosquare perfect intro for this piece of news (from yesterday and without even looking I'm sure it's been already posted in at least two other threads )!
-
RE: Driving Anti-Patterns - Necro Edition
@Zerosquare exactly. I got into that specific line of thinking because I remembered one former coworker who, worked before in a company building helicopters and in particular in predictive maintenance. Basically record (with various sensors, including microphones) all sort of noise and vibrations etc., feed that into a big heap of machine learning, stir the heap and hope that the output tells you when a chopper is going to go boom, preferably long-enough before it does that you can send it to the repair shop in time.
-
RE: Aviation Antipatterns Thread
@dcon the Programming Confessions thread is , though I'm not quite sure how -y the situation has to be for this to be a confession:
-
RE: Help Bites
Does anyone here know gRPC / protobuf?
I'm passing large-ish chunks of data between my own client and server and have implemented streaming because the overall dataset to pass is larger than the max message size (default is 4 MB, I know I could increase that but probably not to the point where it would cover all my use cases, so streaming it is in any case).
The issue I have is how to find out what size of messages to send in my streaming implementation?
Searching the interwebz I can find tons of discussions on how to set the maximum message size when starting the server, but this is not what I want. What I want is querying an existing server to find out what is that maximum size. Either my google-fu is weak, or nobody ever discusses that?
Currently I need this in two places and in one I've hard-coded a 4 MB (minus a small margin for headers etc.) limit. In the other one I've been smarter and implemented a horrible hack where I parse the string from the error message (!!!) to read the maximum size.
-
RE: Driving Anti-Patterns - Necro Edition
@Carnage it makes noise. Ergo, it does something. Ergo, that something can be optimised, once an objective function has been defined.
I'm an engineer with nothing to keep my mind busy. Of course I am pondering about optimising stuff, which means pondering various possible objective functions, their relative fitness-for-purpose, which means pondering purposes and getting into weird mental tangents.
Such as whether an helicopter (generating its own noise) would be able to detect by flying above a congested highway which proportion of cars have their engine stopped. And that's probably the saner of those tangents.
-
RE: Driving Anti-Patterns - Necro Edition
@Carnage said in Driving Anti-Patterns - Necro Edition:
Fun bit is, keeping space to the cars in front actually helps solve congestion since you dissipate shockwave congestion that way so if more people kept a bit of space to the car in front, traffic flow would be greatly improved.
Exactly! Which is part of why I'm doing it, and also why I tend to prefer staying on the "slow" lane in this setup, because that's where trucks are, and trucks tend to also do this. As a result, the whole lane tends to actually move a bit faster than the "fast" lane (though in practice that depends on a lot of other things such as the layout of the intersection a couple of miles ahead (!) that causes the congestion in the first place...).
Though now that I have a car with start/stop, I'm also wondering about how to optimise that (filed under: engineers keeping themselves busy...), because this slow-but-continuous mode means I'm never stopped and thus stop & start never gets an opportunity to kick in. Then again, unless the traffic is so slow that I stay stopped for at least 10s or so, stop & start is counter-productive (of course I can always manually turn it off but where's the fun in replacing some complicated algorithm that only works half of the time, and we're not even sure of that, by a simple user-action!?? ). Then again again, maybe the slow first gear driving is actually worse (depending on the flow of traffic, again). Then again again again, there is an argument to be made that stop & start is actually useless overall. Then again...
-
RE: Driving Anti-Patterns - Necro Edition
Moron of the day:
2-lanes highway, congested as usual. I'm on the right lane, I tend to drive smoothly in this kind of situation, letting gaps (of, say, 2-3 car lengths) appear in front of me then drive slowly to fill it, rather than accelerating and braking a lot to stay glued to the car in front of me.
Moron behind me doesn't like this and tailgates me, swerving to the right and left as if to spot a gap to pass me. Then suddenly decides he has enough, and swerves onto the hard shoulder to pass me!
Now that's a right here (and illegal). But it's not the first time I've seen people decide that the hard shoulder was a lane specially for them, so that doesn't make this moron a very original moron.
But then! After having passed me, he decides to go back in lane, just in front of me. And stays there for the rest of the congestion. So apparently I was somehow driving in such an insufferable manner that he had to break the law just for me.
Not quite sure if I should be flattered, or annoyed, or anything else. Though for sure I was impressed by such a display of... I don't even know what?!?
-
RE: Random but Not Dumb Videos Thread
Thanks though, the follow up(s) clarify. A bit.
-
RE: Driving Anti-Patterns - Necro Edition
@HardwareGeek true, of course.
But distractions will always happen even to the most careful of driver. OTOH, "don't run a red light" or even "don't go crazy fast" are not things that a driver should do, ever, and even more so, they're systematically punished even if no accident happens!
So I would still put those two as the top items to hammer into drivers' minds. Because as this video shows, otherwise it is a ton of metal that risks being hammered into their heads.
-
RE: Driving Anti-Patterns - Necro Edition
@Carnage looks like at least half of them are running a red light or a stop sign (hint: don't do that...). And almost all of them would have been avoided by not going way too fast (sometimes that applies to the victims as well as the driver who caused the accident!).
Loss of control of vehicle (skidding in the rain etc.) and other things seem a distant 3rd to those two.
Dunno if that's a bias of the video (and on relying on dashcams).
-
RE: Today in reading the headlines...
@kazitor one class in university, the professor had a lecture where he announced the results of the test (I don't remember why there was a lecture after the test, maybe that professor was giving another class or it was a partial test, whatever).
He first put up a slide with everyone's score, ranging roughly from 2 to 8 (on a scale from 0 to 20 where 20 is "perfect"), meaning everyone had failed (<10).
Then after leaving the class sigh and moan for a few seconds, he said "for [random fake reason I don't remember], I've decided to adjust a bit the scores" and he showed a second slide where the scores were basically the previous, time 2 or 2.5 (so basically most of the class passed, which was the norm).
We all nervously laughed at the "joke" and how the professor was kind to us but rumours were that he pulled a similar trick every year and no one, professor included, ever questioned whether, since this happened every year, the fault was with the professor rather than the students...
-
RE: Nope
@DogsB when something is literally orders of magnitude (10x or 100x) more expensive than another variety of something, you can be almost certain that it is not that amount of times better.
At that stage, the price difference is purely a marker of "I can afford it" rather than quality.
-
RE: The Official Funny Stuff Thread™
@HardwareGeek said in The Official Funny Stuff Thread™:
I blame the French.
Bullies always hit on the same target.
But what I really wanted to post: I recently read that in old Norman (and apparently that sort-of continued for centuries, only disappearing when regional accents mostly disappeared a century or so ago), the French "ch" was spoken as a hard "k" rather than, uh... "ch" (or "sh").
This (partly) explains, for example, how English got "cat" where the French ended up with "chat" or "cart" from "char."
-
RE: The unofficial offical bad pun of the day thread
@Gern_Blaanston said in The unofficial offical bad pun of the day thread:
I broke up with my girlfriend Ruth, so now I'm just living my life ruthlessly.
In the children's classic "Swallows and Amazons," one of the girls who plays at being a pirate is called Ruth, but insists on everyone calling her Nancy, because "pirates are ruthless."
-
RE: I, ChatGPT
Heard this morning on the radio (couldn't find a link after
a very thoroughone semi-random web search ):An undercover report on the condition of women in Iran or Afghanistan with the voices of interviewed persons filtered through AI to make them unrecognisable.
One one hand, that seems a not-totally-stupid use of AI? On the other, journalists have been using various kind of sound filters (or having "the words are spoken by an actor") to do do that for ages so why use AI? On the third hand (), all those filters were always obvious and sort-of broke the flow of the report, so... why not?
-
RE: WTF is happening with Windows 10? And nothing else
@Arantor Right.
So next you're going to get angry at being forced to stick to Win10, before telling yourself that maybe you can live with it if only you can fix a few things, before falling in a deep sadness about your lost productivity, and finally saying that after all Win10 isn't that bad.
Filed under: the five stages of Windows
-
RE: WTF is happening with Windows 10? And nothing else
@Arantor said in WTF is happening with Windows 10? And nothing else:
the thing is, Win10 bucked that trend in a nasty way.
Au contraire, I think it's pretty much following the trend, as you illustrate since you're now clinging to it. That you do that because of the shittiness of Win11 rather than any love of Win10 doesn't change that.
-
RE: WTF is happening with Windows 10? And nothing else
@DogsB said in WTF is happening with Windows 10? And nothing else:
@Arantor said in WTF is happening with Windows 10? And nothing else:
I would love to go back to Windows 7.
I hate to concede it but windows 10 wasn’t god awful until about 2022.
It feels like every version of Windows is first hated, then grudgingly accepted, then desperately clung to as a newer version appears.
The kind interpretation is that every version starts shittier than the previous, mature one, and gradually improves during its life cycle.
The less kind interpretation is the same but stops before "and."