master
Miloslav Ciz 3 weeks ago
parent 8eee949aae
commit 66aa9c99f4

@ -1,18 +1,16 @@
# Assembly
Assembly (also ASM) is, for any given hardware computing platform ([ISA](isa.md), basically a [CPU](cpu.md) architecture), the lowest level [programming language](programming_language.md) that expresses typically a linear, unstructured sequence of 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 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) while assembly represents actual native code run by 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 "[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).
Assembly (also ASM) is, for any given hardware computing platform ([ISA](isa.md), basically a [CPU](cpu.md) architecture), the lowest level [programming language](programming_language.md) that expresses typically a linear, unstructured (i.e. without nesting blocks of code) sequence of 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 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) while assembly represents actual native code run by 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).
**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 which may differ in comment style, order of writing arguments and even instruction abbreviations (e.g. x86 can be written in [Intel](intel.md) and [AT&T](at_and_t.md) syntax). For the reason of non-portability (and also for the fact that "assembly is hard") you 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 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) (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.
**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.
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 the C preprocessor), pseudoinstructions (commands that look like instructions but actually translate to e.g. multiple instructions), [comments](comment.md), directives, named labels for jumps (as writing literal jump addresses would be extremely tedious) etc.
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 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.
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 -- you'll be dealing with things such as function [call conventions](call_convention.md), [interrupts](interrupt.md), [syscalls](syscall.md) and their conventions, counting CPU cycles of individual instructions, looking up exact hexadecimal memory addresses, defining memory segments, dealing with [endianness](endianness.md), raw [goto](goto.md) jumps, [call frames](call_frame.md) etc.
Note 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 -- you'll be dealing with things such as function [call conventions](call_convention.md), [interrupts](interrupt.md), [syscalls](syscall.md) and their conventions, counting CPU cycles of individual instructions, looking up exact hexadecimal memory addresses, opcodes, defining memory segments, dealing with [endianness](endianness.md), raw [goto](goto.md) jumps, [call frames](call_frame.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 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. You don't have any [data types](data_type.md), you have to know yourself that your variables really represent signed values 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.
## Typical Assembly Language
@ -40,13 +38,15 @@ Instructions are typically written as three-letter abbreviations and follow some
## How To
*For specific assembly language how tos see their own articles: [x86](x86.md), [Arm](arm.md) etc.*
On [Unices](unix.md) the [objdump](objdump.md) utility from GNU binutils can be used to **disassemble** compiled programs, i.e view the instructions of the program in assembly (other tools like ndisasm can also be used). Use it e.g. as:
```
objdump -d my_compiled_program
```
Let's now write a simple Unix program in [x86](x86.md) assembly (AT&T syntax). Write the following source code into a file named e.g. `program.s`:
Let's now write a simple Unix program in 64bit [x86](x86.md) assembly -- we'll be using AT&T syntax that's used by [GNU](gnu.md). Write the following source code into a file named e.g. `program.s`:
```
.global _start # include the symbol in object file
@ -132,7 +132,7 @@ We will now compile it to different assembly languages (you can do this e.g. wit
{ Also not sure the comments are 100% correct, let me know if not. ~drummyfish }
The [x86](x86.md) assembly may look like this:
The [x86](x86.md) assembly may look like this (to understand the weird juggling of values between registers see [calling conventions](calling_convention.md)):
```
incrementDigit:

