A card game in Ruby on Rails, with an emphasis on deep reaction trees, and where the resolution order of action trees depends on whether actions resolve before or after their triggers.
Its real purpose is twofold: I enjoy data modeling, and doing just enough Rails work to regain fluency after a gap.
Just in case you're talking about descriptivism vs. prescriptivism.
I'm a descriptivist. I don't believe language should have arbitrary rules, like which kinds of words you're allowed to end a sentence with.
However, to be an honest descriptivist, you must acknowledge that words are used in certain ways more frequently than others. Definitions attempt to capture the canonical usage of a word.
Therefore, if you want to communicate clearly, you should use words the way they are commonly understood to be used.
> However, to be an honest descriptivist, you must acknowledge that words are used in certain ways more frequently than others. Definitions attempt to capture the canonical usage of a word.
True. And that's generally how they order the definitions in the dictionary, in order of usage.
For example, "an unfounded or mistaken impression or notion" is indeed the 2nd definition in M-W for "hallucination", not the first.
A dictionary entry's second definition isn't necessarily an uncommonly used one. It could be up to 49% of the word's usage (assuming the dictionary has such precise statistics).
Problem is that in some fields of study / work, and in some other situations absolute clarity and accuracy are super important to avoid dangerous or harmful mistakes. Many of the sciences are that way, and A.I. is absolutely one of those sciences where communicating accurately can matter quite a lot. Otherwise you end up with massive misunderstandings about the technology being spread around as gospel truth by people who are quite simply mis-informed (like you see happening right now with all the A.I. hype).
Intelligence is knowing that a tomato is a fruit, wisdom is not putting it in a fruit salad. It's fine to want to do your part to steer language, but this is not one of those cases where it's important enough for anyone to be an asshole about it.
I like communicating with people using a shared understanding of the words being used, even if I have an additional, different understanding of the words, which I can use with other people.
You might be interested to learn that the people who write down the definitions in dictionaries consider themselves to be in the business of documenting usage, not bringing commandments on stone tablets down from the mountain.
"Bending over backwards" is a pretty ignorant metaphor for this situation, it describes explicit activity whereas letting people use metaphor loosely only requires passivity.
Tests are one of the areas where it performs least well. I can ask an LLM to summarize the functionality of code and be happy with the answer, but the tests it writes are the most facile unit tests, just the null hypothesis tests and the like. "Here's a test that the constructor works." Cool.
They are the exact same unit tests I never needed help to write, and the exact same unit tests that I can just blindly keep hitting tab to write with Intellij's NON-AI autocomplete.
I'm against anything that adds cognitive load without a compelling reason, anything makes me do unnecessary work. Typing "todo!()" is not a huge burden, but it's not zero, and if the Rust compiler is smart enough to fill in the hole it should be smart enough to do it without my having to explicitly tell it.
No, because 99.9999% of the time, you explicitly do not want the compiler implicitly filling in a hole like that, and do want the compiler to tell you that you've forgotten an entire branch of control flow. Typing `todo!()` to make your intent explicit is among the least obtrusive things imaginable.
> No, because 99.9999% of the time, you explicitly do not want the compiler implicitly filling in a hole like that
Who are you to tell me what I want? You are making all manner of tacit assumptions about the kind of work I do and what my requirements are. I absolutely do want the compiler filling in every hole it possibly can. For me, that's the whole point of using a high-level language in the first place. For the kind of work I do, what matters most is getting things done as quickly as possible. Correctness and run-time efficiency are secondary considerations.
If correctness is a secondary consideration, then you'll be happy to learn that LLMs will let you code in plain English, so there's no need to bother with using a programming language at all. The LLM will happily fill in all the holes it encounters, more eagerly than any compiler would ever dream of.
But for people who prioritize precision and correctness, that's what programming languages were invented for.
There are two problems with using LLMs for writing code. The first is that when the code they produce doesn't work (which is most of the time) I still have to debug it, and now I'm debugging someone else's (or someTHING else's) code rather than my own. The second is that the work I do is very specialized (custom ASIC design) and LLMs are utterly useless.
But yeah, if all you need to do is build a vanilla app then an LLM is probably an effective tool.
Oh wait.