The main reason for populism is that the incumbent governments do a consistently poor job satisfying their constituents' preferences and interests, so people get desperate to find something / someone different that might work better. Always has been, always will be, social media or not.
We haven't invented a governance structure yet that would be immune to this, although some are better than others. I'm sure the current social media algorithms are harmful as well. You can ban viral algorithms, but the hostile actors whose literal job it is to drive polarization / populism will just find other strategies to effectively deliver their message.
"Education" is nice and all, but millions of people keep smoking despite the obvious harm and decades of education, not to mention the many limitations, taxes, and bans. I mention smoking as an obviously-bad-thing that everyone knows is bad. Education succeeded, and yet, here we are, still puffing poison. But you can also look already-polarized political topics. There's been no shortage of education on those topics either, but if that worked well enough, we wouldn't be decrying populism right now.
> "Education" is nice and all, but millions of people keep smoking despite the obvious harm and decades of education
I think there’s a missed opportunity for media to make it explicit that by giving their time and attention to these platforms, people are directly generating profit. Way too many assume their involvement has no real effect, but it does. I suspect people would be far less willing to log in if it were clear that each session generates, on average, X dollars in revenue. It’s a business model most people still haven’t fully digested.
I know all about their business models, yet I couldn't care less how much money Facebook gets from ad clicks. Them making a profit is not directly harming me.
The things that are harming me are a lot more complicated than that, but people don't have the attention span to be educated about such complex issues. It's easier than ever to spread "education" now. The fact that it doesn't stick is not some grand conspiracy – most people simply don't care.
How is MacOS as enshittified as Windows? It doesn't have ads, doesn't push AI on you, their online services are trivial to ignore once and never think about again, etc. I haven't tried Tahoe, and sure, its new glass UI is shit, but merely incompetent UI design is not "enshittification" and is not in any way equivalent to what Microsoft does in Windows.
> their online services are trivial to ignore once and never think about again
The workarounds to get rid of the nag to log into your icloud account on macOS are far more difficult than the workarounds to avoid using an MS account in Windows.
Buy a new Apple Watch and notice that the settings app with have a [1] badge trying to upsell you to buy AppleCare+. They obscure dismissing these by clicking the "Add AppleCare Coverage" button and then having a button that says actually no.
The undissmissable badges in settings irk me to no end. Using language like “finish setting up” in iOS to describe me opting out of Apple Intelligence by choice as leaving MY device in some sort of “unfinished state” is user hostile too. With the amount of effort it takes me to push back constantly on these dark patterns, I know for a fact all my less tech savvy friends and family just aren’t bothering and that’s what they count on.
Not as egregious as what windows is doing with copilot everywhere or sneakily flipping user-toggled options during updates, but it’s all some degree of gross.
This, on top of the nonstop onslaught of advertisements for F1. It seemed like every one of Apple's services were pushing for that movie. They even put it into maps, wallets, into CarPlay (while people were driving!) It was surprisingly shameless.
It's certainly not as bad _right now_ as what you'll see on Windows 11, but this is something that will almost certainly only get worse over time.
Surely we can distinguish MacOS – the operating system – from the online services provided by Apple that happen to have a native app?
If you are choosing to use Apple online services, sure, you'll get upsells I guess, as with any other online service. I don't use any of Apple's online services, and never see those ads.
macOS does have ads, their online services are worse than Windows, and installing basic software like Homebrew and Git is like having teeth pulled.
Windows is absolutely miserable, but with WSL installed it's far and away the better dev environment. I say that as someone who dailies Linux and hates all three OSes.
The authenticity of old fashioned forums is often outweighed by their poor UX and in general terrible ergonomics. It's no wonder that so few people want to use them anymore. Reddit's "nested, collapsible comments sorted by upvotes" format is simply superior.
20 years after Reddit started, the best that the forums can offer is perhaps discourse.org, which is barely any better than traditional forums – sleeker UI for sure, but it's still fundamentally the same unworkable linear format. It's like sticking to magnetic tapes in the age of SSDs.
Even Facebook, one of the dumbest discussion platforms, has nested comments. Terribly implemented of course, but how does the platform designed for the lowest-common-denominator kind of user have more advanced discussion features than forums made for discussion connoisseurs? It is utterly baffling.
I strongly disagree. But maybe because of a difference of perspective. If you're imagining a Reddit-scale forum, with millions of people with no sense of community and no knowledge of the content they're consuming, then yeah a traditional forum format is awful.
Forums shine as spaces for focused communities, where people have reputations and care about the subject matter. Time-sorted discussions are great because that's what's happening - a discussion in the community. You don't want to read someone's quip first, you want to get the whole context. You don't want there to be upvotes that people try to earn - there's already your reputation in the community. If someone's a troll or gives bad advice or is wrong, they'll get called out, or banned, or simply ignored as everyone knows they aren't respected.
Forums just aren't meant for generic content and it's not because of the UI, it's because the entire concept is not compatible with masses of semi-anonymous users with no commonalities.
"Nested comments sorted by upvotes" is, for free and frank discussion, inherently far worse than non-nested in-line comments. With the latter there's no hive-mind effect, no consensus-seeking, no dopamine/approval-chasing. Also, traditional forums tended to encourage longer-form posts (which you can still see in places like Spacebattles), which naturally contained quite a lot of technical detail and pictures, whereas Reddit (and HN) are optimized for very short comments. In Reddit's case, smarmy one-liners, usually.
But the main problem, to repeat for emphasis, is that the upvote/downvote system (even if it's fair and used virtuously, and it usually isn't,) stifles disagreement and debate.
When I append "reddit" to my google search query, I'm not looking for "disagreement and debate". I'm looking for specific information on non-political topics, such as repairing my car, finding a good product in the sea of garbage, or learning new techniques. Such topics are typically discussed cooperatively rather than adversarially. For this stuff, consensus-seeking is a feature not a bug, and where the consensus appears inadequate, I'm well capable of looking past the top post. Reddit's format is not perfect, but it's better than having to read through a 30-page thread in which most messages are irrelevant to most other messages. Such threads are linear only artificially through a UI that hides the structure of the underlying conversations.
If you don't like the upvotes aspect of reddit, we could settle on the same nested format but without sorting by upvotes. But with forums, we don't even have that.
Reddit's comments aren't one-liners because Reddit's format encourages that, it's because it's the most popular site where everyone goes. If forums were as widely popular, they would see the same people making the same comments there too.
> If you don't want that, you gotta bring a wrapper or another reactivity library/framework.
Being able to use a different library with a component, instead of the component being tied to React, is the whole point.
React isn't 100x more popular because its reactivity system or any other feature is 100x better. Half the reason it's popular is network effects – too many frontend components / libraries are made React-only even though they don't need to be React-specific.
Those network effects are the trap, not the reactivity system that's as good as any other for the purpose of writing a Web Component. If you don't want to use simple and small tools like Lit.js, that's fine, but that's your choice, not a limitation of Web Components.
The point of Web Components is not to provide a blessed state management or virtual DOM implementation that will have to stay in JS stdlib forever, it's to make the components you author compatible with most / all UI libraries. For that goal, I don't know of a better solution.
I get your point. I'm fully with you that it makes no sense to use React and write React apps if you can achieve the same without React. I hate the fact that many great frontend components only work with React, especially considering that React didn't properly support Web components for ages, whereas almost every other framework had no problems with them.
However, out of the box, Web components don't come with almost anything. Comparing React to Web components is comparing apples to oranges.
Lit is great, but Lit is a framework. Now you're comparing React with Lit. Different story than React vs. vanilla Web components.
Lit is not a framework. Lit only helps you make standard web components that you can use anywhere *because they are web components*.
You could take a Lit-based web components a rip Lit out and you would still have the same component that you can still use anywhere. Lit is just an implementation detail.
Lit is a framework, that's the whole point of it. Lit is a framework that happens to generate web components, but the goal of Lit is to provide the rendering and state management necessary to actually write those components. That's the framework bit.
If you take a Lit-based web component and rip Lit out, you have dead code that won't work because it's dependent on a framework that you have removed.
You could take a Lit-based web component and replace it with a non-Lit-based web component and that would be fine, because Lit uses web components as its core interface, but Lit itself is still a framework.
> Comparing React to Web components is comparing apples to oranges.
I mean, yes, but you're the one making this comparison, saying that WCs lack reactivity etc.
Web Components are an extension of the DOM – a low level browser API. They are similarly low level. That's expected. I don't need or expect them to be something more.
I am happy that I can use any reactivity system I want to implement a Web Component. That's a feature, not a bug. Having implemented a reactivity system myself, I know that there isn't a perfect one, the design is full of tradeoffs, and I'd rather not have a blessed implementation in the browser, because it will inevitably turn out to be flawed, yet we won't be able to retire it because "we can't break the web". A blessed implementation like that would benefit from network effects just like React does, and would have all the same problems as React, plus the inability to rapidly innovate due to the browser's unique backwards compatibility concerns. I'd rather ship an extra 3KB and avoid all those problems.
Fair enough. I agree with you. It occured to me that the comment I originally replied to that claimed "Web components are the way out of this trap" doesn't mean that you can't add helpers for reactivity.
Except the problem with compatibility is almost always the reactivity element, right? Getting, say, Vue's reactivity system to compose properly with Svelte's, or React's with Angular's. And that's not going to work well when Vue is using signals to decide when to rerender a component, React is using its props and state, and Svelte isn't even rerendering components in the first place.
This is especially difficult when you start running into complicated issues like render props in JSX-based frameworks, context for passing state deeply into a component, or slots/children that mean reactivity needs to be threaded through different frameworks.
Preferred syntax is whatever looks nicer to you. It's not really two different syntaxes, just one more flexible syntax where if you choose to go full braceless, it ends up looking like python. I personally like the new braceless python-like syntax.
Scala has two main camps, one is purist FP (cats / zio / etc.), another is plain Scala, banking on ergonomic OOP+FP fusion. Neither of those is the default. FP advocates are more vocal online but that's because they need a bunch of libraries (thus more OSS work) to make that approach work, whereas the other camp just uses plain Scala and simpler libraries that aren't reinvented every 5 years, so their online presence is not as apparent.
Scala is very much alive, it's just past the initial hype stage, well into the slope of enlightenment / plateau of productivity depending on which style of Scala one is into. It's now growing slower but based on more sustainable pragmatism instead of just hype.
It became less popular a long time ago as the hype of actors as a programming paradigm died down, and then eventually akka adopted non-OSS BSL license which made many users including us switch to Pekko (a community fork) which is still developed and maintained, but again, this branch of Scala evolution is quite past its prime. Scala offers more and arguably better libraries for working with concurrency now, and even cooler stuff is on the horizon with kyo / ox / caprese.
I have been working on adding Pekko-based data pipeline into my side project, and it's an incredibly powerful system. The "bare" actors are rarely used. With streams, you can control parallelism, backpressure, add batching, retries, and so on. This is why this is so popular with systems ingesting massive amounts of data - log processing, IoT telemetry.
Which libraries are you referring to that do the same? Just curious.
I meant FP libraries like Cats Effect / FS2 / ZIO et al. – they don't really do the things that Akka / Pekko is very good at, such as multi-machine parallelism, but the conventional wisdom nowadays seems to be that it's easier to start with those libraries and progress to Pekko if you ever need that, rather than architect the system with Pekko from the start when you don't need its power.
I don't know if I personally agree with that, I've had a better experience with Akka (even raw actors) than with FP libraries, but what I mentioned is definitely the general vibe in the publicly active part of the community that's I'm observing. We gotta keep in mind that there are lots of companies and devs that never talk about what they're doing in public, so of course my perception is biased by that.
My own expertise is shifting more and more to the frontend / Scala.js these days, so please forgive/correct any inaccuracies.
The assumption that Cats Effect / FS2 / ZIO is easier than Akka / Pekko is questionable. There's the assumption that the Akka ecosystem requires the entire system to be built using the various features the ecosystem offers, when in reality it easily scales down to simple microservices just as well, if that's the only option or the overall preference.
One reason to reach for the pure functional libraries is a desire to avoid some of the many footguns Akka / Pekko has. For a long time, using Akka meant not being able to rely on the Scala type system for checking messages sent between actors, and for the people attracted to Scala due to the advanced type system, this was a deal-breaking drawback.
All in all, the FP libraries and the actor system libraries are almost direct opposite approaches to problem solving.
Well, Akka/Pekko is typed now. There is a learning curve to Akka, but it took me 3-4 weeks to get my system working. I can't imagine doing it with pure FP, it would break my brains.
As someone said - these are very cool but niche capabilities that companies do not talk about. It's almost like a secret weapon in the sea of over-engineering and hype.
Scala has been very enjoyable and productive for me and the teams I've worked on. The first couple years of v2 -> v3 transition were a bit rough as the tooling and ecosystem was catching up, but now we happily use Scala 3 with no looking back. The language and ecosystem are evolving in a good direction, and I'm happy to play a small part in that with my open source libraries for Scala.js (which is the entire reason I got into Scala in the first place – so much simpler and safer than Typescript).
Scala is perhaps not going to replace Java in every old enterprise, but in my personal experience working for startups, it's been an awesome force multiplier for small teams who need to productively pump out safe and ergonomic code. Finance, health systems, etc. And yet it's also ergonomic and pleasant enough for me to eagerly use it in my non-mission-critical personal projects as well.
> it's been an awesome force multiplier for small teams who need to productively pump out safe and ergonomic code.
How much of this would be due to actual language features, and how much due to selection bias induced by talented and ambitious software developers looking into functional programming languages as a means to satisfy their intellectual appetite?
I've worked both at a startup that used functional programming libraries pretty heavily, and a startup that is using as plain of a Scala as you can imagine (no cats / zios / kyos / etc. in sight), and both benefited greatly from Scala language itself. The rich, safe and sound type system, combined with ergonomic syntax and well thought out features make it very easy to both read and write code – and most importantly – to make massive changes with very high confidence – which is an absolute necessity in a fast moving startup where the business requirements evolve all the time, features are shipped urgently with some tech debt that needs to be effectively addressed later, etc.
In terms of talent there is definitely some self-selection as with any non-default tech stack. Scala is a sharp tool and there are both people who are attracted to it for the pragmatic utility of its sharpness, and people who are attracted to it for wanting to play with sharp things. Both types are smart but the latter group have given Scala a bad rep in the past for being too smart and thus writing code that was too clever for others to understand. But nowadays the general vibe in the talent pool is a lot more pragmatic.
> I've worked both at a startup that used functional programming libraries pretty heavily, and a startup that is using as plain of a Scala as you can imagine (no cats / zios / kyos / etc. in sight), and both benefited greatly from Scala language itself.
Wouldn't you want to use Kotlin for the latter these days? It seems to have broadly wider adoption than any "plain" variety of Scala.
I don't know, kotlin has its pros, and is absolutely here to stay due to Android alone, but I always felt it being more or less just syntactic sugar for Java 8, to the point that now even Java has some more advanced/elegant features, like proper pattern matching with algebraic data types, while Kotlin is stuck with dumb sugar for instanceof checks.
Scala was always much more elegant and actually going the extra mile.
Kotlin's adoption is not that much bigger than Scala, and it's no good to me, as it's heavily concentrated in the Android world, which is irrelevant to me. Among other things, that means that Kotlin.js is not as good as Scala.js, both itself and in terms of the ecosystem – and the quality of Scala.js is half the reason I'm using Scala in the first place.
Kotlin as a language is also closer to Java on the Haskell <---> Scala <---> Java spectrum. We just don't want to move in either direction on that spectrum, Scala sits perfectly where it makes sense to us.
It's interesting that some people here are saying that Java's recent improvements will eat into Scala's market, when actually, it seems that it will eat into Kotlin first.
I've had a (relatively) bad time with Scala codebases. The last one I was involved in was like a 6-minute wait between making a code-change and being able to run or test it. But I still wanna work with Scala devs.
I'd rather work with Scala devs on a Java codebase than Java devs on a Scala codebase.
It's not about intellectual appetite though. It's about not re-litigating the same crap at every new work place. Avoid mutability and nulls where possible, etc.
The problem is that it is easy to write code that is not easy to read/understand afterwards. Especially if the code has a lot of operator soup and implicits.
Do people still do that? I thought that the whole "you can just google goobedygook" meme died already! ZIO for this reason has sane normal proper names for things for example.
Scala is not just a good functional programming language. It's also possibly the best OOP language around. The magic happens when these two aspects are combined.
This has been my personal discovery as well. I inherited a bunch of old Scala code and, having had no experience with Scala, it took a while to get up to speed.
We built full stack web applications: Scala on the JVM on the backend, and Scala.js on the frontend. For the frontend, used React.js (via Scala.js bindings) at one company, and my own Scala.js UI library Laminar at another. Mobile was implemented as a responsive web app. I've read that you can even use React Native from Scala.js, but we haven't needed that, so I haven't tried. The older React.js bindings were somewhat cumbersome, but the newer ones (slinky.dev) were great. The rest worked very well.
Working in a single language across frontend and backend is amazing, especially when the language is so nice. Sharing models, codecs, validations, etc. And again – all of that in a very friendly language. Scala's expressive yet safe type system is very good at describing the business domain, encoding constraints, etc.
The only weakness of Scala.js I would say is it takes a bit more effort to integrate with JS libs. The mechanism is the same as with Typescript – just need the type definitions, but in practice it needs a bit of manual work. It's not a big deal though because with Scala.js you don't really do the 200-npm-dependencies thing that so many JS projects are cursed with. Lots of stuff comes with the language or from nice Scala libraries, including immutable data structures, powerful collections, validations, state management, etc.
Scala has somewhat of a reputation for being complex, but the language itself is ecstatic in its simplicity and elegance. The problem historically lied in certain functional programming libraries that require a certain formal / academic mindset to work with. They did become more ergonomic and better documented with time, but those are still very advanced concepts for most devs. I did work with such a codebase, and I have to admit it was not the easiest. But that was before AI – nowadays it's a lot easier for me to figure out these things. But I don't need to, at my current job we don't use them. So I would advise to learn Scala the language before going off the deep end into hardcore FP libraries. That's a completely optional destination that you don't need to force onto yourself if that kind of style doesn't jive with you.
Speaking of AI, I've been asking both ChatGPT and more recently Claude about Scala 3 and about functional programming libraries, and they're pretty good. I don't "vibe code" so don't know about that, just asking for code snippets or for explanations.
I think a lot of criticism of Scala comes from the functional paradigm. More specifically it’s trying to be a mainstream language when the concepts it represents are not quite mainstream concepts for most software. The language designers, in an attempt to make it more mainstream, allow devs to use Scala in the more mainstream way (object oriented). This flexibility, ultimately, perhaps strangely, appears to hurt its adoption because of the learning curve of dealing with a language that mixes the two concepts.
Also for me, subjectively, it honestly feels too abstract at times. You can almost feel the academic joy of the beautiful, unintelligible concepts where you can express things so succinctly, but requires a small mountain of concepts to understand how to write that nice code. It’s quite frustrating to do battle with the compiler when you don’t fully understand the type system and that initial hurdle is kind of tough to get over if you’re also trying to switch into a functional paradigm from an objected oriented one.
The problem with overly abstract concepts is a problem of specific Scala functional programming libraries, and not of the Scala language itself, or of other, simpler Scala libraries (e.g. com-lihaoyi stuff, Play, my own Laminar on the frontend, etc.)
If you need to know category theory concepts like Monad / Semigroup / etc. in order to understand your code, you're not doing regular Scala, you're doing Haskell-style FP in Scala. Which is a popular choice that many people swear by, but is entirely optional. Personally I don't think the complexity of that approach is worth it, and we don't use any of that stuff at work, and still reap the benefits of Scala.
Scala is a true multi-paradigm language, it does not have a monoculture. Lots of people who use Scala don't use highly abstract FP libraries. I very much don't think that the OOP side of Scala is the language designers' concession for the sake of broad appeal. Seamless fusion of FP and OOP is the essence of Scala, and it works great for that without any third party libraries. The designers' attitude is evidenced by the libraries created by their companies (e.g. Play, Akka) and by the learning materials, both of which lean heavily on plain Scala without going off the deep end with FP libs.
> If you need to know category theory concepts like Monad / Semigroup / etc. in order to understand your code, you're not doing regular Scala, you're doing Haskell-style FP in Scala
FWIW, "Semigroup" is not a "Haskell concept" either. Equally, it's a facet of specific Haskell functional programming libraries, and not Haskell itself. Granted, Monad is baked into the language (as do notation).
> I think a lot of criticism of Scala comes from the functional paradigm.
Which functional paradigm. There are at least two in common usage in the Scala community. Odersky's vision was an ML style FP. And now ML patterns are common in modern PLs.
Java will never "catch up" to Scala (for example, the type system / generics will not evolve in the foreseeable future).
But once Valhalla lands, with some additional JEPs, Java will be very close to the core of what Scala offers. Where there are gaps, some of these can be filled via libraries (think immutables.org, or others providing persistent data structures).
As a matter of fact, these days at most companies that I see the typical deployment model is "micro"services, which you can quickly develop via Spring Boot or the alternatives. No need for ultra complex code or asbtractions, Java does it just fine. And you have all the tooling you need for the enterprise world.
I think Scala is an excellent language for teaching ML-style programming. I would still recommend it for that purpose. But there is no longer a killer app or need for Scala, that would convince most people to use it for new projects.
Just like Scala by virtue of being a guest language on the JVM ecosystem, never will replace Java on the minds of JVM architects.
Kotlin has an advantage here, because ART nowadays is effectly KVM from Google's point of view, where they grudgingly update Java support to keep up with Maven central.
Scala has nothing like this, and the update on Python alongside native libraries, kind of stole its demand in big data, hence why this kind of scenarios is described on the article.
They're not in the same playground. Scala has a far more advanced type system - more close in power to Typescript or Rust than Java - and capabilities like compile time metaprogramming which aren't on the Java roadmap. Or more mundane things like immutable collections or a copy method for "record" classes.
Whether that's an advantage in day to day business development is a different question.
Yes, Java has been getting a lot of features Scala has had since (more or less) always. But it's a continuing process, and not all such features are yet fully fleshed out and polished in Java.
Also, Java will probably never get many of important features Scala has (or will have). It may not be some esoteric things, like higher-kinded types. But things like meta-programming/macros. Or features which may be advanced from theoretical point of view, but are actually easy from user point of view (because they lead to a simpler code), like Capture Catching.
If capabilities (Capture Catching) proves to be very useful (and really solves the problems it claims to be able to solve) then it's likely that Java will also implement it, no? So... in about 8-15 years?
I doubt it. For Capture Catching of Capabilities to work, you need some of the unique sauce practically only Scala has. E.g. Contextual functions or path-dependent types. Java almost certainly won't adopt these.
That does not make sense... In November, her visa was revoked at the border, when trying to enter the US. At that point, she was obviously turned around back into Canada. Then later, she was detained when trying to enter the US from Mexico in 2025.
So, how do you suggest she managed to enter the US after November in order to have remained there illegally? Did the CBP, who have just revoked her visa a few days/weeks prior, just let her in on a tourist visa? That does not sound very believable, even for the previous US administration.
And what do you suggest her plan was? Previously she was on TN work visa. You seem to think that after having her TN visa revoked, she managed to get into the US on a 90-day tourist visa instead (thus working there illegally), which is why she needed to run for the border after 3 months, and why she was detained when trying to re-enter. But what kind of plan is that – to run for the border every 90 days after having your TN visa revoked. That is such an obvious recipe for failure, nobody who employs an immigration lawyer – like that lady – would have gone ahead with it.
I've definitely seen other headlines overselling similar detention stories for rage bait, but I don't see much wiggle room in this case.
Example: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4230288
We haven't invented a governance structure yet that would be immune to this, although some are better than others. I'm sure the current social media algorithms are harmful as well. You can ban viral algorithms, but the hostile actors whose literal job it is to drive polarization / populism will just find other strategies to effectively deliver their message.
"Education" is nice and all, but millions of people keep smoking despite the obvious harm and decades of education, not to mention the many limitations, taxes, and bans. I mention smoking as an obviously-bad-thing that everyone knows is bad. Education succeeded, and yet, here we are, still puffing poison. But you can also look already-polarized political topics. There's been no shortage of education on those topics either, but if that worked well enough, we wouldn't be decrying populism right now.
reply