@ -108,30 +108,31 @@ Here are some questions to test your LRS related knowledge :D
7. What will the following C (C99) snippet print out? `int x = 2; putchar('a' + ((1 == 3 > 2) + ++x));`
8. Order the following software by the date of the release of their 1.0 version from oldest to newest: [TempleOS](temple_os.md), [MS DOS](dos.md), original [Unix](unix.md), [Linux](linux.md), [Windows](windows.md). Also point out which one stands out from others and why.
9. If you're running in a race and overtake the guy who's currently in third place, what place will you be in?
10. We have two gears, each of same size and same number of teeth. Gear A is fixed in place, it can't move or rotate, gear B runs around gear A so that it keeps touching it (and therefore rotates along the way) until it gets to the place where it started. How many revolutions around its own axis (from your stationary point of view) has gear B made?
11. What's the worst socioeconomic system in the world? You don't even have to say why because that would take too long.
12. Manually convert the [binary](binary.md) numeral 10110000000010110101 to hexadecimal.
13. Why do astronauts on the ISS feel weightlessness?
14. How would you compute the circumference of a circle with radius *r* without using floating point? Consider just the approximate value of pi ~= 3.14, i.e. write the formula multiplying *2 * r* by 3.14 only using whole numbers (of course the result will be rounded to whole number too).
15. Name at least five licenses commonly used for [FOSS](foss.md) programs, five text editors/IDEs commonly used for programming and five operating systems whose source code is mostly free-licensed (none of these is allowed to be using the same or forked kernel of any other).
16. What is the minimum number of [bits](bit.md) that will allow us to represent 12345678910111213 distinct values?
17. Give at least one example of [analog](analog.md) electronic device and one of [digital](digital.md) mechanical device.
18. Is physical violence every justified?
19. Find a normalized (having length 1) [normal](normal.md) ([vector](vector.md) that's perpendicular to surface) of the [triangle](triangle.md) defined by vertices *A = {1,2,3}*, *B = {5,5,1}* and *C = {1,5,2}*. (Orientation doesn't matter.)
20. Why will (in a typical programming language such as C) an infinite [recursion](recursion.md) crash the program but infinite loop generally won't?
21. Answer yes/no to following: Is base-three number 2101 greater than base-seven number 206? Is [gemini](gemini.md) better than [gopher](gopher.md)? Is there any [triangle](triangle.md) (in Euclidean geometry) whose one side is longer than the sum of lengths of its other two sides?
22. There are two walls 2 meters apart, the right wall is moving left by the speed 0.1 m/s, the left wall is moving right by the same speed 0.1 m/s. There is a fly in the middle between the walls, flying by speed 1 m/s. It is flying towards one wall, then when it reaches it it turns around and flies towards the other wall etc. When the walls completely close in, what distance would the fly have traveled? (There is a simple solution.)
23. Solve these [anagrams](anagram.md): *no cure sir*, *come piss ron*, *ginger*, *nicer shops*, *fog tag*, *trek now*.
24. At what times, with precision to seconds, do clock hands overlap (just compute AM, PM is the same)?
25. In 3D computer [graphics](graphics.md) what's the difference between [shading](shading.md) and drawing [shadows](shadow.md)?
26. Can we say that the traditional feed forward [neural networks](neural_network.md) are [Turing complete](turing_complete.md)? Explain why or why not.
27. Wicw mx uum yvfe bbt uhmtf ok?
28. What is the *Big O* time [complexity](complexity.md) of worst case scenario for [binary search](binary_search.md)?
29. Does the statement "10 does not equal 10" logically [imply](implication.md) that intelligent alien life exists?
30. What is the principle of [asymmetric cryptography](asymmetric_cryptography.md) and why is it called *asymmetric*?
31. What is the main reason for [Earth](earth.md) having seasons (summer, winter, ...)?
32. WARNING: VERY HARD. There are two integers, both greater than 1 and smaller than 100. *P* knows their product, *S* knows their sum. They have this conversation: *P* says: I don't know the numbers. *S* says: I know you don't, I don't know them either. *P* says: now I know them. *S* says: now I know them too. What are the numbers? To solve this you are allowed to use a programming language, pen and paper etc. { Holy shit this took me like a whole day. ~drummyfish }
33. Did you enjoy this quiz?
10. When multiplying two *N* bit numbers (unsigned integers, direct representation), what is the minimum number of bits we will need to store their product? Prove it.
11. We have two gears, each of same size and same number of teeth. Gear A is fixed in place, it can't move or rotate, gear B runs around gear A so that it keeps touching it (and therefore rotates along the way) until it gets to the place where it started. How many revolutions around its own axis (from your stationary point of view) has gear B made?
12. What's the worst socioeconomic system in the world? You don't even have to say why because that would take too long.
13. Manually convert the [binary](binary.md) numeral 10110000000010110101 to hexadecimal.
14. Why do astronauts on the ISS feel weightlessness?
15. How would you compute the circumference of a circle with radius *r* without using floating point? Consider just the approximate value of pi ~= 3.14, i.e. write the formula multiplying *2 * r* by 3.14 only using whole numbers (of course the result will be rounded to whole number too).
16. Name at least five licenses commonly used for [FOSS](foss.md) programs, five text editors/IDEs commonly used for programming and five operating systems whose source code is mostly free-licensed (none of these is allowed to be using the same or forked kernel of any other).
17. What is the minimum number of [bits](bit.md) that will allow us to represent 12345678910111213 distinct values?
18. Give at least one example of [analog](analog.md) electronic device and one of [digital](digital.md) mechanical device.
19. Is physical violence every justified?
20. Find a normalized (having length 1) [normal](normal.md) ([vector](vector.md) that's perpendicular to surface) of the [triangle](triangle.md) defined by vertices *A = {1,2,3}*, *B = {5,5,1}* and *C = {1,5,2}*. (Orientation doesn't matter.)
21. Why will (in a typical programming language such as C) an infinite [recursion](recursion.md) crash the program but infinite loop generally won't?
22. Answer yes/no to following: Is base-three number 2101 greater than base-seven number 206? Is [gemini](gemini.md) better than [gopher](gopher.md)? Is there any [triangle](triangle.md) (in Euclidean geometry) whose one side is longer than the sum of lengths of its other two sides?
23. There are two walls 2 meters apart, the right wall is moving left by the speed 0.1 m/s, the left wall is moving right by the same speed 0.1 m/s. There is a fly in the middle between the walls, flying by speed 1 m/s. It is flying towards one wall, then when it reaches it it turns around and flies towards the other wall etc. When the walls completely close in, what distance would the fly have traveled? (There is a simple solution.)
24. Solve these [anagrams](anagram.md): *no cure sir*, *come piss ron*, *ginger*, *nicer shops*, *fog tag*, *trek now*.
25. At what times, with precision to seconds, do clock hands overlap (just compute AM, PM is the same)?
26. In 3D computer [graphics](graphics.md) what's the difference between [shading](shading.md) and drawing [shadows](shadow.md)?
27. Can we say that the traditional feed forward [neural networks](neural_network.md) are [Turing complete](turing_complete.md)? Explain why or why not.
28. Wicw mx uum yvfe bbt uhmtf ok?
29. What is the *Big O* time [complexity](complexity.md) of worst case scenario for [binary search](binary_search.md)?
30. Does the statement "10 does not equal 10" logically [imply](implication.md) that intelligent alien life exists?
31. What is the principle of [asymmetric cryptography](asymmetric_cryptography.md) and why is it called *asymmetric*?
32. What is the main reason for [Earth](earth.md) having seasons (summer, winter, ...)?
33. WARNING: VERY HARD. There are two integers, both greater than 1 and smaller than 100. *P* knows their product, *S* knows their sum. They have this conversation: *P* says: I don't know the numbers. *S* says: I know you don't, I don't know them either. *P* says: now I know them. *S* says: now I know them too. What are the numbers? To solve this you are allowed to use a programming language, pen and paper etc. { Holy shit this took me like a whole day. ~drummyfish }
34. Did you enjoy this quiz?
### Answers
@ -144,30 +145,31 @@ Here are some questions to test your LRS related knowledge :D
7. `e`
8. Original Unix (around 1970), MS DOS (1981), Windows (1985), Linux (1998), TempleOS (2007). Linux stands out because it's not an operating system, it's a kernel.
9. third
10. two (try it, see coin rotation paradox)
11. [capitalism](capitalism.md)
12. B00B5
13. It's not because of the distance from the [Earth](earth.md), the force of gravity is practically the same there (from the Earth's perspective they're really not significantly far away, even the Moon still feels Earth's gravity very strongly so that it doesn't fly away). It's because they are orbiting the Earth, the path they are taking makes them constantly be in a kind of free fall while also preventing them from hitting the Earth (similarly to a comet who is kind of falling towards the Earth but just narrowly misses it, the orbital path of ISS is just much closer to being a circle than an ellipse). I.e. they feel the same kind of weightlessness you will feel in an elevator that's falling down.
14. *(2 * r * 314) / 100*
15. [GPL](gpl.md), LGPL, AGPL, [MIT](mit.md), BSD, Apache, [CC0](cc0.md), unlicense, zlib, WTFPL, ...; [vim](vim.md), [emacs](emacs.md), [Acme](acme.md), Geany, vi, Notepad++, Neovim, Kate, nano, gedit, ...; [Debian](debian.md), 9front, [OpenBSD](openbsd.md), [FreeDOS](freedos.md), [Haiku](haiku.md), [Minix](minix.md), ReactOS, [GNU](gnu.md)/[Hurd](hurd.md), V6 [Unix](unix.md), FreeRTOS, ...
16. The number is *N* such that 2^N = 12345678910111213, rounded up, that is ceil(log2(12345678910111213)) = 54.
17. amplifier, voltmeter, analog hardware for [neural networks](neural_net.md), ...; abacus, mechanical calculators such as Curta, Turing machine made of wood, ...
18. no
19. We can use [cross product](cross_product.md) to find a vector perpendicular to two vectors, so we can take e.g. vectors *U = B - A = {4,3,-2}* and *V = C - A = {0,3,-1}*; their cross product is *UxV = {3,4,12} = n* (just look up the formula for cross product). This is the normal, to normalize it we'll first compute its length, i.e. *|n| = sqrt(3^2 + 4^2 + 12^2) = 13* and then divide each component of *n* by this length, i.e. we finally get *n0 = {3/13,4/13,12/13}*. As a check we can compute [dot product](dot_product.md) of this normal with both *U* and *V* and we should get 0 in both cases (meaning the vectors are perpendicular).
20. Infinite loop just performs jumps back to some previous program instruction which can be repeated indefinitely, so unless there is something inside the loop that will lead to a crash after many repetitions, an infinite loop will just make the program run forever. With recursion, however, every successive recursive call allocates a new call frame on the call stack (so that the program knows where to return from the function) which will lead to running out of stack memory and to [stack overflow](stack_overflow.md).
21. no, no, no
22. The walls will collide in 10 seconds during which the fly has been constantly flying with the speed 1 m/s, so it traveled 10 meters.
23. *[recursion](recursion.md)*, *[compression](compression.md)*, *[nigger](nigger.md)*, *[censorship](censorship.md)*, *[faggot](faggot.md)*, *[network](network.md)*.
24. 1:5:27, 2:10:54, 3:16:21, 4:21:49, 5:27:16, 6:32:43, 7:38:10, 8:43:38, 9:49:05, 10:54:32, 12:00:00, you can compute it by making equations for position of the hour and minute hand depending on time, setting them equal and solving, i.e. you get something like *tm / (60 * 12) = (tm / 60) - (tm // 60)* (where *//* is integer division and *tm* is time in minutes); you will find the times are those when minute hand is at multiples of 60 / 11 minues (5:27), i.e. there are 11 such times around the circle and they are evenly spaced.
25. Shading is the process of computing surface color of 3D objects, typically depending on the object's material and done by GPU programs called [shaders](shader.md); shading involves for example applying textures, normal mapping and mainly lighting -- though it can make pixels lighter and darker, e.g. depending on surface normal, it only applies local models of light, i.e. doesn't compute true shadows cast by other objects. On the other hand computing shadows uses some method that works with the scene as a whole to compute true shadowing of objects by other objects.
26. We can't really talk about Turing completeness of plain neural networks, they cannot be Turing complete because they just transform fixed length input into fixed length output -- a Turing complete model of computation must be able to operate with arbitrarily large input and output. In theory we can replace any neural network with logic circuit or even just plain lookup table. Significance of neural networks doesn't lie in their computational power but rather in their efficiency, i.e. a relatively small and simple neural network may replace what would otherwise be an enormously large and complicated circuit.
27. two (or txq); The cipher offsets each letter by its position.
28. *log2(n)*; Binary search works by splitting the data in half, then moving inside the half which contains the searched item, recursively splitting that one in half again and so on -- for this the algorithm will perform at worst as many steps as how many times we can divide the data in halves which is what base 2 logarithm tells us.
29. Yes, a false statement implies anything.
30. The main difference against symmetric cryptography is we have two keys instead of one, one (private) for encrypting and one (public) for decrypting -- neither key can be used for the other task. Therefore encryption and decryption processes differ greatly (while in symmetric cryptography it's essentially the same, using the same key, just in reversed way), the problem looks different in one direction that the other, hence it is called *asymmetric*.
31. It's not the distance from the Sun (the distance doesn't change that much and it also wouldn't explain why opposite hemispheres have opposite seasons) but the tilted Earth axis -- the tilt changes the maximum height to which the Sun rises above any specific spot and so the angle under which it shines on the that spot; the [cosine](cos.md) of this angle says how much energy the place gets from the Sun (similarly to how we use cosine to determine how much light is reflected off of a surface in [shaders](shader.md)).
32. 4 and 13, solution: make a table, columns are first integer, rows are second (remember, both *P* and *S* can be making their own table like this too). Cross out whole bottom triangle (symmetric values). *P* doesn't know the numbers, so cross out all combinations of two primes (he would know such numbers as they have only a unique product). *S* knew *P* didn't know the numbers, so the sum also mustn't be a sum of two primes (if the sum could be written as a prime plus prime, *S* couldn't have known that *P* didn't know the numbers, the numbers may have been those two primes and *P* would have known them). This means you can cross out all such numbers -- these are all bottom-left-to-top-right diagonals that go through at least one already crossed out number (combination of primes), as these diagonal have constant sum. Now *P* has a table like this with relatively few numbers left -- if he now leaves in only the numbers that make the product he knows, he'll very likely be left with only one combination of numbers -- there are still many combinations like this, but only the situation when the numbers are set to be 4 and 13 allows *S* to also deduce the numbers after *P* declares he knows the numbers -- this is because *S* knows the combination lies on one specific constant-sum diagonal and 4-13 lie on the only diagonal that in this situation has a unique product within the reduced table. So with some other combinations *P* could deduce the numbers too, but only with 4-13 *S* can finally say he knows them too.
33. yes
10. *2 * N*. We can multiply the greatest values: *(2^N - 1) * (2^N - 1) = 2^(2 * N) - 2^(N + 1) + 1*; The greatest term *2^(2 * N)* in binary is 1 with *N * 2* zeros after it, subtracting *(2^(N + 1) - 1)* will always definitely shorten this number by at least one bit (1000... minus anything non-zero will shorten the number). So at most we will need *2 * N* bits for the result, but we can't use fewer because for example 11 * 11 = 1001 -- in this case fewer than 2 * 2 = 4 bits wouldn't suffice. So in general we need *2 * N* bits.
11. two (try it, see coin rotation paradox)
12. [capitalism](capitalism.md)
13. B00B5
14. It's not because of the distance from the [Earth](earth.md), the force of gravity is practically the same there (from the Earth's perspective they're really not significantly far away, even the Moon still feels Earth's gravity very strongly so that it doesn't fly away). It's because they are orbiting the Earth, the path they are taking makes them constantly be in a kind of free fall while also preventing them from hitting the Earth (similarly to a comet who is kind of falling towards the Earth but just narrowly misses it, the orbital path of ISS is just much closer to being a circle than an ellipse). I.e. they feel the same kind of weightlessness you will feel in an elevator that's falling down.
15. *(2 * r * 314) / 100*
16. [GPL](gpl.md), LGPL, AGPL, [MIT](mit.md), BSD, Apache, [CC0](cc0.md), unlicense, zlib, WTFPL, ...; [vim](vim.md), [emacs](emacs.md), [Acme](acme.md), Geany, vi, Notepad++, Neovim, Kate, nano, gedit, ...; [Debian](debian.md), 9front, [OpenBSD](openbsd.md), [FreeDOS](freedos.md), [Haiku](haiku.md), [Minix](minix.md), ReactOS, [GNU](gnu.md)/[Hurd](hurd.md), V6 [Unix](unix.md), FreeRTOS, ...
17. The number is *N* such that 2^N = 12345678910111213, rounded up, that is ceil(log2(12345678910111213)) = 54.
18. amplifier, voltmeter, analog hardware for [neural networks](neural_net.md), ...; abacus, mechanical calculators such as Curta, Turing machine made of wood, ...
19. no
20. We can use [cross product](cross_product.md) to find a vector perpendicular to two vectors, so we can take e.g. vectors *U = B - A = {4,3,-2}* and *V = C - A = {0,3,-1}*; their cross product is *UxV = {3,4,12} = n* (just look up the formula for cross product). This is the normal, to normalize it we'll first compute its length, i.e. *|n| = sqrt(3^2 + 4^2 + 12^2) = 13* and then divide each component of *n* by this length, i.e. we finally get *n0 = {3/13,4/13,12/13}*. As a check we can compute [dot product](dot_product.md) of this normal with both *U* and *V* and we should get 0 in both cases (meaning the vectors are perpendicular).
21. Infinite loop just performs jumps back to some previous program instruction which can be repeated indefinitely, so unless there is something inside the loop that will lead to a crash after many repetitions, an infinite loop will just make the program run forever. With recursion, however, every successive recursive call allocates a new call frame on the call stack (so that the program knows where to return from the function) which will lead to running out of stack memory and to [stack overflow](stack_overflow.md).
22. no, no, no
23. The walls will collide in 10 seconds during which the fly has been constantly flying with the speed 1 m/s, so it traveled 10 meters.
24. *[recursion](recursion.md)*, *[compression](compression.md)*, *[nigger](nigger.md)*, *[censorship](censorship.md)*, *[faggot](faggot.md)*, *[network](network.md)*.
25. 1:5:27, 2:10:54, 3:16:21, 4:21:49, 5:27:16, 6:32:43, 7:38:10, 8:43:38, 9:49:05, 10:54:32, 12:00:00, you can compute it by making equations for position of the hour and minute hand depending on time, setting them equal and solving, i.e. you get something like *tm / (60 * 12) = (tm / 60) - (tm // 60)* (where *//* is integer division and *tm* is time in minutes); you will find the times are those when minute hand is at multiples of 60 / 11 minues (5:27), i.e. there are 11 such times around the circle and they are evenly spaced.
26. Shading is the process of computing surface color of 3D objects, typically depending on the object's material and done by GPU programs called [shaders](shader.md); shading involves for example applying textures, normal mapping and mainly lighting -- though it can make pixels lighter and darker, e.g. depending on surface normal, it only applies local models of light, i.e. doesn't compute true shadows cast by other objects. On the other hand computing shadows uses some method that works with the scene as a whole to compute true shadowing of objects by other objects.
27. We can't really talk about Turing completeness of plain neural networks, they cannot be Turing complete because they just transform fixed length input into fixed length output -- a Turing complete model of computation must be able to operate with arbitrarily large input and output. In theory we can replace any neural network with logic circuit or even just plain lookup table. Significance of neural networks doesn't lie in their computational power but rather in their efficiency, i.e. a relatively small and simple neural network may replace what would otherwise be an enormously large and complicated circuit.
28. two (or txq); The cipher offsets each letter by its position.
29. *log2(n)*; Binary search works by splitting the data in half, then moving inside the half which contains the searched item, recursively splitting that one in half again and so on -- for this the algorithm will perform at worst as many steps as how many times we can divide the data in halves which is what base 2 logarithm tells us.
30. Yes, a false statement implies anything.
31. The main difference against symmetric cryptography is we have two keys instead of one, one (private) for encrypting and one (public) for decrypting -- neither key can be used for the other task. Therefore encryption and decryption processes differ greatly (while in symmetric cryptography it's essentially the same, using the same key, just in reversed way), the problem looks different in one direction that the other, hence it is called *asymmetric*.
32. It's not the distance from the Sun (the distance doesn't change that much and it also wouldn't explain why opposite hemispheres have opposite seasons) but the tilted Earth axis -- the tilt changes the maximum height to which the Sun rises above any specific spot and so the angle under which it shines on the that spot; the [cosine](cos.md) of this angle says how much energy the place gets from the Sun (similarly to how we use cosine to determine how much light is reflected off of a surface in [shaders](shader.md)).
33. 4 and 13, solution: make a table, columns are first integer, rows are second (remember, both *P* and *S* can be making their own table like this too). Cross out whole bottom triangle (symmetric values). *P* doesn't know the numbers, so cross out all combinations of two primes (he would know such numbers as they have only a unique product). *S* knew *P* didn't know the numbers, so the sum also mustn't be a sum of two primes (if the sum could be written as a prime plus prime, *S* couldn't have known that *P* didn't know the numbers, the numbers may have been those two primes and *P* would have known them). This means you can cross out all such numbers -- these are all bottom-left-to-top-right diagonals that go through at least one already crossed out number (combination of primes), as these diagonal have constant sum. Now *P* has a table like this with relatively few numbers left -- if he now leaves in only the numbers that make the product he knows, he'll very likely be left with only one combination of numbers -- there are still many combinations like this, but only the situation when the numbers are set to be 4 and 13 allows *S* to also deduce the numbers after *P* declares he knows the numbers -- this is because *S* knows the combination lies on one specific constant-sum diagonal and 4-13 lie on the only diagonal that in this situation has a unique product within the reduced table. So with some other combinations *P* could deduce the numbers too, but only with 4-13 *S* can finally say he knows them too.
34. yes
## Other

@ -9,8 +9,20 @@ Both types are furthermore prone to falling a victim to [privacy](privacy.md) ob
Type A/B fails are the "great filter" of the rare kind of people who show a great potential for adhering to LRS. It may be due to the modern western culture that forces a [right](right.md)-[pseudoleft](pseudoleft.md) false dichotomy that even those showing a high degree of non-conformance eventually slip into the trap of being caught by one of the two poles. These two fails seem to be a manifestation of an individual's true motives of [self interest](self_interest.md) which is culturally fueled with great force -- those individuals then try to not conform and support non-mainstream concepts like free culture or sucklessness, but eventually only with the goal of self interest. It seems to be extremely difficult to abandon this goal, much more than simply non-conforming. Maybe it's also the subconscious knowledge that adhering completely to LRS means an extreme loneliness; being type A/B fail means being a part of a minority, but still a having a supportive community, not being completely alone.
However these kinds of people may also pose a hope: if we could educate them and "fix their failure", the LRS community could grow rapidly. If realized, this step could even be seen as the main contribution of LRS -- uniting the misguided rightists and pseudoleftists by pointing out errors in their philosophies (errors that may largely be intentionally forced by the system anyway exactly to create the hostility between the non-conforming, as a means of protecting the system).
Even if someone has quite based views, he will 100% commit at least one of the following fatal errors:
- Even if he calls himself a "[pacifist](pacifism.md)", he will 100% make a "self defense" exception to this rule, which means he is actually not a pacifist, just wants to have that label.
- He'll support [privacy](privacy.md)/[security](security.md)/encryption, a form of [censorship](censorship.md) going against freedom of [information](information.md).
- He'll engage in [fight culture](fight_culture.md), will call his endeavor a "fight" or "battle" and by that will be on the edge of using violence or immoral means to "win" this fight.
- He'll be accepting [heroes and leader](hero_culture.md), i.e. social hierarchy, cults of personality and fascism.
- He will say he's not a nationalist but will support a "healthy" level of [nationalism](nationalism.md) :D
- He will oppose [defeatism](defeatism.md), [cynicism](cynicism.md), pessimism etc.
- He will think that [pedophilia](pedophilia.md) is bad and that pedophiles should be killed or at least "treated".
- ...
A true LRS supporter mustn't fail at any of the above given points.
However these kinds of people may also pose a hope: if we could educate them and "fix their failure", the LRS community could grow rapidly. If realized, this step could even be seen as the main contribution of LRS -- uniting the misguided rightists and pseudoleftists by pointing out errors in their philosophies (errors that may largely be intentionally forced by the system anyway exactly to create the hostility between the non-conforming, as a means of protecting the system).
```

@ -40,11 +40,13 @@ See the article on [less retarded society](less_retarded_society.md), it contain
### So is there a whole community here or what? Do you have forums or anything?
Well, firstly LRS by [anarchist](anarchism.md) principles avoids establishing a centralized community with things such as platforms, senior members, moderators, bureaucracy, codified rules etc. Every nice thing that went this way turned to shit once it became more popular and grew, corruption always appears and prevails (see [Wikipedia](wikipedia.md), [GNU](gnu.md)/FSF, [Linux](linux.md) etc.). So we rather aim for a community of decentralized, loosely associated individuals and small entities with greatly overlapping sets of values rather than any organizations etc. So rather think something like many people with their own websites referring and linking to each other.
Well, firstly LRS by [anarchist](anarchism.md) principles avoids establishing a centralized community with things such as platforms, senior members, moderators, bureaucracy, codified rules etc. Every nice thing that went this way turned to shit once it became more popular and grew, corruption always appears and prevails (see [Wikipedia](wikipedia.md), [GNU](gnu.md)/[FSF](fsf.md), [Linux](linux.md) etc.). So we rather aim for a community of decentralized, loosely associated individuals and small entities with greatly overlapping sets of values rather than any organizations etc. So rather think something like many people with their own websites referring and linking to each other.
At the moment this wiki/movement/ideology/etc. is basically me ([drummyfish](drummyfish.md)). There are a handful of people who told me they like this wiki a lot, share many of my views and values and who I am in regular contact with mostly over email. Then there are quite a few people who like this to various degree and contact me from time to time, many just write me a one time email, suggest something, thank me, suggest I kill myself etc., from which I estimate there is a non-negligible number of lurkers (given that only 1 in relatively many readers will actually write me an email).
At the moment this wiki/movement/ideology/etc. is basically me ([drummyfish](drummyfish.md)), with about one friend who I would say is a pure LRS supporter and AFAIK shares all the important views. There are a handful of people who told me they like this wiki a lot, share many of my views and values and who I am in regular contact with mostly over email. Then there are quite a few people who like this to various degree and contact me from time to time, many just write me a one time email, suggest something, thank me, suggest I kill myself etc. -- currently I would count these in dozens, from which I estimate there is a non-negligible number of lurkers (given that only 1 in relatively many readers will actually write me an email).
A forum, mailing list or something would possibly be nice, but so far no one made any and I would be hesitant to call it an "official" LRS forum anyway, exactly to prevent growing into some kind of corrupt "democratic internet community" of which there are too many nowadays. I am also pretty anxious of collaborating with someone, making hard connections to other project etc. So if you'd like to make a LRS-focused forum (or anything similar), it would be best if you just make it your own thing -- of course I'll be very glad if you refer to my stuff etc., I just won't be able to keep up with another project, I will only be able to be a regular user of your forum.
I don't have any web analytics set up, I could probably dig up at least number of site downloads or something but I don't even look at that, I don't want to aim for popularity.
A forum, mailing list or something would possibly be nice, so far I've only experimented with more or less private text boards for closer friends and similar things, no one made anything bigger yet and I would be hesitant to call it an "official" LRS forum anyway, exactly to prevent growing into some kind of corrupt "democratic internet community" of which there are too many nowadays. I am also absolute shit at running any "community" (I tried several times, always failed) and also pretty anxious of collaborating with someone, making hard connections to other project etc. So if you'd like to make a LRS-focused forum (or anything similar), it would be best if you just make it your own thing -- of course I'll be very glad if you refer to my stuff etc., I just won't be able to keep up with another project, play an admin or something, I will only be able to be a regular user of that forum.
### Why the angry and aggressive tone, can't you write in a nicer way, especially when you advocate love etc.?

@ -137,13 +137,13 @@ Trademarks have been known to cause problems in the realm of libre games, for ex
Of [proprietary](proprietary.md) video games we should mention especially those that to us have [clonning](clone.md) potential. [Doom](doom.md) (possibly also [Wolfenstein 3d](wolf3d.md)) and other 90s shooters such as [Duke Nukem 3D](duke3d.md), Shadow Warrior and [Blood](blood.md) (the great 90s [boomer shooters](boomer_shooter.md)) were excellent. [Trackmania](trackmania.md) is a very interesting racing game like no other, based on kind of [speedrunning](speedrun.md), [easy to learn, hard to master](easy_to_learn_hard_to_master.md), very entertaining even solo. The Witness was a pretty rare case of a good newer game, set on a strange island with puzzles the player learns purely by observation. [The Elder Scrolls](tes.md) (mainly Morrowind, Obvlidion and Skyrim) are very captivating [RPG](rpg.md) games like no other, with extreme emphasis on [freedom](freedom.md) and lore; [Pokemon](pokemon.md) games on [GBC](gbc.md) and [GBA](gba.md) were similar in this while being actually pretty tiny games on small old handhelds. [GTA](gta.md) games also offered a great open world freedom and fun based on violence, sandbox world and great gangster-themed story. Advance Wars was a great turn based strategy on [GBA](gba.md) (and possibly one of the best games on that console), kind of glorified [chess](chess.md) with amazing pixel art graphics. Warcraft III was possibly the best real time strategy game with awesome aesthetics. Its successor, [World of Warcraft](wow.md), is probably the most notable [MMORPG](mmorpg.md) with the same lovely aesthetics and amazing feel that would be worth bringing over to the free world (even if just in 2D or only [text](mud.md)). [Diablo](diablo.md) (one and two) were a bit similar to WoW but limited to singleplayer and a few man multiplayer; there exists a nice libre Diablo clone called [Flare](flare.md) now. Legend of Grimrock (one and two) is another rare case of actually good new take on an old concept of [dungeon crawlers](dungeon_crawler.md). Half Life games are also notable especially for their atmosphere, storyline and lore. [Minecraft](minecraft.md) was another greatly influential game that spawned basically a new genre, though we have now basically a perfect clone called [Minetest](minetest.md). [Dward Fortress](dwarf_fortress.md) is also worth mentioning as the "most complex simulation ever made" -- it would be nice to have a free clone. TODO: more.
[Gamebooks](gamebook.md) -- books that require the reader to participate in the story and make choices executed by jumping to different pages based on given choice -- are worthy of mention as an interesting combination of a [book](book.md) and a game, something similar to computer adventure games -- in gamebooks lies a great potential for creating nice LRS games.
**[Gamebooks](gamebook.md)** -- books that require the reader to participate in the story and make choices executed by jumping to different pages based on given choice -- are worthy of mention as an interesting combination of a [book](book.md) and a game, something similar to computer adventure games -- in gamebooks lies a great potential for creating nice LRS games.
As for the [free (as in freedom)](free_software.md) libre games, let the following be a sum up of some nice games that are somewhat close to [LRS](lrs.md), at least by some considerations.
**Computer games:** [Anarch](anarch.md) and [microTD](utd.md) are examples of games trying to closely follow the [less retarded](lrs.md) principles while still being what we would normally call a computer game. [SAF](saf.md) is a less retarded game library/fantasy console which comes with some less retarded games such as [microTD](utd.md). If you want something closer to the mainstream while caring about freedom, you probably want to check out libre games (but keep in mind they are typically not so LRS and do suck in many ways). Some of the highest quality among them are [Xonotic](xonotic.md), 0 A.D., [openarena](openarena.md), [Freedoom](Freedoom.md), Neverball, SupertuxKart, [Minetest](minetest.md), The Battle for Wesnoth, Blackvoxel etcetc. -- these are usually quite [bloated](bloat.md) though.
**Computer games:** [Anarch](anarch.md) and [microTD](utd.md) are examples of games trying to closely follow the [less retarded](lrs.md) principles while still being what we would normally call a computer game. [SAF](saf.md) is a less retarded game library/fantasy console which comes with some less retarded games such as [microTD](utd.md). If you want something closer to the mainstream while caring about freedom, you probably want to check out libre games (but keep in mind they are typically not so LRS and do suck in many ways). Some of the highest quality among them are [Xonotic](xonotic.md), 0 A.D., [openarena](openarena.md), [Freedoom](Freedoom.md), Neverball, SupertuxKart, [Minetest](minetest.md), The Battle for Wesnoth, Blackvoxel, [Lix](lix.md) etcetc. -- these are usually quite [bloated](bloat.md) though.
As for **non-computer games**: these are usually closer to LRS than any computer game. Many old board games are awesome, including [chess](chess.md), [go](go.md), [shogi](shogi.md), [xiangqi](xiangqi.md), [backgammon](backgammon.md), [checkers](cheskers.md) etc. [Gamebooks](game_book.md) can be very LRS -- they can be implemented both as computer games and non-computer physical books, and can further be well combined with creating a [free universe](free_universe.md). Some card games also, TODO: which ones? :) Pen and pencil games that are amazing include [racetrack](racetrack.md), pen and pencil football etc. Nice real life physics games include [football](football.md), [marble racing](marble_racing.md) etc.
As for **non-computer games**: these are usually closer to LRS than any computer game. Many old board games are awesome, including [chess](chess.md), [go](go.md), [shogi](shogi.md), [xiangqi](xiangqi.md), [backgammon](backgammon.md), [checkers](cheskers.md) etc. [Gamebooks](game_book.md) can be very LRS -- they can be implemented both as computer games and non-computer physical books, and can further be well combined with creating a [free universe](free_universe.md). Some card games also, TODO: which ones? :) Some games traditionally played on computers, such as [sokoban](sokoban.md), can also be played without a computer. Pen and pencil games that are amazing include [racetrack](racetrack.md), pen and pencil football etc. Nice real life physics games include [football](football.md), [marble racing](marble_racing.md) etc.
## See Also

@ -71,6 +71,7 @@ Our society is **[anarcho pacifist](anpac.md) and [communist](communism.md)**, m
- **How do you think it is realistic to achieve abundance of resources for all?** Nowadays it is easily possible to produce enough resources for everyone, i.e. food, electricity, clothing, buildings to live in etc. -- in fact this has been possible for many decades to centuries now, today all the technology for 99% automated production of most basic resources such as food and electricity is available and well tested, it is just kept in private hands for their sole profit. Nowadays our society is putting most of its effort to artificially made up "businesses" that keep the status quo, partly out of social inertia and partly by the (mostly decentralized and to a degree not even self admitted) conspiracy of the rich. Imagine people stop engaging in marketing, market speculation and investing, bureaucracy, public relations, law (copyrights, patents, property laws, taxes, ...), economics, military, meaningless technology (DRM, spyware, cryptocurrency, viruses and antiviruses, ...), artificial meaningless fashion, drug abuse business, organizing political parties, campaigns, unions, counter unions, cartels, strikes, and so on and so forth (this of course doesn't mean hobbies and art should disappear, just unnecessary industries). We will gain millions of people who can help achieve abundance, land that can be used to produce food and build houses to live in (as opposed to skyscrapers, unnecessary factories, parking lots etc.), and we will let go of the immense burden of bullshit business (millions of unnecessary workplaces having to be maintained, millions of people having to commute by car daily, communicate, organize, be watched by employers, ...). People will get healthier, more rested, cooperative and actually passionate about a common goal, as opposed to depressed (needing psychiatrists and antidepressants), lethargic and hostile to each other. Of course this can't happen over night, probably not even over a decade, but we can make the transition slowly, one step at a time and in the meanwhile use rules based e.g. on the following principle: that which is abundant is unlimited for everyone, that which is scarce is equally divided between all. The question is not whether it's possible, but whether we want to do it.
- **Isn't your society unnatural?** In many way yes, it's unnatural just as clothes, medicine, computers or humans living over 70 years are unnatural. Civilization by definition means resisting the cruelness of nature, however our proposed society is to live as much as possible in harmony with the nature and is much more natural than our current society which e.g. pushes sleep deprivation, high consumption of antidepressants, eating disorders, addiction to social networks and so on.
- **Won't people get bored? What will motivate people? If they have everything why would they even get out of bed? Haven't you seen the mouse utopia experiments?** It is a mistake to think that competition and the necessity of making living is the only or even the main driving force of human behavior and creativity (on the contrary, it is usually what makes people commit suicides, i.e. lose the will to live). Human curiosity, playfulness, the joy of collaboration, boredom, sense of altruism, socialization, seeking of life meaning and recognition and many other forces drive our behavior. Ask yourself: why do people have hobbies when no one is forcing them to it? Why don't you bore yourself to death in your spare time? Why don't rich people who literally don't have to work bore themselves to death? Why doesn't your pet dog that's not forced to hunt for food bore himself to death? Maslow's hierarchy of needs tells us that once people fulfill basic needs such as that for obtaining food, they naturally start to pursue higher ones such as that for socializing or doing science or art. Unlike rats in small cages people show interests in seeking satisfaction of higher needs than just food and sex, even those that aren't scientist try to do things such as sports, photography, woodwork or gardening, just for the sake of it. It's not that there would be a lack challenges in our society, just that we wouldn't force arbitrary challenges on people.
- **Why are you [defeatist](defeatism.md)? Don't you think it's just pointless trying to achieve something while believing you already failed?** Firstly being defeated doesn't mean disappearing completely, we know we will fail but we'll leave a seed of something that can't eventually be stopped from growing: LRS is extremely ahead of its time -- not by 50 years or 100 years, but more like several thousand years, maybe millions. Monkeys aim to prevail during their life time and by getting at the top of some kind of mountain or social pyramid, by hoarding X wealth, passing some law, creating some kind of country or whatever -- that's completely worthless animal behavior, we aim to achieve something truly significant and good instead which will take longer than our lifetime and will require behaving without self interest and [competition](competition.md). Just like abacus was the very first step towards inventing today's [computers](computer.md), LRS is in this sense the very first step to inventing a truly good society. It is first by completely letting go of all [bullshit](bullshit.md), every single one, including things like "winner mentality", which is why there are almost no supporters, everyone [fails](fail_ab.md) by keeping to the old ways at least in some points. We aim for truth and good, not for winning -- giving up the goal of winning makes us able to take the moral decision in situations when we have to choose between winning and behaving correctly.
- **Without violence, how will you prevent capitalists from continuing capitalism?** As also stated e.g. in the [Trash Magic](trash_magic.md) manifesto, we can simply destroy the economy by refusing to participate in it -- a capitalist cannot sell a thing that's abundant, available everywhere for free, he can't sell services if those services are provided for free. Capitalism is depending on the fact that those who it abuses have nowhere to run away to, once enough of us start building such place and provide a bette place to live, suddenly more people will leave the capitalist system and even if some capitalists remain, they won't be able to do anything, economy won't work anymore.
- **If you say it's possible, why wasn't it done before?** Firstly big and small scale communities working on [anarchist](anarchism.md), [communist](communism.md) and peaceful principles have existed for a long time in environments that allow it, e.g. those that have abundance of resources. Globally society couldn't reach this state because only until recently we lacked the technology to provide such an ideal environment globally or even on a scale of a whole country, i.e. only until recently we have been forced by the nature to compete for basic resources such as food and space to live. However with computers, factories, high level of automation and other technology and knowledge we posses, we now have, for the first time in history, the capability to establish an environment with abundance of resources for everyone on the planet. Nowadays only social inertia in the form of [capitalism](capitalism.md) is ARTIFICIALLY keeping scarcity and social competition in place -- getting rid of this obsolete system is now needed to allow establishment of our ideal society. Part of the answer to this question may also be that reaching such an advanced state of society requires long development, technological, cultural and intellectual, just as many other things (things like abolishment of death sentence or even accepting the existence of irrational numbers all required a long time of cultural development).
- **How will you make people work?** We won't, in an ideal society people don't have to work, all work is done by machines -- that's the point of creating machines in the first place. In practice there may in a foreseeable future be the need for small amounts of human work such as overlooking the machines, but the amount of work can be so small that volunteers will easily handle it -- especially with people having no burden of working day jobs there should be no shortage of volunteers. Remember that by abandoning the current system 99% of "bullshit work" (marketing, lawyers, bureaucracy, fashion, ...) will disappear.

@ -33,6 +33,7 @@ There are many terms that are very similar and can many times be used interchang
- **[computer language](computer_language.md)** vs **[programming language](programming_language.md)**
- **[computer science](compsci.md)** vs **[information technology](it.md)** vs **[informatics](informatics.md)** vs **[cybernetics](cybernetics.md)** vs **[computer engineering](computer_engineering.md)** vs **[software engineering](software_engineering.md)**
- **[concurrency](concurrency.md)** vs **[parallelism](parallelism.md)** vs **[quasiparallelism](quasiparallelism.md)** vs **[distribution](distributed.md)**
- **[conjecture](conjecture.md)** vs **[hypothesis](hypothesis.md)** vs **[theory](theory.md)**
- **[constant](constant.md)** vs **[literal](literal.md)**
- **[coding](coding.md)** vs **[programming](programming.md)** vs **[software engineering](software_engineering.md)**
- **[codec](codec.md)** vs **[container format](container_format.md)**
@ -74,7 +75,6 @@ There are many terms that are very similar and can many times be used interchang
- **[geek](geek.md)** vs **[nerd](nerd.md)**
- **[GNU](gnu.md)/Linux** vs **[Linux](linux.md)**
- **[gradient noise](gradient_noise.md)** vs **[value noise](value_noise.md)**
- **[hypothesis](hypothesis.md)** vs **[theory](theory.md)** vs **[conjecture](conjecture.md)**
- **[ID](id.md)** vs **[token](token.md)** vs **[hash](hash.md)** vs **[handle](handle.md)** vs **[identifier](identifier.md)**
- **[infinite](infinity.md)** vs **[arbitrarily large/unbounded](unbounded.md)**
- **[Internet](internet.md)** vs **[web](web.md)**

@ -0,0 +1,5 @@
# Proof
TODO
**Why do we need mathematical proof if something is obvious?** Well, mathematicians need to be most precise and proof enables them to discover absolute truths without any shadow of a doubt (a luxury most other scientists don't have), so they set it as a standard because many things that seem obvious aren't in fact so -- for example numbers 31, 331, 3331, 33331, 333331, 3333331 and 33333331 are all [primes](prime.md) so you might think by this pattern also 333333331 will be a prime, but that's not the case because 333333331 = 19607843 * 17. Sometimes patterns deceive us, mathematicians only take proof for the ultimate solution. But indeed e.g. the industry sometimes accepts even unproven but highly likely conjectures to hold, e.g. that [P doesn't equal NP](p_vs_np.md), simply for economic reasons (the chance of being wrong is very low and profitability of being right is high).

File diff suppressed because it is too large Load Diff

@ -2,7 +2,7 @@
Reddit, established in 2005, marketing itself as the "frontpage of the [Internet](internet.md)", was an extremely successful, popular and quite nice website for sharing links, ideas and leading discussions about them, before it got absolutely destroyed by [capitalists](capitalism.md) right before they year 2020. It used to be a forum with great amount of [free speech](free_speech.md) and with quite a nice, plain user interface; in a swift turn it however turn completely over and is now among the most [censored](censorship.dm) sites on the whole [web](www.md), a place toxic with [SJW](sjw.md) fumes and its site is literally unusable for the amount of [bloat](bloat.md) and [ads](marketing.md). Never visit the site if you don't have to.
Reddit users are the kind of "moderate rebels", the sort of absolutely insignificant people who think they're doing heroic acts by setting a profile picture or sharing a mildly unpopular opinion on facebook, like "I actually think piracy is not bad! Take this corporations!". Very infamous are for example reddit [atheists](atheism.md) who are very enlightened by Neil De Grass documentaries, they don't understand how a medieval peasant could believe in irrational things, conform to orthodox preaching and participate in witch hunts, but if you suggest [removing the age of consent](pedophilia.md) or opposing [feminism](feminism.md) they pick up the torches and go full angry mob yelling "Stone that heretic to death!" That's because they're just trained to react to [key words](shortcut_thinking.md), they can't do much more.
Reddit users are the kind of "moderate rebels", the sort of absolutely insignificant people who think they're doing heroic acts by setting a profile picture or sharing a mildly unpopular opinion on facebook, like "I actually think piracy is not bad! Take this corporations!". Nowadays the users are exclusively [SJW](sjw.md), all the popular post are attempts at [virtue signaling](virtue_signaling.md) and circlejerking, you'll find annoying propaganda inserted into absolutely unrelated subreddits, e.g. in a subreddit for sharing interesting pictures the all time top post will be something like a motivational tweet by Zelenski or some other gay (of course there are now annoying sponsored posts inserted in too, literally makes you wanna kill yourself). Very infamous are for example reddit [atheists](atheism.md) who are very enlightened by Neil De Grass documentaries, they don't understand how a medieval peasant could believe in irrational things, conform to orthodox preaching and participate in witch hunts, but if you suggest [removing the age of consent](pedophilia.md) or opposing [feminism](feminism.md) they pick up the torches and go full angry mob yelling "Stone that heretic to death!" That's because they're just trained to react to [key words](shortcut_thinking.md), they can't do much more.
Before the infamous censorship wave circa 2019 reddit used to be quite a beautiful place to behold, truly an experience unlike anything else (maybe a bit comparable to [Usenet](usenet.md)). { I used to actually love reddit, sad it died. ~drummyfish } It's hard to sum up to someone who didn't experience reddit back then, it found a great mix of excellent ideas that just worked great together, a combination mainly of [free speech](free_speech.md) (that's completely gone now, it's almost comical to remember reddit used to be one of the "bastions of free speech" back then), nice minimalist user interface (also gone now), having many subforums for all kinds of niche communities, even the smallest you can imagine (like people who like round objects or people who try to talk without using some specific letter because they hate it etc.), sharing of [interesting](interesting.md) links and/or ideas, having a non-traditional comment system structured as a [tree](tree.md) and letting people vote on both posts and individual comments to bring up the ones they found most valuable (i.e. informative, funny, interesting etc.). Users also gathered so called "karma", a kind of points they cumulated for getting upvotes, so users had some sort of "level" -- the more karma, the more "elite" the user was (users could also gift so called *reddit gold* for excellent posts, basically giving the user a free premium account for a while); this not once led to so called *karma whoring*. Anyway, reddit was like an whole new Internet within the Internet, it was just a place where you could spend hours searching and discovering things you didn't even know you wanted to find -- any hobby or any detail you had a morbid curiosity about you could dig up on reddit, you could find large interviews with ambulance drivers who told fascinating stories they saw during their careers, schizophrenic people answering questions like "can you walk through the imaginary people you see?", discussions like "what's the weirdest thing that happened to you as a beekeeper", people digging out extremely weird videos on YouTube, solving mysteries in video games, even famous people like Barak Obama took part in reddit IAMA interviews and just answered all the weird questions the internet asked them. There were also porn communities and controversial communities like *r/watchpeopledie* where users just shared videos of people dying { This was my favorite, seeing people die and suffer was actually what led me to completely reject all violence later on in my life. ~drummyfish }. This was sort of the vanilla reddit experience. However, as they always do, money and [pseudoleftists](pseudoleft.md) soon swiftly killed all of this, a few greedy faggots just destroyed it all so that they could get even richer than they already were.

@ -1,6 +1,6 @@
# Social Justice Warrior
Social [justice](justice.md) [warrior](fight_culture.md) (SJW) is an especially active, [toxic](toxic.md) and aggressive kind of [pseudoleftist](pseudoleft.md) (a kind of [fascist](fascism.md)) that tries to [fight](fight_culture.md) (nowadays mostly on the Internet but eventually also as an a member of a physical execution squad) anyone opposing or even just slightly criticizing the mainstream pseudoleftist gospel such as the [feminism](feminism.md) and [LGBT](lgbt.md) propaganda. SJWs divide people rather than unite them, they operate on the basis of hate, revenge and mass hysteria and as we know, hate spawns more hate and [fear](fear_culture.md), they fuel a war mentality in society. They support hard [censorship](censorship.md) (forced [political correctness](political_correctness.md)) and bullying of their opposition, so called [cancelling](cancel_culture.md), and also such retardism as [sanism](sanism.md) and whatnot. [Wokeism](woke.md) is yet more extreme form of SJWery that doesn't even anymore try to hide its militant ambitions.
Social [justice](justice.md) [warrior](fight_culture.md) (SJW) is an especially active, [toxic](toxic.md) and aggressive kind of [pseudoleftist](pseudoleft.md) (a kind of [fascist](fascism.md)) that tries to [fight](fight_culture.md) (nowadays mostly on the Internet but eventually also as an a member of a physical execution squad) anyone opposing or even just slightly criticizing the mainstream pseudoleftist gospel such as the [feminism](feminism.md) and [LGBT](lgbt.md) propaganda. Their personality is practically always [narcissistic](egoism.md), they leech controversial topics (but not as controversial to actually be in significant minority) to get attention that they crave more than anything else, they spend almost all time [virtue signaling](virtue_signaling.md) on [social networks](social_network.md). SJWs divide people rather than unite them, they operate on the basis of hate, revenge and mass hysteria and as we know, hate spawns more hate and [fear](fear_culture.md), they fuel a war mentality in society. They support hard [censorship](censorship.md) (forced [political correctness](political_correctness.md)) and bullying of their opposition, so called [cancelling](cancel_culture.md), and also such retardism as [sanism](sanism.md) and whatnot. [Wokeism](woke.md) is yet more extreme form of SJWery that doesn't even anymore try to hide its militant ambitions.
SJWs say the term is pejorative. We say it's not pejorative enough xD

@ -2,7 +2,7 @@
{ I made a simple tangram game in [SAF](saf.md), look it up if you want to play some tangram. ~drummyfish }
Tangram is a simple, yet greatly amusing old puzzle [game](game.md) in which the player tries to compose a given shape (of which only silhouette is seen) out of given basic geometric shapes such as triangles and squares. It is a rearrangement puzzle. Many thousands of shapes can be created from just a few geometric shapes, some looking like animals, people and man made objects. This kind of puzzles have been known for a long time -- the oldest recorded tangram is Archimedes' box (square divided into 14 pieces), over 2000 years old. In general any such puzzle is called tangram, i.e. it is seen as a family of puzzle games, however tangram may also stand for **modern tangram**, a one with 7 polygons which comes from 18th century China and which then became very popular also in the west and even caused a so called "tangram craze" around the year 1818. Unless mentioned otherwise, we will talk about this modern version from now on.
Tangram is a simple, yet greatly amusing old puzzle [game](game.md) in which the player tries to compose a given shape (of which only silhouette is seen) out of given basic geometric shapes such as [triangles](triangle.md) and [squares](square.md). It is a rearrangement puzzle, a 2D game that's in principle similar e.g. to [Soma cube](soma_cube.md), a game in which, similarly, one makes shapes out of basic parts, but this the shapes are three dimensional. In Tangram many thousands of shapes can be created from just a few geometric shapes, some looking like animals, people and man made objects. This kind of puzzles have been known for a long time -- the oldest recorded tangram is Archimedes' box (square divided into 14 pieces), over 2000 years old. In general any such puzzle is called tangram, i.e. it is seen as a family of puzzle games, however tangram may also stand for **modern tangram**, a one with 7 polygons which comes from 18th century China and which then became very popular also in the west and even caused a so called "tangram craze" around the year 1818. Unless mentioned otherwise, we will talk about this modern version from now on.
```
_________________
@ -64,4 +64,8 @@ Tangram usually comes as a box with the 7 pieces and a number of cards with shap
- Be careful to make the exact shape you see, sometimes it is possible to make a very similar looking shape that has just a tiny bit different proportions e.g. by rotating the parallelogram.
- ...
TODO: some PD shapes, math, stats, ...
TODO: some PD shapes, math, stats, ...
## See Also
- [Soma cube](soma_cube.md)

File diff suppressed because one or more lines are too long

@ -3,9 +3,9 @@
This is an autogenerated article holding stats about this wiki.
- number of articles: 576
- number of commits: 770
- total size of all texts in bytes: 3655408
- total number of lines of article texts: 28249
- number of commits: 771
- total size of all texts in bytes: 3657368
- total number of lines of article texts: 28254
- number of script lines: 262
- occurences of the word "person": 8
- occurences of the word "nigger": 73
@ -35,9 +35,9 @@ longest articles:
top 50 5+ letter words:
- which (2095)
- there (1584)
- people (1376)
- which (2098)
- there (1586)
- people (1377)
- other (1143)
- example (1107)
- software (1043)
@ -50,45 +50,55 @@ top 50 5+ letter words:
- computer (717)
- would (716)
- language (707)
- simple (689)
- being (683)
- simple (690)
- being (684)
- numbers (674)
- things (672)
- without (637)
- function (630)
- programming (629)
- something (619)
- something (620)
- however (595)
- these (593)
- different (583)
- different (584)
- world (560)
- system (550)
- should (536)
- games (533)
- point (522)
- point (523)
- doesn (518)
- society (515)
- though (495)
- memory (492)
- while (482)
- drummyfish (481)
- using (477)
- while (483)
- drummyfish (482)
- using (479)
- technology (473)
- still (465)
- still (466)
- course (463)
- similar (458)
- similar (459)
- simply (445)
- possible (444)
- https (435)
- really (414)
- computers (408)
- extremely (405)
- always (400)
- always (401)
- value (397)
latest changes:
```
Date: Thu Apr 18 20:28:51 2024 +0200
hash.md
linux.md
lrs_dictionary.md
open_source.md
random_page.md
science.md
tattoo.md
wiki_pages.md
wiki_stats.md
Date: Wed Apr 17 19:56:46 2024 +0200
exercises.md
how_to.md
@ -112,18 +122,6 @@ Date: Tue Apr 16 23:06:10 2024 +0200
marxism.md
minesweeper.md
minimalism.md
often_misunderstood.md
people.md
permacomputing_wiki.md
random_page.md
trash_magic.md
trom.md
usa.md
venus_project.md
wiby.md
wiki_pages.md
wiki_stats.md
Date: Mon Apr 15 17:27:45 2024 +0200
```
most wanted pages:
@ -152,7 +150,7 @@ most wanted pages:
most popular and lonely pages:
- [lrs](lrs.md) (275)
- [capitalism](capitalism.md) (205)
- [capitalism](capitalism.md) (206)
- [c](c.md) (203)
- [bloat](bloat.md) (198)
- [free_software](free_software.md) (163)
@ -162,8 +160,8 @@ most popular and lonely pages:
- [kiss](kiss.md) (92)
- [modern](modern.md) (89)
- [computer](computer.md) (89)
- [linux](linux.md) (87)
- [minimalism](minimalism.md) (86)
- [linux](linux.md) (86)
- [programming](programming.md) (80)
- [free_culture](free_culture.md) (80)
- [fun](fun.md) (78)

Loading…
Cancel
Save