I don't think I've ever been unhappier than working on a Rails project. See a bug on the site - something is rendering incorrectly. grep to find the view. Great, there's a method that is being called to render the buggy section. Grep for the method name - 0 hits. Amazing, it's something that is synthesized somewhere and I have no idea where. Guess I'll stop what I'm doing and read docs for an hour. If you do nothing but use Rails all day, sure, but the whole convention over configuration thing is such a huge anti pattern to me.
I won't be as harsh because I have years of experience in Rails and didn't develop harsh feelings against it but moving from Rust/Go/Zig/TypeScript (which I used lately) to Ruby ain't smooth ride.
Discoverability is much worse, LSPs aren't super helpful. Using Dash (documentation app) helps a ton. Still some names are confusing after switch (took a minute to recall that 'filter' is actually 'select' in Ruby).
I won't say that dev experience is bad but it's definitely different.
Weird that searching for it didn't yield any results, though I stand corrected.
However it seems that select is the actual "root" of documentation. Filter sends to find_all, find_all sends to filter or select.
I’ve had similar experiences with Spring Boot Java applications. Methods in stack traces that don’t exist in source code but are magicked into existence by annotations.
Spring Boot is very similiar to Rails. That's what was surprising to me, when I was forced to use it at uni. The annotations magic brings all the PTSD of method missing from Ruby
The fact that you have to read a book and break out a debugger to do the equivalent of "find all" in any other languages should tell you something right?
My experience is exactly the same as Milch's. I've tried to fix stuff in Gitlab but given up when I couldn't even find where it things are defined.
That can happen in other languages, e.g. Rust or C where macros are used. But it's pretty much the exception there whereas in Rails it seems to be done by default.
Exactly. Sure, I can go read a book and learn about Rails. If I wanted to be a Rails specialist I probably would, but I don't want to be a Rails specialist. And like you said, other languages can do this too, but I haven't really found it to be too much of an issue. I remember one time where I had to break out whatever the rustc flag is that just produces the code with expanded macros, but that's it.
The worst part is communicating to the Ruby on Rails community that they have a problem with DX or that Rails is not really the top choice anymore for new startups. It's a cult of DHH. I am still mostly part of the Rails ghetto; it's paying my bills, but after gaining more experience during my computer science master's degree with statically typed languages, I clearly see the pitfalls of Ruby.
People often miss the difference between simple and easy. Yes, Ruby is easy, but it's not simple, and it will make you suffer a lot if you get to a complex app. The debugging sessions in Rails are a nightmare. Meanwhile Ruby community is acting like religion, it's almost impossible to convert people from Ruby to other languages, they don't see the language as tool, but as part of their identity
Maybe I'm just not tapped into the community but I've been a ruby developer going on 6 years now and I find debugging ruby apps no better or worse than any other languages I've worked with over the years. It's fairly easy to instrument ruby much like all the other dynamic languages (python3, js, etc) but with better ergonomics. My main qualm with ruby is their reliance on external type files for type annotations. What a terrible idea. Should have just done inline optional types like python3 or typescript.
I have been pretty happy with Java and .NET frameworks, regardless of the lack of appeal in SV influenced circles.
Happiness doesn't always translate into performance, e.g. famous Twitter logo until they moved into JVM and Scala.
While Ruby on Rails took the fame, we already had similar experiences with AOLServer and Vignette, using Tcl.
We had our own variant at a Portuguese startup, and eventually the founders created OutSystems, one of the first graphical RAD tools for Websites and distributed systems development in low code/no code, targeting JVM or CLR infrastructure.
Now having said all of this, it is great to finally see CRuby getting a JIT in the box.
It’s short term happiness at best, and at the expense of every other possible architectural characteristic (maintainability, performance, reliability, scalability, you name it).
Updating Rails is one of the most painful processes ever. There is no real way to be sure it works. You just have to have 50,000 unit tests, cypress tests, and then hope and pray.
On any sufficiently large and old app, something will always break in a way that isn't caught by your tests or manual testing, and only shows up after it goes out live.
I have taken applications from 2-to-3, 3-to-4, and so on, through 8.X.
If anything it has gotten better/easier over time. The most challenging upgrades were 2.X to 3.X (for reasons I can't recall), and then 6.X to 7.X (for an application that had issues adopting zeitwerk). In both of those situations, there was a lot of rote legwork, but once tests were passing, the application was working reliably. The other upgrades (3-to-4, 4-to-5, 5-to-6, 7-to-8) weren't happy-fun-rainbows-and-unicorns, but they weren't catastrophically complicated? Not even in fairly large codebases.
For each of these, a strong test suite was the best tool, which it sounds like you already know?
In my experience, the other impactful factors were:
(1) Reading the CHANGELOGs and knowing enough about Rails to know what they meant for the application.
(2) Using test fixtures (or fixtures with only some factories) for a quicker feedback loop for engineers.
(3) Having a true QA function in the company that isn't just engineers testing their own code.
Honest question: what’s an example of a fully-featured web framework that makes upgrading a “large & old” application painless? In my experience, upgrading an underlying framework that a piece of complex software depends upon without breaking everything pretty much always requires time & good test coverage.
Why do many people mention the need of tests for types in dynamically typed languages?
In Rails my tests are mostly to ensure that a request to a controller returns the expected response and the expected changes in the database. Unit tests are often on validations and the errors they return for invalid data. Then there are functional tests that drive a headless browser.
For me it surely is Python with Pytorch, if we talk about frameworks in general.
For web, I can't really offer any useful positive input, I was never satisfied with any framework for Python or Node. I see people praise RoR and Phoenix quite a lot tho!
Most of the datacenters in my city are concentrated near the warehouse zoned area by the expressway, railroad and interstate leading to the airport. Basically nobody lives there, and those that do are probably much better off now that the diesel trains no longer running.
It does seem most of the pro-AI people aren't actually affected by any of the negative aspects of it. It's a lot easier to be in favor of something that doesn't actually affect you or anyone you care about.
It appears to be not so much about the datacenters themselves as it is limiting the growth capabilities for the LLMs. From their understanding fewer datacenters means more congestion which means less possibility LLMs can be shoved into more places where the public thinks they are intrusive. Which seems to be everywhere.
We don't build the chips or even the machines that build the machines that build the chips. We don't own all the rare earths and our ability to generate electricity isn't anything special.
The data centers are getting built. Up to us if it's in Utah or overseas.
Everyone pays for the negative externalities of these outsized water- and electricity-sucking, noise- and heat-generating monuments to greed and charlatanism.
Very well thought out argument, I'm sure spamming it some more will really convince people. You're telling me people aren't affected by AI in any way whatsoever? That's a very bold and obviously untrue claim. No wonder people don't trust AI sycophants, you can't even keep your story straight.
The water usage is floating point error compared to ethanol and the electricity prices near the centers are some of the cheapest you can get. In terms of the physical world this is maybe the lowest impact industry in history.
Some people have empathy for those who are, even if they are not.
I don't live anywhere near SpaceX's methane monstrosity in Memphis, but I still think it shouldn't exist because of the negative impact it has on the people who live near it.
And I still think Anthropic became fully complicit by renting it out.
What negative impact is that? For context there are only five houses within half a mile of xAI's data center, the building for which has been there for decades, and any homes in the area have been living by the existing giant natural gas power plant next door to the data center for 20+ years. It's really not introducing anything that hasn't been there forever
I often see empathy being mentioned in places where I can totally see the self-preservation link: if other people are negatively affected, it will sooner or later also affect me personally negatively. I am totally fine with seeing empathy and compassion as tools for self-preservation, without assigning any morality to it. Unless I kill you and all of your tribe and anyone else who cares about you, not caring about your needs will backfire on me. It simply makes rational sense to see what you need and make you happy so I can stay happy too.
I live near a datacenter, well, technically, there's a farm on one side and an abandoned factory on the other side. Tell me, is living in one or the other optimal to be able to participate in this discussion without being dismissed?
How would you know? I mean, I'm surrounded by lots of buildings, but I'm not usually aware of what's going on in ones I don't go inside of. There are lots of warehouse-sized buildings all over, and whether those buildings contain racks full of servers or something else entirely isn't something I'd immediately discern.
The stated reasons are "populist brainrot". They aren't scientific or based on reality at all. What has happened is the AI folks have made themselves very very disliked. Saying you are going to take everyone's jobs will do that. So whatever they try to do, people will oppose it. It doesn't matter if the reasons are based in reality or not.
The average person's inattention to nuance could be labeled as "populist brainrot" in this case, and the cases of poor zoning could be used as examples of the issues with datacenters that the average person does not evaluate with the proper attention to nuance.
Sure, the water use is often a simplified argument against these data centers, but there are plenty of legitimate reasons but they are in fact more nuances and context dependent based on the specific location.
Hank Green has had the best take I've heard which is AI is definitely something but everyones still figuring out what it is. It will likely end up being nothing like it is today.
They will never let us have enough RAM every again. RAM will be kept behind locked doors in the name of national security and only trusted corporations will be aloud to run AIs and "safely" run them in the cloud and sell them to us.
https://www.lexaloffle.com/
reply