I have been looking to learn some new technologies lately. At my job I deal with PHP and Angular but the project we work on is fairly big, so I was looking into something that I could build stuff with by myself in my (very limited) spare time.
I craved some web tech (eww, I know). It was either this, or learning to build interpreters. Which, when spoken out loud (or written, whatever), sounds even more depressing knowing what I chose. Gotta have the skills to make a living I guess, right? Have you ever stopped to think how hard it would be to get the money to buy a home before you get in your 30s without getting a loan? I can build as many wacky programming languages I want after I am a bit more certain that if I starve in the next 10 years it’s likely not my fault.
So, after spending days tasting some frameworks and libraries and languages and tools and whatever else is there, I had to decide between these:
- Dream (OCaml)
- Opium (OCaml)
- Luminus (Clojure)
- Actix Web (Rust)
- ASP.NET (C#)
- Laravel (PHP)
- Ruby on Rails (
COBOLI think you can figure out the language yourself)
Maybe you’re asking why isn’t your favourite language/framework on the list. It’s because: I haven’t heard of it or I don’t like it very much or I tried it but forgot to mention it. For example, I’m fed up with Python as a language (Python’s lambdas suck so much) after my first year in University, so there’s no Python framework here.
So, what about those selected?
- Dream and Opium: I love OCaml but I think there can be improvements made on the side of API ergonomics. Also, there’s a (at least perceived, from my POV) lack of features in OCaml libraries/frameworks as opposed to other languages.
Luminus: I liked the idea of using a LISP, but I feel too many sins were commited when designing Clojure:
user=> (car '(1 2 3)) Syntax error compiling at (REPL:1:1). Unable to resolve symbol: car in this context user=> (list? (cons 'a '(b c))) false
- Actix Web: In the first 10 minutes of trying to do something with it I ran into some crate conflict about the async libraries and I quit. Sorry Rust, C# did it better — put your async runtime in the stdlib.
- ASP.NET (C#): the reasons that I even considered ASP.NET were because I used to like C# in high school and because of the TechEmpower benchmarks (those are also why I looked at Actix Web). I played with ASP.NET back when .NET Core just reached 3.0 and I didn’t hate it, but it kinda feels too corporate-y for me. And the code generators suck ass compared to others.
- Laravel: I already use PHP at work and I’m not really a fan of PHP’s syntax. It doesn’t feel fun. Pass. I want something new. I actually almost went with Laravel until I found…
- Ruby on Rails: Now, Ruby — Ruby feels fun. That’s the reason I
think I’ll stick with Rails. I
enjoy it. The others I would have
used because they were faster, or had better coverage on the job
market or were more popular nowadays. But:
- Ruby may be slower in performance benchmarks but is faster to write.
- Rails has the best generators of all the frameworks I touched.
- I just switched jobs and I don’t intend to change them tomorrow again, so learning something not in demand, just for me, isn’t a deal-breaker. I know I started the post using money as an excuse for not doing something really interesting and instead learning RoR, but it hasn’t been so bad so far… and it’s late, so have some compassion, probably a lot of what I write will be nonsense anyway. And if I wanted to launch my own company some day, I think it will be easier to make money from a website than from building a niche programming language.
- Ruby has pretty syntax and a rich standard library (or so it seems to me, until now — everything has like a couple dozen methods at least).
- Interactive development — I like IRB.
- The more I looked into both Laravel and Rails the more Laravel looked like a clone of Rails. A clone handicapped by PHP’s syntax. So why use the new, hip thing if you don’t like it and the old thing still has everything you need and feels satisfying to read and write?
Anyway, the moral of the story is “do what you think you’ll enjoy from time to time” and just because some techbros on YouTube put Ruby on their “Top Languages to Avoid in $YEAR” list, that doesn’t mean they have the authority to dictate what you’ll use in your next project. Give it a try, it won’t hurt.
Also, be sure to read the docs. Like, actually read them, not just fly your eyes past 5 paragraphs per second scanning for a keyword to find just what you need. You can do that after you read them once. The Rails people wrote pretty much all that you need to get started in their guides.
I should probably write more about Ruby than a few paragraphs since it’s in the title of this post but it’s very late here so good night!