thiagomajesk

thiagomajesk

Why so Serious?

I just saw this post on Reddit today: Why So Serious? | Robby on Rails, and I was wondering where our community falls in regards to “seriousness”.

Ruby has always leaned toward that side of the craft. Toward the part of programming that remembers people are involved. Toward the part that says maybe the code should serve the team… not the other way around.

I don’t think we have too many Ruby egresses these days, but where do you think we value “correctness” more than "ergonomics? Where in the spectrum do you feel we are as a community?

Most Liked

AstonJ

AstonJ

Haven’t read the Wired article Robby links to as it’s behind a paywall but the first two lines of the preview were enough to convince me the author seems to be missing the point:

Ruby Is Not a Serious Programming Language

Ruby survives on affection, not utility. Let’s move on.

There are reasons for the affection, and it’s those reasons why it survives, and imo, exactly what will help it (and others like it) continue to survive in an age of AI :icon_biggrin:

tfwright

tfwright

Any context I’ve seen the term “serious” used, it’s a pure expression of contempt. It never has any significance beyond that. One never describes something positive as “serious”–no one would know what that means. But it’s always quite clear that “not serious” simply means “beneath consideration”, which is fine to have as a private judgment but is hardly constructive as an argument in a public forum. It certainly wouldn’t fly in a professional context, where it would add nothing to the actual arguments for and against. But perfect for language wars I guess where there is no actual problem at hand to be solved.

As someone who used PHP, Python and other comparable languages before encountering Ruby, the appeal of Ruby’s ergonomics was clear and immediate. For various reasons, I was able to be more productive with it and that allowed me to achieve a certain amount of success. Evidently that was also true for a significant number of other developers. If it has been a poor fit in various applications, well, it can hardly be blamed for that. Is a bike not a “serious” mode of transportation because someone failed to ride one to the moon?

garrison

garrison

This is a property for which I have yet to come up with a name but which I have come to appreciate is very important. I have tried “power” or “powerful”, but it’s not quite right. Maybe it’s easier to explain what I mean by example.

I would much rather write my build scripts in Python than YAML. I would prefer something like JSX to string templates. These are simple examples and should be obvious to most, but this concept can cut quite deep.

I very much like React’s engine and the way it models rewindable code. It’s easy to look at it and say, this is very unsophisticated, we can replace these blunt components with a fine-grained reactive graph. And at first this seems like a great idea, and everything is going fine and it’s very fast, and then you wake up one day and your if statements are components.

And I have picked on Solid here, but you might notice that Phoenix has gone down a similar path as of late with :if and :for. Really, it seems like most tools end up like this, as though it’s some sort of trap which takes very careful and deliberate design to avoid. I am truly impressed that React managed to consistently ship such elegant abstractions for so long (probably not anymore).

But perhaps the truly goated example of this is Erlang, which has delivered on its underlying message passing abstraction for nearly 40 years. Like, this thing has lived through personal computing, the rise of superscalar and multicore processors, the shift from mainframes to commodity hardware, the ossification of that model into “cloud computing”, the entire history of the web, and throughout all of that has maintained relevance as a useful abstraction. I cannot imagine how much wisdom and care must have gone into that.

I hope that, someday, I will be wise enough to design such things. Either way I will keep trying.

Last Post!

garrison

garrison

I am aware of this project and I do like it. They clearly share my values about all of this rugpull nonsense and for that alone they have my full support.

However, and this is what I was getting at with the MinIO point, there is a bit of a technical issue here. For the trend I was talking about specifically, weak consistency guarantees are kind-of a problem, as is high latency. This is why AWS introduced their “S3 Express One Zone Storage Class” (seriously they need to fire their entire marketing dept), which to be clear is actually not S3 at all (other than by name) but an entirely new system. This system targets a class of products which has been emerging lately: hosted cloud services where you “bring your own S3”. There are many examples of this, like Snowflake (data warehouse), Quickwit (full-text search), Turbopuffer (vector search), s2 (some queue thing I guess), Neon (literally Postgres pages shoved into S3), and so on.

The reason AWS had to essentially build a new S3 to enable these products is that, fundamentally, object storage with its high latency and poor consistency guarantees is kinda a bad primitive for building databases. People were just using it because it was there, so they have adapted.

The “alternatives” like MinIO and Garage and others (SeaweedFS is another) have not really caught up, though. They are classical object stores and make poor primitives.

It makes a lot more sense to start with a strongly consistent system, because strong consistency is very difficult to achieve but very easy to give up.

And, as you may have noticed, this is exactly what I have been doing :slight_smile:

Where Next?

Popular in Discussions Top

mbenatti
Following https://github.com/tbrand/which_is_the_fastest |> https://raw.githubusercontent.com/tbrand/which_is_the_fastest/master/imgs...
New
restack_oslo
Hello, Please pardon me for any faux paux. I am 46 and this is my first time on a forum of any kind. I wanted to to get answers from tho...
New
und0ck3d
Hello everyone! A few days ago I’ve created a topic here about how people were creating CMSs with Elixir and Phoenix. I’ve been studying...
New
Fl4m3Ph03n1x
Background A few days ago I was listening to The future of Elixir from Elixir Talks, with Dave Thomas (@pragdave ) and Brian Mitchell. I...
New
eteeselink
Hi all, In the last days, two things happened: A blog post titled “They might never tell you it’s broken” made the rounds. It’s about ...
New
thojanssens1
It would be nice to be able to define a redirect from one route to another from the router.ex file. E.g.: redirect "/", UserController, ...
New
Rustixir
Hi everyone, im working on find best language/framework/system for high concurrency, high performance and stable performance after wor...
New

Other popular topics Top

Qqwy
Update: How to use the Blogs & Podcasts section You can post links to your blog posts or podcasts either in one of the Official Blog...
3271 130286 1222
New
vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
grych
Hi folks, Few months ago I have announced the proof-of-concept of the library to manipulate the browsers DOM objects directly from Elixi...
639 54006 488
New
jononomo
I am trying to figure out how Mix knows whether the environment is test, dev, or prod – where is this set? Thanks.
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New

We're in Beta

About us Mission Statement