My Impressions of Gleam
snarky.ca
snarky.ca
Life's too short for runtime errors.
How on earth do you prefer tabs to curly brackets?!?!
https://www.tiobe.com/tiobe-index/
I think since the AI boom, Python took over.
Which is to say, very little.
https://survey.stackoverflow.co/2024/technology#2-programmin...
According to this chart[0] higher on the same survey report, JavaScript is the #1 most used, and Python is #3.
But, I don't see this as a contest... being "the most popular" programming language doesn't automatically make it the best choice for a given task.
[0]: https://survey.stackoverflow.co/2024/technology#most-popular...
I've gotten used to a lot of things that I'd rather not have to deal with.
it's not just a matter of preference -- "no-curly-brace" dogma means it's impossible to do multiline lambdas in python
you have to see ruby's popularity to see whether "it's despite or because of"
In general, how is significant whitespace both a thing, and popular?
Python of course still has invisible issues like silent invalid identations in `if` clauses, for example. Well, you could fix those with copious amounts of tests, of course.
Same goes for YAML where invalid identation can will still be easily valid YAML.
never once did we (and I have some bad apples at work) hit a problematic indentation in conditionals or other structs
i'm honestly surprised
The best solution is to ban tabs entirely from the syntax - only allow spaces in multiples of 2.
Curly bracket blocks are obviously visible at a glance. If I incorrectly move one around it’s obvious.
If I shift tab a section of python code around, I may be breaking an if state without noticing if I didn’t pay attention to a specific colon on one line.
Imo s-expressions are the easiest to move around, but have the same issue of being hard to scan as tabs.
Helps readability, quick visual hint of structure and i don't have to keep track of open-end brackets.
Though i much prefer spaces to tabs.
Similarly, when considering JSON versus YAML or TOML for human readability, the same principles apply. Personally, I find indented code more readable, but this can be easily attained in most languages with universal code formatting rules and intelligent code editors that highlight different elements to improve readability.
I find code block which are delineated by brackets so much more readable than ones delineated by invisible characters. Especially at a glance
I don’t love do..end either, but still prefer them to arguing with Python about the level of indenting not being correct or that spaces were used somewhere somehow.
> this can be easily attained in most languages with universal code formatting rules and intelligent code editors that highlight different elements to improve readability.
Ofc, none of this is a practical issue, but that’s what makes it a fun topic of discussion ;)
Every human communication mechanism includes deliberate redundancy to ensure that the meaning gets through even in suboptimal situations. Programming languages are somewhat unique in having a strong movement towards eliminating all redundancy.
I don't understand how people prefer curly braces, a character that is almost always has other meanings within the same language, instead of something like `end`. To that (ahem) end I don't understand how people prefer `end` to the exceptionally clear `endif`. Turns out different people have different preferences :D
I don’t understand how people prefer invisible characters which change sized depending on the editor to visible ones which are consistent and easy to scan for.
And ya I also don't appreciate having to care about formatting for my code to compile and not being able to put debug statements at column 1 so they stick out like a sore thumb, though I suppose the solution to the latter is to stop being a puts/print debugger but, like... no :)
This is the part of the excitement around Gleam that gives me pause. When the biggest draw is the heavily-moderated community [0], it seems almost more a political project than it does a technical one. That's not a bad thing in and of itself—goodness knows we need less toxicity in the world—but I get very nervous around a technical project that has gotten very comfortable with silencing dissent and enforcing "good vibes". I think of dang's bio quote:
> Conflict is essential to human life, whether between different aspects of oneself, between oneself and the environment, between different individuals or between different groups. It follows that the aim of healthy living is not the direct elimination of conflict, which is possible only by forcible suppression of one or other of its antagonistic components, but the toleration of it—the capacity to bear the tensions of doubt and of unsatisfied need and the willingness to hold judgement in suspense until finer and finer solutions can be discovered which integrate more and more the claims of both sides. It is the psychologist's job to make possible the acceptance of such an idea so that the richness of the varieties of experience, whether within the unit of the single personality or in the wider unit of the group, can come to expression. [1]
Marion Milner, 'The Toleration of Conflict', Occupational Psychology, 17, 1, January 1943
[0] The lead dev has been known to tell people off in DMs for reacting with negative emoji to their discord comments (and remove the negative reactions with admin powers!): https://news.ycombinator.com/item?id=41413735
That said, if this interests you, that's great! Like I said, there's nothing wrong with a project that is primarily political in nature. I'm just highly skeptical that such a project can achieve good technical outcomes in the long run once the admins get accustomed to suppressing negative reactions under a vague "good vibes" policy.
I could be wrong, and that's exactly what political projects are often designed to do: to prove a political point. But if you're not interested in a political project and are instead looking for a strongly typed BEAM language, you might be better off just waiting for Elixir to finish its types.
And again: lpil has explicitly said that they're not stopping with intolerance, they enforce "good vibes". That's what I'm worried about on a practical level: I don't believe you can build a healthy technical community that solves real problems on that foundation.
I very well might be wrong, and I believe that that's the point of this political experiment. But I also think it's important to emphasize that that's what this is: a political experiment, not just a programming language.
Like is anything purely technical? I dont think so, and the most insidious politics are the ones that are left unspoken but allowed to direct the endeavor at hand. To dream of or push for something purely "technical" or "apolitical" is simply to be guilty of the same thing your quote is getting at, but from the other direction. Instead of squashing dissent, you simply poof it out existence, you make it taboo to even talk about. How does that then become tolerance? How does it operate necessarily to help us? It is in fact no less an imposition, and is no less a political operation in the communities where this kind of view operates.
I'm not talking about tolerance, I'm talking about the lead dev actively shutting down negative reactions to their comments and justifying it under the banner of "good vibes". If the lead dev can't deal gracefully with criticism, that's going to be a problem.
Too many people in this thread are treating criticism of this pattern of silencing dissent for not "vibing" right as though the critic is implicitly endorsing letting Nazis roam free. There's a middle ground between "good vibes only" and "fascists welcome" that lpil has explicitly said he's not interested in pursuing.
I guess "toleration" and "tolerance" do share a root, but the latter is so watered down at this point that I honestly didn't even connect them, so I misunderstood your comment to be about something very different than it was. I'm going back now to reread it to see if I can understand your point better.
Edit: rather than deepening this subthread further, I posted a separate reply to your original comment based on my new understanding of your point.
I said nothing about quiescence. I said nothing against taking a stand. My opposition is to the idea that the way forward for conflict management is to purge it and pretend it isn't happening. That's what happened in the case I linked to—a member of the community expressed disapproval of admin actions and had their disapproval removed by the moderator and received a rather passive aggressive response in a DM. That's an inappropriate way to moderate that does not lead to healthy conflict management.
Taking a stand would be publicly engaging with the criticism, not purging it and engaging with the critic in a private message.
I'm much less concerned about the US-politics-centric commentary on the main page (though there are problems with that, like making people not in the US feel excluded) than I am with a broader trend in many open source projects (this one being one of several I've seen) of "protecting" their community from anything that remotely resembles toxicity, even when those things are well meaning criticism of the way that things are being run.
And no, I wouldn't say that anything is purely technical—but some things are political in service to the technical, and other things are political first. Gleam strikes me as a project that is firmly political first, based on the lead dev's actions and the community's discussion (this article literally places the project's political stance as "first and foremost"!). As I say, that's not a bad thing, but I'm skeptical that it will work out in the long run on a technical level to prioritize the politics over all else, especially when the approach to politics is one that shuts down conflict rather than cultivating and curating it.
After reading the discussion here, with our poor community being “blinded by pathetic posturing” and such, I was expecting some kind of political polemic plastered over everything.
Here’s the sum total of everything that could be considered political from the page:
Friendly
As a community, we want to be friendly too. People from around the world, of all backgrounds, genders, and experience levels are welcome and respected equally. See our community code of conduct for more.
Black lives matter. Trans rights are human rights. No nazi bullsh*t.
Which part of that can you possibly find objectionable? It seems the mere mention of anything political is seen as a transgression somehow. Like, Can’t we just go back to pretending we’re entirely apolitical, while the technologies we build reshape the political landscape of the entire planet?
Take the politics any way you like, I don't think you can build a healthy technical community that will solve problems in a healthy way under an admin who is casual in removing expressions of dissent about their moderation practices, justified under a policy as vague as "good vibes".
This will probably get me downvoted to hell, but here goes anyway. You know, sometimes I just want programming stuff to be about programming. If I want social justice I will go to the appropriate place. No I don't support Nazis or the like, but there's a shitload of other types of discrimination/injustices that I (and most others) also don't support, that we don't see plastered everywhere.
He has every right to do so, obviously, and I'm not telling him to stop. But if you want a programming community that keeps its politics separate from work, Gleam is not for you.
In my experience the people who get irked by public support for groups suffering from hate always have this persecution complex, like they're going to be subjected to the same treatment as the members of these groups that they don't like to see being defended.
People have a platform, and they use it to show they views. Elon does nazi salutes, Louis says trans rights. They express what they believe in.
Those statements are necessary so people know it is safe to engage with this community. So women know they are less likely to be openly harassed and demeaned. So trans people know they are allowed to exist in this community. So that black people know they will not be bombarded by racism.
An yes you have to be proactive and drive out Nazis or they will take over your community over time. You can not tolerate those that show intolerance.
Choosing to "not be political" means choosing to be inclusive to Nazis and to be dangerous for nearly everyone else.
That's a fucked up take. I guess because Gleam doesn't explicitly call out pedophiles, rapists, murderers, and other low-lifes that they must be inclusive of those folks too right? Gleam is so dangerous for everyone else as a result. /s