Well said. The value of free speech is that all perspectives are heard, so that the best hopefully prevails. Social media is not doing that. You only see the shit you already agree with or the most ridiculous and extreme points on the other side.
> kids are just going to find places to hang out online that are less moderated and less regulated and less safe. How is that not worse?
Some will. But I bet a lot of kids "have to be" on Instagram/TikTok/etc because everyone else is. I don't think they all gonna flock to 4chan because they got locked out of the big platforms.
I'd argue even the darkest corners of 4chans aren't as bad as the average daily dose of brain rot delivered to hundreds of millions of people through infinite scroll algorithms on TikTok &co. And once you remove the sickening parts of 4chan I'd say it's overall a much more pleasant place than most other social medias, it's one of the last mainstream website that still somewhat feels like the golden age of internet
>I'd argue even the darkest corners of 4chans aren't as bad as the average daily dose of brain rot delivered to hundreds of millions of people through infinite scroll algorithms on TikTok
Then I'd argue you haven't actually been to the darkest corners of 4chan.
It isn't so black and white as people paint it to be. /g/ is probably the best place on the internet today to discuss technology even with occasional dumb jokes. The crassness of the site and reflexive reaction from you and others has turned out to be a great wall to prevent the corporate enshittification that affected the rest of the internet.
The same point holds of interfaces. And it’s not clear what the alternative is. No type system I’m aware of would force you to change all occurrences of this business logic pattern, with or without ad hoc polymorphism.
But at least ad hoc polymorphism lets you search for all instances of that business logic easily.
ML languages have a "types, modules, types-of-modules, and functors" approach to ad-hoc poly. It's a bit strange compared to what other languages do. I am wondering whether it's ever been seen outside of SML and OCaml.
For JSON deserialisation, you would declare a module-type called "JSON-deserialiser", and you would define a bunch of modules of that module-type.
The unusual thing is that a JSON-deserialiser would no longer be tied to a type (read: type, not module-type). Types in ML-like languages don't have any structure at all. I suppose you can now define many different JSON-serialisers for the same type?
The article provides a contrived example and doesn't prove that ad-hoc polymorphism reduces type-safety. Even when `Maybe [a]` is being folded via `Foldable f` the claimed type-safety isn't reduced, it's the context of the folding that's being changed from `[a]` to `Maybe a`, and everything is type-safe. Secondly, if you really want to distinguish between the empty list and disabled allow-lists within your type-system you do define your own data type with that representation, and you don't declare it foldable, because the folding algebra doesn't make sense for any practical use-case of the disabled allow-lists. The language actually provides you with the means to reduce evaluation contexts your types can be part of.
Maintaining linear history is arguably more work. But excessively non-linear history can be so confusing to reason over.
Linear history is like reality: One past and many potential futures. With non-linear history, your past depends on "where you are".
----- M -----+--- P
/
----- D ---+
Say I'm at commit P (for present). I got married at commit M and got a dog at commit D. So I got married first and got a Dog later, right? But if I go back in time to commit D where I got the dog, our marriage is not in my past anymore?! Now my wife is sneezing all the time. Maybe she has a dog allergy. I go back in time to commit D but can't reproduce the issue. Guess the dog can't be the problem.
> So I got married first and got a Dog later, right?
No. In one reality, you got married with no dog, and in another reality you got a dog and didn't marry. Then you merged those two realities into P.
Going "back in time to commit D" is already incorrect phrasing, because you're implying linear history where one does not exist. It's more like you're switching to an alternate past.
I don't really agree that it's harder to reason over in the sense that it's hard to understand the consequences, but I also agree that a linear history is superior for troubleshooting, just like another comment pointed out that single squashed commits onto a main branch makes it easier to troubleshoot because you go from a working state to a non-working state between two commits.
there are others tricky time issues with staging/prod parallel branching models too, the most recent merge (to prod) contains older content, so time slips .. maybe for most people it's obvious but it caused me confusion a few times to compare various docker images
> the most recent merge (to prod) contains older content
Can't that also happen with a rebase? Isn't it an (all too easy to make) error any time you have conflicting changes from two different branches that you have to resolve? Or have I misunderstood your scenario?
hmm my experience didn't even require rebase to cause me troubles (but again, it was 90% pebcak). it's possible rebasing can cause time confusion, maybe you can describe in more detail what you had in mind, i cannot guess on my own but i'm curious
You omitted the merge commit. M is taken so let's go with R. You jump back to M to confirm that the symptoms really don't predate the marriage. Then you jump to R to reproduce and track down the underlying cause of the bad interaction.
Had you simply rebased you would have lost the ability to separate the initial working implementation of D from the modifications required to reconcile it with M (and possibly others that predate it). At least, unless you still happen to have a copy of your pre-rebase history lying around but I prefer not to depend on happenstance.
> Had you simply rebased you would have lost the ability to separate the initial working implementation of D from the modifications required to reconcile it with M
I'd say: cleaning that up is an advantage. Why keep that around? It wouldn't be necessary if there was no update on the main branch in the meantime. With rebase you just pretend you started working after that update on main.
For the reason I stated that you quoted right there. Separating the potentially quite large set of changes of the initial (properly working) feature from the (hopefully not too large) set of changes reconciling that feature with the other (apparently incompatible in this example) feature. It provides yet another option for filtering the irrelevant from the relevant thus could prove quite useful at times.
Recall that the entire premise is that there's a bug (the allergy). So at some point a while back something went wrong and the developer didn't notice. Our goal is to pick up the pieces in this not-so-ideal situation.
What's the advantage of "cleaning up" here? Why pretend anything? In this context there shouldn't be a noticeable downside to having a few extra kilobytes of data hanging around. If you feel compelled to "clean up" in this scenario I'd argue that's a sign you should be refactoring your tools to be more ergonomic.
It might be worthwhile to consider the question, why have history in the first place? Why not periodically GC anything other than the N most recent commits behind the head of each branch and tag?
Until you commit to trunk, you haven't gotten the dog. You're proposing getting a dog. The action of getting the dog happens at merge to trunk. That's when history is created.
That’s also because there are multiple concerned that are tried to be presented as the same exposed output through a common feature. Having one branch that provides a linear logical overview of the project feature progression is not incompatible with having many other branches with all kind of messes going back and forth, merging and forking each other and so on.
In my experience, when there is a bug, it’s often quicker to fix it without having a look at the past commits, even when a regression occurs. If it’s not obvious just looking at the current state of the code, asking whoever touch that part last will generally give a better shortcut because there is so much more in the person mind than the whole git history.
Yes logs and commit history can brings the "haha" insight, and in some rare occasion it’s nice to have git bisect at hand.
Maybe that’s just me, and the pinnacle of best engineers will always trust the source tree as most important source of information and starting point to move forward. :)
Just because it's free? Let's talk again when all open source projects are funded and controlled by the state with zero competition between them and no consumer choice. Only one Linux distro, only one database, only one web framework, etc. And it's decided top-down from the state what to work on. I doubt though that these projects would have started in the first place in a communist setting.
There is no reason such a state would have to set things up this way.
As an example: you probably know that germany has socialized healthcare. It is, however, not implemented as a single-payer model. Instead there are tons of different insurances competing with each other, while having a highly regulated floor of what they MUST offer.
Is the model perfect? Hell no, it has tons of issues - though overall it's pretty solid. My point is just that social policies and "no internal competition ever" does absolutely not have to go hand in hand. There is a massive middle ground.
See: social democracy as a concept and in its current implementation.
Germany has a dual healthcare system with both public (GKV) and private health insurance (PKV) options. About 10% of residents use private health insurance.
Problem here being that those terms aren't used as defined in regular discourse. Language changes and casual use differs from academic use.
When on an american-centric board anybody writes about "communism", I assume they refer to anything from marxism to stalinism to socialism to democratic socialism to social democracy up to anything non-hyper-capitalist. Not great, but sadly something to be taken into consideration.
Especially when looked at in context - parent was criticizing the EU initiative by essentially claiming something like that leads to a kind of monoculture like in a planned economy reminiscent of "communism", here probably meaning stalinism, from what I assume is a radical libertarian position. Which tells me the person is likely american, implying a rather ... minimal awareness of the nuance here.
Please, look at the actual comment chain and it should be rather trivial to make out what everybody is talking about. Does your comment really add value here?
The fundamental reason why terms are confused is because malicious
actors (bad faith) intentionally set up to at best muddy the waters
and at worst associate things they fight against with the worst
adjectives. That doesn’t reflect on anyone present right here, just a
process that took decades.
I don’t care if someone “doesn’t know” about the nuance when they
breathlessly throw back with One Cereal For Everyone Decided By The
State. Come on.
> Please, look at the actual comment chain and it should be rather trivial to make out what everybody is talking about. Does your comment really add value here?
I can understand that you think my reply is pedantic noise. That’s
simply because we have different goals and things that we intend to
communicate. I’m content with setting the record straight. You
apparently want to calmly explain the difference between apparent
Stalinism and Bernie Sanders-style Socialism.
I think I am able to make out what people are talking about. But you
can’t seem to, right in this context, imagine that we all have different
goals ourselves about what we wish to get out of commenting here.
This is as usual confused. People keep discussing communism as if they were (via analogy) talking about capitalism being about men in suites with fake smiles, green paper, bank vaults, and powerpoint presentations. Every time people have to respond with paragraphs upon paragraphs just unrolling all that nonsense.
Try to update your knowledge on the subject instead of talking like an alien in Trafalgar Square.
The german trains, even at their worst, are so much better than anything in the US. Complaining can also be a sport in Germany. Take a ride on Njtransit or the NYC subway to appreciate the difference. Or try to get anywhere in New Jersey without a car. In many parts of Germany, you can get almost anywhere conveniently with only public transportation.
It's probably worse if it was once reliable and now not, compared to if it's never reliable: if it's never reliable, you've been trained to have a huge safety margin and backup plans, if it's reliable and suddenly it messes up, you're thrown in a new situation and have to think "Shit, what do I do now?". Probably very stressful, and it leads people to avoid the service altogether.
Although apparently NYC subways used to be better too.
what’s going on in New York is irrelevant. The trains in Germany are largely bad. Bad enough that I don’t use them unless I have to. Once they’re at that stage it doesn’t matter how much worse they get for me, I still won’t use them.
I can't say what your experience is and what 'absolutely broken' means. There is data on these things. I can only tell you what the data says. Could be you are in region that is worse then others. Or your definition of 'absolutely broken' is different then most peoples.
JK I think he means it ;)
reply