Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple APILearn More
Search - "lua"
Lua is one of the stupidest languages to ever exist.
Oh, the language is easy to learn? The syntax is friendly? There's only like negative 10 functions you ever need to know? Everything is a table?
EVERYTHING IS A TABLE?! WTF CARES? WHAT ABOUT NIL?!
The arrogance this language has is extraordinary, literally. No lang, except Lua, imposes such an opinionated dichotomy. Everything is a fucking table, or, it's nil. -- That's so fucking stupid.
And look, I get it, this lang (oh sorry, scripting language (?)) CAN be good and fun and whatever... the moment you start to do IO is the literal end of days.
Everything is nil. Except, if it's defined... then it's not nil. -- OK. That sounds sensible/reasonable enough. -- What if it's not defined? You get nil. What if it's not the right data? You get nil. Do I get errors/exceptions or whatever? No, absolutely not, you get nil... unless the application you're using with Lua with has a lib that handles that.
There are so many more issues I have with this lang, but honestly... Am I fucking missing something? Is this lang like actually super dooper awesome and I'm missing something? -- I can't not look at this language as just dumb and arrogant. -- It's literally a language where you have to manage and remember ALL conceivable state at ALL times.9
F*ck me, for "i-dont-know-how-many" days I've found myself scripting Lua to implement stuff for NeoVim.
Stuff that Emacs/VSCode/Sublime already have.
But no, let's redo it in Lua and have an incomplete LSP.
Let's use tree-sitter (which follows TextMate's grammar btw) BUT let's implement an API for it in an incompatible way that removes TextMate's grammar which other editors, and LSP btw, use.
And don't let me get started on NeoVim's forefather, ViM, which I've also used for a long long time.
Don't get me wrong, NeoVim IS A GREAT IMPROVEMENT OVER VIM, but while improving Vim in a lot of ways, some decisions made are almost impossible to remake without massive breaking changes, like, for example:
The decision of REWRITING Vim's C code instead of wrapping its core with Rust and going on from there. Like Deno does it, like Tree-sitter does it. F*CK ME!
"Oh, but Lua doesn't have great Rust FFI..."
Well, F*CK THAT, JUST DON'T CHOOSE LUA.
"You can use msgpack..."
Seriously, compromise performance on an editor whose mantra IS PERFORMANCE?
Anyhow, I'm leaving.
It's not that I can't stand to stop what I'm coding just to waste time scripting an editor so I can have what other editors already have.
It's having to build stuff from scratch because the editor doesn't follow the patterns laid out by other editors. F*ck, if at least it was Typescript or Python I could show the work on my portifólio, but no, IT'S LUA - very easy to script by the way, but close to no standard library.
I'm going Emacs TODAY.
"Wait, but isn't Emacs non-standard?"
YES, you're right!
BUT it's got all the stuff the others have completely implemented and a truly fully-fledged programming language to script it with so not to waste my time reinventing the wheel.
That's it. Haters gonna hate, but f*ck (Neo)Vim and my thousands of hours sunk into configuring, tweaking, scripting and learning it.6
I was looking for alternatives of MC that are atleast usable, and found a thing called Minetest. This apparently is a Voxel Engine/Scriptable game, where you create games, that consist of mods/modules and other resources.
The cool part of it is, that mods and games etc. get handled by the game itself in a package manager type fashion, so the only thing you as a user have to do is selecting them in the ui, and putting them into your world.
It's this easy because the content is managed by a content database. This engine is built with multiplayer support by default.
Now comes the interesting part: apparently a few devs sat together and made a whole MC clone in this engine, and have called it Mineclone 2. I was testing it recently on a server and have to say, that it doesn't appear to be some low effort clone, but to my surprise is an actual playable and nicely looking game. So far i'm having fun with playing and even modding it.
Since the core is written in C++ and the mods and games content is written in LUA, you can easily writte new stuff for it, and even look at other mods stuff, to find out how to make it compatible or how to do certain things. The licenses usually allows to reuse and redistribute.
If you're looking for something like that, give Minetest + Mineclone2 a spin.3
So, Rust... I CAN'T STAND that after using Rust my programming languages standards got so f*cking high I end up ranting about stuff I'd gladly use before, like python, js, lua, C++, etc. Aside for Ruby, this one is a peach of a language, whoever hates Ruby must have a stone heart, she's lovely 🌹 her linter friend Rubocop though... I HATE RUBOCOP WITH ALL MY HEART.
Skein: noun - a type of access modifier, allowing a property to be read internally or externally, but only written to *externally*. See "orwell" for opposite access modifier.
hermit (noun) - an access modifier specifying a property may only be written or read internally.
Gopher (noun) - an access modifier not to be confused with a groundhog.
Blackhole (noun) - can be written to, can never be read. See dev/null for details.
In other news I wrote the basis for a cms in lua.
Because I hate the cloud.