This commit is contained in:
Miloslav Ciz 2025-04-03 21:49:43 +02:00
parent 490ffab10e
commit ee83d8a6b6
38 changed files with 2053 additions and 2030 deletions

View file

@ -6,7 +6,7 @@ This kind of art used to be a great part of the [culture](culture.md) of earlies
Here is a simple 16-shade ASCII [palette](palette.md) (but watch out, whether it works will depend on your font): `#OVaxsflc/!;,.- `. Another one can be e.g.: `WM0KXkxocl;:,'. `.
Here are approximate brightness values for each printable ASCII character, with 0 being black and 1000 white (of course the values always depend on the specific [font](font.md) you use):
Next we'll present a handy table of approximate brightness values for each printable ASCII character, with 0 being black and 1000 white (of course the values always depend on the specific [font](font.md) you use):
{ I obtained the values by shooting a screen with some generic monospace font in gedit or something, then made a script that computed the values and ordered them. ~drummyfish }
@ -209,7 +209,7 @@ int main(void)
}
```
This program is extremely simple, it just reads an image in [PPM](ppm.md) format on standard input and outputs the image to terminal. Watch out, it won't work for all PPM images -- this one worked with a picture exported from [GIMP](gimp.md) in raw RGB PPM. Also note you have to scale the image down to a very small size AND its aspect ratio has to be highly stretched horizontally (because text characters, i.e. pixels, are much more tall than wide). Also for best results you may want to mess with brightness, contrast, sharpness etc.
The program is rather simple, all it does is reading an image in [PPM](ppm.md) format on standard input and outputting the image to terminal. Watch out, it won't work for all PPM images -- this one worked with pictures exported from [GIMP](gimp.md) in raw RGB PPM. Also note you have to scale the image down to a very small size AND its aspect ratio has to be highly stretched horizontally (because text characters, i.e. pixels, are much more tall than wide). Also for best results you may want to mess with brightness, contrast, sharpness etc.
## See Also

View file

@ -1,18 +1,18 @@
# Assembly
Assembly (also ASM) is, for any given [hardware](hw.md) computing platform ([ISA](isa.md), basically a [CPU](cpu.md) architecture), the native, lowest level [programming language](programming_language.md) that expresses typically a linear, unstructured (i.e. without nesting blocks of code) sequence of very simple CPU instructions -- it maps (mostly) 1:1 to [machine code](machine_code.md) (the actual [binary](binary.md) CPU instructions) and basically only differs from the actual machine code by utilizing a more human readable form (it gives human friendly nicknames, or mnemonics, to different combinations of 1s and 0s). Assembly is converted by [assembler](assembler.md) into the the machine code, something akin to a computer equivalent of the "[DNA](dna.md)", the lowest level instructions for the computer. Assembly is similar to [bytecode](bytecode.md), but bytecode is meant to be [interpreted](interpreter.md) or used as an intermediate representation in [compilers](compiler.md) and may even be quite high level while assembly represents actual native code run by the hardware. In ancient times when there were no higher level languages (like [C](c.md) or [Fortran](fortran.md)) assembly was used to write computer programs -- nowadays most programmers no longer write in assembly (majority of [zoomer](zoomer.md) "[coders](coding.md)" probably never even touch anything close to it) because it's hard (takes a long time) and not [portable](portability.md), however programs written in assembly are known to be extremely fast as the programmer has absolute control over every single instruction (of course that is not to say you can't fuck up and write a slow program in assembly) and is able to manually [optimize](optimization.md) every single detail about the program.
Assembly (also ASM) is, for any given [hardware](hw.md) computing platform ([ISA](isa.md), basically a [CPU](cpu.md) architecture), the native, lowest level [programming language](programming_language.md) that expresses typically a linear, unstructured (i.e. without nesting blocks of code) sequence of very simple CPU instructions -- it maps (mostly) 1:1 to [machine code](machine_code.md) (the actual [binary](binary.md) CPU instructions) and basically only differs from machine code by employing a more human readable form (it gives human friendly nicknames, or mnemonics, to different combinations of 1s and 0s). Assembly is converted by [assembler](assembler.md) into the the machine code, something akin to a computer equivalent of the "[DNA](dna.md)", the lowest level instructions for the computer. Assembly is similar to [bytecode](bytecode.md), but bytecode is meant to be [interpreted](interpreter.md) or used as an intermediate representation in [compilers](compiler.md) and may even be quite high level while assembly represents actual native code run by the hardware. In ancient times when there were no higher level languages (like [C](c.md) or [Fortran](fortran.md)) assembly was used to write computer programs -- nowadays most programmers no longer write in assembly (majority of [zoomer](zoomer.md) "[coders](coding.md)" probably never even touch anything close to it) because it's hard (takes a long time) and not [portable](portability.md), however programs written in assembly are known to be extremely fast as the programmer has absolute control over every single instruction (of course that is not to say you can't fuck up and write a slow program in assembly) and is able to manually [optimize](optimization.md) every single detail about the program.
{ see this meme lol :D http://lolwut.info/images/4chan-g1.png ~drummyfish }
**Assembly is NOT a single language**, it differs for every architecture, i.e. every model of CPU has potentially different architecture, understands a different machine code and hence has a different assembly (though there are some standardized families of assembly like x86 that work on wide range of CPUs); therefore **assembly is not [portable](portability.md)** (i.e. the program won't generally work on a different type of CPU or under a different [OS](os.md))! And even the same kind of assembly language may have several different [syntax](syntax.md) formats that also create basically slightly different languages which differ e.g. in comment style, order of writing arguments and even instruction abbreviations (e.g. x86 can be written in [Intel](intel.md) or [AT&T](at_and_t.md) syntax). For the reason of non-portability (and also for the fact that "assembly is hard") you mostly shouldn't write your programs directly in assembly but rather in a bit higher level language such as [C](c.md) (which can be compiled to any CPU's assembly). However you should know at least the very basics of programming in assembly as a good programmer will come in contact with it sometimes, for example during hardcore [optimization](optimization.md) (many languages offer an option to embed inline assembly in specific places), debugging, reverse engineering, when writing a C compiler for a completely new platform or even when designing one's own new platform (you'll probably want to make your compiler generate native assembly, so you have to understand it). **You should write at least one program in assembly** -- it gives you a great insight into how a computer actually works and you'll get a better idea of how your high level programs translate to machine code (which may help you write better [optimized](optimization.md) code) and WHY your high level language looks the way it does.
**Assembly is NOT a single language**, it differs for every architecture, i.e. every model of CPU has potentially different architecture, understands a different machine code and hence has a different assembly (though there are some standardized families of assembly like x86 that work on wide range of CPUs); therefore **assembly is not [portable](portability.md)** (i.e. the program won't generally work on a different type of CPU or under a different [OS](os.md))! And even the same kind of assembly language may have several different [syntax](syntax.md) formats that also create basically slightly different languages which differ e.g. in comment style, order of writing arguments and even instruction abbreviations (e.g. x86 can be written in [Intel](intel.md) or [AT&T](at_and_t.md) syntax). For the reason of non-portability (and also for the fact that "assembly is hard") you mostly shouldn't write your programs directly in assembly but rather in a bit higher level language such as [C](c.md) (which can be compiled to any CPU's assembly). However you should know at least the very basics of programming in assembly as a good programmer will come in contact with it sometimes, for example during hardcore [optimization](optimization.md) (a bunch of languages allow embedding inline assembly in specific places), [debugging](debugging.md), reverse engineering, when writing a C compiler for a completely new platform or even when designing one's own new platform (you'll probably want to make your compiler generate native assembly, so you have to understand it). **You should write at least one program in assembly** -- it gives you a great insight into how a computer actually works and you'll get a better idea of how your high level programs translate to machine code (which may help you write better [optimized](optimization.md) code) and WHY your high level language looks the way it does.
**OK, but why doesn't anyone make a portable assembly?** Well, people do, they just usually call it a [bytecode](bytecode.md) -- take a look at that. [C](c.md) is portable and low level, so it is often called a "portable assembly", though it still IS significantly higher in abstraction and won't usually give you the real assembly vibes. [Forth](forth.md) may also be seen as close to such concept. ACTUALLY [Dusk OS](duskos.md) has something yet closer, called [Harmonized Assembly Layer](hal.md) (see https://git.sr.ht/~vdupras/duskos/tree/master/fs/doc/hal.txt). [Web assembly](web_assembly.md) would also probably fit the definition.
**OK, but why doesn't anyone make a [portable](portability.md) assembly?** Well, people do, they just usually call it a [bytecode](bytecode.md) -- take a look at that. [C](c.md) is portable and low level, so it is often called a "portable assembly", though it still IS significantly higher in abstraction and won't usually give you the real assembly vibes. [Forth](forth.md) may also be seen as close to such concept. ACTUALLY [Dusk OS](duskos.md) has something yet closer, called [Harmonized Assembly Layer](hal.md) (see https://git.sr.ht/~vdupras/duskos/tree/master/fs/doc/hal.txt). [Web assembly](web_assembly.md) would also probably fit the definition.
The most common assembly languages you'll encounter nowadays are **[x86](x86.md)** (used by most desktop [CPUs](cpu.md)) and **[ARM](arm.md)** (used by most mobile CPUs) -- both are used by [proprietary](proprietary.md) hardware and though an assembly language itself cannot (as of yet) be [copyrighted](copyright.md), the associated architectures may be "protected" (restricted) e.g. by [patents](patent.md) (see also [IP cores](ip_core.md)). **[RISC-V](risc_v.md)** on the other hand is an "[open](open.md)" alternative, though not yet so wide spread. Other assembly languages include e.g. [AVR](avr.md) (8bit CPUs used e.g. by some [Arduinos](arduino.md)) and [PowerPC](ppc.md).
To be precise, a typical assembly language is actually more than a set of nicknames for machine code instructions, it may offer helpers such as [macros](macro.md) (something akin to the C preprocessor), pseudoinstructions (commands that look like instructions but actually translate to e.g. multiple instructions), [comments](comment.md), directives, automatic inference of opcode from operands, named labels for jumps (as writing literal jump addresses would be extremely tedious) etc. I.e. it is still much easier to write in assembly than to write pure machine code even if you knew all opcodes from memory. For the same reason remember that just replacing assembly mnemonics with binary machine code instructions is not yet enough to make an executable program! More things have to be done such as [linking](linking.md) [libraries](library.md) and converting the result to some [executable format](executable_format.md) such as [elf](elf.md) which contains things like header with metainformation about the program etc.
To be precise, a typical assembly language is actually more than a set of nicknames for machine code instructions, it may feature helpers such as [macros](macro.md) (something akin to the C preprocessor), pseudoinstructions (commands that look like instructions but actually translate to e.g. multiple instructions), [comments](comment.md), directives, automatic inference of opcode from operands, named labels for jumps (as writing literal jump addresses would be extremely tedious) etc. I.e. it is still much easier to write in assembly than to write pure machine code even if you knew all opcodes from memory. For the same reason remember that just replacing assembly mnemonics with binary machine code instructions is not yet enough to make an executable program! More things have to be done such as [linking](linking.md) [libraries](library.md) and converting the result to some [executable format](executable_format.md) such as [elf](elf.md) which contains things like header with metainformation about the program etc.
**How will programming in assembly differ from your mainstream high-level programming?** Quite a lot, assembly is extremely low level, so you get no handholding or much programming "safety" (apart from e.g. CPU operation modes), you have to do everything yourself -- for example assembly languages are **untyped**, i.e. no one is going to offer or check your data types, everything is just 1s and 0s. You will also be dealing with things such as function [call conventions](call_convention.md), call stack and call frames, [interrupts](interrupt.md), overflows, [system calls](syscall.md) and their conventions, counting CPU cycles of individual instructions, looking up exact hexadecimal memory addresses, studying opcodes, defining memory segments, dealing with [endianness](endianness.md), raw [goto](goto.md) jumps, manual [memory management](memory_management.md) etc. You have no branching (if-then-else), loops or functions, you make these yourself with gotos. You can't write expressions like `(a + 3 * b) / 10`, no, you have to write every single step of how to evaluate this expression using registers, i.e. something like: load *a* to register *A*, load *b* to register *B*, multiply *B* by 3, add register *B* to *A*, divide *A* by 10. As said, you don't have any [data types](data_type.md), you have to know yourself that your variables really represent let's say a signed value so when you're dividing, you have to use signed divide instruction instead of unsigned divide -- if you mess this up, no one will tell you, your program simply won't work. And so on.
**How will programming in assembly differ from your mainstream high-level programming?** Quite drastically, assembly dwells near the bottom of the abstraction Mariana trench -- that is to say it's extremely low level, so you can't expect any handholding or much programming "safety" (apart from e.g. CPU operation modes), you have to do everything yourself -- for example assembly languages are **untyped**, i.e. no one is going to offer or check your data types, everything is just 1s and 0s. You will also be dealing with fantasy creatures such as function [call conventions](call_convention.md), call stack and call frames, [interrupts](interrupt.md), overflows, [system calls](syscall.md) and their conventions, counting CPU cycles of instructions, looking up exact [hexadecimal](hexadecimal.md) memory addresses, studying opcodes, defining memory segments, dealing with [endianness](endianness.md), raw [goto](goto.md) jumps, manual [memory management](memory_management.md) etc. You have no branching (if-then-else), loops or functions, you construct these yourself with [gotos](goto.md). You can't write expressions like `(a + 3 * b) / 10`, no, you have to program every single step of how to evaluate this expression using registers, i.e. something like: load *a* to register *A*, load *b* to register *B*, multiply *B* by 3, add register *B* to *A*, divide *A* by 10. As said, you don't have any [data types](data_type.md), you have to know yourself that your variables really represent let's say a signed value so when you're dividing, you have to use signed divide instruction instead of unsigned divide -- if you mess this up, no one tells you, your program simply won't work. And so on. But it's cool not just for the masochism, it actually teaches you shit.
**Is assembly usable for programming complex programs?** Yes, it's perfectly possible and usable unless you're a retard, games such as Roller Coaster Tycoon or Pokemon Crystal were written in assembly, there is no reason why anything of any complexity couldn't be written in assembly.
@ -20,13 +20,13 @@ To be precise, a typical assembly language is actually more than a set of nickna
Assembly languages are usually unstructured, i.e. there are no control structures such as `if` or `while` statements: these have to be manually implemented using labels and jump ([goto](goto.md), branch) instructions. There may exist macros that mimic control structures. The typical look of an assembly program is however still a single column of instructions with arguments, one per line, each representing one machine instruction.
In assembly it is also common to blend program instructions and data, i.e. sometimes you create a label after which you just put bytes that will represent e.g. text strings or images and after that you start to write program instructions that work with these data, which will likely physically be placed this way (after the data) in the final program. This may cause quite nasty bugs if you by mistake jump to a place where data reside and try to treat them as instructions.
In assembly it is also common to blend program instructions and data, i.e. sometimes you create a label after which you just put [bytes](byte.md) that will represent e.g. text [strings](string.md) or images and after that you start to write program instructions that work with these data, which will likely physically be placed this way (after the data) in the final program. This may cause quite nasty bugs if you by mistake jump to a place where data reside and try to treat them as instructions.
The working of the language reflects the actual [hardware](hardware.md) architecture -- most architectures are based on [registers](register.md) so usually there is a small number (something like 16) of registers which may be called something like R0 to R15, or A, B, C etc. Sometimes registers may even be subdivided (e.g. in x86 there is an *eax* 32bit register and half of it can be used as the *ax* 16bit register). These registers are the fastest available memory (faster than the main RAM memory, they are literally INSIDE the CPU, even in front of the [cache](cache.md)) and are used to perform calculations. Some registers are general purpose and some are special: typically there will be e.g. the FLAGS register which holds various 1bit results of performed operations (e.g. [overflow](overflow.md), zero result etc.). Some instructions may only work with some registers (e.g. there may be kind of a "[pointer](pointer.md)" register used to hold addresses along with instructions that work with this register, which is meant to implement [arrays](array.md)). Values can be moved between registers and the main memory (with instructions called something like *move*, *load* or *store*).
The working of the language reflects the actual [hardware](hardware.md) architecture -- the majority of common architectures is based on [registers](register.md) so usually there is a small number (something like 16) of registers which may be called something like R0 to R15, or A, B, C etc. Sometimes registers may even be subdivided (e.g. in x86 there is an *eax* 32bit register and half of it can be used as the *ax* 16bit register). These registers are the fastest available memory (faster than the main RAM memory, they are literally INSIDE the CPU, even in front of the [cache](cache.md)) and are used to perform calculations. Some registers are general purpose and some are special: typically there will be e.g. the FLAGS register which holds various 1bit results of performed operations (e.g. [overflow](overflow.md), zero result etc.). Some instructions may only work with some registers (e.g. there may be kind of a "[pointer](pointer.md)" register used to hold addresses along with instructions that work with this register, which is meant to implement [arrays](array.md)). Values can be moved between registers and the main memory (with instructions called something like *move*, *load* or *store*).
Writing instructions works similarly to how you call a [function](function.md) in high level language: you write its name and then its [arguments](argument.md), but in assembly things are more complicated because an instruction may for example only allow certain kinds of arguments -- it may e.g. allow a register and immediate constant (kind of a number literal/constant), but not e.g. two registers. You have to read the documentation for each instruction. While in high level language you may write general [expressions](expression.md) as arguments (like `myFunc(x + 2 * y,myFunc2())`), here you can only pass specific values.
Writing instructions works similarly to how you call a [function](function.md) in a high level language: you type its name and then its [arguments](argument.md), but in assembly things are more complicated because an instruction may for example only allow certain kinds of arguments -- it may e.g. allow a register and immediate constant (kind of a number literal/constant), but not e.g. two registers. You have to read the documentation for each instruction. While in high level language you may write general [expressions](expression.md) as arguments (like `myFunc(x + 2 * y,myFunc2())`), here you can only pass specific values.
There are also no advanced [data types](data_type.md), assembly only works with numbers of different sizes, e.g. 16 bit integer, 32 bit integer etc. Strings are just sequences of numbers representing [ASCII](ascii.md) values, it is up to you whether you implement null terminated strings or Pascal style strings. [Pointers](pointer.md) are just numbers representing addresses. It is up to you whether you interpret a number as signed or unsigned (some instructions treat numbers as unsigned, some as signed, some don't care because it doesn't matter).
You also cannot count on any advanced [data types](data_type.md), assembly only works with [numbers](number.md) of different sizes, e.g. 16 bit integer, 32 bit integer etc. Strings are just sequences of numbers representing [ASCII](ascii.md) values, it is up to you whether you implement null terminated strings or Pascal style strings. [Pointers](pointer.md) are just numbers representing addresses. It is up to you whether you interpret a number as signed or unsigned (some instructions treat numbers as unsigned, some as signed, some don't care because it doesn't matter).
Instructions are typically written as three-letter abbreviations and follow some unwritten naming conventions so that different assembly languages at least look similar. Common instructions found in most assembly languages are for example:

View file

@ -1,6 +1,6 @@
# Brainfuck
Brainfuck is an extremely simple, [minimalist](minimalism.md) untyped [esoteric programming language](esolang.md); simple by its specification (consisting only of 8 commands) but very hard to program in (it is so called [Turing tarpit](turing_tarpit.md)). It works similarly to a pure [Turing machine](turing_machine.md). In a way it is kind of [beautiful](beauty.md) by its [simplicity](minimalism.md), it is very easy to write your own brainfuck [interpreter](interpreter.md) (or [compiler](compiler.md)) -- in fact the Brainfuck author's goal was to make a language for which the smallest compiler could be made.
Brainfuck is an extremely [simple](kiss.md), [minimalist](minimalism.md) [untyped](typing.md) [esoteric programming language](esolang.md); plain in specification (consisting only of 8 commands) but difficult to [program](programming.md) in (it is so called [Turing tarpit](turing_tarpit.md)). It works similarly to a pure [Turing machine](turing_machine.md). In a way it is [beautiful](beauty.md) by its [simplicity](minimalism.md), writing brainfuck [interpreter](interpreter.md) (or even a [compiler](compiler.md)) is almost trivial -- in fact the Brainfuck author's goal was to construct a language for which the smallest compiler could be made.
There exist **[self-hosted](self_hosting.md) Brainfuck interpreters and compilers** (i.e. themselves written in Brainfuck) which is pretty fucked up. The smallest one is probably the one called [dbfi](dbfi.md) which has only slightly above 400 characters, that's incredible!!! (Esolang wiki states that it's one of the smallest self interpreters among imperative languages). Of course, **Brainfuck [quines](quine.md)** (programs printing their own source code) also exist, but it's not easy to make them -- one example found on the web was a little over 2100 characters long.

View file

@ -160,4 +160,5 @@ At this point basically anything else is better. But we here advocate [less reta
- [1984](1984.md)
- [Black Mirror](black_mirror.md)
- [corporation](corporation.md)
- [rape](rape.md)
- [zapitalism](zapitalism.md)

View file

@ -1,7 +1,11 @@
# Charity Sex
We define charity sex as [sex](sex.md) [selflessly](selflessness.md) provided for free just to make the other one happy -- this would mostly be done by a [women](woman.md) as women decide if sex happens or not, so a woman can "donate sex" to those who need it, but on rarer occasion charity sex may also be provided by an extremely [handsome man](chad.md). If a girl goes around providing a lot of charity sex to guys that are desperate for getting laid (such as [incels](incel.md)), she might be called a *charity whore* or *ethical whore* -- this is highly admirable, like someone going around buying food for the homeless. If you are girl please do this.
We define charity sex as [sex](sex.md) [selflessly](selflessness.md) provided for free just to make the recipient happy -- this would mostly be done by a [women](woman.md) as women decide if sex happens or not, so a woman can "donate sex" to those who need it, but on rarer occasion charity sex may also be provided by an extremely [handsome man](gigachad.md). The wonderful girl running around, providing a bunch of charity sex to guys desperate for getting laid (such as [incels](incel.md)) might be called a *charity whore* or *ethical whore* -- this is highly admirable, like someone buying food for the homeless. If you are girl please do this. Handjob is better than nothing.
UPDATE: an actual girl (let's rather keep it safe and [not mention](censorship.md) her name) has peer-reviewed this article and commented this much:
*"I like this idea because if the charitable woman is only copulating with incels, there's no risk of STDs."*
*"I like this idea because if the charitable woman is only copulating with incels, there's no risk of STDs."*
## See Also
- [selflessness](selflessness.md)

View file

@ -463,6 +463,8 @@ Some general tips and rules of thumb, mostly for beginners:
- Think from opponent's point of view -- this seems to be an important skill that beginners lack. If you only think about what you want to do, you often find yourself in trouble because you ignored the opponent's threats. At the very least you should ALWAYS think after the opponent's move about WHY he made it to be aware of what his plan probably is and what you should be prepared for. If you don't see why he made a move he did, you must think harder: either he blundered (good for you, take the opportunity!) OR you missed something and you have to find what.
- Sometimes, usually in endgames, the obligation to make a move becomes a disadvantage -- this is called [zugzwang](zugzwang.md) and can be abused. For example if the opponent has a pawn and a king who guards another pawn, it may be so that blocking the first pawn will make it unable to move, leaving the opponent with only a move that will make his king stop guarding the other pawn which can then be taken.
- Practice endgame -- the play is quite different from middle game, the king joins the battle, you start to race your pawns and prevent opponent's pawns from promoting. { I don't know if it's a good advice but at least in puzzles I've found that if you aren't sure about your move in the endgame, pushing the pawn is usually the right move :D ~drummyfish }
- Upon entering the intermediate level it's probably good to start train many different areas, variants and formats: try to play puzzles, blitz, rapid and classical, against computer and humans, normal chess and chess 960 etc. The thing is that in order to seriously improve, many individual skill must be boosted -- deep calculation with a lot of time on the clock, quick intuitive play under time constraints, play with different combinations of men, offense and defense, playing with material advantage and disadvantage etc.
- Also to improve considerably, one must do a few things besides just playing, such as watching others play and especially analyze one's losses, to discover weaknesses and shortcoming that must be eliminated or at least minimized.
- TODO: moar
## How To Disrespect Your Opponent And Other Lulz In Chess

View file

@ -2,7 +2,7 @@
*"Imagine no possession"* --John Lennon
Communism (from *communis* -- common, shared) is a very broad name most generally given to the idea that sharing and equality should be the basic values and principles of a society; as such it is a [leftist](left_right.md) idea falling under [socialism](socialism.md) (if that we take to mean a "focus on wellbeing of people at large"). Many branches, theories, political ideologies and schools of thought have come to grow from this concept, [Marxism](marxism.md), [Leninism](leninism.md), [anarcho communism](ancom.md), primitive communism, Christian communism and [Buddhist](buddhism.md) communism to name only a few -- of course, some of them [good](good.md) and other ones [evil](evil.md), only exploiting the word "communism" as a kind of *brand* (as also often happens e.g. with [anarchism](anarchism.md)). Unfortunately, as a consequence of the disastrous failure of the violent pseudocommunist revolutions of the 20th century, most people came to equate the word communism with oppressive militant regimes, and so we shall stress that just like we cannot equate religion with the Catholic Church, **communism is NOT equal to [USSR](ussr.md), Marxism-Leninism, Stalinism or any other form of pseudocommunism**, on the contrary such regimes were rather hierarchical, nationalist, cruel, nonegalitarian and violent, we might even say downright [fascist](fascism.md). Really there is very little difference between Marxist and far right regimes, the difference is essentially just in the name, and so we MUST NEVER think of communism as of Marxism. As for [LRS](lrs.md), we embrace TRUE communism and aim to make unconditional, [selfless](selflessness.md) sharing the basis of our [less retarded society](less_retarded_society.md) -- ideologically this is probably closest to [anarcho communism](ancom.md). **Yes, large communist societies have existed and worked**, for example the [Inca](inca.md) empire worked without [money](money.md) and provided FREE food, clothes, houses, health care, education and other products of collective work to everyone, according to his needs. Many other communities also work on more or less communist principles, see e.g. Jewish kibbutz, Sikhist [langar](langar.md), [free software](free_software.md), or even just most families for that matter. Of course, it's not claimed these societies and groups are or were [ideal](less_retarded_society.md), just that the principles of communism DO work in practice, that communism should be considered a necessary attribute of an ideal society and that such society is not impossible due to impossibility of communism because as we see, it is indeed possible (if anything, only its scalability gets really questioned, and even if global communism was proven to be impossible, who says we are obliged to establish a single global society?). The color [red](red.md) is usually associated with communism and the "hammer and sickle" (U+262D) is taken as its symbol, though that's mostly associated with the evil communist regimes and so its usage by LRS supporters is probably better be avoided.
Communism (from *communis* -- common, shared) is a very broad name most generally given to the idea that sharing and equality should be the basic values and principles of a society; as such it is a [leftist](left_right.md) concept falling under [socialism](socialism.md) (if that we take to mean a "focus on wellbeing of people at large"). Many branches, theories, political ideologies and schools of thought have come to grow from this concept, [Marxism](marxism.md), [Leninism](leninism.md), [anarcho communism](ancom.md), primitive communism, Christian communism and [Buddhist](buddhism.md) communism to name only a few -- of course, some of them [good](good.md) and other ones [evil](evil.md), only exploiting the word "communism" as a kind of *brand* (as also often happens e.g. with [anarchism](anarchism.md)). Unfortunately, as a consequence of the disastrous failure of the violent pseudocommunist revolutions of the 20th century, most people came to equate the word communism with oppressive militant regimes, and so we shall stress that just like we cannot equate religion with the Catholic Church, **communism is NOT equal to [USSR](ussr.md), Marxism-Leninism, Stalinism or any other form of pseudocommunism**, on the contrary such regimes were rather hierarchical, nationalist, cruel, nonegalitarian and violent, we might even say downright [fascist](fascism.md). Really there is very little difference between Marxist and far right regimes, the difference is essentially just in the name, and so we MUST NEVER think of communism as of Marxism. As for [LRS](lrs.md), we embrace TRUE communism and aim to establish unconditional, [selfless](selflessness.md) sharing as the foundation of our [less retarded society](less_retarded_society.md) -- ideologically this is probably closest to [anarcho communism](ancom.md). **Yes, large communist societies have existed and worked**, to give an example: the [Inca](inca.md) empire worked without [money](money.md) and provided FREE food, clothes, houses, health care, education and other products of collective work to everyone, according to his needs. A bunch of other communities also function on more or less communist principles, see e.g. Jewish [kibbutz](kibbutz.md), [Sikhist](sikhism.md) [langar](langar.md), [free software](free_software.md), or even just most families for that matter. Of course, it's not claimed these societies and groups are or were [ideal](less_retarded_society.md) in all respects, just that the principles of communism DO work in practice, that communism should be considered a necessary condition of a good society and that such society is not impossible due to impossibility of communism because as revealed, it is indeed possible (if anything, only its scalability gets really questioned, and even if global communism was proven to be impossible, who says we are obliged to establish a single global society?). The color [red](red.md) is usually associated with communism and the "hammer and sickle" (U+262D) is taken as its symbol, though that's mostly associated with the evil communist regimes and so its usage by LRS supporters is probably better be avoided.
Common ideas usually associated with communism are (please keep in mind that this may differ depending on the specific flavor of communism):
@ -23,5 +23,7 @@ TODO
- [less retarded society](less_retarded_society.md)
- [socialism](socialism.md)
- [commons](commons.md)
- Mores [Utopia](utopia.md)
- [Marxism](marxism.md)
- [capitalism](capitalism.md)

View file

@ -1,19 +1,19 @@
# Computational Complexity
Computational complexity is a formal ([mathematical](math.md)) study of resource usage (usually time and memory) by [computers](computer.md) as they're solving various types of problems. For example when using computers to [sort](sorting.md) arrays of numbers, computational complexity can tell us which [algorithm](algorithm.md) will be fastest as the size of the array grows, which one will require least amount of memory ([RAM](ram.md)) and even what's generally the fastest way in which this can be done. While time ("speed", number of steps) and memory (also *space*) are generally the resources we are most interested in, other can be considered too, e.g. network or power usage. Complexity theory is extremely important and one of the most essential topics in [computer science](compsci.md); it is also immensely practically important as it helps us [optimize](optimization.md) our programs, it teaches us useful things such as that we can trade time and space complexity (i.e. make program run faster on detriment of memory and vice versa) etc.
Computational complexity is a formal ([mathematical](math.md)) study of resource usage (usually time and memory) by [computers](computer.md) as they're solving various types of problems. For example when using computers to [sort](sorting.md) arrays of [numbers](number.md), computational complexity allows us to tell which [algorithm](algorithm.md) will be fastest as the size of the array grows, which one will demand the least amount of memory ([RAM](ram.md)) and even what's generally the fastest way in which this can be done. While time ("speed", number of steps) and memory (also *space*) are generally our primary resources of interest, other can be considered too, e.g. network or power usage. Complexity theory is invaluable and extremely important, it belongs among the most essential disciplines of [computer science](compsci.md); it is also immensely practically important as it helps us [optimize](optimization.md) our programs, it teaches us useful knowledge such as that we can trade time and space complexity (i.e. make program run faster on detriment of memory and vice versa) etc.
Firstly we have to distinguish between two basic kinds of complexity:
Primarily we have to distinguish between two basic types of complexity:
- **[algorithm](algorithm.md) complexity**: Complexity of a specific algorithm. For example [quick sort](quick_sort.md) and [bubble sort](bubble_sort.md) are both algorithms for sorting arrays but quick sort has better time complexity. (Sometimes we may extend this meaning and talk e.g. about memory complexity of a [data structure](data_structure.md) etc.)
- **problem complexity**: Complexity of the best algorithm that can solve particular problem; e.g. time complexity of sorting an array is given by time complexity of the algorithm that can sort arrays the fastest.
## Algorithm Complexity
Let us now focus on algorithm complexity, as problem complexity follows from it. OK, so **what really is the "algorithm complexity"?** Given resource *R* -- let's consider e.g. time, or the number of steps the algorithm needs to finish solving a problem -- let's say that complexity of a specific algorithm is a [function](function.md) *f(N)* where *N* is the size of input data (for example length of the array to be sorted), which returns the amount of the resource (here number of steps of the algorithm). However we face issues here, most importantly that the number of steps may not only depend on the size of input data but also the data itself (e.g. with sorting it may take shorter time to sort and already sorted array) and on the computer we use (for example some computers may be unable to perform multiplication natively and will emulate it with SEVERAL additions, increasing the number of steps), and also the exact complexity function will be pretty messy (it likely won't be a nice smooth function but rather something that jumps around a bit). So this kind of [sucks](suck.md). We have to make several steps to get a nice, usable theory.
Let us now focus on algorithm complexity, as problem complexity follows from it. OK, so **what really is the "algorithm complexity"?** Given resource *R* -- let's consider e.g. time, or the number of steps the algorithm needs to finish solving a problem -- let's say that complexity of a specific algorithm is a [function](function.md) *f(N)* where *N* is the size of input data (for example length of the array to be sorted), which returns the amount of the resource (here number of steps of the algorithm). However we may spot issues emerging here, most importantly that the number of steps may not only depend on the size of input data but also the data itself (e.g. with sorting it may take shorter time to sort and already sorted array) and on the computer we use (for example some computers may be unable to perform multiplication natively and will emulate it with SEVERAL additions, increasing the number of steps), and also the exact complexity function will be pretty messy (it likely won't be a nice smooth function but rather something that jumps around a bit). So this kind of [sucks](suck.md). We have to make several steps to get a nice, usable theory.
The **solution** to above issues will be achieved in several steps.
The **solution** to presented problem will be achieved in several steps.
FIRSTLY let's make it more clear what *f(N)* returns exactly -- when computing algorithm complexity we will always be interested in one of the following:
FIRSTLY let's clarify with better precision what *f(N)* returns exactly -- when computing algorithm complexity we will always be interested in one of the following:
- **best case** scenario: Here we assume *f(N)* always returns the best possible value for given *N*, usually the lowest (i.e. least number of steps, least amount of memory etc.). So e.g. with array sorting for each array length we will assume the input array has such values that the given algorithm will achieve its best result (fastest sorting, best memory usage, ...). I.e. this is the **lower bound** for all possible values the function could give for given *N*.
- **average case** scenario: Here *f(N)* returns the average, i.e. taking all possible inputs for given input size *N*, we just average the performance of our algorithm and this is what the function tells us.
@ -21,7 +21,7 @@ FIRSTLY let's make it more clear what *f(N)* returns exactly -- when computing a
This just deals with the fact that some algorithms may perform vastly different for different data -- imagine e.g. linear searching of a specific value in a list; if the searched value is always at the beginning, the algorithm always performs just one step, no matter how long the list is, on the other hand if the searched value is at the end, the number of steps will increase with the list size. So when analyzing an algorithm **we always specify which kind of case we are analyzing** (WATCH OUT: do not confuse these cases with differences between big O, big Omega and big Theta defined below). So let's say from now on we'll be implicitly examining worst case scenarios.
SECONDLY rather than being interested in PRECISE complexity functions we will rather focus on so called **asymptotic complexity** -- this kind of complexity is only concerned with how fast the resource usage generally GROWS as the size of input data approaches big values (infinity). So again, taking the example of array sorting, we don't really need to know exactly how many steps we will need to sort any given array, but rather how the time needed to sort bigger and bigger arrays will grow. This is also aligned with practice in another way: we don't really care how fast our program will be for small amount of data, it doesn't matter if it takes 1 or 2 microseconds to sort a small array, but we want to know how our program will [scale](scalability.md) -- if we have 10 TB of data, will it take 10 minutes or half a year to sort? If this data doubles in size, will the sorting time also double or will it increase 1000 times? This kind of complexity also no longer depends on what machine we use, the rate of growth will be the same on fast and slow machine alike, so we can conveniently just consider some standardized computer such as [Turing machine](turing_machine.md) to mathematically study complexity of algorithms.
SECONDLY rather than being interested in PRECISE complexity functions we will rather focus on so called **asymptotic complexity** -- this kind of complexity is only concerned with how fast the resource usage generally GROWS as the size of input data approaches big values (infinity). So again, taking the example of array sorting, we don't really desire to know exactly how many steps we will need to sort any given array, but rather how the time needed to sort bigger and bigger arrays will grow. This is also aligned with practice in another way: we don't really care how fast our program will be for small amount of data, it doesn't matter if it takes 1 or 2 microseconds to sort a small array, but we want to know how our program will [scale](scalability.md) -- if we have 10 TB of data, will it take 10 minutes or half a year to sort? If this data doubles in size, will the sorting time also double or will it increase 1000 times? This kind of complexity also no longer depends on what machine we use, the rate of growth will be the same on fast and slow machine alike, so we can conveniently just consider some standardized computer such as [Turing machine](turing_machine.md) to mathematically study complexity of algorithms.
Rather than exact value of resource usage (such as exact number of steps or exact number of bytes in RAM) asymptotic complexity tells us a **[class](class.md)** into which our complexity falls. These classes are given by mathematical functions that grow as fast as our complexity function. So basically we get kind of "tiers", like *constant*, *linear*, *logarithmic*, *quadratic* etc., and our complexity simply falls under one of them. Some common complexity classes, from "best" to "worst", are following (note this isn't an exhaustive list):
@ -45,7 +45,7 @@ Now notice (also check by the formal definitions) that we simply don't care abou
Another thing we have to clear up: **what does input size really mean?** I.e. what exactly is the *N* in *f(N)*? We've said that e.g. with array sorting we saw *N* as the length of the array to be sorted, but there are several things to additionally talk about. Firstly it usually doesn't matter if we measure the size of input in bits, bytes or number of items -- note that as we're now dealing with asymptotic complexity, i.e. only growth rate towards infinity, we'll get the same complexity class no matter the units (e.g. a linear growth will always be linear, no matter if our *x* axis measures meters or centimeters or light years). SECONDLY however it sometimes DOES matter how we define the input size, take e.g. an algorithm that takes a square image with resolution *R * R* on the input, iterates over all pixels and find the brightest one; now we can define the input size either as the total number of pixels of the image (i.e. *N = R * R*) OR the length of the image side (i.e. *N = R*) -- with the former definition we conclude the algorithm to have linear time complexity (for *N* input pixels the algorithm makes roughly *N* steps), with the latter definition we get QUADRATIC time complexity (for image with side length *N* the algorithm makes roughly *N * N* steps). What now, how to solve this? Well, this isn't such an issue -- we can define the input size however we want, we just have to **stay consistent** so that we are able to compare different algorithms (i.e. it holds that if algorithm *A* has better complexity than algorithm *B*, it will stay so under whatever definition of input size we set), AND when mentioning complexity of some algorithm we should mention how we define the input size so as to prevent confusion.
With memory complexity we encounter a similar issue -- we may define memory consumption either as an EXTRA memory or TOTAL memory that includes the memory storing the input data. For example with array sorting if an algorithm works [in situ](in_situ.md) (in place, needing no extra memory), considering the former we conclude memory complexity to be constant (extra memory needed doesn't depend on size of input array), considering the latter we conclude the memory complexity to be linear (total memory needed grows linearly with the size of input array). The same thing as above holds: whatever definition we choose, we should just mention which one we chose and stay consistent in using it.
With memory complexity we face a similar issue -- we may define memory consumption either as an EXTRA memory or TOTAL memory that includes the memory storing the input data. For example with array sorting if an algorithm works [in situ](in_situ.md) (in place, needing no extra memory), considering the former we conclude memory complexity to be constant (extra memory needed doesn't depend on size of input array), considering the latter we conclude the memory complexity to be linear (total memory needed grows linearly with the size of input array). The same thing as above holds: whatever definition we choose, we should just mention which one we chose and stay consistent in using it.
## Problem Complexity

17
doom.md
View file

@ -1,6 +1,6 @@
# Doom
Doom is a legendary video [game](game.md) released in December [1993](1990s.md), perhaps the most famous video game of all time, the game that popularized the [first man shooter](first_person_shooter.md) genre and shocked by its at the time extremely advanced 3D graphics (yes, **Doom is 3D**) and caused one of the biggest revolutions in video game history. It was made by [Id Software](id_software.md), most notably by [John Carmack](john_carmack.md) (graphics + engine programmer) and [John Romero](john_romero.md) (tool programmer + level designer) -- all in all the game was developed by about 5 to 6 men in about a year. Doom is sadly [proprietary](proprietary.md), it was originally distributed as [shareware](shareware.md) (a gratis "demo" was available for playing and sharing with the option to buy a full version). However the game engine was later (1999) released as [free (as in freedom) software](free_software.md) under [GPL](gpl.md) which gave rise to many source [ports](port.md) and "improved" "[modern](modern.md)" engines (which however look like shit, the original looks by far the best, if you want to play Doom use Chocolate Doom or Crispy Doom, avoid anything with GPU rendering). The assets remain non-free but a completely free alternative is offered by the [Freedoom](freedoom.md) project that has created [free as in freedom](free_culture.md) asset replacements for the game. [Anarch](anarch.md) is an official [LRS](lrs.md) game inspired by Doom, completely in the [public domain](public_domain.md).
Doom is a legendary video [game](game.md) released in December [1993](1990s.md), perhaps the most famous video game of all time, the game that popularized the [first man shooter](first_person_shooter.md) genre and shocked by its at the time extremely advanced 3D graphics (yes, **Doom is 3D**) and caused one of the biggest revolutions in video game [history](history.md). It was made by [Id Software](id_software.md), most notably by [John Carmack](john_carmack.md) (graphics + engine programmer) and [John Romero](john_romero.md) (tool programmer + level designer) -- all in all the game was developed by about 5 to 6 men in about a year. Doom is sadly [proprietary](proprietary.md), it was originally distributed as [shareware](shareware.md) (a gratis "demo" was available for playing and sharing with the option to buy a full version). However the game engine was later (1999) released as [free (as in freedom) software](free_software.md) under [GPL](gpl.md) which gave rise to many source [ports](port.md) and "improved" "[modern](modern.md)" engines (which however look like shit, the original looks by far the best, if you want to play Doom use Chocolate Doom or Crispy Doom, avoid anything with GPU rendering). The assets remain non-free but a completely free alternative is offered by the [Freedoom](freedoom.md) project that has created [free as in freedom](free_culture.md) asset replacements for the game. [Anarch](anarch.md) is an official [LRS](lrs.md) game inspired by Doom, completely in the [public domain](public_domain.md).
{ NOTE: Some disliked that I "glorify" Doom, a proprietary game -- yes, Doom is proprietary and therefore unethical. Ethical "fixes" exist, namely Freedoom. Here I merely describe the historical significance of "Doom as a concept", it's the same thing as with "Unix" as a concept -- Unix was also proprietary, but its invention was very significant historically, it was a discovery of a certain kind of formula, almost like discovering a law of nature in science. Even if this is initially seized and held by capitalists, later on free clones usually manage to free the concept from the proprietary implementation. Just so we understand each other: I am fully AGAINST proprietary games, but things aren't black and white, a disaster may have historical significance and lead to something good, and vice versa. I am just capturing facts. ~drummyfish }
@ -10,17 +10,17 @@ Only pussies play Doom on low difficulty. { Sorry Ramon, love u <3 :D ~drummyfis
{ Great books about Doom I can recommend: *Masters of Doom* (about the development) and *Game Engine Black Book: Doom* (details about the engine internals). Also recently John Romero, who has a rare condition of being able to perfectly recall every day of his life, has written a book about the development, called *Doom Guy*. ~drummyfish }
Partially thanks to the release of the engine under a [FOSS](foss.md) license and its relatively [suckless](suckless.md) design ([C](c.md) language, [software rendering](sw_rendering.md), ...), Doom has been [ported](port.md), both officially and unofficially, to a great number of platforms (e.g. [Gameboy Advance](gba.md), [PS1](playstation.md), even [SNES](snes.md)) and has become a kind of **de facto standard [benchmark](benchmark.md)** for computer platforms -- you will often hear the phrase: **"but does it run Doom?"** Porting a Doom to any platform has become kind of a [meme](meme.md), someone allegedly even ported it to a pregnancy test (though it didn't actually run on the test, it was really just a display). { Still [Anarch](anarch.md) may be even more portable than Doom :) ~drummyfish }
In part owing to the release of the engine under a [FOSS](foss.md) [license](license.md) and its relatively [suckless](suckless.md) design ([C](c.md) language, [software rendering](sw_rendering.md), ...), Doom has been [ported](port.md), both officially and unofficially, to a great number of platforms (e.g. [Gameboy Advance](gba.md), [PS1](playstation.md), even [SNES](snes.md)) and has become a kind of **de facto standard [benchmark](benchmark.md)** for computer platforms -- you will often hear the phrase: **"but does it run Doom?"** Porting a Doom to any platform has become kind of a [meme](meme.md), someone allegedly even ported it to a pregnancy test (though it didn't actually run on the test, it was really just a display). { Still [Anarch](anarch.md) may be even more portable than Doom :) ~drummyfish }
The major leap that Doom engine's graphics brought was unprecedented, however Doom was not just a game with good graphics, it had extremely good gameplay, legendary [music](music.md) and art style and introduced the revolutionary [deathmatch](deathmatch.md) multiplayer (the name *deathmatch* itself was coined by Romero during Doom multiplayer sessions), as well as a HUGE modding and mapping community. It was a success in every way -- arguably no other game has since achieved a greater revolution than Doom (no, not even [Minecraft](minecraft.md), [World of Warcraft](wow.md) etc.). Many reviews of it just went along the lines: "OK, Doom is the best game ever made, now let's just take a look at the details...". The game's style was also extremely cool, as were the developers themselves, Doom was very appealing by its sincere style of simply being a pure metal/bloody/gory/demon slaying shooter without any corporate garbage stuffed in for more popularity that you'd see today. It was simply a game made by a few guys who did it the way they liked it without giving shit about anything, you won't see that anymore, Doom simply didn't pretend to be some kind of pompous, glorious work and so for example didn't give much shit about the backstory, everyone knew the game was about shooting and so they just made it a bloody shooter. John Carmack famously stated that story in a video game is like story in a porn movie -- it's expected to be there but not very important. Nowadays you may see developers try to imitate this attitude but it's always laughable, it will only ever be a pretense because the times when you could simply make a game with artistic freedom, without having to bow to managers, gender departments, publishers and other overlords are simply long gone.
Doom wasn't the first 3D game, nor was it the first FPS, there were games before that were "more 3D" in a sense -- for example flight simulators -- what was special about Doom was how it used all the graphic tricks and combined them with excellent gameplay to achieve unprecedented "immersion", such that many weren't ready for. For example Doom had fully textured environments, including floors and ceilings, which along with the fog and lighting made the player really feel present in the game despite not being able to e.g. look up and down.
Doom wasn't the first 3D game, nor was it the first FPS, some of its predecessors could even be considered "more 3D" in a sense -- for example flight simulators -- what was so special and breathtaking about Doom was the mastery with which it combined all the graphic tricks in a novel way and still managed to complement them with excellent gameplay to deliver unprecedented "immersion", such that mere mortals of the [1990s](90s.md) couldn't expect and weren't ready for. Doom had fully textured environments, including floors and ceilings, which along with the fog, sector lighting, level verticality and interactivity made the player really feel present in the game despite not being able to look up and down. Games had textured walls before, and others had textured floors, some had lighting effects and distance fog, but Doom was the first to have it all and have it done the right way.
As stated, the game's backstory was simple and didn't stand in the way of gameplay, it's basically about a tough marine (so called *Doomguy*) on a Mars military base slaying hordes of demons from hell, all in a rock/metal style with a lot of gore and over-the-top violence (chain saws n stuff).
*Doom* was followed by *Doom II* in 1995, which "content-wise" was basically just a data disc, the same game with new levels and some minor additions. More Doom games followed, notably *Final Doom* and *Doom 64*, but these are a bit less known now. After the turn of the new millennium *Doom III* came out in 2004, which was a kind of "reboot" rather than a sequel. The game also got an expansion pack. *Doom IV* was in development but got canceled, so the next official game was *Doom 2016* -- another reboot. In 2020 *Doom: Eternal* was released.
Some **[interesting](interesting.md) facts** about Doom include:
Some **[interesting](interesting.md) trivia** about Doom include:
- Someone created a Doom system monitor for [Unix](unix.md) systems called [psDooM](psdoom.md) where the monsters in game are the operating system [processes](process.md) and killing the monsters kills the processes.
- In 2024 some researchers made an experimental completely [neural network](neural_net.md) [AI](ai.md) game engine (called GameNGen) and implemented Doom with it -- basically they just made the network play Doom for a long time and so trained it to estimate the next frame from current input and a few previous frames. It can be played at 20+ FPS and looks a lot like Doom but it's also "weird", glitching, and having little persistence (it only remembers a few seconds back). Still pretty impressive.
@ -29,27 +29,28 @@ Some **[interesting](interesting.md) facts** about Doom include:
- By simple modification of the engine (making the [pseudorandomness](pseudorandom.md) generator always return the same value, e.g. [zero](zero.md)) it's possible to essentially turn off all randomness and the game then becomes quite weird. For example the "melting" screen effect turn to just a screen swipe, strobe light effects disappear, weapon fire loses any spread and all monsters always make the same death sound.
- Someone (kgsws) has been [hacking](hacking.md) the ORIGINAL Doom engine in an impressive way WITHOUT modifying the source code or the binary, rather using [arbitrary code execution](arbitrary_code_execution.md) bug; he added very advanced features known from newer source ports, for example an improved 3D rendering algorithms allowing geometry above geometry etc. (see e.g. https://yt.artemislena.eu/watch?v=RdbRPNPUWlU). It's called the Ace engine.
- A special mod of Doom, called Marine Doom, was at one point used for [military](military.md) training.
- Doom sprites were made from photos of physical things: weapons are modified photos of toys, enemies were made from clay and then photographed from multiple angles (actually a great alternative to [3D modeling](3d_model.md) that's less dependent on computers and produces more realistic results).
- Doom sprites were made from photos of physical things: weapons are modified photos of toys, enemies were made from clay and then photographed from multiple angles (actually a great alternative to [3D modeling](3d_model.md) that's less dependent on computers and produces more realistic results). The clay models still exist.
- The strongest weapon in the game is name BFG9000, which stands for "big fucking gun".
- There is some kind of "controversial" Doom mod called *Moon Man* where you shoot feminists, jews, niggas and such, apparently it triggers [SJWs](sjw.md) or something.
- It's estimated that by late 1995 Doom was installed on more computers than [Windows](windows.md) 95.
- The name *Doom* comes from a line in a movie called *The Color of Money*.
- Arguably the greatest Doom [speedrunner](speedrun.md), but likely one of the greatest speedrunners ever, is ZeroMaster, a guy from Norway who just keeps beating record after record, many of which were thought to literally be impossible. He also writes tool and scripts to help search for new bugs and viable strategies and also makes insane [tool assisted speedruns](tas.md).
- The initial release even featured support for a three-monitor wide view, something truly advanced for the time. This was disabled in newer versions but the code stayed and later source ports, such as Cholocate Doom, reenabled it.
- According to DYKG, the engine initially supported even sloped floors, but the feature was later on scratched.
## Doom Engine/Code
*See also [game engine](game_engine.md) for the list of different Doom engines. Tl;dr: to play doom nowadays use either Chocolate Doom or Crispy Doom.*
Doom source code is written in [C89](c.md) and is about 36000 [lines of code](loc.md) long. The original system requirements stated roughly a 30 MHz [CPU](cpu.md) and 4 MB [RAM](ram.md) as a minimum. It had 27 levels (9 of which were shareware), 8 weapons and 10 enemy types. The engine wasn't really as flexible in a way "[modern](modern.md)" programmers expect, many things were hard coded, there was no [scripting](script.md) or whatever (see? you don't fucking need it), new games using the engine had to usually modify the engine internals.
Doom source code is written in [C89](c.md) and is about 36000 [lines of code](loc.md) long, spread over some 124 files, of which some were auto-generated (e.g. the [AI](ai.md) [state machines](finite_state_machine.md)). The original system requirements stated roughly a 30 MHz [CPU](cpu.md) and 4 MB [RAM](ram.md) as a minimum. It had 27 levels (9 of which were shareware), 8 weapons and 10 enemy types. The engine wasn't really as flexible in a way "[modern](modern.md)" programmers expect, many things were hard coded, there was no [scripting](script.md) or whatever (see? you don't fucking need it), new games using the engine had to usually modify the engine internals.
The code itself looks alright, files are nicely organized into groups by their prefix (`g_`: game, `r_`: rendering, `s`: sound etc.). The same goes for the function names. There seems to be tabs mixed with spaces though, sometimes a bit shitty formatting, but overall MUCH better than [duke 3D](duke3d.md)'s code (well, that doesn't say much though). [Comments](comment.md) are plentiful.
The game only used [fixed point](fixed_point.md), no [float](float.md)!
The **Doom engine** (also called *id Tech 1*) was revolutionary and advanced (not only but especially) video game graphics by a great leap, considering its predecessor [Wolf3D](wolf3D.md) was really primitive in comparison (Doom basically set the direction for future trends in games such as driving the development of more and more powerful [GPUs](gpu.md) in a race for more and more impressive visuals). Doom used a technique called **[BSP rendering](bsp.md)** (levels were made of convex 2D sectors that were then placed in a BSP tree which helped quickly sort the walls for rendering front-to-back) that was able to render [realtime](realtime.md) 3D views of textured (all walls, floors and ceilings) environments with primitive lighting (per-sector plus diminishing lighting), enemies and items represented by 2D [billboards](billboard.md) ("[sprites](sprite.md)"). No [GPU](gpu.md) acceleration was used, graphics was rendered purely with [CPU](cpu.md) (so called [software rendering](sw_rendering.md), GPU rendering would come with Doom's successor [Quake](quake.md), and would also later be brought to Doom by newer community made engines, though the original always looks the best). This had its limitations, for example the camera could not look up and down, there could be no tilted walls and the levels could not have rooms above other rooms. The geometry of levels was only static, i.e. it could not change during play (only height of walls could, which is why walls always opened upwards), because rendering was dependent on precomputed BSP trees (which is what made it so fast). For these reasons some call Doom "[pseudo 3D](pseudo3d.md)" or 2.5D rather than "true 3D", some retards took this even as far as calling Doom 2D with its graphics being just an "illusion", as if literally every 3D graphics ever wasn't a mere illusion. Nevertheless, though with limitations, Doom did present 3D views and internally it did work with 3D coordinates (for example the player or projectiles have 2D position plus height coordinate), despite some dumb YouTube videos saying otherwise. For this reason we prefer to call Doom a **primitive 3D** engine, but 3D nonetheless. Other games later used the Doom engine, such as Heretic, Hexen and Strife. The Doom engine was similar to and competing with [Build](build_engine.md) engine that ran games like [Duke Nukem 3D](duke3d.md), Blood and Shadow Warrior. All of these 90s shooters were amazing in their visuals and looked far better than any [modern](modern.md) shit. Build engine games had similar limitations to those of the Doom engine but would improve on them (e.g. faking looking up and down by camera tilting, which could in theory be done in Doom too, or allowing sloped floor and dynamic level geometry).
The **Doom engine** (also called *id Tech 1*) was revolutionary and advanced (not only but especially) video game graphics by a great leap, considering its predecessor [Wolf3D](wolf3D.md) was really primitive in comparison (Doom basically set the direction for future trends in games such as driving the development of more and more powerful [GPUs](gpu.md) in a race for more and more impressive visuals). In early stages the game used a [portal renderer](portal_rendering.md) but it turned running too slow with more complex scenes, so John Carmack switched to a new technique called **[BSP rendering](bsp.md)** (levels were made of convex 2D sectors that were then placed in a BSP tree which helped quickly sort the walls for rendering front-to-back) that was able to render [realtime](realtime.md) 3D views of textured (all walls, floors and ceilings) environments with primitive lighting (per-sector plus diminishing lighting), enemies and items represented by 2D [billboards](billboard.md) ("[sprites](sprite.md)"). The BSP rending was especially elegant in that it always drew each screen pixel exactly once, without overdraw or "holes" left behind, and thanks to this it wasn't even necessary to clear the video buffer inbetween frames. No [GPU](gpu.md) acceleration was used, graphics was rendered purely with [CPU](cpu.md) (so called [software rendering](sw_rendering.md), GPU rendering would come with Doom's successor [Quake](quake.md), and would also later be brought to Doom by newer community made engines, though the original always looks the best). This had its limitations, for example the camera could not look up and down, there could be no tilted walls and the levels could not have rooms above other rooms. The geometry of levels was only static, i.e. it could not change during play (only height of walls could, which is why walls always opened upwards), because rendering was dependent on precomputed BSP trees (which is what made it so fast). For these reasons some call Doom "[pseudo 3D](pseudo3d.md)" or 2.5D rather than "true 3D", some retards took this even as far as calling Doom 2D with its graphics being just an "illusion", as if literally every 3D graphics ever wasn't a mere illusion. Nevertheless, though with limitations, Doom did present 3D views and internally it did work with 3D coordinates (for example the player or projectiles have 2D position plus height coordinate), despite some dumb YouTube videos saying otherwise. For this reason we prefer to call Doom a **primitive 3D** engine, but 3D nonetheless. Other games later used the Doom engine, such as Heretic, Hexen and Strife. The Doom engine was similar to and competing with [Build](build_engine.md) engine that ran games like [Duke Nukem 3D](duke3d.md), Blood and Shadow Warrior. All of these 90s shooters were amazing in their visuals and looked far better than any [modern](modern.md) shit. Build engine games had similar limitations to those of the Doom engine but would improve on them (e.g. faking looking up and down by camera tilting, which could in theory be done in Doom too, or allowing sloped floor and dynamic level geometry).
The game data is stored in so called **WAD files** (short for *where's all the data*). While many things are hardcoded in the engine, such as the total number of levels or types of weapons, most other things such as textures, levels, color palettes, weapons and enemy sprites are in the WAD files and so can be replaced without having to mess with the engine itself. There are two types of WAD files (both however still come with the same .wad extension, they are distinguished only by the file magic number): IWAD (internal WAD) and PWAD ([patch](patch.md) WAD). IWAD is the most important one, representing the base game, so for example Doom, Hexen and Freedoom will all have their own specific IWAD. Only one IWAD is loaded at any time. PWAD allows to add or modify things in the IWAD which makes it possible to easily correct bugs in the game data and make mods. Unlike with IWADs, multiple PWADs can be loaded at any time -- when loaded, a resource that's present in the PWAD will override the same resource in the base IWAD. All resources in the WAD files are stored as so called *lumps* which we may simply see as "blobs of data" or "files". A nice [CLI](cli.md) tool for working with WADs is e.g. [deutex](deutex.md).
The game [data](data.md) is stored in so called **WAD files** (short for *where's all the data*). While many things are hardcoded in the engine, such as the total number of levels or types of weapons, most other things such as textures, levels, color palettes, weapons and enemy sprites are in the WAD files and so can be replaced without having to mess with the engine itself. There are two types of WAD files (both however still come with the same .wad extension, they are distinguished only by the file magic number): IWAD (internal WAD) and PWAD ([patch](patch.md) WAD). IWAD is the most important one, representing the base game, so for example Doom, Hexen and Freedoom will all have their own specific IWAD. Only one IWAD is loaded at any time. PWAD allows to add or modify things in the IWAD which makes it possible to easily correct bugs in the game data and make mods. Unlike with IWADs, multiple PWADs can be loaded at any time -- when loaded, a resource that's present in the PWAD will override the same resource in the base IWAD. All resources in the WAD files are stored as so called *lumps* which we may simply see as "blobs of data" or "files". A nice [CLI](cli.md) tool for working with WADs is e.g. [deutex](deutex.md).
Doom WAD (full version) is a bit over 11 MB in size (MD5 1cd63c5ddff1bf8ce844237f580e9cf3), Doom 2 WAD is over 14 MB (MD5 25e1459ca71d321525f84628f45ca8cd).

View file

@ -2,9 +2,9 @@
Dungeons & Dragons (D&D, DnD) is a [proprietary](proprietary.md) tabletop [RPG](rpg.md) [game](game.md) for ugly people who are desperate for social contact at least with other ugly people.
{ Sorry, I may start world war 3 by saying this, but I think D&D sucks. ~drummyfish }
{ Sorry, I may start world war 3 by letting this out, but I think D&D sucks ass. ~drummyfish }
The idea behind D&D is really, really cool in theory... HOWEVER in practice we just get something so excruciatingly awfully cringe; screeching, sweating autistic fat men pretending to be young female fairies, it would really be much more pleasant to eat glass than watch D&D session in progress. D&D is not really like what it seems at first sight, it is NOT a game for "smart" people who don't fit in because of their huge IQ, it's more of a last resort place for people who would LOVE to socialize so much but can't because they're extremely ugly or unlovable and no one wants to be around them. It's really so SO PAINFUL to watch the most beta soy fatman trying to masturbate his ego by awful attempts at acting and pretending he's a general of orc army or something while holding some plastic sword, thinking that when he drops all restraints and screeches on top of his lungs he will suddenly look like Brad Pitt and he'll impress that one real weird beta female that's always present in any D&D session. Real [nerds](nerd.md) just hate people and won't try to look for socialization even with other nerds. Furthermore it's not even a real game with strictly set rules, it's more of a collaborative story writing and acting, it's almost closer to dumb normie stuff like theatre and whatnot, a real nerd MAY want to get into writing, but he will have enough of a vision to not let some random averages fuck up his universe, that just smells by want of social interaction rather than being an attempt at creating good art -- so yeah, it's not really about fantasy, playing a game or anything, just about desperately trying to interact with any people at all for any cost.
The concept of D&D is really sweet in theory... HOWEVER in practice we just get something so excruciatingly awful: a bunch of screeching, sweating autistic fat men pretending to be young female elves and fairies, it would be much more bearable to eat glass than watch D&D session in progress. D&D is not like what it seems at first sight, it is NOT a game for "smart" people who don't fit as consequence of their huge IQ, it's more of a last resort place for people who would LOVE to socialize so much but can't because they're extremely ugly or unlovable and no one wants to be around them. It's really so SO PAINFUL to watch the most beta soy fatman trying to masturbate his ego by awful attempts at acting and pretending he's a general of orc army or something while holding some plastic sword, thinking that when he drops all restraints and screeches on top of his lungs he will suddenly look like Brad Pitt and he'll impress that one real weird beta female that's always present in any D&D session. Real [nerds](nerd.md) just hate people and won't try to look for socialization even with other nerds. Furthermore it's not even a real game with strictly set rules, it's more of a collaborative story writing and acting, it's almost closer to dumb normie stuff like theatre and whatnot, a real nerd MAY want to get into writing, but he will have enough of a vision to not let some random averages fuck up his universe, that just smells by want of social interaction rather than being an attempt at creating good art -- so yeah, it's not really about fantasy, playing a game or anything, just about desperately trying to interact with any people at all for any cost.
## See Also

View file

@ -2,4 +2,9 @@
Faggot (also spelled faggit) is a synonym for [gay](gay.md).
In [Czech](czechia.md) *fagot* means the bassoon musical instrument.
In [Czech](czechia.md) *fagot* means the bassoon musical instrument.
## See Also
- [gay](gay.md)
- [nigger](nigger.md)

View file

@ -1,24 +1,24 @@
# Fixed Point
Fixed point arithmetic is a simple and often [good enough](good_enough.md) method of computer representation of [fractional](rational_number.md) numbers (i.e. numbers with higher precision than [integers](integer.md), e.g. 4.03), as opposed to [floating point](float.md) which is a more complicated way of doing this which in most cases we consider a worse, [bloated](bloat.md) alternative. Probably in 99% cases when you think you need floating point, fixed point will do just fine (this is also advocated e.g. in the book *Starting Forth*). Fixed point arithmetic is not to be [confused](often_confused.md) with fixed point of a function in mathematics (fixed point of a function *f(x)* is such *x* that *f(x) = x*), a completely unrelated term.
Fixed point arithmetic is a [simple](kiss.md) and often [good enough](good_enough.md) method of representing [fractional](rational_number.md) [numbers](number.md) (i.e. numbers with higher precision than [integers](integer.md), e.g. 4.03) in [computers](computer.md), as opposed to a more complicated [floating point](float.md) (which in most cases we consider a worse, more [bloated](bloat.md) option). Probably in 99% cases when you think you need floating point, fixed point will do just fine (this is also advocated e.g. in the book *Starting Forth*). Fixed point arithmetic is not to be [confused](often_confused.md) with fixed point of a function in mathematics (fixed point of a function *f(x)* is such *x* that *f(x) = x*), a completely unrelated term.
Fixed point has at least these advantages over floating point:
- **It doesn't require a special hardware coprocessor** for efficient execution and so doesn't introduce a [dependency](dependency.md). Programs using floating point will run extremely slowly on systems without float hardware support as they have to emulate the complex hardware in software, while fixed point will run just as fast as integer arithmetic. For this reason fixed point is very often used in [embedded](embedded.md) computers.
- **It doesn't require special [hardware](hw.md) [coprocessor](coprocessor.md)** for efficient execution and so doesn't introduce a [dependency](dependency.md). Programs relying on floating point will run poorly on systems without float hardware support as they have to emulate the missing hardware in software, while fixed point will run just as fast as integer arithmetic. For this reason fixed point is very often used in [embedded](embedded.md) computers.
- It is **natural, easier to understand and therefore better predictable**, less tricky, [KISS](kiss.md), [suckless](suckless.md). (Float's IEEE 754 standard is 58 pages long, the paper *What Every Computer Scientist Should Know About Floating-Point Arithmetic* has 48 pages.)
- Is easier to implement and so **supported in many more systems**. Any language or format supporting integers also supports fixed point.
- It isn't ugly and in [two's complement](twos_complement.md) **doesn't waste values** (unlike IEEE 754 with positive and negative zero, denormalized numbers, many [NaNs](nan.md) etc.).
- **It is usually well defined**, or at least better than float. While specifics of float -- such as exact precision, rounding rules etc. -- may be unspecified on many systems, with fixed point we usually know the result of any operation, or at least know the tricky cases we have to watch for (such as overflows). If we make an engine using floating point, it may behave differently on a computer that uses a different standard for floating point; with fixed point our engine will behave the same everywhere.
- Some simpler (i.e. better) programming languages such as [comun](comun.md) don't support float at all, while fixed point can be used in any language that supports integers.
- Some simpler (i.e. better) [programming languages](programming_language.md) such as [comun](comun.md) don't support float at all, while fixed point can be used in any language that supports integers.
- ...
What are the disadvantages? Well, we may for example lack precision sometimes, which can manifest e.g. by "jerky" movement in 3D engines, although there are always tricks and ways to fix this (increasing precision, [interpolation](interpolation.md), smoothing filters, ...), although it may sometimes be a bit more complicated. While older/simpler computers will benefit from fixed point, the big/"[modern](modern.md)" computers on the other hand will suffer from it because we'll typically be using our own software implementation which has to compete with hardware accelerated floating point (still, we argue to rather favor the older/simpler computers). Also fixed point won't offer all the comfort that floating point nowadays comes with such as dealing with overflows etc. This is of course not an inherent disadvantage of fixed point but rather the status quo of computing industry, it's because floating point has been pimped and is delivered on a silver platter. In general using fixed point is a bit more [work](work.md): we have to correctly choose the precision, manually adjust order of arithmetic operations, check for/prevent overflows etc., but in the end we get a better program. We have to argue for doing things well rather than quickly.
What are the disadvantages? Well, sometimes precision may be lacking for example, resulting in nuisances such as more "jerky" movement in 3D engines, although there are always tricks and ways to fix this (increasing precision, [interpolation](interpolation.md), smoothing filters, ...), but they may sometimes prove to be quite complex themselves. While older/simpler computers will benefit from fixed point, the big/"[modern](modern.md)" computers on the other hand may as we'll typically be using our own software implementation which has to compete with hardware accelerated floating point (still, we argue to rather favor the older/simpler computers). Also fixed point won't offer all the comfort that floating point nowadays comes with such as dealing with overflows etc. This is of course not an inherent disadvantage of fixed point but rather the status quo of computing industry, it's because floating point has been pimped and is delivered on a silver platter. In general using fixed point is a bit more [work](work.md): we have to correctly choose the precision, manually adjust order of arithmetic operations, check for/prevent overflows etc., but in the end we get a better program. We have to argue for doing things well rather than quickly.
## How It Works
Fixed point uses a fixed (hence the name) number of digits (bits in binary) for the integer part and the rest for the fractional part (whereas floating point's fractional part varies in size). I.e. we split the binary representation of the number into two parts (integer and fractional) by IMAGINING a radix point at some place in the binary representation. That's basically it. Fixed point therefore spaces numbers [uniformly](uniformity.md), as opposed to floating point whose spacing of numbers is non-uniform.
So, **we can just use an integer data type as a fixed point data type**, there is no need for libraries or special hardware support. We can also perform operations such as addition the same way as with integers. For example if we have a binary integer number represented as `00001001`, 9 in decimal, we may say we'll be considering a radix point after let's say the sixth place, i.e. we get `000010.01` which we interpret as 2.25 (2^2 + 2^(-2)). The binary value we store in a variable is the same (as the radix point is only imagined), we only INTERPRET it differently.
So, **we can just use an integer [data type](data_type.md) as a fixed point data type**, there is no need for libraries or special hardware support. We can also perform operations such as addition the same way as with integers. For example if we have a binary integer number represented as `00001001`, 9 in decimal, we may say we'll be considering a radix point after let's say the sixth place, i.e. we get `000010.01` which we interpret as 2.25 (2^2 + 2^(-2)). The binary value we store in a variable is the same (as the radix point is only imagined), we only INTERPRET it differently.
We may look at it this way: we still use integers but we use them to count smaller fractions than 1. For example in a 3D game where our basic spatial unit is 1 meter our variables may rather contain the number of centimeters (however in practice we should use powers of two, so rather 1/128ths of a meter). In the example in previous paragraph we count 1/4ths (we say our **scaling factor** is 1/4), so actually the number represented as `00000100` is what in floating point we'd write as `1.0` (`00000100` is 4 and 4 * 1/4 = 1), while `00000001` means `0.25`.

View file

@ -4,7 +4,7 @@ Free (as in freedom) culture is a movement aiming for the relaxation of [intelle
The promoters of free culture want to relax intellectual property [laws](law.md) ([copyright](copyright.md), [patents](patent.md), [trademarks](tm.md) etc.) but also promote an ethic of sharing and remixing being good (as opposed to the demonizing anti-"[piracy](piracy.md)" propaganda of today), they sometimes mark their works with words **"some rights reserved"** or even "no rights reserved", as opposed to the traditional "all rights reserved".
Free culture is kind of a younger sister movement to **[free software](free_software.md)**, in fact it has been inspired by it (we could call it its [fork](fork.md)). While free software movement, commenced in 1983, was only concerned with freedoms related to computer program source code, free culture subsequently (circa 2000) extended the concept to all information, including e.g. artworks and scientific data. There are **clearly defined criteria** for a work to be considered free (as in freedom) work, i.e. part of the body of free cultural works. The criteria are very similar to those of free software (the definition is at https://freedomdefined.org/Definition) and can be summed up as follows:
Free culture is a younger sister movement to **[free software](free_software.md)**, in fact it has been inspired by it (we could call it its [fork](fork.md)). While free software movement, commenced in 1983, was only concerned with freedoms related to computer program source code, free culture subsequently (circa 2000) extended the concept to all information, including e.g. artworks and scientific data. There are **clearly defined criteria** for a work to be considered free (as in freedom) work, i.e. part of the body of free cultural works. The criteria are very similar to those of free software (the definition is at https://freedomdefined.org/Definition) and can be summed up as follows:
A free cultural work must allow anyone to (legally and practically):
@ -15,7 +15,7 @@ A free cultural work must allow anyone to (legally and practically):
Some of these conditions may e.g. further require a source code of the work to be made available (for example sheet music, to allow studying and modification). Some conditions may however still be imposed, as long as they don't interfere with the above -- if, let's say, a work allows all the above but requires crediting the author, it is still considered free (as in freedom). [Copyleft](copyleft.md) (also share-alike, requirement of keeping the license for derivative works) is another condition that may be required. To this end some free culture promoters actually rely and even support the concept of copyright, they just want to make it much less strict.
IMPORTANT NOTE: **[fair use](fair_use.md) (or exclusive author permission) is unacceptable in free culture!** It is an extremely common mistake, happening even among people long contributing to free culture, to think that within free culture you can use a piece of proprietary art under so called *fair use* while keeping the whole work adhering to free culture -- you cannot do this (even though e.g. [Wikipedia](wikipedia.md) does this for which it actually seizes to be a completely free work). Fair use is a legal concept that allows people to use any kind of art -- even proprietary -- in some "fair" ways even without the permission of the copyright holder, i.e. for example you can likely use someone's copyrighted photograph on your website as long as you have a good justification for it (e.g. documenting a historical event with this being the only existing photo of it), if you only include a low resolution version and if you're not making money off of it -- this could be judged fair use by the court, i.e. you wouldn't be violating copyright. However a work that is to be free licensed must allow ANY use, not just fair use, i.e. it mustn't contain any part under fair use, or even under EXCLUSIVE author's permission for it to be used within that project, because such part would only limit the work to be used in the "fair use" way ONLY. While in some contexts, for instance in hobbyist projects, such work will likely be legal, i.e. fair use, in other context, like commercial ones (which free culture MUST enable), this fair use part will suddenly seize to be fair use and the use will be illegal. Similarly if you e.g. want to use someone's music in your free culture movie, it is NOT enough to get the author's permission to use the music in your movie, the author has to give permission to EVERYONE to use it in ANY WAY, because if your movie is to be under a free license, anyone will be able to take any part out of your movie and use it in any other way. { I actually managed to get some characters out of the [SuperTuxKart](supertuxkart.md) game for this reason, there were some mascots that were used under exclusive permission, which was unacceptable and Debian maintainers sorted this out. So just for the confirmation of this fact: Debian also confirmed this. ~drummyfish }
IMPORTANT NOTE: **[fair use](fair_use.md) (or exclusive author permission) is unacceptable in free culture!** It is an extremely common mistake to make, seen committed even by long time contributors to free culture, to think that within free culture you can use a piece of proprietary art under so called *fair use* while keeping the whole work adhering to free culture -- you cannot do this (even though e.g. [Wikipedia](wikipedia.md) does this for which it actually seizes to be a completely free work). Fair use is a legal concept allowing people to use any kind of art -- even proprietary -- in certain ways, deemed "fair", even without the permission of the copyright holder, i.e. for example you can likely use someone's copyrighted photograph on your website as long as you have a good justification for it (e.g. documenting a [historical](history.md) event with this being the only existing photo of it), if you only include a low resolution version and if you're not making money off of it -- this could be judged fair use by the court, i.e. you wouldn't be violating copyright. Nonetheless a work that is to be free licensed must allow ANY use, not just fair use, i.e. it mustn't contain any part under fair use, or even under EXCLUSIVE author's permission for it to be used within that project, because such part would only limit the work to be used in the "fair use" way ONLY. Any "fair use" part embedded in a free work infects it and turns it into a "fair use" work as a whole, just like a proprietary part in a free program makes it wholly proprietary. While in some contexts, for instance in hobbyist projects, such work will likely be legal, i.e. fair use, in other context, like commercial ones (which free culture MUST enable), this fair use part will suddenly seize to be fair use and the use will be illegal. Similarly if you e.g. want to use someone's [music](music.md) in your free culture movie, it is NOT enough to get the author's permission to use the music in your movie, the author has to give permission to EVERYONE to use it in ANY WAY, because if your movie is to be under a free license, anyone will be able to take any part out of your movie and use it in any other way. { I actually managed to get some characters out of the [SuperTuxKart](supertuxkart.md) game for this reason, there were some mascots that were used under exclusive permission, which was unacceptable and Debian maintainers sorted this out. So just for the confirmation of this fact: Debian also confirmed this. ~drummyfish }
During early [90s](90s.md) people tried to carry over the principles of free software to writing with what was called [FreeLore](freelore.md) ([source](https://shii.bibanon.org/shii.org/knows/FreeLorehtml.html)), however the biggest event came in 2001 when **[Lawrence Lessig](lessig.md)**, [American](usa.md) lawyer, now one of the best known free culture people, established **[Creative Commons](creative_commons.md)**, a non-profit organization which now stands as one of the pillars of the movement (even though of course some free culture proponents may still be critical of the organization itself, the organization doesn't equal the movement). By this time he was already educating people about the twisted intellectual property laws and had a few followers. Creative Commons would create and publish a set of [licenses](license.md) that anyone could use to release their works under much less restrictive conditions than those that lawfully arise by default. For example if someone creates a song and releases it under the [CC-BY](cc_by.md) license, he allows anyone to freely use, modify and share the song as long as proper attribution is given to him. It has to be noted that **NOT all Creative Commons licenses are free culture** (those with NC and ND conditions break the above given rules)! It is also possible to use other, non Creative Commons licenses in free culture, as long as the above given criteria are respected.

View file

@ -2,13 +2,13 @@
*You can do what you want, but you can't want what you want.*
Free will is a logically erroneous egocentric belief that humans (and possibly other living beings) are special in the universe by possessing some kind of soul which may disobey laws of physics and somehow make spontaneous, unpredictable decisions according to its "independent" desires. Actually that's the definition of *absolute* *indeterminate* free will; weaker definitions are also possible, e.g. *volitional free will* means just that one's actions are determined internally, or for the purposes of law definitions based on one's sanity may be made. But here we'll focus on the philosophical definition as that's what most autism revolves around. The Internet (and even academic) debates of free will are notoriously retarded to unbelievable levels, similarly to e.g. debates of [consciousness](consciousness.md).
Free will is a [logically](logic.md) erroneous [egocentric](egoism.md) belief that humans (and possibly other living beings) are special in the [universe](universe.md) by possessing some kind of "soul" which may disobey laws of [physics](physics.md) and somehow [miraculously](magic.md) make spontaneous, unpredictable decisions according to its "independent" desires. Actually that's the definition of *absolute* *indeterminate* free will; weaker definitions are also possible, e.g. *volitional free will* means just that one's actions are determined internally, or for the purposes of law definitions based on one's sanity may be made. But here we'll focus on the philosophical definition as that's what most [autism](autism.md) revolves around. The Internet (and even academic) debates of free will are notoriously retarded to unbelievable levels, similarly to e.g. debates of [consciousness](consciousness.md).
{ Sabine nicely explains it here [https://yewtu.be/watch?v=zpU_e3jh_FY](https://yewtu.be/watch?v=zpU_e3jh_FY). Amlux recently published an excellent commentary on determinism and free will: [https://inv.nadeko.net/watch?v=opjVNbCvaGw](https://inv.nadeko.net/watch?v=opjVNbCvaGw) which even has a text version: [https://pantsuprophet.xyz/writings/essays/along-for-the-ride.html](https://pantsuprophet.xyz/writings/essays/along-for-the-ride.html). ~drummyfish }
Free will is usually discussed in relation to **[determinism](determinism.md)**, an idea of everything (including human thought and behavior) being completely predetermined from the start of the universe. Determinism is the most natural and most likely explanation for the working of our universe; it states that laws of nature dictate precisely which state will follow from current state and therefore everything that will every happen is only determined by the initial conditions (start of the universe). As human brain is just matter like any other, it is no exception to the laws of nature. Determinism doesn't imply we'll be able to make precise predictions (see e.g. [chaos](chaos.md) or [undecidability](undecidability.md)), just that everything is basically already set in stone as a kind of unavoidable fate. Basically the only other possible option is that there would be some kind true [randomness](randomness.md), i.e. that laws of nature don't specify an exact state to follow from current state but rather multiple states out of which one is "taken" at random -- this is proposed by some [quantum](quantum.md) physicists as quantum physics seems to be showing the existence of inherent randomness. Nevertheless **quantum physics may still be deterministic**, see the theory of hidden variables and [superdeterminism](superdeterminism.md) (no, Bell test didn't disprove determinism). But **EVEN IF the universe is non deterministic, free will still CANNOT exist**. Therefore this whole debate is meaningless.
The question of free will typically comes up during discussions related to **[determinism](determinism.md)**, the concept of everything (including human thought and behavior) being completely predetermined from the start of the universe. Determinism is the most natural and most probable explanation for the working of our universe; it states that laws of nature dictate precisely which state will follow from current state and therefore everything that will every happen is only determined by the initial conditions (start of the universe). Without any doubt, as human brain is just matter like any other, it is no exception to the laws of nature. Determinism doesn't imply we'll be able to make precise predictions (see e.g. [chaos](chaos.md) or [undecidability](undecidability.md)), just that all is essentially already set in [stone](rock.md) as a kind of unavoidable fate. The only alternative option to this is that there would exist some kind of "true [randomness](randomness.md)", i.e. that laws of nature don't specify an exact state to follow from current state but rather multiple states out of which one is "taken" at random -- this is proposed by some [quantum](quantum.md) physicists as quantum physics seems to be showing the existence of inherent randomness. Nevertheless **quantum physics may still be deterministic**, see the theory of hidden variables and [superdeterminism](superdeterminism.md) (no, Bell test didn't disprove determinism). But **EVEN IF the universe is non deterministic, free will still CANNOT exist**. Therefore this whole debate is meaningless.
**Why is there no free will?** Because it isn't logically possible, just like e.g. the famous omnipotent God (could he make a toast so hot he wouldn't be able to eat it?). Either the universe is deterministic and your decisions are already predetermined, or there exists an inherent randomness and your decisions are determined by a mere dice roll (which no one can call a free will more than just making every decision in life based on a coin toss). In either case your decisions are made for you by something "external". Even if you follow a basic definition of free will as "acting according to one's desires", you find that your decisions are DETERMINED by your desires, i.e. something you did not choose (your desires) makes decisions for you. There is no way out of this unless you reject logic itself.
**Why is there no free will?** Because it turns out to not be logically possible, just as for example the existence of omnipotent God shows to be logically impossible (could he make a toast so hot he wouldn't be able to eat it?). Either the universe is deterministic and your decisions are already predetermined, or there exists an inherent randomness and your decisions are determined by a mere dice roll (which no one can call a free will more than just making every decision in life based on a coin toss). In the end it's even unknowable to us whether true randomness exists or if we're simply missing some hidden variables or lacking computational power to perfectly predict the future, this question pertains to metaphysics and whatever the answer might be, it doesn't even matter to our case, we know randomness exists because we cannot predict the future, the mechanisms behind randomness (our inability to predict future) are irrelevant. In either case your decisions are made for you by something "external". Even if you follow a basic definition of free will as "acting according to one's desires", you find that your decisions are DETERMINED by your desires, i.e. something you did not choose (your desires, which are determined by your DNA and your environment) makes decisions for you. There is no way but rejection of logic itself.
For some reason retards (basically everyone) don't want to accept this, as if accepting it changed anything, stupid [capitalists](capitalism.md) think that it would somehow belittle their "achievements" or what? Basically just like the people who used to let go of geocentrism. This is ridiculous, they hold on to the idea of their "PRECIOOOOUUUSS FREE WILL" to the death, then they go and consume whatever a TV tells them to consume. Indeed one of the most retarded things in the universe.

4
fun.md
View file

@ -2,11 +2,11 @@
*See also [lmao](lmao.md).*
Fun is a rewarding lighthearted satisfying feeling you get as a result of doing or witnessing something playful. **We should make fun of anything** -- whenever it's forbidden to make fun of something, something is very wrong; in such case make fun of it even more.
Fun is a rewarding lighthearted satisfying feeling coming from doing or witnessing something playful and/or comical. **We should make fun of everything** -- whenever it's forbidden to make fun of whatever, something is very wrong; in such case make fun of it even more.
## Things That Are Fun
This is subjective AF, even within a single man this depends on day, hour and mood. Anyway some fun stuff may include:
This is subjective AF, even for a single man this depends on day, hour and mood. Anyway some fun stuff may include:
- the `#capitalistchallenge`: Try to win this game, you have as many shots as you want. Go to some tech store, seek the shop assistant and tell him you are deciding to buy one of two products, ask which one he would recommend. If he recommends the cheaper one you win.
- the *filters* package you will likely find in you distro's repos: You can apply funny filters to text, like for example `links -dump ~/git/less_retarded_wiki/html/algorithm.html | tail -n +10 | head -n 10 | pirate`. You may turn Wikipedia articles to Brooklyn English or haxor 1337 speech.

