My personal favorite acronym like that definitely goes to AROS (Amiga Research Operating System) that if I remember correctly had to - for legal reasons - change the name. Rather than come up with a completely new name, went with AROS Research Operating System.
Edit: name change was apparently to avoid any trademark issues with the Amiga name.
I wrote a rule engine for processing data called ORE - ORE Rule Engine I wanted to call it Odoyle Rules Engine. It had a QueryTracker, that had a RulesAppliedQueue aka a QT with a RAQ. This is what happens when you have 4 friends from college working in a 4 pack office.
It’s a cheeky play on “WINdows Emulator” as well as “WINE’s Is Not an Emulator”, but I think for both legal (trademark) and logistical (it really isn’t an emulator) reasons, you’ll never officially see that bit sanctioned
Pine was already taken by an email reader. One of the early ascii email readers was called elm, for ELectronic Mail. Pine was made after elm and it stands for Pine Is Not Elm.
My favorite software acronym is PINCE, the reverse engineering tool that's similar to Cheat Engine in Winblols, that stands for PINCE Is Not Cheat Engine.
Game Conqueror also works, but is missing a lot of features too from what I can tell. Don't know how it holds up against PINCE.
I've had success getting CE to run with Proton though, specifically by using SteamTinkerLaunch to run it as additional custom command with the game. There are other ways too, like protontricks. In my experience, it has been mostly stable, with the occasional freeze, but generally usable for pointer scanning and such.
It's time [to] explain the meaning of "Hurd". "Hurd" stands for "Hird of Unix-Replacing Daemons". And, then, "Hird" stands for "Hurd of Interfaces Representing Depth". We have here, to my knowledge, the first software to be named by a pair of mutually recursive acronyms.
True is not cause it not emulating CPU/GPU of a different device, is more like a translator of sorts as it translates windows modules like directx and stuff in a way that Linux can interpret them and use them!
Not really. It is just translating the Windows system API calls into Linux system API calls. It's not emulating Windows, it's an entirely different implementation that doesn't necessarily match that of Microsoft's implementation. It had it own workarounds to make buggy code work.
You wouldn't call a Java Virtual Machine an emulator of another JVM either, they're just different implementations of the same specification.
Thing is, I do kind of think of a JVM as an emulator for a processor that doesn't exist.
WINE kind of blurs the line of a traditional emulator by having the executable run natively on the target machine's CPU, but everything it does in regards to dealing with the host OS, the display, disk access, etc, is emulated as far as I'm aware.
A theoretical PS4 or Xbox One emulator running on x86 hardware could be just as much of an emulator as WINE is.
I've never worked with Haskell, but I've been meaning to expand my programming repertoire (particularly since I don't get to do much coding at work, let alone learn new languages) and this makes for a nice opportunity, so I wanna try to parse this / guess at the syntax.
I assume iterate function arg applies some function to arg repeatedly, presumably until some exit condition is met? Or does it simply create an infinite, lazily evaluated sequence?
( ) would be an inline function definition then, in this case returning the result of applying ++suffix to its argument (which other languages might phrase something like arg += suffix), thereby appending " Is Not an Emulator" to the function argument, which is initially "WINE".
So as a result, the code would produce an infinite recurring "WINE Is Not an Emulator Is Not an Emulator..." string. If evaluated eagerly, it would result in an OOM error (with tail recursion) or a stack overflow (without). If evaluated lazily, it would produce a lazy string, evaluated only as far as it is queried (by some equivalent of a head function reading the first X characters from it).
You're pretty much right on the money. In Haskell, a String is a type synonym for [Char], so we can use the list concatenation function ++ to join strings. ++ is an infix function i.e. [1,2,3] ++ [3,4,5] = [1,2,3,3,4,5] (which will be equivalent to doing (++) [1,2,3] [3,4,5] by virtue of how infix functions work in Haskell). When we do (++ "a"), we create a partially applied function. Now, we can supply another string to it and it will add "a" at the end of it.
iterate f x produces a lazily evaluated sequence [x, f x, f f x, ...]. So, to get the nth entry, we can do wine !! n where we use another infix function !!. With partial application, we can modify the definition of wine to create a function that takes an Int n and spits out the nth entry of it by doing
wine = (!!) $ iterate (++" Is Not an Emulator") "WINE"
We needed to wrap the !! inside parentheses because it's an infix function. $ just changes the order of application. (IIRC, it's the least significant function.) You can think that we're wrapping whatever's on the right of the $ by parentheses. Now we can do wine 2 instead of wine !! 2 to get "WINE Is Not an Emulator Is Not an Emulator".
I'm by no means a Haskell expert. (I'm not even a professional programmer lol.) So, if someone would like to add some more details, they're more than welcome.
Edit: A much more readable version might be
wine 0 = "WINE"
wine n = wine (n-1) ++ " Is Not an Emulator"