View file

@ -1,6 +1,6 @@
# Go (Programming Language)
Go (also golang) is a [transsexual](tranny_software.md) compiled [programming language](programming_language.md) advertised as the the "[modern](modern.md)" successor to [C](c.md), it is co-authored by one of C's authors, [Ken Thompson](ken_thompson.md), and has been worked on by [Rob Pike](rob_pike.md), another famous Unix hacker (who however allegedly went insane and has been really doing some crazy shit for years). Of all the new language go is one of the least [harmful](harmful.md), however it's still quite [shit](shit.md). Some reasons for this are:
Go (also golang) is a [transsexual](tranny_software.md) compiled [programming language](programming_language.md) advertised as the the "[modern](modern.md)" successor to [C](c.md), it is co-authored by one of C's authors, [Ken Thompson](ken_thompson.md), and has been worked on by [Rob Pike](rob_pike.md), another famous [Unix](unix.md) [hacker](hacking.md) (who nonetheless allegedly went insane and has been doing some real crazy [shit](shit.md) for years now). Of all the new language go is one of the least [harmful](harmful.md), and yet it's still quite [shitty](shit.md). Some reasons for this are:
- It is developed by [Google](google.md) and presented as "[open-source](open_source.md)" (not [free software](free_software.md)).
- It employs a [code of censorship](coc.md) (https://go.dev/conduct) and is therefore [tranny software](tranny_software.md) embracing fascism.
@ -15,3 +15,7 @@ Go (also golang) is a [transsexual](tranny_software.md) compiled [programming la
Anyway, it at least tries to stay *somewhat* simple in some areas and as such is probably better than other modern languages like [Rust](rust.md). It purposefully omits features such as [generics](generics.md) or static type conversions, which is good.
**How big is it really?** The official implementation by Google has whopping 2 million lines of code of self hosted implementation -- that's ginormous but keep in mind Google would likely implement minesweeper in two million lines of code too, so it may say little. Size of specification may be more informative -- that one has about 130 pages (after converting the official HTML specs to pdf), that's a bit smaller than that of C (the pure language part has about 160 pages), so that's not bad.
## See Also
- [C](c.md)

View file

@ -4,4 +4,4 @@ A good enough solution to a problem is one that solves it satisfyingly (not nece
To give an example from the world of [programming](programming.md), [bubble sort](bubble_sort.md) is in many cases better than quick sort for its simplicity, even though it's much slower than more advanced sorts. [ASCII](ascii.md) is mostly good enough compared to [Unicode](unicode.md). And so on.
In technology we are often times looking for good enough solution to achieve [minimalism](minimalism.md) and save valuable resources (computational resources, programmer time etc.). It rarely makes sense to look for solutions that are more expensive than they necessarily need to be, however in the context of [capitalist software](capitalist_software.md) we see this happen many times as a part of killer feature battle and also driving prices artificially up for economic reasons (e.g. increasing the cost of maintenance of a software eliminates any competition that can't afford such cost). An example of this is the trend in smartphones to have 4 and more physical cameras. This is only natural in [capitalism](capitalism.md), we see the tendency for wasting resources everywhere. This of course needs to be stopped.
In [technology](tech.md) we are often times looking for good enough solution to achieve [minimalism](minimalism.md) and save valuable resources (computational resources, programmer time etc.). It rarely makes sense to look for solutions that are more expensive than they necessarily need to be, however in the context of [capitalist software](capitalist_software.md) we see this happen many times as a part of killer feature battle and also driving prices artificially up for economic reasons (e.g. increasing the cost of maintenance of a software eliminates any competition that can't afford such cost). An example of this is the trend in smartphones to have 4 and more physical cameras. This is only natural in [capitalism](capitalism.md), we see the tendency for wasting resources everywhere. This of course needs to be stopped.

View file

@ -141,4 +141,5 @@ Here are some tips for learning foreign languages:
## See Also
- [programming language](programming_language.md)
- [formal language](formal_language.md)
- [lrs dictionary](lrs_dictionary.md)

View file

@ -1,12 +1,12 @@
# Julia Set
Julia sets (named after mathematician *Gaston Julia*) are [sets](set.md) of 2D points that are very similar to [Mandelbrot set](mandelbrot_set.md) and just as Mandelbrot set they typically (but not always) have a [fractal](fractal.md) shape. While there is only one Mandelbrot set, there are [infinitely](infinity.md) many Julia sets because in the equation defining Julia set (which has the same format as for Mandelbrot set, just with different variables) there is a parameter we can change to get a different set. Specifically for any [complex number](complex_number.md) (which we may see as a point in 2D plane) there is one Julia set.
Julia sets (named after [mathematician](math.md) *Gaston Julia*) are [sets](set.md) of 2D points which upon plotting show a [fractal](fractal.md) shape visually resembling the [Mandelbrot set](mandelbrot_set.md). While the Mandelbrot set is only one, there are [infinitely](infinity.md) many Julia sets because in the [equation](equation.md) defining Julia set (which has the same format as for Mandelbrot set, just with different variables) there is a parameter that dictates the shape of the whole set: specifically for any [complex number](complex_number.md) (which we may see as a point in 2D plane) there is one Julia set.
The **definition** of Julia set will follow (there is actually a more general one, but we'll stick to the narrower, most common one), notice how the equation is similar to that of Mandelbrot set. Initially we pick a constant complex number *c* that will define the whole set; then for each complex number *z* (a point in 2D plane for which we want to see if it belongs to the set or not) we consider the following iteration:
The **definition** of Julia set will follow (there is actually a more general one, but we'll stick to the most common one), notice the similarity between the equation and the one for the Mandelbrot set. Initially we pick a constant complex number *c* that will define the whole set; then for each complex number *z* (a point in 2D plane for which we want to see if it belongs to the set or not) we consider the following iteration:
*z[n + 1] = z[n]^2 + c*
Then we see if under infinitely many iterations this series diverges towards infinity or if it stays bounded. If the point didn't in fact diverge, it belongs to the set, otherwise not. Should we be visualizing the set with a [computer](computer.md), we [approximate](approximation.md) this infinite iteration by performing just a big number of iterations.
Then we see if under [infinitely](infinity.md) many iterations this series diverges towards infinity or if it stays bounded. If the point didn't in fact diverge, it belongs to the set, otherwise not. Should we be visualizing the set with a [computer](computer.md), we [approximate](approximation.md) this infinite iteration by performing just a big number of iterations.
The following is a picture of one possible Julia set:

View file

@ -6,7 +6,7 @@ Left and right are two basic opposing political sides and forces, roughly coming
- The **right is pro social hierarchy**, i.e. against social equality. This means some people standing above others, be it by strength, power, wealth, social status, privileges etc. The rightist values are mostly those associated with [evil](evil.md), i.e. violence, oppression, conflict, war, revenge, survival of the fittest etc. Among rightism can be included [fascism](fascism.md), [capitalism](capitalism.md), US republican party, states, [military](military.md) etc. One of right's identifying features is **hypocrisy**, i.e. it judges what's good/bad only by against whom it is targeted, e.g. violence is bad when targeted against "us" ("those Muslims are bad, they want to kill us!") but good when targeted against "them" ("we have to kill those Muslims because they're violent!"); so animals killing humans is judged as "bad" but humans killing animals is "good". In other words right has no sense of morality, only the sense of [self interest](self_interest.md).
- The **pseudoleft** is pretending to be left while [in fact](de_facto.md) being right due to e.g. using non-leftist means (such as violence) or even having non-leftist goals (e.g. benefit of a specific minority as opposed to benefit of everyone). Among pseudoleftist movements are [feminism](feminism.md), [LGBT](lgbt.md), [Antifa](antifa.md) or [Marxism](marxism.md). This fact is also supported by the [naming](name_matters.md) of these movements.
There exists a "theory" called a horse shoe. It says that the extremes of the left-right spectrum tend to be alike (violent, hating, radical), just as the two ends of a horse shoe. This is only an illusion caused by ignoring the existence of pseudoleft. The following diagram shows the true situation:
There exists a "theory" called a *horse shoe*, stating that the opposite extremes of the left-right spectrum tend to be alike (violent, hating, radical, ...), just like the two ends of a horse shoe come closer together. This is only an illusion caused by ignoring the existence of pseudoleft. The following diagram truthfully illustrates the situation:
```
TRUE LEFT (peace, selflessness, forgiveness, ...)
@ -20,9 +20,9 @@ TRUE LEFT (peace, selflessness, forgiveness, ...)
(violence, conflict, aggressivity, ...)
```
We see pseudoleft is something that commenced by going in opposite direction to the right, but slowly turned around back to rightist values, just from a slightly different direction. This is because rightism is very easy, it offers tempting short-term solutions such as violence, and so it extorts a kind of magnetic force on every human -- most cannot resist and only very few manage to continue heading towards truly leftist values.
We observe pseudoleft is something that commenced by going in opposite direction to the right, but slowly turned around back to approach the rightist values again, just from a slightly different direction. This is due to rightism being very easy and attractive, it offers tempting short-term solutions such as violence, and so it extorts a kind of magnetic force on every human -- most cannot resist and only very few manage to continue heading towards truly leftist values.
The current US-centered culture unfortunately forces a **right-pseudoleft false dichotomy**. It is extremely important to realize this dichotomy doesn't hold. Do not become [type A/B fail](fail_ab.md).
The current [US](usa.md)-centered [culture](culture.md) unfortunately forces a **right-pseudoleft false dichotomy**. It is extremely important to realize this dichotomy doesn't hold. Do not become [type A/B fail](fail_ab.md).
What's called *left* in the [modern](modern.md) western [culture](culture.md) usually means *pseudoleft*. The existence of pseudoleftism is often overlooked or unknown. It used to be found mainly in the [US](us.md), however globalization spreads this [cancer](cancer.md) all over the world. Pseudoleft justifies its actions with a goal that may seem truly leftist, such as "equality", but uses means completely unacceptable by true left (which are in fact incompatible with equality), such as [violence](violence.md), bullying, lynching, [cancelling](cancel_culture.md), [censorship](censorship.md) or brainwashing. Pseudoleft is aggressive. It believes that **"ends justify the means"** and that **"it's fine to bully a bully"** ("eye for an eye"). A pseudoleftist movement naturally evolves towards shifting its goals from a leftist one such as equality towards a [fascist](fascism.md) one such as a (blind) *fight for some group's rights* (even if that group may already have achieved equality and more).

8
loc.md
View file

@ -1,12 +1,12 @@
# Lines of Code
Lines of code (LOC, KLOC = 10K LOC, MLOC = 1M LOC etc., also SLOC = source LOC) is a [metric](metric.md) of [software](sw.md) [complexity](complexity.md) that simply counts the number of lines of program's [source code](source_code.md). It is by no means a perfect measure but despite some [soyboys](soydev.md) shitting on it it's actually pretty good, especially when using only one language ([C](c.md)) with consistent [formatting style](code_formatting.md). However it must also be used well -- here are the main caveats:
Lines of code (LOC, KLOC = 10K LOC, MLOC = 1M LOC etc., also SLOC = source LOC) is a [metric](metric.md) of [software](sw.md) [complexity](complexity.md) that simply counts the [number](number.md) of lines of program's [source code](source_code.md). It is by no means a [flawless](perfect.md) measure but despite some [soyboys](soydev.md) shitting on it it's actually pretty good, especially when using only one language ([C](c.md)) with consistent [formatting style](code_formatting.md). However it must also be used well -- here are the main caveats:
- **[Logarithmic](log.md) scale should be used**, i.e. rather than exact line count we should sort into categories such as: under 10 LOC, under 100 LOC, under 1000 LOC and so on.
- When you use it as a [productivity](productivity_cult.md) measure at [work](work.md), you're guaranteed your devs are gonna just shit our as much meaningless code as possible in which case the measure fails again. Here also the logarithmic scale doesn't make much sense, so basically using it as a performance measure just sucks. Fortunately, at [LRS](lrs.md) we don't have such problems :)
- Of course it also becomes [shitty](shit.md) when you have a project in 20 [programming languages](programming_language.md) written by 100 pajeets out of which every one formats code differently.
- When you use it as a [productivity](productivity_cult.md) measure at [work](work.md), you're guaranteed your slave peasants are gonna just shit out as much meaningless code as possible in which case the measure crumbles under a spectacular fountain of code diarrhea and fails again. Here also the logarithmic scale doesn't make much sense, so basically using it as a performance measure just sucks. Fortunately, at [LRS](lrs.md) we don't have such problems :)
- Of course it also becomes [shitty](shit.md) when you have a project in 20 [programming languages](programming_language.md) written by 100 pajeets out of which every one formats code differently. This we also do not practice.
Of course it may also be necessary to define what a "line of code" means. Usually we distinguish **raw lines** (every single one) and **logical lines** (only those that "matter", may exclude comments and empty lines). We may also have to decide if we count lines of [libraries](library.md) we use etc.
Of course it may also be necessary to define what a "line of code" means exactly. Usually we distinguish **raw lines** (every single one) and **logical lines** (only those that "matter", may exclude comments and empty lines). Does a long line with a line break count as a single line or two? Do we include line count of [libraries](library.md) we use? What if instead of lines we rather measured source code file size? Or programming language token count? Just make sure you know what you're measuring and why.
A comfy tool for counting lines is [`cloc`](cloc.md), but you can also just use `wc -l` to count raw lines.

View file

@ -1,7 +1,5 @@
# <3 Love <3
*"The greatest crime is preaching love."* --Karel Kryl
Love is a deep feeling of liking and affection towards someone or something, usually accompanied by a strong emotion. There are many different kinds of love and love has always been one of the most important feelings that higher [living](life.md) being are capable of, it permeates human [art](art.md), [culture](culture.md) and daily lives. Unconditional [selfless](selflessness.md) love towards all living beings is the basis of [less retarded society](less_retarded_society.md).
What is the opposite of love? Many say it is [hatred](hate.md), even though it may also very well be argued that it is rather indifference, i.e. just "not caring", because hate and love often come hand in hand and are sometimes actually very similar -- both hate and love arouse strong emotion, even obsession, and can be present at the same time (so called love-hate relationship). Love sometimes quickly changes to hate and vice versa.

View file

@ -1,6 +1,6 @@
# LRS Wiki
LRS [wiki](wiki.md), also Less Retarded Wiki or LRW (motto: *Love everyone, help [selflessly](selflessness.md).*), is a [public domain](public_domain.md) ([CC0](cc0.md)) non-commercial anti[capitalist](capitalism.md) (precisely [anarcho pacifist](anpac.md)) [encyclopedia](encyclopedia.md) focused on truly good, [minimalist](minimalism.md) [technology](tech.md), mainly [computer](computer.md) [software](sw.md) -- so called [less retarded software](lrs.md) (LRS) which should serve the people at large -- while also exploring related topics such as the relationship between technology and society, promoting so called [less retarded society](less_retarded_society.md). LRS wiki is a source of high quality truth and the voice of reason in the [age of lies and brainwashing](21st_century.md). The basic motivation behind LRS and its wiki is unconditional [love](love.md) of all life, and the goal of LRS is to move towards creating a truly useful, [selfless](selflessness.md) technology that maximally helps all living beings as much as possible -- it does so while at the same time developing its own [culture](culture.md), one that's much more sane and compatible with the desired goal, unlike the [toxic](toxic.md) [modern](modern.md) [fascist](fascism.md) culture of the [21st century](21st_century.md). As such the wiki rejects for example [capitalist software](capitalist_software.md) (and [capitalism](capitalism.md) itself), [bloated](bloat.md) software, [intellectual property](intellectual_property.md) laws ([copyright](copyright.md), [patents](patent.md), ...) [censorship](censorship.md), [pseudoleftism](pseudoleft.md) ([political correctness](political_correctness.md), [cancel culture](cancel_culture.md), [COC](coc.md)s ...) etc. It embraces [free as in freedom](free_software.md), simple technology, i.e. [Unix philosophy](unix_philosophy.md), [suckless](suckless.md) software, [anarcho pacifism](anpac.md), [racial realism](racial_realism.md), [free speech](free_speech.md), [veganism](veganism.md) etc. As a work promoting pure [good](good.md) in a [time](21st_century.md) of universal rule of [evil](evil.md) it is greatly controversial, misunderstood and often met with hostility. However it already gained at least a few enlightened followers. Currently the wiki can be accessed on the [web](www.md) at http://www.tastyfish.cz/lrs/main.html, as well as on [gopher](gopher.md), however it's more than a mere website -- the work can very easily be exported in many formats, including [pdf](pdf.md), [txt](txt.md) and so on.
LRS [wiki](wiki.md), also Less Retarded Wiki or LRW (motto: *Love everyone, help [selflessly](selflessness.md).*), is a [public domain](public_domain.md) ([CC0](cc0.md)) non-commercial anti[capitalist](capitalism.md) (precisely [anarcho pacifist](anpac.md)) [encyclopedia](encyclopedia.md) focused on truly good, [minimalist](minimalism.md) [technology](tech.md), mainly [computer](computer.md) [software](sw.md) -- so called [less retarded software](lrs.md) (LRS) which should serve the people at large -- while also exploring related topics such as the relationship between technology and society, promoting so called [less retarded society](less_retarded_society.md). LRS wiki is a source of high quality truth and the voice of reason in the [age of lies and brainwashing](21st_century.md). The basic motivation and driving force behind LRS and its wiki is **unconditional [love](love.md) of all life**, and the goal of LRS is to move towards creating a truly useful, [selfless](selflessness.md) technology that maximally helps all living beings as much as possible -- it does so while at the same time developing its own [culture](culture.md), one that's much more sane and compatible with the desired goal, unlike the [toxic](toxic.md) [modern](modern.md) [fascist](fascism.md) culture of the [21st century](21st_century.md). As such the wiki rejects for example [capitalist software](capitalist_software.md) (and [capitalism](capitalism.md) itself), [bloated](bloat.md) software, [intellectual property](intellectual_property.md) laws ([copyright](copyright.md), [patents](patent.md), ...) [censorship](censorship.md), [pseudoleftism](pseudoleft.md) ([political correctness](political_correctness.md), [cancel culture](cancel_culture.md), [COC](coc.md)s ...) etc. It embraces [free as in freedom](free_software.md), simple technology, i.e. [Unix philosophy](unix_philosophy.md), [suckless](suckless.md) software, [anarcho pacifism](anpac.md), [racial realism](racial_realism.md), [free speech](free_speech.md), [veganism](veganism.md) etc. As a work promoting pure [good](good.md) in a [time](21st_century.md) of universal rule of [evil](evil.md) it is greatly controversial, misunderstood and often met with hostility. However it already gained at least a few enlightened followers. Currently the wiki can be accessed on the [web](www.md) at http://www.tastyfish.cz/lrs/main.html, as well as on [gopher](gopher.md), however it's more than a mere website -- the work can very easily be exported in many formats, including [pdf](pdf.md), [txt](txt.md) and so on.
Alternatively the wiki may be seen as the greatest Internet rant ever.
@ -8,26 +8,27 @@ The wiki is not funded by anyone, it doesn't have to be funded because it's not
There are no [furry](furry.md), [anime](anime.md) or [loli](loli.md) mascots. In fact LRS has no mascot at all. This is a huge advantage against every other existing wiki.
LRS wiki was started by [drummyfish](drummyfish.md) on November 3 2021 as a way of recording and sharing his views, experience and knowledge about technology, as well as for creating a completely public domain educational resource and account of current society for future generations. It was forked from so called "based wiki" at a point when all the content on it had been made by drummyfish, so at this point LRS wiki is 100% drummyfish's own work; over time it became kind of a snapshot of drummyfish's brain and so the wiki doesn't allow contributions (but allows and encourages [forks](fork.md), blatant copy pastes of anything from it to anywhere else etc.).
LRS wiki was started by [drummyfish](drummyfish.md) on November 3 2021 as a way of recording and sharing his views, experience and knowledge about technology, as well as for creating a completely public domain educational resource and account of current society for future generations. It was forked from so called "based wiki" at a point when all the content on it had been made by drummyfish, so currently LRS wiki is 100% drummyfish's own, original work; over time it turned into a sort of a snapshot of drummyfish's brain and so the wiki doesn't allow contributions (but allows and encourages [forks](fork.md), blatant copy pastes of anything from it to anywhere else etc.). By early 2025 the total size of all texts on the wiki was over 5 MB, it reached over 600 articles and 1000 commits.
Some distinguishing features of LRS wiki that make it much better than other wikis include:
Some distinguishing features of LRS wiki that put it above other wikis include:
- Everything is absolutely and completely public domain under CC0 and there appears nothing under "fair use" so you can blindly copy-paste any piece of text or code and do absolutely whatever you want with it, without having to give credit or maintain some back link or any similar kind of [bullshit](bullshit.md) insanity. Unlike Wikipedia, LRS wiki a FULLY free cultural work, i.e. there are no embedded "fair use" pieces of proprietary content.
- There are no images, only [ASCII art](ascii_art.md), making it very small in size, free and readable on devices that can only display text.
- Use of [Unicode](unicode.md) is minimized to absolutely bare minimum so you'll probably never encounter problems related to encoding -- again, anything that can display ASCII will be able to read the wiki.
- There is absolutely no moderation, no [code of censorship](coc.md) and the wiki doesn't adhere to cultural standards of [21st century](21st_century.md) -- for example it never uses "gender neutral" pronouns -- it rather tries to focus on real issues and reflect truth.
- There are no [SJWs](sjw.md), [pseudoleftist](pseudoleft.md) or [rightist](right.md) editors.
- Articles try to be written somewhat well, they aim to actually help most people rather than be a gigantic stinky dump of every information ever discovered about the subject bashed together by random passerbys.
- Articles often contain simple runnable code examples, mostly in plain [C](c.md) code aligned with LRS philosophy, which can normally just be copy pasted into a file and compiled without additional libraries.
- Everything is absolutely and completely [public domain](public_domain.md) under CC0 and there appears nothing under "[fair use](fair_use.md)" so you can blindly copy-paste any piece of text or code and do absolutely whatever you want with it, without any obligation to give credit or maintain back links or any sort of similar tormenting [bullshit](bullshit.md). Unlike Wikipedia, LRS wiki a FULLY [free cultural](free_culture.md) work, i.e. there are no embedded "fair use" pieces of proprietary content.
- There are no images, only [ASCII art](ascii_art.md), making it very small in size, free and readable on devices that can only display plain text.
- Use of [Unicode](unicode.md) is minimized to absolutely bare minimum so you'll probably never encounter problems related to encoding -- again, anything that can display ASCII will be able to read most of the wiki.
- There is absolutely no [moderation](moderation.md) ([censorship](censorship.md)), [toxicity](toxic.md) or [code of censorship](coc.md) and the wiki doesn't adhere to cultural standards of [21st century](21st_century.md) -- for example it never uses "gender neutral" pronouns -- it rather tries to focus on real issues and reflect truth. The word [nigger](nigger.md) is allowed and appears often.
- There are no [SJWs](sjw.md), [pseudoleftist](pseudoleft.md), [rightist](right.md) or otherwise [fascist](fascism.md) editors.
- Articles try to be written somewhat well, aiming to actually help most people rather than be a gigantic stinky dump of every information ever discovered about the subject bashed together by random passerbys.
- Articles often contain simple runnable code examples, mostly in plain [C](c.md) aligned with the LRS philosophy, which can normally just be copy pasted into a file and compiled without additional [libraries](library.md).
- There are no [ads](marketing.md) of course and there will never be a single one, it is impossible for LRS to contain any ad just as it is impossible for human to breathe water.
- It is not a website, website is just one of many possible forms of the wiki -- the wiki is a literary work independent of any medium and so exists in other formats such as plaintext on [gopher](gopher.md), one long pdf document, one long HTML document, collection of markdown files etc.
- Technology "powering" the wiki is also LRS -- it uses only Unix [shell scripts](shell_script.md) that don't surpass 400 [lines of code](loc.md). No mediawiki, fandom or similar insanity.
- plus much more :)
Over time, being written solely by drummyfish without much self censorship and "language filtering", the wiki also became something like drummyfish's raw brain dump with all the thoughts and moods averaged over the time span of writing the wiki -- reading through it makes you see relatively faithfully how drummyfish internally thinks (e.g. you see anticapitalist rants everywhere because these annoying thoughts are just constantly bothering drummyfish, whatever he's thinking about) -- this can make many people vomit but it's a kind of experiment and some even liked it, so it stays up. No one is forced to read it and CC0 ensures anyone can shape it into anything better hopefully.
Over time, being written solely by drummyfish without much self censorship and "language filtering", the wiki also came close to being something akin to drummyfish's raw brain dump with all the thoughts and moods averaged over the years -- it reflects relatively faithfully drummyfish's internal thinking processes (for example you'll come across anticapitalist rants everywhere as these annoy drummyfish's mind at all times, whatever he's thinking about) -- this bears a risk of inducing vomit but it's also a kind of valuable experiment that some even apparently like to observe, so it stays up. No one is forced to read it and CC0 ensures anyone can hopefully shape it into anything better.
It's also possible to see the wiki as a (somewhat dirty but constantly improving) collection of drummyfish's cheatsheets, links, code snippets, [jokes](jokes.md), attempts at [ASCII art](ascii_art.md), vents etcetc. More than a digital garden it's a digital swamp, maybe someone could say it's a sort of retarded [art](art.md) that mixes together various subjects: technical, cultural, personal, objective and subjective truths, [beautiful](beauty.md) and ugly things. Others might view it as a shitpost or [meme](meme.md) taken too far. It's just its own thing.
It's also possible to see the wiki as a (somewhat dirty but constantly improving) collection of drummyfish's cheatsheets, links, code snippets, [jokes](jokes.md), attempts at [ASCII art](ascii_art.md), vents etcetc. More than a digital garden it's rather a digital swamp, maybe someone could say it's a sort of retarded [art](art.md) that mixes together various subjects: technical, cultural, personal, objective and subjective truths, [beautiful](beauty.md) and ugly things. Others might view it as a shitpost or [meme](meme.md) taken too far. It's just its own thing.
To a degree the wiki was inspired by similar works, for example it may at times resemble the earliest (plain [HTML](html.md)) versions of [Wikipedia](wikipedia.md), also perhaps [wikiwikiweb](wikiwikiweb.md), [Jargon file](jargon_file.md) etc. In tone and political incorrectness it is more like [Encyclopedia Dramatica](dramatica.md), but unlike Dramatica LRS is a "serious" project, albeit with humor and [jokes](jokes.md) here and there.
To a degree the wiki was inspired by works of similar nature, for example it resembles the earliest (plain [HTML](html.md)) versions of [Wikipedia](wikipedia.md), also perhaps [wikiwikiweb](wikiwikiweb.md), [Jargon file](jargon_file.md) etc. In tone and political incorrectness it is more like [Encyclopedia Dramatica](dramatica.md), but unlike Dramatica LRS is a "serious" project, albeit with humor and [jokes](jokes.md) here and there.
{ I also discovered later on that there used to exist similar projects in the past, e.g. https://shii.bibanon.org/shii.org/knows/Everything_Shii_Knows.html. Apparently there once was a flood of personal wikis going by the *Everything X Knows* naming scheme and it's very funny this completely missed me because I reinvented the thing without knowing about it. So this might as well be named *Everything Drummyfish Knows*. ~drummyfish }

File diff suppressed because one or more lines are too long

View file

@ -2,7 +2,7 @@
Pascal (named after French [scientist](science.md) Blaise Pascal) is an [old](old.md) [imperative](imperative.md) [programming language](programming_language.md) that was commonly used to teach [programming](programming.md) and enjoyed wide popularity around [1980s](80s.md), though it's still used by some to this day. Compared to anything [modern](modern.md), such as [Python](python.md) and [JavaScript](js.md), Pascal was actually quite [good](good.md) -- it's somewhat similar to [C](c.md) in its [paradigm](paradigm.md) and level of [abstraction](abstraction.md), and is acceptable as a [LRS](lrs.md) language. The language was devised by Niklaus Wirth, a Swiss programmer, who implemented it in the year 1970; it was later on standardized by ISO in 1983 (now known as *Standard Pascal*) and 1990. Pascal also spawned an [object oriented](oop.md) dialect called *Object Pascal*, but that's of course [shit](shit.md) that only adds [bloat](bloat.md). Likely the best known [free software](free_software.md) implementations are **Free Pascal** and **[GNU](gnu.md) Pascal**.
Famous part of [hacker](hacking.md) lore is an essay called *[Real Programmers Don't Use Pascal](real_programmers_dont_use_pascal.md)* that basically goes on a rant about how Pascal is just for pussies and that real men only use [assembly](assembly.md) and [punch cards](punch_card.md).
A well known part of [hacker](hacking.md) lore is an essay called *[Real Programmers Don't Use Pascal](real_programmers_dont_use_pascal.md)* which in essence goes on a lengthy rant about how Pascal is just for pussies and that real men only use [assembly](assembly.md) and [punch cards](punch_card.md).
{ Pascal was actually my first language and I have fond memories of it, transitioning to C from Pascal was pretty easy because it had pointers and all this kind of stuff, it was mainly about learning the new syntax. ~drummyfish }
@ -80,4 +80,5 @@ end.
- [C](c.md)
- [Fortran](fortran.md)
- [Basic](basic.md)
- [t3x](t3x.md): [minimalist](minimalism.md) language inspired by Pascal

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
# Raycastlib
Raycastlib (RCL) is a [public domain](public_domain.md) ([CC0](cc0.md)) [LRS](lrs.md) [C](c.md) [library](library.md) for advanced 2D [raycasting](raycasting.md), i.e. ["2.5D/pseudo3D"](pseudo3d.md) [rendering](3d_rendering.md). It was made by [drummyfish](drummyfish.md), initially as an experiment for [Pokitto](pokitto.md) -- later he utilized the library in his game [Anarch](anarch.md). It is in spirit similar to his other LRS libraries such as [small3dlib](small3dlib.md) and [tinyphysicsengine](tinyphysicsengine.md); just as those raycastlib is [kept extremely simple](KISS.md), it is written in pure C99, with zero dependencies (not even [standard library](stdlib.md)), it's written as a single file single header library, using no [floating point](float.md) and tested to run interactively even on very weak devices (simplified version was made run on [Arduboy](arduboy.md) with some 2 KiB of RAM). It is very flexible thanks to use of [callbacks](callback.md) for communication, allowing e.g. programming arbitrary "[shader](shader.md)" code to implement all kinds of effects the user desires or using [procedurally generated](procgen.md) environments without having to store any data. The library implements advanced features such as floor and ceiling with different heights, textured floor, opening door, simple [collision detection](collision_detection.md) etc. It is written in just a bit over 2000 [lines of code](loc.md).
Raycastlib (RCL) is a [public domain](public_domain.md) ([CC0](cc0.md)) [LRS](lrs.md) [C](c.md) [library](library.md) for advanced 2D [raycasting](raycasting.md), i.e. ["2.5D/pseudo3D"](pseudo3d.md) [rendering](3d_rendering.md). It was made by [drummyfish](drummyfish.md), initially as an experiment for [Pokitto](pokitto.md) -- later he utilized the library in his game [Anarch](anarch.md). It is in spirit similar to his other LRS libraries such as [small3dlib](small3dlib.md) and [tinyphysicsengine](tinyphysicsengine.md); just as those raycastlib is [kept extremely simple](KISS.md), it is written in pure C99, with zero [dependencies](dependency.md) (not even [standard library](stdlib.md)), it's written as a single file single header library, using no [floating point](float.md) and tested to run interactively even on very weak devices (simplified version was made run on [Arduboy](arduboy.md) with some 2 KiB of RAM). Two rendering [algorithms](algorithm.md) are provided to choose from: simple (only same height floor and ceiling, allowing textured floor and ceiling) and complex (allowing variable floor and ceiling, without textured floors and ceilings). Per rendered frame both algorithms always draw every screen pixels exactly once, without any overdraw and holes, which is very advantageous and elegant; the simple algorithm additionally also guarantees the pixels to be drawn in exact same linear order every time. It is very flexible thanks to use of [callbacks](callback.md) for communication, allowing e.g. programming arbitrary "[shader](shader.md)" code to implement all kinds of effects the user desires or using [procedurally generated](procgen.md) environments without having to store any data. The library implements advanced features such as floor and ceiling with different heights, textured floor, opening door, simple [collision detection](collision_detection.md) etc. It is written in just a bit over 2000 [lines of code](loc.md).
The repository is available at https://git.coom.tech/drummyfish/raycastlib. The project got 45 stars on gitlab before being banned for author's political opinions.

View file

@ -1,16 +1,16 @@
# Regular Expression
Regular expression (shortened *regex* or *regexp*) is a kind of [mathematical](math.md) [expression](expression.md), very often used in [programming](programming.md), that can be used to define simple patterns in [strings](string.md) of characters (usually text). Regular expressions are typically used for searching patterns (i.e. not just exact matches but rather sequences of characters which follow some rules, e.g. numeric values), substitutions (replacement) of such patterns, describing [syntax](syntax.md) of computer languages, their [parsing](parsing.md) etc. (though they may also be used in more wild ways, e.g. for generating strings). Regular expression is itself a string of symbols which however describes potentially many (even [infinitely](infinite.md) many) other strings thanks to containing special symbols that may stand for repetition, alternative etc. For example `a.*.b` is a regular expression describing a string that starts with letter `a`, which is followed by a sequence of at least one character and then ends with `b` (so e.g. `aab`, `abbbb`, `acaccb` etc.).
Regular expression (shortened *regex* or *regexp*) is a kind of [mathematical](math.md) [expression](expression.md), plentifully used in [programming](programming.md), that defines simple patterns in [strings](string.md) of characters (usually text). Regular expressions are typically used for searching patterns (i.e. not just exact matches but rather sequences of characters which follow some rules, e.g. numeric values or web [URLs](url.md)), substitutions (replacement) of such patterns, describing [syntax](syntax.md) of computer languages, their [parsing](parsing.md) etc. (though more creative uses aren't out of question either, e.g. generating [random](randomness.md) strings). Regular expression is itself a string of symbols which however describes potentially many (even [infinitely](infinite.md) many) other strings thanks to containing special symbols that may stand for repetition, alternative etc. For example `a.*.b` is a regular expression describing a string that starts with letter `a`, which is followed by a sequence of at least one character and then ends with `b` (so e.g. `aab`, `abbbb`, `acaccb` etc.).
WATCH OUT: do not confuse regular expressions with [Unix](unix.md) [wildcards](wildcard.md) used in file names (e.g. `sourse/*.c` is a wildcard, not a regexp).
WATCH OUT: be careful not to confuse regular expressions with [Unix](unix.md) [wildcards](wildcard.md) used in file names (e.g. `sourse/*.c` is a wildcard, not a regexp).
{ A popular online tool for playing around with regular expressions is https://regexr.com/, though it requires JS and is bloated; if you want to stay with Unix, just grep (possibly with -o to see just the matched string). ~drummyfish }
Regular expressions are widely used in [Unix](unix.md) tools, [programming languages](programming_language.md), editors etc. Especially notable are [grep](grep.md) (searches for patterns in files), [sed](sed.md) (text processor, often used for search and replacement of patterns), [awk](awk.md), [Perl](perl.md), [Vim](vim.md) etc.
Regular expressions are encountered in many [Unix](unix.md) tools, [programming languages](programming_language.md), editors etc. Especially worthy of mention are [grep](grep.md) (searches for patterns in files), [sed](sed.md) (text processor, often used for search and replacement of patterns), [awk](awk.md), [Perl](perl.md), [Vim](vim.md) etc.
From the point of view of [theoretical computer science](theoretical_compsci.md) and [formal languages](formal_language.md) **regular expressions are computationally weak**, they are equivalent to the weakest models of computations such as regular [grammars](grammar.md) or **[finite state machines](finite_state_machine.md)** (both [deterministic](deterministic.md) and nondeterministic) -- in fact regular expressions are often implemented as finite state machines. This means that **regular expressions can NOT describe any possible pattern** (for example they can't capture a math expression with nested brackets), only relatively simple ones; however it turns out that very many commonly encountered patterns are simple enough to be described this way, so we have a [good enough](good_enough.md) tool. The advantage of regular expressions is exactly that they are simple, yet very often sufficient.
**Are there yet simpler pattern describers than regular expressions?** Yes, of course, the simplest example is just a string directly describing the pattern, e.g. "abc" matching exactly just the string "abc" -- this is called a *fixed string*. Notable subclass of regular expressions are so called *star-free* languages/expressions which are regular expressions without the star (repetition) operator. Star-free expressions can be used as a [simpler](kiss.md) variant to regular expressions, they may still describe many patterns and are easier to implement.
**Are there yet simpler pattern describers than regular expressions?** Yes, of course, the simplest example is just a string directly describing the pattern, e.g. "abc" matching exactly just the string "abc" -- this is called a *fixed string*. Next we can think of case-insensitive pattern, so "abc" would match "abc", "ABC", "AbC" etc. Notable subclass of regular expressions are so called *star-free* languages/expressions which are regular expressions without the star (repetition) operator. Star-free expressions can be used as a [simpler](kiss.md) variant to regular expressions, they may still describe many patterns and are easier to implement.
## Details
@ -155,7 +155,7 @@ start --->| outside_tag |------>| inside_tag |
'-->|______|
```
Here we start in the `outside_tag` state and move between states depending on what characters we read from the input string we are checking (indicated next to the arrows). If we end up in the `outside_tag` state state again (marked as *accepting* state) when all is read, the input string matched the regular expression, otherwise it didn't. We'll translate this automaton to a C program:
Here we start in the `outside_tag` state and move between states depending on what characters we read from the input string we are analyzing (indicated next to the arrows). If we end up in the `outside_tag` state state again (marked as *accepting* state) when all is read, the input string matched the regular expression, otherwise it didn't. We'll translate this automaton to a C program:
```
#include <stdio.h>
@ -208,3 +208,8 @@ Just compile this and pass a string to the standard input (e.g. `echo "<testing>
Maybe it seems a bit overcomplicated -- you could say you could program the above even without regular expressions and state machines. That's true, however imagine dealing with a more complex regex, one that matches a quite complex real world file format. Consider that in [HTML](html.md) for example there are pair tags, non-pair tags, attributes inside tags, entities, comments and many more things, so here you'd have great difficulties creating such parser intuitively -- the approach we have shown can be completely automatized and will work as long as you can describe the format with regular expression.
TODO: regexes in some langs. like Python
## See Also
- [wildcard](wildcard.md)
- [formal language](formal_language.md)

8
rms.md
View file

@ -17,13 +17,13 @@ The great doctor Richard Matthew Stallman (RMS, also [GNU](gnu.md)/Stallman, chi
Stallman's life along with free software's history is documented by a free-licensed book named *Free as in Freedom: Richard Stallman's Crusade for Free Software* on which he collaborated. You can get it gratis e.g. at [Project Gutenberg](https://www.gutenberg.org/ebooks/5768). You should read this!
Richard Stallman is also famous for having foreseen and foretold virtually all the atrocities that [corporations](corporation.md) would do with computer technology, such as all the spying through cell phones, trade of personal data and abusing secrecy and "[intellectual ownership](intellectual_property.md)" of source code for bullying others, though to be honest it doesn't take a genius to foresee that [corporations](corporation.md) will want to rape people as much as possible, it's more of a surprise he was one of very few who did. The important thing is he acted immediately he spotted this -- though corporations indeed did go on to rape people anyway, Richard Stallman made some very important steps early on to make the impact much less catastrophic nowadays. We should be all grateful.
Richard Stallman is also famous for having foreseen and foretold virtually all the atrocities that [corporations](corporation.md) would do with computer technology, such as all the cell phone surveillance, business with personal data and abuse of secrecy and "[intellectual ownership](intellectual_property.md)" of source code for bullying others, though to be honest it doesn't take a genius to [foresee](future.md) that [corporations](corporation.md) will want to rape people as much as possible, it is frankly more surprising he was one of very few who did so. The important thing is he acted immediately he spotted this -- though corporations indeed did go on to rape people anyway, Richard Stallman made some very important steps early on to make the impact much less catastrophic nowadays, which was thankfully noticed and resulted in a consolidation of his notoriety as a techno prophet. We should be all grateful.
It seems that **Stallman had at least one girlfriend**; in the 1999 book called *Open Sources* he says that he originally wanted to name the [HURD](hurd.md) kernel Alix after a [girl](woman.md) that was at the time his "sweetheart". On his website he further wrote about a girl named Melynda he met in 1995, however noting their love was only platonic.
[tl;dr](tldr.md): At 27 as an employee at [MIT](mit.md) [AI](ai.md) labs Stallman had a bad experience when trying to fix a Xerox printer who's [proprietary](proprietary.md) software source code was made inaccessible; he also started spotting the betrayal of hacker principles by others who decided to write proprietary software -- he realized proprietary software was inherently wrong as it prevented studying, improvement and sharing of software and enable abuse of users. From 1982 he was involved in a "[fight](fight_culture.md)" against the Symbolics company that pushed aggressive proprietary software; he was rewriting their software from scratch to allow Lisp Machine users more freedom -- here he proved his superior programming skills as he was keeping up with the whole team of Symbolics programmers. By 1983 his frustration reached its peak and he announced his [GNU](gnu.md) project on the [Usenet](usenet.md) -- this was a project to create a completely [free as in freedom](free_software.md) [operating system](os.md), an alternative to the proprietary [Unix](unix.md) system that would offer its users freedom to use, study, modify and share the whole software, in the hacker spirit. He followed by publishing a manifesto and establishing the [Free Software Foundation](fsf.md). GNU and FSF popularized and standardized the term [free (as in freedom) software](free_software.md), [copyleft](copyleft.md) and free licensing, mainly with the [GPL](gpl.md) license. In the 90s GNU adopted the [Linux](linux.md) operating system kernel and released a complete version of the GNU operating system -- these are nowadays known mostly as "Linux" [distros](distro.md). As a head of FSF and GNU Stallman more or less stopped [programming](programming.md) and started traveling around the world to give talks about free software and has earned his status of one of the most important people in software history.
[tl;dr](tldr.md): At 27 as an employee at [MIT](mit.md) [AI](ai.md) labs Stallman had a bad experience when trying to fix a Xerox printer who's [proprietary](proprietary.md) software source code was made inaccessible; he also started spotting the betrayal of hacker principles by others who decided to write proprietary software -- he realized proprietary software was inherently wrong as it prevented studying, improvement and sharing of software and enable abuse of users. From 1982 he was involved in a "[fight](fight_culture.md)" against the Symbolics company that pushed aggressive proprietary software; he was rewriting their software from scratch to allow Lisp Machine users more freedom -- here he proved his superior programming skills as he was keeping up with the whole team of Symbolics programmers. By 1983 his frustration reached its peak and he announced his [GNU](gnu.md) project on the [Usenet](usenet.md) -- this was a project to create a completely [free as in freedom](free_software.md) [operating system](os.md), an alternative to the proprietary [Unix](unix.md) system that would offer its users freedom to use, study, modify and share the whole software, in the hacker spirit. He followed by publishing a manifesto and establishing the [Free Software Foundation](fsf.md). GNU and FSF popularized and standardized the term [free (as in freedom) software](free_software.md), [copyleft](copyleft.md) and free licensing, mainly with the [GPL](gpl.md) license. In the [90s](90s.md) GNU adopted the [Linux](linux.md) operating system kernel and released a complete version of the GNU operating system -- these are nowadays known mostly as "Linux" [distros](distro.md). As a head of FSF and GNU Stallman more or less stopped [programming](programming.md) and started traveling around the world to give talks about free software and has earned his status of one of the most important people in software history.
Regarding [software](software.md) Stallman has for his whole life strongly and tirelessly promoted free software and [copyleft](copyleft.md) and has himself only used free software; he has always practiced what he preached and led the best example of how to live without [proprietary](proprietary.md) software. This in itself is extremely amazing and rare, regardless of whether he ever slipped (which we aren't aware of) or to what degree we agree with his ideas; his moral strength and integrity is really what makes him special among basically all other great people of recent centuries, it's really as if he comes from a different time when people TRULY internally believed something so much they would die for it, that they wouldn't sell even a small part of that belief for any kind of personal benefit; this is something that really puts him alongside the greatest philosophers such as [Plato](plato.md) or [Socrates](socrates.md) (who followed his own principles so much that he voluntarily died for them).
Regarding [software](software.md) Stallman has for his entire life vehemently and tirelessly promoted free software and [copyleft](copyleft.md) and has himself only used free software; he has always practiced his preaching and led the best example of how to live a life without [proprietary](proprietary.md) software. This in itself is a huge merit and something rare to witness, regardless of whether he ever slipped (which we aren't aware of) or to what degree we agree with all he ever said; his moral strength and integrity is really what makes him special among basically all the other giants of recent decades, it's really as if he comes from a different time when people TRULY internally believed something so much they would die for it, that they wouldn't sell even a small part of that belief for any kind of personal benefit; this is something that really puts him alongside the greatest philosophers such as [Plato](plato.md) or [Socrates](socrates.md) (who followed his own principles so much that he voluntarily died for them).
[Fun](fun.md) fact: there is a [package](package.md) called *[vrms](vrms.md)*, for virtual RMS, that checks whether you have any non-free packages installed. Ironically it seems to not even tolerate non-free documentation under [GFDL](gfdl.md) with invariant sections, which is very correct but probably not something Stallman himself would do since GFDL is basically his own invention :)
@ -31,7 +31,7 @@ This said, we naturally also have to state we don't nearly agree with all he say
He is a weird guy, looks a bit like PS1 Hagrid, and has been recorded on video eating dirt from his feet before giving a lecture besides others -- another time he was even recorded raging on stage after being stressed out but that's actually odd -- he practically always keeps a calm, monotone, very rational speech (much different from any politician or revolutionary). In the book *Free as in Freedom* he admits he might be slightly [autistic](autism.md). Nevertheless he's extremely smart, has magna [cum](cum.md) laude degree in [physics](physics.md) from Harvard, 10+ honorary doctorates, fluently speaks English, Spanish, French and a little bit of Indonesian and has many times proven his superior programming skills (even though he later stopped programming to fully work on promoting the FSF). He is really good at public speaking, and that despite the mentioned calmness of his speech -- here possibly his inner autism shines because he just speaks in very simple but cold rational and logical ways that everyone from an expert to a complete layman understands, he rarely stops to say something like "ummm... wait", he's just letting out carefully crafted sentences as if you were reading them from a book, showing ways from facts to logical conclusions without cheap rhetoric tricks like wild gesticulation, rising voice or using buzzwords and strong terms. His interviews are however often awkward for the same reasons: it's usually the interviewer asking a question and then waiting 15 minutes for Stallman to print out the whole answer without giving a chance to be interrupted.
Stallman has a [beautifully](beauty.md) [minimalist](minimalism.md) website at http://www.stallman.org where he actively comments on current news and issues. He also made the famous Free Software Song (well, only the lyrics, the melody is taken from a Bulgarian folk song Sadi Moma) -- he often performs it in public himself (he is pretty good at keeping the weird rhythm of the song while at the same time also singing, that's impressive).
Worthy of note if also Stallman's [beautifully](beauty.md) [minimalist](minimalism.md) website at http://www.stallman.org where he actively comments on current news and issues. He also made the famous Free Software Song (well, only the lyrics, the melody is taken from a Bulgarian folk song Sadi Moma) -- he often performs it in public himself (he is pretty good at keeping the weird rhythm of the song while at the same time also singing, that's impressive).
Stallman has been critical of [capitalism](capitalism.md) though he probably isn't a hardcore anticapitalist (he's an [American](usa.md) after all). [Wikidata](wikidate.md) states he's a proponent of [alter-globalization](alter_globalization.md) (not completely against globalization in certain areas but not supporting the current form of it).

View file

@ -14,7 +14,7 @@ The idea behind TROM is very good and similar to LRS, but just as the [Venus pro
{ WATCH OUT, this is a work in progress sum up based only on my at the moment a rather brief research of the project, I don't yet guarantee this sum up is absolutely correct, that will require me to put in much more time. Read at own risk. ~drummyfish }
**good things about TROM**:
**[good](good.md) things about TROM**:
- It identifies trade/money/[capitalism](capitalism.md) as the root cause of most problems in society -- this we basically agree with (we officially consider [competition](competition.md) to be the root cause).
- It has TONS of very good quality educational materials exposing the truth, breaking corporate propaganda, even showing such things as corruption in [soyence](soyence.md) and [open source](open_source.md) etc. -- that's extremely great.
@ -23,7 +23,7 @@ The idea behind TROM is very good and similar to LRS, but just as the [Venus pro
- It is based on [fight culture](fight_culture.md) and [hero culture](hero_culture.md) (judging by the content of the book *the origin of most problems*, creating superheroes and stating such things as "the world needs an enemy"), which we greatly oppose, we (LRS) don't believe a good and peaceful society can worship heroes and wars. Hopefully this is something the project may realize along the way, however at this point there is a great danger of falling into the trap of turning into a violent revolutionary [pseudoleftist](pseudoleft.md) movement.
- TROM refuses to use [free (as in freedom) licenses](free_culture.md)! Huge letdown. Tio gives some attempt at explanation at https://www.tiotrom.com/2022/08/free-software-nonsense/, but he doesn't seem to understand the concept of free culture/software very well, he's the "it don't need no license I say do whatever you want" guy.
- [Bloat](bloat.md), a lot of bloat everywhere, Javascript sites discriminating against non-consumerist computers. Tio isn't a programmer and seems to not be very aware of the issues regarding software, he uses the [Wordpress](wordpress.md) abomination with plugins he BUYS etc.
- [Bloat](bloat.md), a lot of bloat everywhere, [Javascript](js.md) sites discriminating against non-consumerist computers. Tio isn't a programmer and seems to not be very aware of the issues regarding software, he uses the [Wordpress](wordpress.md) abomination with plugins he BUYS etc.
- There seems to be signs of [atheist](atheism.md)/iamverysmart/neil de grass overrationalism, some things are pretty cringe and retarded, see the following point.
- From Tio's blog TROM seems to be just his one-man project, even though he may employ a few helpers -- not that there's anything wrong about one man projects [:)](lrs.md) -- Tio is very determined, talented in certain areas such as "content creation" etc., however he dropped out of school and lacks a lot of knowledge and insight into important areas such as technology and free culture while talking about them as if he knew them very well, this is not too good and even poses some dangers. He really loves to write about himself, shows great signs of narcissism. Hell, at times he seems straight from /r/iamverysmart, e.g. with this real cringe attempt at his own theory of black holes https://www.tiotrom.com/2021/11/my-theory-about-black-holes/. Of course it's alright to speculate and talk about anything, but sometimes it seems he thinks he's a genius at everything { Not wanting to make fun of anyone though, been there myself. :) ~drummyfish }. His eagerness is both his great strength and weakness, and as TROM is HIS project, it's the strength and weakness of it as well. Don't blindly follow TROM, takes the good out of it, leave the rest.

View file

@ -2,9 +2,9 @@
*"me goin to hav covfefe"* --president of the [United States](usa.md)
Donald Trump (hatched 1946) is a [retarded](retarded.md) orange [capitalist](capitalism.md) [faggot](faggot.md) in suit who managed to somehow end up becoming the [US](usa.md) president several times. He is the smartest capitalist of all time, which puts his mental capacity somewhere between chicken and a dead dolphin. When written in [binary](binary.md), his [IQ](iq.md) goes to triple digits!
Donald Trump (hatched 1946) is a [retarded](retarded.md) orange [capitalist](capitalism.md) [faggot](faggot.md) in suit who managed to somehow end up elected the [US](usa.md) president several times. Maybe because idiots vote for idiots? He is the smartest capitalist of all time, which puts his mental capacity somewhere between chicken and a dead dolphin. When written in [binary](binary.md), his [IQ](iq.md) goes to triple digits!
Lololoololol he won again because the only alternative they offered was a [woman](woman.md) :D Amazing. Wait, also wasn't he supposed to be in jail or something? Oh wait no, he is rich, makes sense. Anyway, great job [retards](usa.md).
Lololoololol he won again because the only alternative they offered was a [woman](woman.md) :D Amazing shit. Wait, also wasn't he supposed to be in jail or something? Oh wait no, he is rich, makes sense. Anyway, great job [retards](usa.md).
## See Also

4
ubi.md
View file

@ -1,8 +1,8 @@
# Universal Basic Income
Universal basic income (UBI) is the idea that all people should get regular pay from the state without any conditions, i.e. even if they don't [work](work.md), even if they are rich, criminals etc. It is a great idea and **[we](lrs.md) fully support it** as the first step towards the [ideal society](less_retarded_society.md) in which people don't have to work. As [automation](automation.md) takes away more and more jobs, it is being discussed more and experiments with UBI are being conducted, even though capitalist idiots rather try to invent more and more [bullshit jobs](bullshit_job.md) to keep people enslaved.
Universal basic income (UBI) is the idea that all people should get regular pay from the [state](state.md) without any conditions, i.e. even if they don't [work](work.md), if they're rich, criminals etc. It is a great idea and **[we](lrs.md) fully support it** as the first step towards the [ideal society](less_retarded_society.md) in which people don't have to work and worry about existence. As [automation](automation.md) takes more and more jobs away, it is being discussed more and experiments with UBI are being conducted, even though capitalist idiots rather try to invent new [bullshit jobs](bullshit_job.md) to keep people enslaved.
UBI that itself covers all basic needs is called full, otherwise it is called partial. UBI subscribes to the idea that **the goal of progress is to eliminate the need for work**, which is correct -- we should leave all work to machines eventually, that's why we started civilization. This doesn't mean we can't work, just that we aren't obliged.
UBI that itself covers all basic needs is called full, otherwise it is called partial. UBI subscribes to the idea that **the goal of [progress](progress.md) is to eliminate the need for work**, which is correct -- we should leave all work to machines eventually, that's why we started civilization. This doesn't mean we can't work, just that we aren't obliged.
The first reaction of a noob hearing about UBI is "but everyone will just stop working!" Well no, for a number of reasons (which have been confirmed by real life experiments). For example most people don't want to just survive, they want to buy nice things and have something extra, so most people will want to get some additional income. Secondly people do want to work -- work in the sense of doing something meaningful. If they don't have to be wage slaves, most will decide to dedicate their free time to doing something useful. Thirdly people are already used to working, most will keep doing it just out of inertia, e.g. because they have friends at work or simply because they actually happen to like going there.

6
usa.md
View file

@ -6,15 +6,15 @@ You may have been led to naively believe USA is something of a superior country
{ Sorry to some of my US frens :D I love you <3 ~drummyfish }
USA is very similar to [North Korea](north_korea.md), main difference being that USA actually attacks other countries instead of just talking about it. Apart from this we only find striking similarities: in both countries the people are successfully led to believe their country is the best and have strong propaganda based on [cults of personality](cult_of_personality.md), which to outsiders seem very ridiculous but which is nevertheless very effective: for example North Korea officially proclaims their supreme leader Kim Jong-il was born atop a sacred mountain and a new star came to existence on the day of his birth, while Americans on the other hand believe one of their retarded leaders named George Washington was a divine god who was PHYSICALLY UNABLE TO TELL A LIE, which was actually taught at their schools. North Korea is ruled by a single political party, US is ruled by two practically same militant capitalist imperialist parties (democrats and republicans), i.e. de-facto one party as well. Both countries are obsessed with weapons (especially nuclear ones) and their military, both are highly and openly [fascist](fascism.md) (nationalist). Both countries are full of extreme [propaganda](propaganda.md), [censorship](censorship.md) and [hero culture](hero_culture.md), people worship dictators such as Kim Jong-un or [Steve Jobs](steve_jobs.md). US is even worse than North Korea because it exports its toxic [culture](culture.md) all over the whole world and constantly invades other countries, it is destroying all other cultures and leads the whole world to doom and destruction of all life, while North Korea basically only destroys itself.
More than anything USA resembles [North Korea](north_korea.md), main difference being that USA actually acts on their promises of war and attacks other countries instead of just talking about it. Apart from this we only find striking similarities: in both countries citizens are successfully led to believing their country is the greatest and have strong propaganda based on [cults of personality](cult_of_personality.md), which to outsiders seem very ridiculous but which is nevertheless very effective: for example North Korea officially proclaims their supreme leader Kim Jong-il was born atop a sacred mountain and a new star came to existence on the day of his birth, while Americans on the other hand believe one of their retarded leaders named George Washington was a divine god who was PHYSICALLY UNABLE TO TELL A LIE, which was actually taught at their schools. North Korea is ruled by a single political party, US is ruled by two practically same militant capitalist imperialist parties (democrats and republicans), i.e. de-facto one party as well. Both countries are obsessed with weapons (especially nuclear ones) and their military, both are highly and openly [fascist](fascism.md) (nationalist). Both countries are full of extreme [propaganda](propaganda.md), [censorship](censorship.md) and [hero culture](hero_culture.md), people worship dictators such as Kim Jong-un or [Steve Jobs](steve_jobs.md). US is even worse than North Korea because it exports its toxic [culture](culture.md) all over the whole world and constantly invades other countries, it is destroying all other cultures and leads the whole world to doom and destruction of all life, while North Korea basically only destroys itself.
In US mainstream [politics](politics.md) there exists no true left, only [right](left_right.md) and [pseudoleft](pseudoleft.md). It is only in extreme underground, out of the sight of the public eye, where on rare occasion sometimes something of value comes into existence as an exception to the general rule that nothing good comes from the US. One of these exceptions is [free software](free_software.md) (established by [Richard Stallman](rms.md)) which was however quickly smothered by the capitalist [open source](open_source.md) counter movement. Also the [hippie](hippies.md) movement was kind of cool, and here and there a good videogame or movie happens to be made in the US, but remember you have to sift through an ocean of crap to find a small nugget of gold here.
In US mainstream [politics](politics.md) there exists no true left, only [right](left_right.md) and [pseudoleft](pseudoleft.md). It is only in deepest underground, out of the sun's rays and sight of the public eye, where on rare occasion sometimes something of value comes to existence as an exception to the general rule that nothing good comes from the US. One of these exceptions is [free software](free_software.md) (established by [Richard Stallman](rms.md)) which was however quickly smothered by the capitalist [open source](open_source.md) counter movement. Also the [hippie](hippies.md) movement was kind of cool, and here and there a good videogame or movie happens to be made in the US, but remember you have to sift through an ocean of crap to find a small nugget of gold here.
On 6th and 9th August 1945 **USA murdered about 200000 civilians**, most of whom were innocent men, women and children, by throwing atomic bombs on Japanese cities Hiroshima and Nagasaki. The men who threw the bombs and ordered the bombing were never put on trial, actually most Americans praise them as [heroes](hero_culture.md) and think it was a good thing to do.
**Americans are uber retarded**^([source: my brain]) for example in trying to somehow pursue both [self interest](self_interest.md) and "social equality", it's extremely ridiculous, an american brain is literally incapable of imagining someone who doesn't at his core work on the basis of self interest, so the American that tries to identify with "wanting equality and human rights" just comes up with hugely fucked up arguments like ["SKIN COLOR IS JUST ILLUSION THEREFORE WE ARE ALL EQUAL"](political_correctness.md) -- because he inevitably sees differences implying oppression because self interest just cannot be not present (this idea won't even occur for a second to him during his whole lifetime, it's simply something he NEVER can physically think), his mind is hard wired to be unable of grasping the idea of accepting difference between people while giving up the self interest of falling to [fascism](fascism.md) as a consequence. Similar arguments are encountered e.g. regarding [vegetarianism](vegetarianism.md): an American supporting vegetarianism will resort to denying evolution, biology and anatomy and will argue something like "HUMANS ARE HERBIVORES BECAUSE THIS FEMINIST SCIENTIST SAYS IT AND MEAT KILLS US SO WE MUST NOT EAT IT", again because he just thinks that admitting meat is healthy to us automatically implies we have to eat it because self interest is just something that's an inherent part of laws of physics; a normal (non retarded) vegetarian will of course admit not eating meat at all is probably a bit unhealthy, but it's a voluntary choice made of altruistic love towards other living beings who now don't have to die for one's tastier food.
USA also has the worst justice system in the world, they literally let angry mob play judges in actual courts, they pick random trash from the streets (similarly to how they choose their presidents) and let them decide someone's guilt for giving them free lunch, which they call "jury duty". This is not a [joke](jokes.md), look it up, in USA you'll literally be judged by random amateurs who have no clue about law and will just judge you based on whether they like your face or not. You can't make this up.
USA also has the worst [justice](justice.md) system in the world, they literally let angry mob play judges in actual courts, they pick random trash from the streets (similarly to how they choose their presidents) and let them decide someone's guilt for giving them free lunch, which they call "jury duty". Lawyers are not so much lawyers as actors, trained in theatrical language and gestures to psychologically push 80 IQ scumbags to perceive someone as a criminal or not, the "judge" only sits there on his ass and watches the circus unfold. This is not a [joke](jokes.md), look it up, in USA you'll literally be judged by random amateurs who have no clue about law and will just judge you based on whether they like your face or not. You can't make this up.
{ "List of atrocities by the United States" is the longest page on leftypedia :-) https://wiki.leftypol.org/wiki/List_of_atrocities_committed_by_the_United_States. ~drummyfish }

File diff suppressed because one or more lines are too long

View file

@ -3,9 +3,9 @@
This is an autogenerated article holding stats about this wiki.
- number of articles: 635
- number of commits: 998
- total size of all texts in bytes: 5282316
- total number of lines of article texts: 38180
- number of commits: 999
- total size of all texts in bytes: 5288084
- total number of lines of article texts: 38224
- number of script lines: 324
- occurrences of the word "person": 10
- occurrences of the word "nigger": 119
@ -35,60 +35,71 @@ longest articles:
top 50 5+ letter words:
- which (2903)
- there (2286)
- which (2904)
- there (2285)
- people (2188)
- example (1843)
- other (1649)
- about (1480)
- about (1482)
- number (1357)
- software (1304)
- because (1224)
- their (1132)
- their (1135)
- would (1100)
- something (1092)
- being (1083)
- something (1095)
- being (1084)
- program (1067)
- language (1005)
- called (977)
- things (958)
- without (887)
- language (1006)
- called (978)
- things (957)
- without (888)
- simple (882)
- function (873)
- computer (854)
- numbers (840)
- different (819)
- numbers (841)
- different (820)
- however (800)
- these (797)
- programming (790)
- programming (791)
- world (782)
- system (758)
- should (745)
- still (740)
- doesn (736)
- should (746)
- still (742)
- doesn (737)
- games (712)
- drummyfish (697)
- while (696)
- drummyfish (698)
- while (697)
- point (686)
- society (682)
- possible (679)
- possible (678)
- always (668)
- simply (666)
- probably (665)
- always (664)
- using (658)
- course (630)
- similar (626)
- course (631)
- similar (625)
- actually (611)
- someone (602)
- https (601)
- though (593)
- really (592)
- really (591)
- first (585)
- basically (583)
latest changes:
```
Date: Wed Apr 2 17:51:15 2025 +0200
anarch.md
anorexia.md
drummyfish.md
html.md
human_language.md
log.md
project.md
random_page.md
wiki_pages.md
wiki_stats.md
Date: Tue Apr 1 13:52:42 2025 +0200
anarch.md
chess.md
@ -111,22 +122,6 @@ Date: Sat Mar 29 16:59:03 2025 +0100
english.md
fascism.md
feminism.md
firmware.md
gopher.md
main.md
mainstream.md
microtransaction.md
morality.md
open_source.md
permacomputing_wiki.md
piracy.md
probability.md
random_page.md
soyence.md
wiki_pages.md
wiki_stats.md
work.md
www.md
```
most wanted pages:
@ -154,19 +149,19 @@ most wanted pages:
most popular and lonely pages:
- [lrs](lrs.md) (341)
- [lrs](lrs.md) (342)
- [capitalism](capitalism.md) (314)
- [c](c.md) (245)
- [bloat](bloat.md) (242)
- [free_software](free_software.md) (204)
- [game](game.md) (156)
- [game](game.md) (157)
- [suckless](suckless.md) (152)
- [proprietary](proprietary.md) (137)
- [modern](modern.md) (127)
- [minimalism](minimalism.md) (125)
- [computer](computer.md) (121)
- [censorship](censorship.md) (120)
- [kiss](kiss.md) (118)
- [kiss](kiss.md) (119)
- [programming](programming.md) (115)
- [shit](shit.md) (111)
- [math](math.md) (110)
@ -185,6 +180,7 @@ most popular and lonely pages:
- [programming_language](programming_language.md) (90)
- [work](work.md) (88)
- ...
- [friend_detox](friend_detox.md) (5)
- [free_body](free_body.md) (5)
- [explicit](explicit.md) (5)
- [dungeons_and_dragons](dungeons_and_dragons.md) (5)
@ -208,7 +204,6 @@ most popular and lonely pages:
- [less_retarded_software](less_retarded_software.md) (4)
- [global_discussion](global_discussion.md) (4)
- [gaywashing](gaywashing.md) (4)
- [friend_detox](friend_detox.md) (4)
- [f2p](f2p.md) (4)
- [egg_code](egg_code.md) (4)
- [dick_reveal](dick_reveal.md) (4)

3
wirtual.md Normal file
View file

@ -0,0 +1,3 @@
# Wirtual
Wirtual is the biggest cunt on [Earth](earth.md).

View file

@ -2,7 +2,7 @@
{ Hello, if you're offended scroll down, I actually apologize to some women at the end :D ~drummyfish }
A woman (also girl, gril, gurl, femoid, toilet, karen, wimminz, the weaker sex, the dumber sex or succubus; [tranny](tranny.md) girl being called [t-girl](tgirl.md), troon, [trap](trap.md), [femboy](femboy.md), fake girl or [mtf](mtf.md)) is one of two genders ([sexes](sex.md)) of [humans](human.md), the other one being [man](man.md) -- traditionally woman is defined as that who was born with a vagina. Women are the weaker sex, they are [cute](cute.md) (sometimes) but notoriously bad at [programming](programming.md), [math](math.md) and [technology](technology.md): in the field they usually "work" on [bullshit](bullshit.md) (and mostly [harmful](harmful.md)) positions such as "diversity department", [marketing](marketing.md), "[HR](human_resources.md)", [UI](ui.md)/[user experience](ux.md), or as a [token](token.md) girl for media. If they get close to actual technology, their highest "skills" are mostly limited to casual "[coding](coding.md)" (which itself is a below-average form of [programming](programming.md)) in a baby language such as [Python](python.md), [Javascript](javascript.md) or [Rust](rust.md). Mostly they are just hired for quotas and make coffee for men who do the real work (until TV cameras appear). Don't let yourself be fooled by the propaganda, women have always been bad with tech -- whenever you see a woman "engineer", quickly go hide somewhere, something's gonna fall on your head. If you see a woman driver in a bus, rather wait for the next one. Indeed, very rarely a somewhat skilled woman may appear (we're not saying women can't be capable, just that they rarely are).
A woman (also girl, gril, gurl, femoid, toilet, karen, wimminz, the weaker sex, the dumber sex or succubus; [tranny](tranny.md) girl being called [t-girl](tgirl.md), troon, [trap](trap.md), [femboy](femboy.md), fake girl or [mtf](mtf.md)) is one of two genders ([sexes](sex.md)) of [humans](human.md), the other one being [man](man.md) -- traditionally woman is defined as that who was born with a vagina. Women are the weaker sex, they are [cute](cute.md) (sometimes) but notoriously bad at [programming](programming.md), [math](math.md) and [technology](technology.md): in the field they usually "work" on [bullshit](bullshit.md) (and mostly [harmful](harmful.md)) positions such as "diversity department", [marketing](marketing.md), "[HR](human_resources.md)", [UI](ui.md)/[user experience](ux.md), or as a [token](token.md) girl for media. If they get close to actual technology, their highest "skills" are mostly limited to casual "[coding](coding.md)" (which itself is a below-average form of [programming](programming.md)) in a baby language such as [Python](python.md), [Javascript](javascript.md) or [Rust](rust.md). Mostly they are just hired for quotas and make coffee for men who do the real work (until TV cameras appear). Don't let yourself be fooled by the propaganda, women have always been bad with tech -- whenever you see a woman "engineer", quickly go hide somewhere, something's gonna fall on your head. If you see a woman driver in a bus, rather wait for the next one. They belong to kitchen but by some catastrophic failure ended up in nuclear plants and universities, god protect us. Indeed, very rarely a somewhat skilled woman may appear (we're not saying women can't be capable, just that they rarely are).
The symbol for woman is a circle with cross at its bottom ([Unicode](unicode.md) U+2640). Women mostly like pink [color](color.md) and similar colors like red and purple. Watch out! Bitches carry around pepper sprays and sometimes even miniature guns, if you make eye contact for too long you're dead.
@ -34,7 +34,7 @@ Of course, [LRS](lrs.md) loves all living beings equally, even women. In order t
**Is there even anything women are better at than men?** Well, some claim they're for example better at [multitasking](multitasking.md), i.e. doing multiple things at once, though it gets questioned a lot, but it would possibly make some sense evolutionary speaking, men had to usually focus sharply on one thing while women had to keep an eye on kids, maintaining fire, cooking, cleaning, talking with other women and watching out for danger -- all at once. Women could also find their "strength" exactly in the fact that they're DIFFERENT from men, they seem for example more peaceful or at least less violent on average (although feminism of course views this as a "weakness" and already diminished this moral advantage women used to possess), however they seem to be e.g. more passive-aggressive and love to plot behind the scenes. A man may fall victim to his overly competitive nature or "pride", being less competitive will sometimes be an advantage -- a truly smart woman will know this and won't try to mimic men, she will try to be good at being woman. There have been a few successful queens in history, women can sometimes perhaps be good in representative roles (and other simple chair-sitting jobs), in being a "symbol", which doesn't require much of any skill (a statue of a god can do the same job really). They have also evolved to perform the tasks of housekeeping and care taking at which they may excel, but still it seems that if men fully focus on a specific task, they will beat women at anything, for example the best cooks in the world are men (in Japan it is common knowledge that sushi made by women is not as good because their hands are too warm). Practically speaking no matter what discipline, a woman can never get as skilled as man at it, although on occasion a man can get as bad as a woman. Women can make good assistants to men, e.g. nurses to doctors. Sometimes women may be preferable exactly for not being as "rough" as men, e.g. as singers, therapists, sex workers etc. There were also some good English female writers actually, like Agatha Christie and J. K. Rowling, though that's still pretty weak compared to Hemingway, Goethe, Tolkien, Tolstoy, Shakespeare, Dickens, Dostoevsky etcetc.
**Can women be allowed in [technology](tech.md)?** Well yes, sure, we don't forbid anyone from doing anything. Can a [dog](dog.md) become a writer? Maybe -- it'll be awesome when he does, but we shouldn't encourage dogs to become writers or see lack of dog writers as a problem. In any case **we need fewer women doing important intellectual tasks**, forcing women to do tasks vital for functioning of society has led to those tasks being done poorly and society is getting destroyed, it's not [fun](fun.md) anymore, the world is literally [collapsing](collapse.md) because women were forced to do important tasks for [political reasons](feminism.md), it is now time to prioritize saving society before [political correctness](political_correctness.md). Just admit women are dumb, stop forcing women everywhere and the numbers will get back to healthy levels. In general something like 1 woman for 1000 men doing intellectual task such as [programming](programming.md), writing or [science](science.md) is about the ratio we are probably looking for.
**Can women be allowed in [technology](tech.md)?** Well yes, sure, we don't forbid anyone from doing anything. Can a [dog](dog.md) become a writer? Maybe -- it'll be awesome when he does, but we shouldn't encourage dogs to become writers or see lack of dog writers as a problem. In any case **we need fewer women doing important intellectual tasks**, forcing women to do tasks vital for functioning of society has led to those tasks being done poorly and society is getting destroyed, it's not [fun](fun.md) anymore, the world is literally [on fire](collapse.md) because women were forced to do important tasks for [political reasons](feminism.md), it is high time to prioritize saving society before [political correctness](political_correctness.md). Just admit women are dumb, **DISCOURAGE women from pursuing science and technology**, stop forcing them everywhere and the numbers will get back to healthy levels. In general something like 1 woman for 1000 men doing intellectual task such as [programming](programming.md), writing or [science](science.md) is about the ratio we are probably looking for.
Also **women aren't funny** for some reason (with one possible exception of [Ashley Jones](ashley_jones.md)) -- somehow it's very very difficult to find a woman with comedic talent and if very rarely at least a somewhat funny girl appears, it seems she has to be extremely ugly for it to work. It's hard to say if it's because of their low intelligence or due to the natural public perception of women (e.g. when a woman is attempting comedy it's still very hard for a man to not just focus on imagining sex with her).

2
www.md
View file

@ -8,7 +8,7 @@ World Wide Web (www or just *the web*) is (or was -- by 2023 mainstream web is d
An important part of the web is also searching its vast oceans of information with [search engines](search_engine.md) such as the infamous [Google](google.md) engine (as of 2024 still functioning technically but no longer practically). Websites have human readable [url](url.md) addresses thanks to [DNS](dns.md).
Famous and big as it was, it's sad that mainstream web is now EXTREMELY [bloated](bloat.md) and **100% unusable**, beyond saving -- owing of course to [capitalism](capitalism.md). The murdering of web would be probably seen as one of the worst disasters of technological world in history, wasn't it for the fact that countless other disasters of similar magnitude are just happening constantly in [21st century](21st_century.md). The web is now like Chernobyl: a curious place to visit, however radioactive to such a high degree that you can't stay for too long else you acquire brain [cancer](cancer.md). For more [suckless](suckless.md) alternatives to web see [gopher](gopher.md). See also [smol web](smol_internet.md).
Famous and big as it was, it's tragic that mainstream web is now EXTREMELY [bloated](bloat.md) and **100% unusable** catastrophe, beyond any hope of saving -- owing of course to [capitalism](capitalism.md). The murdering of web would be probably seen as one of the worst disasters of technological world in history, wasn't it for the fact that countless other disasters of similar magnitude are simultaneously in progress in [21st century](21st_century.md). The web is now like Chernobyl: a curious place to visit, but radioactive to such a high degree that you can't stay for too long else you risk acquiring brain [cancer](cancer.md). For more [suckless](suckless.md) alternatives to web see [gopher](gopher.md). See also [smol web](smol_internet.md).
Prior to the tragedy of [mainstreamization](mainstream.md) the web used to be perhaps the greatest and most spectacular part of the whole Internet, the service that made Internet widespread, however it soon deteriorated by [capitalist](capitalism.md) interests, commercialization and subsequent invasion of idiots from real world; by this date, in 2020s, it is one of the most illustrative, depressing and also hilarious examples of [capitalist](capitalist_software.md) [bloat](bloat.md). A good article about the issue, called *The Website Obesity Crisis*, can be found at https://idlewords.com/talks/website_obesity.htm. There used to be a tool for measuring website bloat (now ironically link rotted to some ad lol) which worked like this: it computed the ratio of the page size to the size of its screenshot (e.g. [YouTube](youtube.md), as of writing this, scored 35.7).