This commit is contained in:
Miloslav Ciz 2024-03-08 16:56:58 +01:00
parent f920115b91
commit 75f99e7b81
69 changed files with 2008 additions and 1791 deletions

View file

@ -384,4 +384,4 @@ Here is a list of some acronyms:
## See Also
- [LRS dictionary](lrs_dicitonary.md)
- [LRS dictionary](lrs_dictionary.md)

View file

@ -153,7 +153,7 @@ This algorithm is however not very efficient and could be [optimized](optimizati
## Study of Algorithms
Algorithms are the essence of [computer science](scompsci.md), there's a lot of theory and knowledge about them.
Algorithms are the essence of [computer science](compsci.md), there's a lot of theory and knowledge about them.
[Turing machine](turing_machine.md), a kind of mathematical bare-minimum computer, created by [Alan Turing](turing.md), is the traditional formal tool for studying algorithms, though many other [models of computation](model_of_computation.md) exist. From theoretical computer science we know not all problems are [computable](computability.md), i.e. there are problems unsolvable by any algorithm (e.g. the [halting problem](halting_problem.md)). [Computational complexity](computational_complexity.md) is a theoretical study of resource consumption by algorithms, i.e. how fast and memory efficient algorithms are (see e.g. [P vs NP](p_vs_np.md)). [Mathematical programming](mathematical_programming.md) is concerned, besides others, with optimizing algorithms so that their time and/or space complexity is as low as possible which gives rise to algorithm design methods such as [dynamic programming](dynamic_programming.md) (practical [optimization](optimization.md) is a more pragmatic approach to making algorithms more efficient). [Formal verification](formal_verification.md) is a field that tries to mathematically (and sometimes automatically) prove correctness of algorithms (this is needed for critical software, e.g. in planes or medicine). [Genetic programming](generic_programming.md) and some other methods of [artificial intelligence](ai.md) try to automatically create algorithms (*algorithms that create algorithms*). [Quantum computing](quantum.md) is concerned with creating new kinds of algorithms for quantum computers (a new type of still-in-research computers). [Programming language](programming_language.md) design is the art and science of creating languages that express computer algorithms well.

View file

@ -8,7 +8,7 @@ A great many things about anarchism are explained in the text *An Anarchist FAQ*
Anarchism is a wide term and encompasses many flavors such as [anarcho communism](ancom.md), [anarcho pacifism](anpac.md), [anarcho syndicalism](ansyn.md), [anarcho primitivism](anprim.md) or [anarcho mutualism](anmut.md). Some of the branches disagree on specific questions, e.g. about whether [violence](violence.md) is ever justifiable, or propose different solutions to issues such as organization of society, however **all branches of anarchism are socialist** and all aim for **elimination of social hierarchy** such as social classes created by wealth, jobs and weapons, i.e. anarchism opposes [state](state.md) (e.g. police having power over citizens) and [capitalism](capitalism.md) (employers exploiting employees, corporations exploiting consumers etc.).
There exist many **fake, pseudoanarchist ideologies** such as ["anarcho" capitalism](ancap.md) (which includes e.g. so caleed [crypto "anarchism"](crypto_anarchism.md)) that deceive by their name despite by their very definition NOT fitting the definition of anarchism (just like [Nazis](nazi.md) called themselves [socialists](socialism.md) despite being the opposite). Also the "new", western [pseudoleftist](pseudoleft.md) "anarchism" is NOT true anarhism, e.g. ["anarcha" feminism](anfem.md) is just fascist bullshit. Anything individualist, connected to [feminism](feminism.md), [LGBT](lgbt.md) etc. is not true anarchism. The propaganda also tries to deceive the public by calling various violent criminals anarchists, even though they very often can't fit the definition of a true anarchist.
There exist many **fake, pseudoanarchist ideologies** such as ["anarcho" capitalism](ancap.md) (which includes e.g. so caleed [crypto "anarchism"](crypto_anarchism.md)) that deceive by their name despite by their very definition NOT fitting the definition of anarchism (just like [Nazis](nazi.md) called themselves [socialists](socialism.md) despite being the opposite). Also the "new", western [pseudoleftist](pseudoleft.md) "anarchism" is NOT true anarchism, e.g. ["anarcha" feminism](anfem.md) is just fascist bullshit. Anything individualist, connected to [feminism](feminism.md), [LGBT](lgbt.md) etc. is not true anarchism. The propaganda also tries to deceive the public by calling various violent criminals anarchists, even though they very often can't fit the definition of a true anarchist.
## See Also

View file

@ -2,7 +2,7 @@
Antialiasing (AA) means preventing [aliasing](aliasing.md), i.e. distortion of signal (images, audio, video, ...) caused by discrete sampling. Most people think antialiasing stands for "smooth edges in video game graphics", however that's a completely inaccurate understanding of antialiasing: yes, one of the most noticeable effects of 3D graphics antialiasing for a common human is that of having smooth edges, but smooth edges are not the primary goal, they are not the only effect and they are not even the most important effect of antialisng. Understanding antialiasing requires understanding what aliasing is, which is not a completely trivial thing to do (it's not the most difficult thing in the world either, but most people are just afraid of mathematics, so they prefer to stick with "antialiasing = smooth edges" simplification).
The basic **sum up** is following: aliasing is a negative effect which may arise when we try to sample (capture) continuous signals potentially containing high frequencies (the kind of "infinitely complex" data we encounter in real world such as images or sounds) in discrete (non-continuous) ways by capturing the signal values at specific points in time (as opposed to capturing [integrals](integral.md) of intervals), i.e. in ways native and natural to [computers](computer.md). Note that the aliasing effect is mathematical and is kind of a "punishment" for our "[cheating](cheating.md)" which we do by trying to simplify capturing of very complex signals, i.e. aliasing has nothing to do with [noise](noise.md) or recording equipment imperfections, and it may occur not only when recording real world data but also when simulating real world, for example during 3D graphics rendering (which simulates capturing real world with a camera). A typical example of such aliasing effect is a video of car wheels rotating very fast (with high frequency) with a relatively low FPS camera, which then seem to be rotating very slowly and in opposite direction -- a high frequency signal (fast rotating wheels) caused a distortion (illusion of wheels rotating slowly in opposite direction) due to simplified discrete sampling (recording video as a series of photographs taken at specific points in time in relatively low FPS). Similar undesirable effects may appear e.g. on high resolution textures when they're scaled down on a computer screen (so called Moiré effect), but also in sound or any other data. Antialiasing exploits the mathematical NyquistShannon sampling theorem that says that aliasing cannot occur when the sampling frequency is high enough relatively to the highest frequency in the sampled data, i.e. antialising tries to prevent aliasing effects typically by either preventing high frequency from appearing in the sampled data (e.g. blurring textures, see [MIP mapping](mipmap.md)) or by increasing the sampling frequency (e.g. [multisampling](multisampling.md)). As a side effect of better sampling we also get things such as smoothly rendered edges etc.
The basic **sum up** is following: aliasing is a negative effect which may arise when we try to sample (capture) continuous signals potentially containing high frequencies (the kind of "infinitely complex" data we encounter in real world such as images or sounds) in discrete (non-continuous) ways by capturing the signal values at specific points in time (as opposed to capturing [integrals](integral.md) of intervals), i.e. in ways native and natural to [computers](computer.md). Note that the aliasing effect is mathematical and is kind of a "punishment" for our "[cheating](cheating.md)" which we do by trying to simplify capturing of very complex signals, i.e. aliasing has nothing to do with [noise](noise.md) or recording equipment imperfections, and it may occur not only when recording real world data but also when simulating real world, for example during 3D graphics rendering (which simulates capturing real world with a camera). A typical example of such aliasing effect is a video of car wheels rotating very fast (with high frequency) with a relatively low FPS camera, which then seem to be rotating very slowly and in opposite direction -- a high frequency signal (fast rotating wheels) caused a distortion (illusion of wheels rotating slowly in opposite direction) due to simplified discrete sampling (recording video as a series of photographs taken at specific points in time in relatively low FPS). Similar undesirable effects may appear e.g. on high resolution textures when they're scaled down on a computer screen (so called Moiré effect), but also in sound or any other data. Antialiasing exploits the mathematical NyquistShannon sampling theorem that says that aliasing cannot occur when the sampling frequency is high enough relatively to the highest frequency in the sampled data, i.e. antialiasing tries to prevent aliasing effects typically by either preventing high frequency from appearing in the sampled data (e.g. blurring textures, see [MIP mapping](mipmap.md)) or by increasing the sampling frequency (e.g. [multisampling](multisampling.md)). As a side effect of better sampling we also get things such as smoothly rendered edges etc.
Note that the word *anti* in antialising means that some methods may not prevent aliasing completely, they may just try to suppress it somehow. For example the [FXAA](fxaa.md) (fast approximate antialiasing) method is a [postprocessing](postprocessing.md) algorithm which takes an already rendered image and tries to make it as if it was properly rendered in ways preventing aliasing, however it cannot be 100% successful as it doesn't know the original signal, all it can do is try to give us a [good enough](good_enough.md) [approximation](approximation.md).

View file

@ -58,7 +58,7 @@ As a quick [heuristic](heuristic.md) for judging programs you can really take a
Yes, **bloat is also unecological** and no, it cannot be fixed by replacing fossil fuel cars with cars that run on grass and plastic computers by computers made from recycled cardboards mixed with composted horse shit. It is the immense volume of human ACTIVITY that's required by the bloated technology all around the globe that's inherently unecological by wasting so much effort, keeping focus on maximalism, growth and preventing us from frugality and minimizing resource waste. Just as any other [bullshit](bullshit.md) that requires immense resources to just keep maintaining -- great complexity is just absolutely incompatible with ecology and as much as you dislike it, to achieve truly eco-friendly society we'll have to give up what we have now in favor of something orders of magnitude more simple and if you think otherwise, you are just yet too unexperienced (or remained purposefully ignorant) to have seen the big picture already. Consider that your program having bullshit dependencies such as [Python](python.md), [JavaScript](js.md), [C++](cpp.md), [Java](java.md), [OpenGL](opengl.md), [Vulkan](vulkan.md), [GPU](gpu.md), [VR](vr.md) sets, gigabytes of [RAM](ram.md) etcetc. requires having the inherently unecological system up, it needs millions of people doing bullshit jobs that are inherently wasting resources, increasing CO2 and making them not focus on things that have to be done -- yes, even if we replace plastic straws with [paper straws](greenwashing.md). All those people that make the thousand pages standards that are updated every year, reviews of those standards, writing tons and tons of tests for implementations of those standards, electing other people to make those standards, testing their tests, implementing the standards themselves, optimizing them, all of that collectively needing many billions of lines of code and millions of hours of non-programming activities, it all requires complex bureaucracy, organization and management (complex [version control systems](vcs.md), wikis, buildings, meeting spaces, ...) and communication tools and tons of other bullshit recursively spawning more and more waste -- all of these people require cars to go to work every day (even if some work from home, ultimately only a few can work from home 100% of the time and even so millions others need to physically go to factories to make all those computers, electricity, chair, food and other things those people need), they require keeping a high bandwidth 100% uptime global Internet network maintained, all of this requiring extra buildings, offices, factories, roads, buildings for governments overseeing the building of those buildings, maintenance of those roads etcetc. A newbie programmer (99.99999% programmers in the field nowadays) just don't see all this because they lack the big picture, a woman forced into programming has hard time comprehending an if statement, how do you expect her to see the deep interconnections between technology and society -- she may know that OpenGL is "something with graphics" and it's just there on every computer by default, she can't even picture the complexity that's behind what she sees on the screen. Hence the overall retardation. You just cannot have people living ecologically and at the same time have what we have now. So yes, by supporting and/or creating bloat you are killing the planet, whether you agree with it or not. No, you can't find excuses out of this, no, paper straws won't help, just admit you love point and click "programming without math" of your own shitty Minecraft clones in Godot even for the price of eliminating all life on Earth, that's fine (no it's not but it's better to just not bullshit oneself).
{ Fucking hell this shit has gone too far with the newest supershit gayme called Cities Skyline II, I literally can't anymore, apparently the game won't run smoothly even on Earth's most advanced supercomputer because, as someone analyzed, the retarddevs use billion poly models for pedestriangs without any [LOD](lod.md), I bet they don't even know what it is, they probably don't even know what a computer is, these must be some extra retarded soy idiots making these games now. Though I knew it would come to this and that it will be getting yet much worse, I am always still surprised, my brain refuses to believe anyone would let such a piece or monstrous shit to happen. This just can't be real anymore. ~drummyfish }
{ Fucking hell this shit has gone too far with the newest supershit gayme called Cities Skyline II, I literally can't anymore, apparently the game won't run smoothly even on Earth's most advanced supercomputer because, as someone analyzed, the retarddevs use billion poly models for pedestrians without any [LOD](lod.md), I bet they don't even know what it is, they probably don't even know what a computer is, these must be some extra retarded soy idiots making these games now. Though I knew it would come to this and that it will be getting yet much worse, I am always still surprised, my brain refuses to believe anyone would let such a piece or monstrous shit to happen. This just can't be real anymore. ~drummyfish }
## Typical Bloat
@ -112,7 +112,7 @@ Small/medium bloat includes for example:
- any [GUI](gui.md), [window managers](wm.md) (pure text mode is better)
- [operating system](os.md) ([bare metal](bare_metal.md) is better)
- [multithreading](multithreading.md), [parallelism](parallelism.md), [virtual memory](virtual_memory.md), ...
- [encryption](encryption.md), [security](security.md), [memory safety](memory_safery.md) (just don't care and/or don't handle sensitive data with computers connected to the internet, don't live in a shitty society)
- [encryption](encryption.md), [security](security.md), [memory safety](memory_safety.md) (just don't care and/or don't handle sensitive data with computers connected to the internet, don't live in a shitty society)
- [X11](x11.md) (just pure screen drawing is better)
- [database](database.md) software (plain files are better, see [flatfile](flatfile.md))
- [C](c.md) (something in between C and [brainfuck](brainfuck.md) would is likely ideal, e.g. [comun](comun.md) or [Forth](forth.md))

View file

@ -1,6 +1,6 @@
# Bloat Monopoly
Bloat monopoly is an exclusive control over or [de-facto](de_facto.md) ownership of [software](software.md) or even a whole area of technology not by legal means but by means of [bloat](bloat.md), or generally just abusing bloat in ways that lead to gaining monopolies, e.g. by establishing standards or even legal requirements (such as the EU mandatory content filters) which only the richest may conform to. Even if given sofware is [FOSS](foss.md) (that is its source code is public and everyone has basic legal rights to it), it can be malicious due to bloat, for example it can still be made **practically** controlled exclusively by the developer because the developer is the only one with sufficient resources and/or know-how to be able to execute the basic rights such as meaningful modifications of the software, which goes against the very basic principle of [free software](free_software.md).
Bloat monopoly is an exclusive control over or [de-facto](de_facto.md) ownership of [software](software.md) or even a whole area of technology not by legal means but by means of [bloat](bloat.md), or generally just abusing bloat in ways that lead to gaining monopolies, e.g. by establishing standards or even legal requirements (such as the EU mandatory content filters) which only the richest may conform to. Even if given software is [FOSS](foss.md) (that is its source code is public and everyone has basic legal rights to it), it can be malicious due to bloat, for example it can still be made **practically** controlled exclusively by the developer because the developer is the only one with sufficient resources and/or know-how to be able to execute the basic rights such as meaningful modifications of the software, which goes against the very basic principle of [free software](free_software.md).
**Example**: take a look at the [web](www.md) and how [Google](google.md) is gaining control over it by getting the search engine monopoly. It is very clear web along with web browsers has been becoming bloated to ridiculous levels -- this is not a coincidence, bloat is pushed by [corporations](corporation.md) such as Google to eliminate possible emerging competition. If practically all websites require [JavaScript](js.md), [CSS](css.md), [HTTPS](https.md) and similar nonsense, it is becoming much more difficult to crawl them and create a web index, leaving the possibility to crawl the web mostly to the rich, i.e. those who have enough money, time and know-how to do this. Alongside this there is the web browser bloat -- as websites have become extremely complex, it is also extremely complex to make and maintain a web browser, which is why there is only a few of them, all controlled (despite FOSS licenses) by corporations and malicious groups, one of which is Google itself. For these reasons Google loves bloat and encourages it, e.g. simply by ranking bloated webpages better in their search results, and of course by other means (sponsoring, lobbying, advertising, ...).

View file

@ -26,7 +26,7 @@ Booting as in "staring computer up" is also a kind of setting up a system from t
Starting up a **simple computer** -- such as some [MCU](mcu.md)-based [embedded](embedded.md) [open console](open_console.md) that runs [bare metal](bare_metal.md) programs -- isn't as complicated as booting up a mainstream [PC](pc.md) with an [operating system](operating_system.md).
First let's take a look at the simple computer. It may work e.g. like this: upon start the [CPU](cpu.md) initializes its registers and simply starts executing instructions from some given memory address, let's suppose 0 (you will find this in your CPU's data sheet). Here the memory is often e.g. [flash](flash.md) [ROM](rom.md) to which we can externally upload a program from another computer before we turn the CPU on -- in game consoles this can often be done through [USB](usb.md). So we basically upload the program (e.g. a game) we want to run, turn the console on and it starts running it. However further steps are often added, for example there may really be some small, permanently flashed initial boot program at the initial execution address that will handle some things like initializing hardware (screen, speaker, ...), setting up [interrupts](interrput.md) and so on (which otherwise would have to always be done by the main program itself) and it can also offer some functionality, for example a simple menu through which the user can select to actually load a program from SD card to flash memory (thanks to which we won't need external computer to reload programs). In this case we won't be uploading our main program to the initial execution address but rather somewhere else -- the initial bootloader will jump to this address once it's done its work.
First let's take a look at the simple computer. It may work e.g. like this: upon start the [CPU](cpu.md) initializes its registers and simply starts executing instructions from some given memory address, let's suppose 0 (you will find this in your CPU's data sheet). Here the memory is often e.g. [flash](flash.md) [ROM](rom.md) to which we can externally upload a program from another computer before we turn the CPU on -- in game consoles this can often be done through [USB](usb.md). So we basically upload the program (e.g. a game) we want to run, turn the console on and it starts running it. However further steps are often added, for example there may really be some small, permanently flashed initial boot program at the initial execution address that will handle some things like initializing hardware (screen, speaker, ...), setting up [interrupts](interrupt.md) and so on (which otherwise would have to always be done by the main program itself) and it can also offer some functionality, for example a simple menu through which the user can select to actually load a program from SD card to flash memory (thanks to which we won't need external computer to reload programs). In this case we won't be uploading our main program to the initial execution address but rather somewhere else -- the initial bootloader will jump to this address once it's done its work.
Now for the PC (the "IBM compatibles"): here things are more complicated due to the complexity of the whole platform, i.e. because we have to load an [operating system](operating_system.md) first, of which there can be several, each of which may be loadable from different storages ([harddisk](hdd.md), USB stick, [network](network.md), ...), also we have more complex [CPU](cpu.md) that has to be set in certain operation mode, we have complex peripherals that need complex initializations etcetc. Generally there's a huge [bloated](bloat.md) boot sequence and PCs infamously take longer and longer to start up despite skyrocketing hardware improvements -- that says something about state of technology. Anyway, it usually it works like this:

View file

@ -1,6 +1,6 @@
# Byte
Byte (symbol: B) is a basic unit of [information](information.md), nowadays practically always consisting of 8 [bits](bit.md) (in which case it is also called an **octet**), which allow it to store 2^8 = 256 distinct values (for example a number in range 0 to 255). It is usually the smallest unit of memory a [CPU](cpu.md) is able to operate on, and memory addresses are assigned by one byte steps. We use bytes to measure the size of [memory](memory.md) and derive higher memory [units](memory_units.md) from it, such as a kilobyte (kB, 1000 bytes), kibibyte (KiB, 1024 bytes), megabyte (MB, 10^6 bytes) etc. In [programming](programming.md) a one byte [variable](variable.md) is nowadays seen as very small and used if we are really limited by memory constraints (e.g. [embdedded](embedded.md)) or to mimic older 8bit computers ("[retro](retro.md) games" etc.): one byte can be used to store very small numbers (while in mainstream processors numbers nowadays mostly have 4 or 8 bytes), text characters ([ASCII](ascii.md), ...), very primitive colors (see [RGB332](rgb332.md), [palettes](palette.md), ...) etc.
Byte (symbol: B) is a basic unit of [information](information.md), nowadays practically always consisting of 8 [bits](bit.md) (in which case it is also called an **octet**), which allow it to store 2^8 = 256 distinct values (for example a number in range 0 to 255). It is usually the smallest unit of memory a [CPU](cpu.md) is able to operate on, and memory addresses are assigned by one byte steps. We use bytes to measure the size of [memory](memory.md) and derive higher memory [units](memory_units.md) from it, such as a kilobyte (kB, 1000 bytes), kibibyte (KiB, 1024 bytes), megabyte (MB, 10^6 bytes) etc. In [programming](programming.md) a one byte [variable](variable.md) is nowadays seen as very small and used if we are really limited by memory constraints (e.g. [embedded](embedded.md)) or to mimic older 8bit computers ("[retro](retro.md) games" etc.): one byte can be used to store very small numbers (while in mainstream processors numbers nowadays mostly have 4 or 8 bytes), text characters ([ASCII](ascii.md), ...), very primitive colors (see [RGB332](rgb332.md), [palettes](palette.md), ...) etc.
Historically *byte* was used to stand for the basic addressable unit of memory that could store one text character or another "basic value" and could therefore have a different size than 8 bits: e.g. ASCII machines might have had a 7bit byte, 16bit machines a 16bit byte etc.; in [C](c.md) (standard 99) `char` is the "byte" data type, its byte size is always 1 (`sizeof(char) == 1`), though its number of bits (`CHAR_BIT`) can be greater or equal to 8; if you need an exact 8bit byte use types such as `int8_t` and `uint8_t` from the standard `stdint` library. From now on we will implicitly talk about 8bit bytes.

View file

@ -457,7 +457,7 @@ These is the most basic knowledge to have about C functions. Let's see one more
```
#include <stdio.h>
void writeFactors(int x) // writes divisord of x
void writeFactors(int x) // writes divisors of x
{
printf("factors of %d:\n",x);
@ -655,7 +655,7 @@ int main(void)
Notice mainly how we can assign a `float` value into the variable of `int` type (`int wholePart = f;`). This can be done even the other way around and with many other types. C can do automatic **type conversions** (*[casting](cast.md)*), but of course, some information may be lost in this process (e.g. the fractional part).
In the section about functions we said a function can only call a function that has been defined before it in the source code -- this is because the compiler read the file from start to finish and if you call a function that hasn't been defined yet, it simply doesn't know what to call. But sometimes we need to call a function that will be defined later, e.g. in cases where two functions call each other (function *A* calls function *B* in its code but function *B* also calls function *A*). For this there exist so called **[forward declaractions](forward_decl.md)** -- a forward declaration is informing that a function of certain name (and with certain parameters etc.) will be defined later in the code. Forward declaration look the same as a function definition, but it doesn't have a body (the part between `{` and `}`), instead it is terminated with a semicolon (`;`). Here is an example:
In the section about functions we said a function can only call a function that has been defined before it in the source code -- this is because the compiler read the file from start to finish and if you call a function that hasn't been defined yet, it simply doesn't know what to call. But sometimes we need to call a function that will be defined later, e.g. in cases where two functions call each other (function *A* calls function *B* in its code but function *B* also calls function *A*). For this there exist so called **[forward declarations](forward_decl.md)** -- a forward declaration is informing that a function of certain name (and with certain parameters etc.) will be defined later in the code. Forward declaration look the same as a function definition, but it doesn't have a body (the part between `{` and `}`), instead it is terminated with a semicolon (`;`). Here is an example:
```
#include <stdio.h>

View file

@ -8,7 +8,7 @@ Capitali$m is the worst socioeconomic system we've yet seen in [history](history
**Capitalism is fundamentally flawed and CANNOT be fixed** -- capitalists build on the idea that competition will drive society, that market will be self sustaining, however capitalism itself works for instating the rule of the winners who eliminate their competition, capitalism is self destabilizing, i.e. the driving force of capitalism is completely unsustainable and leads to catastrophic results as those who get ahead in working competition are also in advantage -- as it's said: money makes money, therefore money flow from the poor to the rich and create a huge imbalance in which competition has to be highly forced, eventually completely arbitrarily and in very harmful ways (invention of bullshit jobs, creating artificial needs and hugely complex state control and laws). It's as if we set up a race in which those who get ahead start to also go faster, and those become the ones who oversee and start to create the rules of the race -- expecting a sustained balance in such a race is just insanity. Society tries to "[fight](fight_culture.md)" this emerging imbalance with various laws and rules of market, but this effort is like trying to fight math itself -- the system is mathematically destined to be unstable, pretending we can win over laws of nature themselves is just pure madness. **Capitalism is practically equivalent to the terms [free market](free_market.md) and free trade** -- today's extreme, catastrophic form of capitalism is just sufficiently evolved free market, i.e. it is impossible to support free market without supporting what we see today as long as you believe there will ever be any progress in society; against beliefs of great many unintelligent individuals, it is for example impossible to be a true [anarchist](anarchism.md) as long as you believe in form of free market.
**Capitalism produces the [worst imaginable technology](capitalist_software.md)** and rewards people for [being cruel to each other](entrepreneur.md). It points the direction of society towards a [collapse](collapse.md) and may very likely be the [great filter](great_filter.md) of civilizations; in capitalism people [de-facto](de_facto.md) own nothing and become wholly dependent on corporations which exploit this fact to abuse them as much as possible. This is achieved by **[slowly boiling the frog](slowly_boiling_the_frog.md)** and **[leading the pig to the slaughterhouse](leading_the_pig_to_the_slaughterhouse.md)**. Capitalism further achieves enslavement of society while staying accepted by **deflecting responsibility** from the big picture to insignificant details: it says "Look, this politican fucked up your society! This one CEO of this corporation did it! This law here fucked your society! This one immigrant minority is responsible for it! Social media is to blame!" while in fact all of these are just symptomes of the underlying cancer of capitalism; it is relied on an average idiot's inability to see the big picture (society made mostly of idiots is achieved by indoctrination, propaganda and brainwashing that teaches one to only care about the immediate, himself and his daily food; big picture related concepts such as [ethics](ethics.md) and [morality](morality.md) are laughed at). No one owns anything, products become [services](saas.md) (your car won't drive without Internet connection and permission from its manufacturer), all independency and decentralization is lost in favor of a highly fragile and interdependent economy and infrastructure of services, each one controlled by the monopoly corporation. Then only a slight break in the chain is enough to bring the whole civilization down in a spectacular domino effect.
**Capitalism produces the [worst imaginable technology](capitalist_software.md)** and rewards people for [being cruel to each other](entrepreneur.md). It points the direction of society towards a [collapse](collapse.md) and may very likely be the [great filter](great_filter.md) of civilizations; in capitalism people [de-facto](de_facto.md) own nothing and become wholly dependent on corporations which exploit this fact to abuse them as much as possible. This is achieved by **[slowly boiling the frog](slowly_boiling_the_frog.md)** and **[leading the pig to the slaughterhouse](leading_the_pig_to_the_slaughterhouse.md)**. Capitalism further achieves enslavement of society while staying accepted by **deflecting responsibility** from the big picture to insignificant details: it says "Look, this politican fucked up your society! This one CEO of this corporation did it! This law here fucked your society! This one immigrant minority is responsible for it! Social media is to blame!" while in fact all of these are just symptomes of the underlying cancer of capitalism; it is relied on an average idiot's inability to see the big picture (society made mostly of idiots is achieved by indoctrination, propaganda and brainwashing that teaches one to only care about the immediate, himself and his daily food; big picture related concepts such as [ethics](ethics.md) and [morality](morality.md) are laughed at). No one owns anything, products become [services](saas.md) (your car won't drive without Internet connection and permission from its manufacturer), all independence and decentralization is lost in favor of a highly fragile and interdependent economy and infrastructure of services, each one controlled by the monopoly corporation. Then only a slight break in the chain is enough to bring the whole civilization down in a spectacular domino effect.
**The underlying issue of capitalism is [competition](competition.md)** and conflict -- competition is the root of all evil in any social system, however capitalism is the absolute glorification of competition, amplification of this evil to maximum. It is implemented by setting and supporting a very stupid idea that **everyone's primary and only goal is to be self-benefit**, i.e. maximization of capital. This is combined with the fact that the environment of [free market](free_market.md) is a an **[evolutionary system](evolution.md)** which through natural selection extremely effectively and quickly optimizes the organisms (corporations) for achieving this given goal, i.e. generating maximum profit, on the detriment of all other values such as wellbeing of people, sustainability or morality. In other words capitalism has never promised a good society, it literally only states that everyone should try to benefit oneself as much as possible, i.e. defines the [fitness function](fitness_function.md) purely as the ability to seize as many resources as possible, and then selects and rewards those who best implement this function, i.e. those we would call sociopaths or "dicks", and to those is given the power in society. Yes, this is how nature works, but it must NOT be how a technologically advanced civilization with unlimited power of destruction should work. In other words we simply get what we set to achieve: find entities that are best at making profit at any cost. The inevitable decline of society can not possibly be prevented by laws, any effort of trying to stop evolution by inventing artificial rules on the go is a battle against nature itself and is extremely naive, the immense power of the evolutionary system that's constantly at work to find ways to bypass or cancel laws in the way of profit and abuse of others will prevails just as life will always find its way to survive and thrive even in the worst conditions on Earth. Trying to stop corporations with laws is like trying to stop a train by throwing sticks in its path. The problem is not that "people are dicks", it is that we choose to put in place a system that rewards the dicks, a system that fuels the worst in people and smothers the best in them.

View file

@ -2,7 +2,7 @@
Cheating means circumventing or downright violating rules, usually while trying to keep this behavior secret. You can cheat on your partner, in [games](game.md), in [business](business.md) etc., however despite cheating seeming like purely immoral behavior at first, it may be relatively harmless or even completely moral, e.g. in [computer graphics](graphics.md) we sometimes "cheat" our sense of sight and fake certain visual phenomena which leads to efficient rendering [algorithms](algorithm.md). In [capitalism](capitalism.md) cheating is demonized and people are brainwashed to take part in **cheater witch hunts** as part of [fear culture](fear_culture.md), arbitrary drama in [fight](fight_culture.md) for attention, trying to monopolize game platforms with [bloat monopoly](bloat_monopoly.md) "anti cheat" systems etc. These so called "anti cheat" systems introduce unimaginable [bloat](bloat.md) and [bullshit](bullshit.md) and provide excuse for things like [spying](surveillance.md) (e.g. monitoring OS processes) and [proprietary](proprietary.md) technology (so that "cheaters can't study the system to trick it").
The truth is that **cheating is only an issue in a shitty society** that's driven by [competition](competition.md). In such society there is a huge motivation for cheating (sometimes literally physical survival) as well as potentially disastrous consequences of it. Under the tyranny of capitalism we are led to worship [heroes](hero_culture.md) and high achievers and everyone gets pissed when we get fooled. Corporations go "OH NOES our multi bilion dollar entertainment industry is going to go bankrupt if consoomers get annoyed by cheaters! People are gonna lose their bullshit jobs! Someone is going to get money he doesn't deserve! Our customers may get butthurt!!!" (as if corporations themselves weren't basically just stealing money and raping people lol). So they start a huge brainwashing propaganda campaign, a cheater witch hunt. States do the same, communities do the same, everyone wants to stone cheaters to death but at the same time the society pressures all of us to compete to death with others or else we'll starve. We reward winners and torture the losers, then bash people who try to win -- and no, many times there is no other choice than to cheat, the top of any competition is littered with cheaters, most just don't get caught, so in about 99% of cases the only way to the top is to cheat and try to not get caught, just to have a shot at winning against others. It is proven time after time, legit looking people in the top leagues of sports, business, science and other areas are constantly being revealed as cheaters, usually by pure accident (i.e. the number of actual cheater is MANY times higher). Take a look e.g. at the [Trackmania](trackmania.md) cheating scandal in which after someone invented a replay analysis tool he revealed that a great number or top level players were just cheaters, including possibly the GOAT of Trackmania [Riolu](riolu.md) (who just ragequit and never showed again lol). Of course famous cases like Neil Armstrong don't even have to be mentioned. { I just randomly found out that in the world of Pokemon tournaments cheating at top level also showed to be a huge issue lol. ~drummyfish } Cheater detection systems are (and always will be) imperfect and try to minimize [false positives](false_positive.md), so only the cheaters who REPEATEDLY make MANY very OBVIOUS mistakes get caught, the smart cheaters stay and take the top places in the competitive system, just as surely as natural selection leads to the evolution of organisms that best adapt to the environment. Even if perfect cheat-detection systems existed, the problem would just shift from cheating to immoral unsportmanship, i.e. abuse of rules that's technically not cheating but effectively presents the same kind of problems. How to solve this enormously disgusting mess? We simply have to stop desperately holding to the system itself, we have to ditch it.
The truth is that **cheating is only an issue in a shitty society** that's driven by [competition](competition.md). In such society there is a huge motivation for cheating (sometimes literally physical survival) as well as potentially disastrous consequences of it. Under the tyranny of capitalism we are led to worship [heroes](hero_culture.md) and high achievers and everyone gets pissed when we get fooled. Corporations go "OH NOES our multi billion dollar entertainment industry is going to go bankrupt if consoomers get annoyed by cheaters! People are gonna lose their bullshit jobs! Someone is going to get money he doesn't deserve! Our customers may get butthurt!!!" (as if corporations themselves weren't basically just stealing money and raping people lol). So they start a huge brainwashing propaganda campaign, a cheater witch hunt. States do the same, communities do the same, everyone wants to stone cheaters to death but at the same time the society pressures all of us to compete to death with others or else we'll starve. We reward winners and torture the losers, then bash people who try to win -- and no, many times there is no other choice than to cheat, the top of any competition is littered with cheaters, most just don't get caught, so in about 99% of cases the only way to the top is to cheat and try to not get caught, just to have a shot at winning against others. It is proven time after time, legit looking people in the top leagues of sports, business, science and other areas are constantly being revealed as cheaters, usually by pure accident (i.e. the number of actual cheater is MANY times higher). Take a look e.g. at the [Trackmania](trackmania.md) cheating scandal in which after someone invented a replay analysis tool he revealed that a great number or top level players were just cheaters, including possibly the GOAT of Trackmania [Riolu](riolu.md) (who just ragequit and never showed again lol). Of course famous cases like Neil Armstrong don't even have to be mentioned. { I just randomly found out that in the world of Pokemon tournaments cheating at top level also showed to be a huge issue lol. ~drummyfish } Cheater detection systems are (and always will be) imperfect and try to minimize [false positives](false_positive.md), so only the cheaters who REPEATEDLY make MANY very OBVIOUS mistakes get caught, the smart cheaters stay and take the top places in the competitive system, just as surely as natural selection leads to the evolution of organisms that best adapt to the environment. Even if perfect cheat-detection systems existed, the problem would just shift from cheating to immoral unsportmanship, i.e. abuse of rules that's technically not cheating but effectively presents the same kind of problems. How to solve this enormously disgusting mess? We simply have to stop desperately holding to the system itself, we have to ditch it.
In a good society, such as [LRS](less_retarded_society.md), cheating is not an issue at all, there's no motivation for it (people don't have to prove their worth by their skills, there are no money, people don't worship heroes, ...) and there are no negative consequences of cheating worse than someone [ragequitting](ragequit.md) an online game -- which really isn't an issue of cheating anyway but simply a consequence of unskilled player facing a skilled one (whether the pro's skill is natural or artificial doesn't play a role, the nub will ragequit anyway). In a good society cheating can become a mild annoyance at worst, and it can really be a positive thing, it can be [fun](fun.md) -- seeing for example a skilled pro face and potentially even beat a cheater is a very interesting thing. If someone wants to win by cheating, why not let him? Valid answers to this can only be given in the context of a shit society that creates cults of personality out of winners etc. In a good society choosing to cheat in a game is as if someone chooses to fly to the top of a mountain by helicopter rather than climbing it -- the choice is everyone's to make.

View file

@ -92,7 +92,7 @@ So secondly we need to implement a so called **search** algorithm -- typically s
Exhaustively searching the tree to great depths is not possible even with most powerful hardware due to astronomical numbers of possible move combinations, so the engine has to limit the depth quite greatly and use various [hacks](hacking.md), [approximations](approximation.md), [heuristics](heuristic.md) etc.. Normally it will search all moves to a small depth (e.g. 2 or 3 half moves or *plys*) and then extend the search for interesting moves such as exchanges or checks. Maybe the greatest danger of searching algorithms is so called **horizon effect** which has to be addressed somehow (e.g. by detecting quiet positions, so called *quiescence*). If not addressed, the horizon effect will make an engine misevaluate certain moves by stopping the evaluation at certain depth even if the played out situation would continue and lead to a vastly different result (imagine e.g. a queen taking a pawn which is guarded by another pawn; if the engine stops evaluating after the pawn take, it will think it's a won pawn, when in fact it's a lost queen). There are also many techniques for reducing the number of searched tree nodes and speeding up the search, for example pruning methods such as **alpha-beta** (which subsequently works best with correctly ordering moves to search), or **transposition tables** (remembering already evaluated position so that they don't have to be evaluated again when encountered by a different path in the tree).
**Alternative approaches**: most engines work as described above (search plus evaluation function) with some minor or bigger modifications. The simplest possible stupid AI can just make random moves, which will of course be an extremely weak opponent (though even weaker can be made, but these will actually require more complex code as to play worse than random moves requires some understanding and searching for the worst moves) -- one might perhaps try to just program a few simple rules to make it a bit less stupid and possibly a simple training opponent for complete beginners: the AI may for example pick a few "good looking" candidate moves that are "usually OK" (pushing a pawn, taking a higher value piece, castling, ...) and aren't a complete insanity, then pick one at random only from those (this randomness can further be improved and gradually controlled by scoring the moves somehow and adding a more or less random value from some range to each score, then picking the moves with highest score). One could also try to just program in a few generic rules such as: checkmate if you can, otherwise take an unprotected piece, otherwise protect your own unprotected piece etc. -- this could produce some beginner level bot. Another idea might be a "Chinese room" bot that doesn't really understand chess but has a huge database of games (which it may even be fetching from some Internet database) and then just looking up what moves good players make in positions that arise on the board, however a database of all positions will never exist, so in case the position is not found there has to be some fallback (e.g. play random move, or somehow find the "most similar position" and use that, ...). As another approach one may try to use some **non neural network [machine learnening](machine_learning.md)**, for example [genetic programming](genetic_programming.md), to train the evaluation function, which will then be used in the tree search. Another idea that's being tried (e.g. in the Maia engine) is **pure neural net AI** (or another form of machine learning) which doesn't use any tree search -- not using search at all has long been thought to be impossible as analyzing a chess position completely statically without any "looking ahead" is extremely difficult, however new neural networks have shown to be extremely good at this kind of thing and pure NN AIs can now play on a master level (a human grandmaster playing ultra bullet is also just a no-calculation, pure pattern recognition play). Next, **[Monte Carlo](monte_carlo.md) tree search** (MCTS) is an alternative way of searching the game tree which may even work without any evaluation function: in it one makes many random playouts (complete games until the end making only random moves) for each checked move and based on the number of wins/losses/draws in those playouts statistically a value is assigned to the move -- the idea is that a move that most often leads to a win is likely the best. Another Monte Carlo approach may just make random playouts, stop at random depth and then use normal static evaluation function (horizon effect is a danger but hopefully its significance should get minimized in the averaging). However MCTS is pretty tricky to do well. MCTS is used e.g. in Komodo Dragon, the engine that's currently among the best. Another approach may lie in somehow using several methods and [heuristics](heuristic.md) to vote on which move would be best.
**Alternative approaches**: most engines work as described above (search plus evaluation function) with some minor or bigger modifications. The simplest possible stupid AI can just make random moves, which will of course be an extremely weak opponent (though even weaker can be made, but these will actually require more complex code as to play worse than random moves requires some understanding and searching for the worst moves) -- one might perhaps try to just program a few simple rules to make it a bit less stupid and possibly a simple training opponent for complete beginners: the AI may for example pick a few "good looking" candidate moves that are "usually OK" (pushing a pawn, taking a higher value piece, castling, ...) and aren't a complete insanity, then pick one at random only from those (this randomness can further be improved and gradually controlled by scoring the moves somehow and adding a more or less random value from some range to each score, then picking the moves with highest score). One could also try to just program in a few generic rules such as: checkmate if you can, otherwise take an unprotected piece, otherwise protect your own unprotected piece etc. -- this could produce some beginner level bot. Another idea might be a "Chinese room" bot that doesn't really understand chess but has a huge database of games (which it may even be fetching from some Internet database) and then just looking up what moves good players make in positions that arise on the board, however a database of all positions will never exist, so in case the position is not found there has to be some fallback (e.g. play random move, or somehow find the "most similar position" and use that, ...). As another approach one may try to use some **non neural network [machine learning](machine_learning.md)**, for example [genetic programming](genetic_programming.md), to train the evaluation function, which will then be used in the tree search. Another idea that's being tried (e.g. in the Maia engine) is **pure neural net AI** (or another form of machine learning) which doesn't use any tree search -- not using search at all has long been thought to be impossible as analyzing a chess position completely statically without any "looking ahead" is extremely difficult, however new neural networks have shown to be extremely good at this kind of thing and pure NN AIs can now play on a master level (a human grandmaster playing ultra bullet is also just a no-calculation, pure pattern recognition play). Next, **[Monte Carlo](monte_carlo.md) tree search** (MCTS) is an alternative way of searching the game tree which may even work without any evaluation function: in it one makes many random playouts (complete games until the end making only random moves) for each checked move and based on the number of wins/losses/draws in those playouts statistically a value is assigned to the move -- the idea is that a move that most often leads to a win is likely the best. Another Monte Carlo approach may just make random playouts, stop at random depth and then use normal static evaluation function (horizon effect is a danger but hopefully its significance should get minimized in the averaging). However MCTS is pretty tricky to do well. MCTS is used e.g. in Komodo Dragon, the engine that's currently among the best. Another approach may lie in somehow using several methods and [heuristics](heuristic.md) to vote on which move would be best.
Many other aspects come into the AI design such as opening books (databases of best opening moves), endgame tablebases (precomputed databases of winning moves in simple endgames), clock management, pondering (thinking on opponent's move), learning from played games etc. For details see the above linked chess programming wiki.

2
coc.md
View file

@ -4,7 +4,7 @@
Code of conduct (COC), also *code of coercion* or *code of [censorship](censorship.md)*, is a [shitty](shit.md) invention of [SJW](sjw.md) [fascists](fascism.md) that's put up in projects (e.g. software) and which declares how developers of a specific project must behave socially (typically NOT just within the context of the development but also outside of it), generally pushing toxic woke concepts such as forced inclusivity, exclusivity of people with unapproved political opinions or use of [politically correct](political_correctness.md) language ([newspeak](newspeak.md)). Sometimes a toxic COC hides under a different name such as *social contract* or *mission statement*, though not necessarily. COC is typically placed in the project repository as a `CODE_OF_CONDUCT` file. In practice COCs are used to establish dictatorship and allow things such as kicking people out of development because of their political opinions expressed anywhere, inside or outside the project, and to push political opinions through software projects. COCs are an indication of [tranny software](tranny_software.md). See also http://techrights.org/2019/04/23/code-of-coercion/.
**COCs are extremely controversial and opposed by many**, for example [Alexandre Oliva](alexandre_oliva.md), one of the top people at [Free Software Foundation](fsf.md), the maintainer of [Linux libre](linux_libre.md) who was a serious candidate of the FSF president, himself identifying as "neurodivergent" and being rather [politically correct](political_corretness.md), has expressed extreme criticism ([here](http://www.fsfla.org/ikiwiki/blogs/lxo/2023-09-28-objections-to-binutils-CoC.en.html)) of forcing a COC into GNU Binutils. He criticized not only forceful push of the decision to put a COC (they basically just announced it without asking if people agree with it), but also stated very true observations such as that "[the power of] enforcement and exclusion tends to attract people with authoritarian leanings" and that he himself feels "vulnerable and unsafe" -- again, someone who basically plays by the pseudoleftist rules. Expanding on the guillotine comparison, Oliva knows that the French revolution (and all other revolutions) devoured many of its children, and though he probably feels part of this revolution, he still criticized the guillotine.
**COCs are extremely controversial and opposed by many**, for example [Alexandre Oliva](alexandre_oliva.md), one of the top people at [Free Software Foundation](fsf.md), the maintainer of [Linux libre](linux_libre.md) who was a serious candidate of the FSF president, himself identifying as "neurodivergent" and being rather [politically correct](political_correctness.md), has expressed extreme criticism ([here](http://www.fsfla.org/ikiwiki/blogs/lxo/2023-09-28-objections-to-binutils-CoC.en.html)) of forcing a COC into GNU Binutils. He criticized not only forceful push of the decision to put a COC (they basically just announced it without asking if people agree with it), but also stated very true observations such as that "[the power of] enforcement and exclusion tends to attract people with authoritarian leanings" and that he himself feels "vulnerable and unsafe" -- again, someone who basically plays by the pseudoleftist rules. Expanding on the guillotine comparison, Oliva knows that the French revolution (and all other revolutions) devoured many of its children, and though he probably feels part of this revolution, he still criticized the guillotine.
{ Also here's some site: https://nocodeofconduct.com/, tho it's not shitting on it hard enough. ~drummyfish }

View file

@ -2,7 +2,7 @@
*"Imagine no possession"* --John Lennon
Communism (from *communis* -- common, shared) is a very wide term which most generally stands for 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 which falls under [socialism](socialism.md) (i.e. basically focusing on people at large). There are very many branches, theories, political ideologies and schools of thought somewhat based on communism, for example [Marxism](marxism.md), [Leninism](leninism.md), [anarcho communism](ancom.md), primitive communism, Christian communism, Buddhist communism etc. -- of course, some of these are good while others are evil and only abuse the word communism as a kind of *brand* (as also happens e.g. with [anarchism](anarchism.md)). Sadly after the disastrous failure of the violent pseudocommunist revolutions of the 20th century, most people came to equate the word communism with oppressive militant regimes, however we have to stress that **communism is NOT equal to [USSR](ussr.md), Marxism-Lenninism, Stalinism or any other form of pseudocommunism**, on the contrary, such regimes were rather hierarchical, violent and pseudocommunist, often downright [fascist](fascism.md). We ourselves embrace true communism and base our [LRS](lrs.md) and [less retarded society](less_retarded_society.md) on ideas of unconditional sharing. **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, no one says the mentioned societies and groups are or were [ideal](less_retarded_society.md), just that the principles of communism DO work, that communism should be considered a necessary attribute of an ideal society and that ideal society is not impossible due to impossibility of communism because as we see, it is indeed possible. 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 wide term which most generally stands for 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 which falls under [socialism](socialism.md) (i.e. basically focusing on people at large). There are very many branches, theories, political ideologies and schools of thought somewhat based on communism, for example [Marxism](marxism.md), [Leninism](leninism.md), [anarcho communism](ancom.md), primitive communism, Christian communism, Buddhist communism etc. -- of course, some of these are good while others are evil and only abuse the word communism as a kind of *brand* (as also happens e.g. with [anarchism](anarchism.md)). Sadly after the disastrous failure of the violent pseudocommunist revolutions of the 20th century, most people came to equate the word communism with oppressive militant regimes, however we have to stress that **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, violent and pseudocommunist, often downright [fascist](fascism.md). We ourselves embrace true communism and base our [LRS](lrs.md) and [less retarded society](less_retarded_society.md) on ideas of unconditional sharing. **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, no one says the mentioned societies and groups are or were [ideal](less_retarded_society.md), just that the principles of communism DO work, that communism should be considered a necessary attribute of an ideal society and that ideal society is not impossible due to impossibility of communism because as we see, it is indeed possible. 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):

View file

@ -55,7 +55,7 @@ The following is an overview of some most common compression techniques.
A famous family of dictionary compression algorithms are **Lempel-Ziv (LZ)** algorithms -- these two guys first proposed [LZ77](lz77.md) in (1977, sliding window) and [LZ78](lz78.md) (explicitly stored dictionary, 1978). These were a basis for improved/remix algorithms, most notably [LZW](lzw.md) (1984, Welch). Additionally these algorithms are used and combined in other algorithms, most notably [gif](gif.md) and [DEFLATE](deflate.md) (used e.g. in gzip and png).
An approach similar to the predictor may be trying to find some general mathematical [model](model.md) of the data and then just find and store the right parameters of the model. This may for example mean [vectorizing](vector_graphics.md) a bitmap image, i.e. finding geometrical shapes in an image composed of pixels and then only storing the parameters of the shapes -- of course this may not be 100% accurate, but again if we want to preserve the data accurately, we may additionally also store the small amount of errors the model makes. Similar approach is used in [vocoders](vocoder.md) used in cellphones that try to mathematically model human speech (however here the compression is lossy), or in [fractal](fractal.md) compression of images. A nice feature we gain here is the ability to actually "increase the resolution" (or rather generate detail) of the original data -- once we fit a model onto our data, we may use it to tell us values that are not actually present in the data (i.e. we get a fancy [interpolation](interpotation.md)/[extrapolation](extrapolation.md)).
An approach similar to the predictor may be trying to find some general mathematical [model](model.md) of the data and then just find and store the right parameters of the model. This may for example mean [vectorizing](vector_graphics.md) a bitmap image, i.e. finding geometrical shapes in an image composed of pixels and then only storing the parameters of the shapes -- of course this may not be 100% accurate, but again if we want to preserve the data accurately, we may additionally also store the small amount of errors the model makes. Similar approach is used in [vocoders](vocoder.md) used in cellphones that try to mathematically model human speech (however here the compression is lossy), or in [fractal](fractal.md) compression of images. A nice feature we gain here is the ability to actually "increase the resolution" (or rather generate detail) of the original data -- once we fit a model onto our data, we may use it to tell us values that are not actually present in the data (i.e. we get a fancy [interpolation](interpolation.md)/[extrapolation](extrapolation.md)).
Another property of data to exploit may be its sparsity -- if for example we have a huge image that's prevalently white, we may say white is the implicit color and we only somehow store the pixels of other colors.

View file

@ -46,7 +46,7 @@ Computers we normally talk about in daily conversations are [electronic](electro
Such a computer consists of some kind of [case](case.md) (chassis), internal [hardware](hardware.md) plus [peripheral devices](peripheral.md) that serve for [input and output](io.md) -- these are for example a [keyboard](keyboard.md) and [mouse](mouse.md) (input devices), a [monitor](monitor.md) (output device) or [harddisk](hdd.md) (input/output device). The internals of the computer normally include:
- **[motherboard](motherboard.md)**: The main electronic circuit of the computer into which other components are plugged and which creates the network and interfaces that interconnect them (a [chipset](chipset.md)). It contains slots for expansion cards as well as connectors for external devices, e.g. [USB](usb.md). In a small memory on the board there is the most basic software ([firmaware](firmware.md)), such as [BIOS](bios.md), to e.g. enable installation of other software. The board also carries the [clock](clock.md) generator for synchronization of all hardware, heat sensors etc.
- **[motherboard](motherboard.md)**: The main electronic circuit of the computer into which other components are plugged and which creates the network and interfaces that interconnect them (a [chipset](chipset.md)). It contains slots for expansion cards as well as connectors for external devices, e.g. [USB](usb.md). In a small memory on the board there is the most basic software ([firmware](firmware.md)), such as [BIOS](bios.md), to e.g. enable installation of other software. The board also carries the [clock](clock.md) generator for synchronization of all hardware, heat sensors etc.
- **[CPU](cpu.md)** (central processing unit): Core of the computer, the chip plugged into motherboard that performs general calculations and which runs [programs](program.md), i.e. [software](sw.md).
- **[RAM](ram.md)/working memory/main memory**: Lower capacity volatile (temporary, erased when powered off) working memory of the computer, plugged into motherboard. It is used as a "pen and paper" by the CPU when performing calculations.
- **[disk](disk.md)**: [Non-volatile](volatile.md) (persisting when powered off) large capacity memory for storing [files](file.md) and other [data](data.md), connected to the motherboard via some kind of [bus](bus.md). Different types of disks exist, most commonly [hard disks](hdd.md) and [SSDs](ssd.md).
@ -67,7 +67,7 @@ Here is a list of notable computers.
| Antikythera mechanism | -125 | ~30 gears, largest with 223 teeth | 1st known analog comp., by Greeks (mechanical) |
| [slide rule](slide_rule.md) | 1620 | | simple tool for multiplication and division |
| Shickard's calculating clock | 1623 | 17 wheels | 1st known calculator, could multiply, add and sub.|
| [Arithmometer](arithmometer.md) | 1820 | 6 digit numebrs | 1st commercial calculator (add, sub., mult.) |
| [Arithmometer](arithmometer.md) | 1820 | 6 digit numbers | 1st commercial calculator (add, sub., mult.) |
| Difference Engine | 1822 | 8 digit numbers, 24 axles, 96 wheels | mech. digital comp. of polynomials, by Babbage |
| Analytical Engine design | 1837 | ~16K RAM, 40 digit numbers | 1st general purpose comp, not realized, by Babbage|
| [nomogram](nomogram.md) | 1884 | | graphical/geometrical tools aiding computation |
@ -82,7 +82,7 @@ Here is a list of notable computers.
| [ZX Spectrum](zx_spectrum.md) | 1982 | 128K RAM, CPU 3.5MHz 8bit, 256x192 screen | successful UK TV-connected home comp. by Sinclair |
| [NES](nes.md)/Famicom | 1983 | 2K RAM, 2K VRAM, CPU 1.7MHz 8bit, PPU | TV-connected Nintendo game console |
| [Macintosh](macintosh.md) | 1984 | 128K RAM, CPU 7MHz 32bit, floppy, 512x342 | very popular personal computer by Apple |
| [Amiga](amiga.md) | 1985 | 256K RAM, 256K ROM, CPU 7MHz 16bit, AmigaOS | personal compuer by Commodore, ahead of its time |
| [Amiga](amiga.md) | 1985 | 256K RAM, 256K ROM, CPU 7MHz 16bit, AmigaOS | personal computer by Commodore, ahead of its time |
| [NeXT](next.md) | 1988 | 8M RAM, 256M drive, CPU 25MHz 32bit, NeXTSTEP OS | famous workstation, used e.g. for Doom dev. |
| [SNES](snes.md) | 1990 | 128K RAM, 64K VRAM, CPU 21MHz 16bit | game console, NES successor |
| [PlayStation](playstation.md) | 1994 | 2M RAM, 1M VRAM, CPU 33MHz 32bit, CD-ROM | popular TV-connected game console by Sony |

View file

@ -1,6 +1,6 @@
# Copyfree
Copyfree Initiative is yet another [nonprofit](nonprofit.md) group trying to create and maintain its own definition and standardization of ["free as in freedom"](free_software.md). Its website is https://copyfree.org/, the symbol they use is F in a circle. Similarly to e.g. [FSF](fsf.md) copyfree maintains a list of approved and rejected [licenses](license.md); the main characteristics of the group are great opposition of [copyleft](copyleft.md) in favor of [permissive](permissive.md) licenses, which is good, however the group justifies its operation by "helping [business](business.md)", i.e. it's most likely just another unethical [capitalist](capitalism.md) organization that will ultimately stand against people and once/if becomes successful will sell the its soul to the highest bidder. Copyfree was founded by Chad Perrin and has existed at least since 2007 (according to internet archive).
Copyfree Initiative is yet another [nonprofit](nonprofit.md) group trying to create and maintain its own definition and standardization of ["free as in freedom"](free_software.md). Its website is https://copyfree.org/, the symbol they use is F in a circle. Similarly to e.g. [FSF](fsf.md) copyfree maintains a list of approved and rejected [licenses](license.md); the main characteristics of the group are great opposition of [copyleft](copyleft.md) in favor of [permissive](permissive.md) licenses, which is good, however the group justifies its operation by "helping [business](business.md)", i.e. it's most likely just another unethical [capitalist](capitalism.md) organization that will ultimately stand against people and once/if becomes successful will sell its soul to the highest bidder. Copyfree was founded by Chad Perrin and has existed at least since 2007 (according to internet archive).
## See Also

View file

@ -15,7 +15,7 @@ In the great debate of copyleft vs permissive free licenses we, as technological
- It **burdens the reuser of the work by requiring him to do something extra** -- while a public domain and many permissive licensed works can simply be taken and used without taking any extra action, just as it should ideally be, a work under copyleft requires its user to take an action, for example copying the license file (and then forever making sure it doesn't get lost), giving credit etc. While one may think this is not such a big deal, it's a form of friction that can get in the way of creativity, especially when combining many works under possibly different copyleft licenses which suddenly becomes quite cumbersome to handle.
- By adopting copyleft one is **embracing and supporting the copyright laws and perpetuating the [capitalist](capitalism.md) ways** ("marrying the lawyers") because copyleft relies on and uses copyright laws to function; to enforce copyleft (prevent "disallowed" use) one has to make a legal action (while with permissive license we simply basically give up the rights to make a legal action). Copyleft chooses to play along with the capitalist bullshit [intellectual property](intellectual_property.md) game and threatens to [fight](fight_culture.md) and use force and bullying in order to enforce *correct* usage of information.
- In a way it is **[bloat](bloat.md)**. Copyleft introduces **legal complexity**, [friction](friction.md) and takes programmers' [head space](head_space.md) (every programmer has to study a bit of copyright law nowadays due to such BS), especially considering that copyleft is also probably largely ineffective as **detecting its violation and actual legal enforcement is difficult, expensive and without a guaranteed positive outcome** ([FSF](fsf.md) encourages programmers to hand over their copyright to them so they can defend their programs which just confirms existence and relevance of this issue). The effort spent on dealing with this is a wasted human time. Sure, corporations can probably "abuse" permissive (non-copyleft) software easier, but we argue that this is a problem whose roots lie in the broken basic principles of our society ([capitalism](capitalism.md)) and so the issue should be addressed by improving our socioeconomic system rather than by bullshit legal techniques that just imperfectly and many times completely ineffectively try to cure the symptoms while strengthening the system's mechanisms.
- **The scope of copyleft is highly debatable, introducing doubt/uncertainty** (which is why we have different kind of copyleft such as *strong*, *weak*, *network* etc.). I.e. it can't be objectively said what exactly should classify as violation of copyleft AND increasing copyleft scope leads to copylefted software being practically unusable. You may say "so what", but in law clarity is extremely important, it may also discourage people because they don't really know what they sign up for, commercial use may also be discouraged by this for the same reason which may have a similar effect to a non-free license that downright disallows commercial use. Consider this **example**: [Linux](linux.md) is copylefted which means we can't create a proprietary version of Linux, nevertheless we can create a proprietary operating system of which Linux is part (e.g. [Android](android.md) in which its proprietary app store makes it de-facto owned by [Google](google.md)), and so Linux is effectively used as a part of proprietary software. **So copyleft can really be bypassed** (see e.g. [bloat monopoly](bloat_monopoly.md)). One might try to increase the copyleft scope here by saying *"everything Linux ever touches has to be free software"* which would however render Linux unusable on practically any computer as most computers contain at least some small proprietary software and hardware. The restriction would be too great. You may of course try to combat the giants further until eternity, but then you are wasting your life being a shitty laweyer rather than doing useful programming.
- **The scope of copyleft is highly debatable, introducing doubt/uncertainty** (which is why we have different kind of copyleft such as *strong*, *weak*, *network* etc.). I.e. it can't be objectively said what exactly should classify as violation of copyleft AND increasing copyleft scope leads to copylefted software being practically unusable. You may say "so what", but in law clarity is extremely important, it may also discourage people because they don't really know what they sign up for, commercial use may also be discouraged by this for the same reason which may have a similar effect to a non-free license that downright disallows commercial use. Consider this **example**: [Linux](linux.md) is copylefted which means we can't create a proprietary version of Linux, nevertheless we can create a proprietary operating system of which Linux is part (e.g. [Android](android.md) in which its proprietary app store makes it de-facto owned by [Google](google.md)), and so Linux is effectively used as a part of proprietary software. **So copyleft can really be bypassed** (see e.g. [bloat monopoly](bloat_monopoly.md)). One might try to increase the copyleft scope here by saying *"everything Linux ever touches has to be free software"* which would however render Linux unusable on practically any computer as most computers contain at least some small proprietary software and hardware. The restriction would be too great. You may of course try to combat the giants further until eternity, but then you are wasting your life being a shitty lawyer rather than doing useful programming.
- **Copyleft drags people into [activism](fight_culture.md), leaving less place for actual creativity** -- one of the best examples is [Richard Stallman](rms.md) and his [GNU](gnu.md) project, who were quite active in programming at their beginning but soon turned more or less just into a political activist group, spending time on petitions, propaganda, certifications ([RYF](ryf.md), ...) and generally just the same kind of bullshit [fights](fight_culture.md) that capitalists like (often attacking even those who make free software, e.g. the *GNU boot* project for infringing on the name GNU without permission). Stallman himself said "he no longer programs because he has more important things to do". Maybe you say this has nothing to do with copyleft, but it's not a coincidence, copyleft is a mindset of constantly having to "protect" (as opposed to "letting go", the permissive mindset), for example once web applications appeared, the GNU people were suddenly all about having to make new licenses such as [AGPL](agpl.md) to [update](update_culture.md) to the newest trends in technology and society. Any time a new technology or kind of legal abuse emerges, they have to update their licenses. Choosing copyleft really means choosing to be this kind of warrior and guard of right and wrong, which of course takes away some of your creative potential, with many people just giving in completely.
- **Copyleft licenses have to be complex and ugly** because they have to strictly describe the copyleft scope and include lots of legal [boilerplate](boilerplate.md) in order to make them well defendable in court (copyleft is really about preparing for a legal war) -- and as we know, complexity comes with bugs, vulnerabilities, it makes it incomprehensible to common people and imposes many additional burdens. Indeed, we see this in practice: the only practically used copyleft licenses are the various versions of GPL of which all are ugly and have historically shown many faults (which is again evident from e.g. looking at GPL v1 vs v2 vs v3). This introduces great **license compatibility issues**, headaches for programmers who should rather be spending time programming and other similar bullshit. Permissive licenses on the other hand are simple, clear and well understandable, they aren't as much preparing for a court battle as trying to give other hackers a peace of mind and make them free of legal worries.
- **Copyleft prevents not only inclusion in proprietary software but also in permissive FREE software.** I.e. as a consequence of denying code to corporations collateral damage is done by also denying code to ethical free software that wishes to be distributed without copyleft conditions. Similarly to how proprietary software forces free software programmers to reinvent wheels by rewriting software as free, copyleft forces permissive free software programmers to reinvent wheels and rewrite copylefted code as permissive. In this way copyleft [fights](fight_culture.md) not only proprietary software, but also other kinds of free software.

4
cpu.md
View file

@ -30,13 +30,13 @@ In order for a CPU to be useful it has to be able to perform some **[input/outpu
- Through **memory**: here some parts of memory serve to pass data to the CPU and to retrieve computed results back. For example a keyboard may be mapped to memory so that when certain keys are pressed, the memory bits are set to 1 -- this way a CPU can simply read from memory and know if a key is pressed. Similarly a display may be mapped to memory so that when a CPU writes a value to this address, a pixel appears on the display. Note that his doesn't always have to PHYSICALLY pass through memory, there may be a special circuit that translate e.g. memory access in some address range to signals to hardware etc., but the CPU is using the same instructions it would use for interacting with memory.
- Through **[GPIO](gpio.md) pins**: CPUs typically have pins that are reserved for general purpose input/output, i.e. we can electronically communicate through them with whatever device we physically connect to those pins. A CPU can set and read voltage to/from those pins e.g. with some special instructions. This may be convenient if we just want to e.g. light up some LED without having to somehow hook it to the main memory.
- **[Interrupts](interrput.md)**: a CPU can be informed about an external event with an interrupt (see further on).
- **[Interrupts](interrupt.md)**: a CPU can be informed about an external event with an interrupt (see further on).
CPUs often also have a **[cache](cache.md)** memory that speeds up communication with the main memory (RAM, ROM, ...), though simpler CPUs may live even without cache of course. Mainstream CPUs even have several levels of cache, called L1, L2 etc. Caches are basically transparent for the programmer, they don't have to deal with them, it's just something that makes memory access faster, however a programmer knowing how a cache works can write code so as to be friendlier to the cache and utilize it better.
Mainstream consoomer CPUs nowadays have multiple **[cores](core.md)** so that each core can basically run a separate computation in parallel. The separate cores can be seen kind of like duplicate copies of the single core CPU with some connections between them (details again depend on each model), for example cores may share the cache memory, they will be able to communicate with each other etc. Of course this doesn't just magically make the whole CPU faster, it can now only run multiple computations at once, but someone has to make programs so as to make use of this -- typical use cases are e.g. [multitasking](multitasking.md) operating systems which can run different programs (or rather processes) on each core (note that multitasking can be done even with a single core by rapidly switching between the processes, but that's slower), or [multithreading](multithreading.md) programming languages which may run each thread on a separate core.
**[Interrupts](interrput.md)** are an important concept for the CPU and for low level programming, they play a role e.g. in saving power -- high level programmers often don't know what interrupts are, to those interrupts can be likened to "event [callbacks](callback.md)". An interrupt happens on some kind of even, for example when a key is pressed, when timer ticks, when error occurred etc. (An interrupt can also be raised by the CPU itself, this is how operating system [syscalls](syscall.md) are often implemented). What kinds of interrupts there are depends on each CPU architecture (consult your datasheet) and one can usually configure which interrupts to enable and which "callbacks" to use for them -- this is often done through so called **[vector](vector.md) table**, a special area in memory that records addresses ("vectors") of routines (functions/subprograms) to be called on specified interrupts. When interrupt happens, the current program execution is paused and the CPU automatically jumps to the subroutine for handling the interrupt -- after returning from the subroutine the main program execution continues. Interrupts are contrasted with **[polling](polling.md)**, i.e. manually checking some state and handling things as part of the main program, e.g. executing an infinite loop in which we repeatedly check keyboard state until some key is pressed. However polling is inefficient, it wastes power by constantly performing computation just by waiting -- interrupts on the other hand are a hard wired functionality that just performs a task when it happens without any overhead of polling. Furthermore interrupts can make programming easier (you save many condition checks and memory reads) and mainly **interrupts allow CPU to go into sleep mode** and so save a lot of power. When a CPU doesn't have any computation to do, it can stop itself and go into waiting state, not executing any instructions -- however interrupts still work and when something happens, the CPU jumps back in to work. This is typically what the `sleep`/`wait` function in your programming language does -- it puts the CPU to sleep and sets a timer interrupt to wake up after given amount of time. As a programmer you should know that you should call this sleep/wait function in your main program loop to relieve the CPU -- if you don't, you will notice the **CPU utilization** (amount of time it is performing computations) will go to 100%, it will heat up, your computer starts spinning the fans and be noisy because you don't let it rest.
**[Interrupts](interrupt.md)** are an important concept for the CPU and for low level programming, they play a role e.g. in saving power -- high level programmers often don't know what interrupts are, to those interrupts can be likened to "event [callbacks](callback.md)". An interrupt happens on some kind of even, for example when a key is pressed, when timer ticks, when error occurred etc. (An interrupt can also be raised by the CPU itself, this is how operating system [syscalls](syscall.md) are often implemented). What kinds of interrupts there are depends on each CPU architecture (consult your datasheet) and one can usually configure which interrupts to enable and which "callbacks" to use for them -- this is often done through so called **[vector](vector.md) table**, a special area in memory that records addresses ("vectors") of routines (functions/subprograms) to be called on specified interrupts. When interrupt happens, the current program execution is paused and the CPU automatically jumps to the subroutine for handling the interrupt -- after returning from the subroutine the main program execution continues. Interrupts are contrasted with **[polling](polling.md)**, i.e. manually checking some state and handling things as part of the main program, e.g. executing an infinite loop in which we repeatedly check keyboard state until some key is pressed. However polling is inefficient, it wastes power by constantly performing computation just by waiting -- interrupts on the other hand are a hard wired functionality that just performs a task when it happens without any overhead of polling. Furthermore interrupts can make programming easier (you save many condition checks and memory reads) and mainly **interrupts allow CPU to go into sleep mode** and so save a lot of power. When a CPU doesn't have any computation to do, it can stop itself and go into waiting state, not executing any instructions -- however interrupts still work and when something happens, the CPU jumps back in to work. This is typically what the `sleep`/`wait` function in your programming language does -- it puts the CPU to sleep and sets a timer interrupt to wake up after given amount of time. As a programmer you should know that you should call this sleep/wait function in your main program loop to relieve the CPU -- if you don't, you will notice the **CPU utilization** (amount of time it is performing computations) will go to 100%, it will heat up, your computer starts spinning the fans and be noisy because you don't let it rest.
Frequently there are several **modes** of operation in a CPU which is typically meant for operating systems -- there will usually be some kind of privileged mode in which the CPU can do whatever it wants (this is the mode for the OS kernel) and a restricted mode in which there are restrictions, e.g. on which areas of memory can be accessed or which instructions can be used (this will be used for user program). Thanks to this a user program won't be able to crash the operating system, it will at worst crash itself. Most notably x86 CPUs have the *real mode* (addresses correspond to real, physical addresses) and *protected mode* (memory is [virtualized](virtual_memory.md), protected, addresses don't generally correspond to physical addresses).

View file

@ -19,7 +19,7 @@ But where is the blockchain stored? It is not on a single computer; many compute
But how do we know which one is the "official" blockchain? Can't just people start forging information in the blockchain and then distribute the fake blockchains? Isn't there a chaos if there are so many copies? Well yes, it would be messy -- that's why we need a **consensus** of the participants on which blockchain is the *real* one. And there are a few algorithms to ensure the consensus. Basically people can't just spam add new blocks, a new block to be added needs to be validated via some process (which depends on the specific algorithm) in order to be accepted by others. Two main algorithms for this are:
- [proof of work](proof_of_work.md): For a block to be confirmed it has to have a specific cryptographic puzzle solved, e.g. it may need to have appended some string that makes the block's hash some predetermined value. Participants try to solve this puzzle: finding the string is difficult and has to be done by [brute force](brute_force.md) (which wastes electricity and makes this method controversial). Once someone finds a solution, the block is confirmed and the solver gets a reward in coin -- this is therefore called **mining**.
- [proof of stake](proof_of_stake.md): This methods tries to waste less energy by not solving cryptographics puzzles but rather having some chosen participants validate/confirm the blocks. Basically participans can give some of their money at stake which then gives them a chance (proportional to the amount of money put at stake) to be chosen as validators. A validator is then chosen at random who will check the transactions and sign the block. For this they will get a small reward in coins. If they try to confirm fraudulent transactions (e.g. money sent from people without any money), the network will punish them by taking away the money they put at stake (so there is a financial motivation to not "cheat").
- [proof of stake](proof_of_stake.md): This methods tries to waste less energy by not solving cryptographics puzzles but rather having some chosen participants validate/confirm the blocks. Basically participants can give some of their money at stake which then gives them a chance (proportional to the amount of money put at stake) to be chosen as validators. A validator is then chosen at random who will check the transactions and sign the block. For this they will get a small reward in coins. If they try to confirm fraudulent transactions (e.g. money sent from people without any money), the network will punish them by taking away the money they put at stake (so there is a financial motivation to not "cheat").
Can't people just forge transactions, e.g. by sending out a record that says someone else sent them money? This can be easily prevented by [digitally signing](digital_signature.md) the transactions, i.e. if there is e.g. a transaction "A sends 1 coint to B", it has to be signed by A to confirm that A really intended to send the money. But can't someone just copy-paste someone else's already signed transactions and try to perform them multiple times? This can also be prevented by e.g. numbering the transactions, i.e. recording something like "A sent 1 coin to B as his 1st transaction".

2
css.md
View file

@ -8,7 +8,7 @@ A website is not required to have a CSS style, without it it will just use the p
Back in the boomer web days -- basically before the glorious year 2000 -- there was no CSS. Well, it was around, but support was poor and no one used it (or needed it for that matter). People cared more for sharing [information](information.md) than pimping muh graphics. Sometimes people needed to control the look of their website to some degree though, for example in an image gallery it's good to have thumbnail sizes the same, so HTML itself included some simple things to manipulate the looks (e.g. the `width` property in the `img` tag). People also did hacks such as raping tables or spamming the `<br />` tags or using [ASCII art](ascii_art.md) to somehow force displaying something how they wanted it. However as [corporations](corporation.md) started to invade the web, they naturally wanted more [consumerism](consumerism.md), flashing lights and brainwas... ummm... [marketing](marketing.md). They wanted to redefine the web from "collection of interlinked documents" or a "global database" to something more like "virtual billboard space" or maybe "gigantic electronic shopping center", which indeed they did. So they supported more work on CSS, more browsers started to support it and normies with blogs jumped on the train too, so CSS just became standard. On one hand CSS allows nice things, you can restyle your whole website with a single line change, but it is still [bloat](bloat.md), so beware, use it wisely (or rather don't use it -- you can never go wrong with that).
**Correct, [LRS](lrs.md) approved attitute towards this piece of [bloat](bloat.md)**: as a minimalist should you avoid CSS like the devil and never use it? Usual LRS recommendations apply but, just in case, let's reiterate. Use your brain, maximize [good](less_retarded_society.md), minimize damage, just make it so that no one can ever say "oh no, I wish this site didn't have CSS". You CAN use CSS on your site, but it mustn't become any burden, only something optional that will make life better for those using a browser supporting CSS, i.e. **your site MUSTN'T RELY on CSS**, CSS mustn't be its [dependency](dependency.md), the site has to work perfectly fine without it (remember that many browsers, especially the minimalist ones not under any corporation's control, don't even support CSS), the site must not be crippled without a style, i.e. firstly design your site without CSS and only add CSS as an optional improvement. Do not make your HTML bow to CSS, i.e. don't let CSS make you add tons of divs and classes, make HTML first and then make CSS bow to the HTML. Light CSS is better than heavy one. If you have a single page, embed CSS right into it ([KISS](kiss.md), site is self contained and browser doesn't have to download extra files for your site) and make it short to save bandwidth on downloading your site. Don't use heavy CSS features like animation, blurs, [color](color.md) transitions or wild repositioning, save the [CPU](cpu.md), save the planet (:D). Etcetc.
**Correct, [LRS](lrs.md) approved attitude towards this piece of [bloat](bloat.md)**: as a minimalist should you avoid CSS like the devil and never use it? Usual LRS recommendations apply but, just in case, let's reiterate. Use your brain, maximize [good](less_retarded_society.md), minimize damage, just make it so that no one can ever say "oh no, I wish this site didn't have CSS". You CAN use CSS on your site, but it mustn't become any burden, only something optional that will make life better for those using a browser supporting CSS, i.e. **your site MUSTN'T RELY on CSS**, CSS mustn't be its [dependency](dependency.md), the site has to work perfectly fine without it (remember that many browsers, especially the minimalist ones not under any corporation's control, don't even support CSS), the site must not be crippled without a style, i.e. firstly design your site without CSS and only add CSS as an optional improvement. Do not make your HTML bow to CSS, i.e. don't let CSS make you add tons of divs and classes, make HTML first and then make CSS bow to the HTML. Light CSS is better than heavy one. If you have a single page, embed CSS right into it ([KISS](kiss.md), site is self contained and browser doesn't have to download extra files for your site) and make it short to save bandwidth on downloading your site. Don't use heavy CSS features like animation, blurs, [color](color.md) transitions or wild repositioning, save the [CPU](cpu.md), save the planet (:D). Etcetc.
TODO: more more more

View file

@ -2,7 +2,7 @@
*"The most beautiful thing in the world is freedom of speech."* --Diogenes
Diogenes (412 BC - 323 BC) was one of the biggest ancient Greek [philosophers](philosophy.md), the best known proponent of [Cynicism](cynicism.dm) and one of the absolutely most [based](based.md) men in [history](history.md) as by his philosophy he practiced extreme life [minimalism](minimalism.md) (he lived in a barrel), [asketicism](asketicism.md), self-sufficiency, nonconformism, he refused to [work](work.md), [refused all authority](anarchism.md), criticised absolutely everything and was always extremely logically consistent and behaved in accordance to what he taught, which is really what makes all his critics -- mostly just big [hypocrite](hypocrisy.md) pussies -- so greatly pissed; the philosophy of Diogenes is quite close to [our own ideals](less_retarded_society.md). The word "cynic" itself comes from a word for "[dog](dog.md)" and indeed, Diogenes lived as one, he just roamed the streets barefoot with a stick, he wore a robe that at night he used to cover himself (two in one), he didn't give a shit about anything, preached his [wisdom](wisdom.md), he basically didn't own anything as he believed possession only enslaves us and that everything we need is already there in the nature. He didn't seek popularity, approval, wealth or power, he wanted [freedom](freedom.md), spiritual and moral purity, he wanted to let go of absolutely all [bullshit](bullshit.md). He was also pretty funny, reading about him is really on the level of [4chan](4chan.md) humor, more than 2000 years ahead of his time. Diogenes wrote some stuff, most famously his *Republic* describing an ideal society, however none of his writings sadly survived, we now only know what others have written about him (there are possibly some recounts of the works who have read them). Let's remember we shouldn't call him a [hero](hero_culture.md), that would itself contradict both his and our philosophy, but if we are to see anyone as a good inspiration and moral example, Diogenes is among the best (well, at least in most things, it goes without saying we can't absolutely embrace everything someone ever did).
Diogenes (412 BC - 323 BC) was one of the biggest ancient Greek [philosophers](philosophy.md), the best known proponent of [Cynicism](cynicism.dm) and one of the absolutely most [based](based.md) men in [history](history.md) as by his philosophy he practiced extreme life [minimalism](minimalism.md) (he lived in a barrel), [asceticism](asceticism.md), self-sufficiency, nonconformism, he refused to [work](work.md), [refused all authority](anarchism.md), criticised absolutely everything and was always extremely logically consistent and behaved in accordance to what he taught, which is really what makes all his critics -- mostly just big [hypocrite](hypocrisy.md) pussies -- so greatly pissed; the philosophy of Diogenes is quite close to [our own ideals](less_retarded_society.md). The word "cynic" itself comes from a word for "[dog](dog.md)" and indeed, Diogenes lived as one, he just roamed the streets barefoot with a stick, he wore a robe that at night he used to cover himself (two in one), he didn't give a shit about anything, preached his [wisdom](wisdom.md), he basically didn't own anything as he believed possession only enslaves us and that everything we need is already there in the nature. He didn't seek popularity, approval, wealth or power, he wanted [freedom](freedom.md), spiritual and moral purity, he wanted to let go of absolutely all [bullshit](bullshit.md). He was also pretty funny, reading about him is really on the level of [4chan](4chan.md) humor, more than 2000 years ahead of his time. Diogenes wrote some stuff, most famously his *Republic* describing an ideal society, however none of his writings sadly survived, we now only know what others have written about him (there are possibly some recounts of the works who have read them). Let's remember we shouldn't call him a [hero](hero_culture.md), that would itself contradict both his and our philosophy, but if we are to see anyone as a good inspiration and moral example, Diogenes is among the best (well, at least in most things, it goes without saying we can't absolutely embrace everything someone ever did).
Some famous and/or [interesting](interesting.md) things he did (or at
least is said to have done):
@ -15,7 +15,7 @@ least is said to have done):
- He just shat, pissed and farted wherever he wanted, he was stealing without shame, he would eat where it was forbidden to eat, e.g. in Plato's lectures. He also didn't restrain from always saying what he was thinking, he did zero self [censorship](censorship.md).
- As he became quite famous, Alexander the Great himself (the biggest boss in the world at the time) came to meet him and asked if he could do anything for him, Diogenes just replied "yeah, get out of my sunlight". It impressed even Alexander who allegedly said "If I weren't Alexander, I would be Diogenes". Another of their dialogue went like this: Alexander: "Are you not afraid of me?", Diogenes: "Why? Are you good or bad?", Alexander: "I am good!", Diogenes: "Well then, who is afradid of the good?".
- Being asked what the most [beuatiful](beauty.md) thing in the world was, he replied "[freedom of speech](free_speech.md)". { Sauce: the book *Lives of the Eminent Philosophers*. ~drummyfish }
- When he was dying he said after death he just wanted to be thrown to animals to be eaten. { I'm thinking of actually writing this in my will. ~drummfish }
- When he was dying he said after death he just wanted to be thrown to animals to be eaten. { I'm thinking of actually writing this in my will. ~drummyfish }
- When asked why he was begging when Plato wasn't, he said "He is too, he just holds his head down so it can't be heard."
- Once he was invited to a dinner, he said he wouldn't go because "last time he went, the host didn't show proper gratitude."
- At seeing temple police arresting a thief he exclaimed "look, big thieves are arresting a small thief".

View file

@ -36,7 +36,7 @@ Indexed ([palette](palette.md)) mode with "only" 256 colors was used for renderi
Doom also has a [deterministic](determinism.md) [FPS](fps.md)-independent physics which allows for efficient recording of [demos](demo.md) of its gameplay and creating [tool assisted speedruns](tas.md), i.e. the time step of game simulation is fixed (35 tics per second). Such demos can be played back in high quality while being minuscule in size and help us in many other ways, for example for verifying validity of [speedruns](speedrun.md). This is very nice and serves as an example of a well written engine (unlike later engines from the same creators, e.g. those of [Quake](quake.md) games which lacked this feature -- here we can see how things get progressively shittier in computer technology as we go forward in time).
There is no [antialiasing](antialiasing.md) in the engine, i.e. aliasing can be noticed on far-away textures, but it is suppressed by the use of low-res textures and dimming far-away areas. There is also no edge smoothing (kind of misledingly known as "antialiasing") in the geometry rendering, the engine is [subpixel](subpixel.md) accurate in rendering of the top and bottoms of the walls, i.e. the line these boundaries form may result in rasterizing slightly different pixels even if the start and end pixel is the same, depending on the subpixel position of the start and endpoint -- this feature doesn't much help in static screenshots but makes animation nicer.
There is no [antialiasing](antialiasing.md) in the engine, i.e. aliasing can be noticed on far-away textures, but it is suppressed by the use of low-res textures and dimming far-away areas. There is also no edge smoothing (kind of misleadingly known as "antialiasing") in the geometry rendering, the engine is [subpixel](subpixel.md) accurate in rendering of the top and bottoms of the walls, i.e. the line these boundaries form may result in rasterizing slightly different pixels even if the start and end pixel is the same, depending on the subpixel position of the start and endpoint -- this feature doesn't much help in static screenshots but makes animation nicer.
## See Also

2
elo.md
View file

@ -67,7 +67,7 @@ int main(void)
for (int i = 0; i < PLAYERS; ++i)
{
players[i].elo = 1000; // give everyone inital Elo of 1000
players[i].elo = 1000; // give everyone initial Elo of 1000
// normally distributed skill in range 0-99:
players[i].skill = 0;

View file

@ -10,7 +10,7 @@ Great nerds read encyclopedias linearly from start to finish just like a normal
**Similar terms:** encyclopedias, which also used to be called **cyclopedias** in the past, are similar to **dictionaries** and these types of books often overlap (many encyclopedias call themselves dictionaries); the main difference is that a dictionary focuses on providing linguistic information and generally has shorter term definitions, while encyclopedias have longer articles (which however limits their total number, i.e. encyclopedias will usually prefer quality over quantity). Encyclopedias are also a subset of so called **reference works**, i.e. works that serve to provide [information](information.md) and reference to it (other kinds of reference works being e.g. world maps, tabulated values or [API](api.md) references). A **universal/general** encyclopedia is one that focuses on human knowledge at wide, as opposed to an encyclopedia that focuses on one specific field of knowledge. **Compendium** can be seen almost as a synonym to encyclopedia, with encyclopedias perhaps usually being more general and extensive. **Almanac** is also similar to encyclopedia, more focusing on tabular data. **Micropedia** is another term, sometimes used to denote a smaller encyclopedia (one edition of Britannica came with a micropedia as well as a larger macropedia).
These are some **nice/interesting/benchmark articles** to look up in encyclopedias: [algorithm](algorithm.md), [anarchism](anarchism.md), Andromeda (galaxy), Antarctica, Atlantis, atom, [axiom of choice](axiom_of_choice.md), [Bible](bible.md), [big bang](big_bang.md), [black hole](black_hole.md), [brain](brain.md), [Buddhism](buddhism.md), [C](c.md) (programming language), [cannibalism](cannibalism.md), [capitalism](capitalism.md), castle, [cat](cat.md), [censorship](censorship.md), [central processing unit](cpu.md), [chess](chess.md), Chicxulub, China, [color](color.md), comet, [communism](communism.md), [computer](computer.md), [Creative Commons](creative_commons.md), [Deep Blue](deep_blue.md), [democracy](democracy.md), Democratic People's Republic of Korea, [depression](depression.md), [determinism](determinism.md), [dinosaur](dinosaur.md), dodo, [dog](dog.md), [Doom](doom.md) (game), [Earth](earth.md), [Einstein](einstein.md), [Elo](elo.md), [Encyclopedia](encyclopedia.md), [entropy](entropy.md), [ethics](ethics.md), [Euler's Number](e.md), [evolution](evolution.md), [font](font.md), [football](football.md), [fractal](fractal.md), [free software](free_software.md), [game](game.md), gigantopythecus, [go](go.md) (game), [god](god.md), [GNU](gnu.md) project, [hacker](hacking.md), Hanging Gardens of Babylon, [hardware](hardware.md), [Hitler](hitler.md), [Holocaust](holocaust.md), [homosexual](gay.md), [human](human.md), [information](information.md), intelligence, [Internet](internet.md), [IQ](iq.md), Japan, [Jesus](jesus.md), [Jew](jew.md), [language](language.md), [Latin](latin.md), [life](life.md), [light](light.md), lightning, [Linux](linux.md), [logarithm](log.md), [logic](logic.md), [love](love.md), Mammoth, [mathematics](math.md), Mariana Trench, Mars, Milky Way, Moon, [morality](morality.md), Mount Everest, [music](music.md), [necrophylia](necrophylia.md), [Open Source](open_source.md), negro, [nigger](nigger.md), pacifism, [pedophilia](pedophilia.md), [penis](penis.md), [pi](pi.md), Pluto, [prime number](prime.md), [quaternion](quaternion.md), Pompei, [Quran](quran.md), [race](race.md), Roman Empire, [sex](sex.md), [sine](sin.md), [schizophrenia](schizo.md), [software](sw.md), [Stallman](rms.md) (Richard), [star](star.md), Stonehenge, [suicide](suicide.md), Sun, Tibet, [technology](technology.md), Tetris, [time](time.md), Titanic, [transistor](transistor.md), Troy, Tyrannousaurus Rex, [UFO](ufo.md), [universe](universe.md), [Unix](unix.md), Uruk, [Usenet](usenet.md), Valonia Ventricosa (bubble algae), Vatican, Venus, video game, [Wikipedia](wikipedia.md), [woman](woman.md), [World War II](wwii.md), [World Wide Web](www.md), ...
These are some **nice/interesting/benchmark articles** to look up in encyclopedias: [algorithm](algorithm.md), [anarchism](anarchism.md), Andromeda (galaxy), Antarctica, Atlantis, atom, [axiom of choice](axiom_of_choice.md), [Bible](bible.md), [big bang](big_bang.md), [black hole](black_hole.md), [brain](brain.md), [Buddhism](buddhism.md), [C](c.md) (programming language), [cannibalism](cannibalism.md), [capitalism](capitalism.md), castle, [cat](cat.md), [censorship](censorship.md), [central processing unit](cpu.md), [chess](chess.md), Chicxulub, China, [color](color.md), comet, [communism](communism.md), [computer](computer.md), [Creative Commons](creative_commons.md), [Deep Blue](deep_blue.md), [democracy](democracy.md), Democratic People's Republic of Korea, [depression](depression.md), [determinism](determinism.md), [dinosaur](dinosaur.md), dodo, [dog](dog.md), [Doom](doom.md) (game), [Earth](earth.md), [Einstein](einstein.md), [Elo](elo.md), [Encyclopedia](encyclopedia.md), [entropy](entropy.md), [ethics](ethics.md), [Euler's Number](e.md), [evolution](evolution.md), [font](font.md), [football](football.md), [fractal](fractal.md), [free software](free_software.md), [game](game.md), gigantopythecus, [go](go.md) (game), [god](god.md), [GNU](gnu.md) project, [hacker](hacking.md), Hanging Gardens of Babylon, [hardware](hardware.md), [Hitler](hitler.md), [Holocaust](holocaust.md), [homosexual](gay.md), [human](human.md), [information](information.md), intelligence, [Internet](internet.md), [IQ](iq.md), Japan, [Jesus](jesus.md), [Jew](jew.md), [language](language.md), [Latin](latin.md), [life](life.md), [light](light.md), lightning, [Linux](linux.md), [logarithm](log.md), [logic](logic.md), [love](love.md), Mammoth, [mathematics](math.md), Mariana Trench, Mars, Milky Way, Moon, [morality](morality.md), Mount Everest, [music](music.md), [necrophilia](necropiilia.md), [Open Source](open_source.md), negro, [nigger](nigger.md), pacifism, [pedophilia](pedophilia.md), [penis](penis.md), [pi](pi.md), Pluto, [prime number](prime.md), [quaternion](quaternion.md), Pompei, [Quran](quran.md), [race](race.md), Roman Empire, [sex](sex.md), [sine](sin.md), [schizophrenia](schizo.md), [software](sw.md), [Stallman](rms.md) (Richard), [star](star.md), Stonehenge, [suicide](suicide.md), Sun, Tibet, [technology](technology.md), Tetris, [time](time.md), Titanic, [transistor](transistor.md), Troy, Tyrannousaurus Rex, [UFO](ufo.md), [universe](universe.md), [Unix](unix.md), Uruk, [Usenet](usenet.md), Valonia Ventricosa (bubble algae), Vatican, Venus, video game, [Wikipedia](wikipedia.md), [woman](woman.md), [World War II](wwii.md), [World Wide Web](www.md), ...
**What is the best letter in an encyclopedia?** If you are super nerdy, you may start to search for your favorite starting letter -- this if [fun](fun.md) and may also help you e.g. decide which volume of your encyclopedia to take with you when traveling. Which letter is best depends on many things, e.g. the language of the encyclopedia, its size, your area of interest and so on. Assuming [English](english.md) and topics that would be interesting to the readers of [LRS wiki](lrs_wiki.md), the best letter is most likely C -- it is the second most common starting letter in dictionaries, has a great span and includes essential and interesting terms such as [computer](computer.md), [C](c.md) programming language, [cat](cat.md), [communism](communism.md), [capitalism](capitalism.md), [chess](chess.md), [christianity](christianity.md), [collapse](collpase.md), [CPU](cpu.md), [color](color.md), [culture](culture.md), [copyleft](copyleft.md), [compiler](compiler.md), [creative commons](creative_commons.md), [cryptography](cryptography.md), [copyright](copyright.md), [car](car.md), [cancer](cancer.md), [cellular automata](cellular_automaton.md), [consumerism](consumerism.md), [cosine](cosine.md), [Chomsky](chomsky.md), [CIA](cia.md), [cybernetics](cybernetics.md), [cracking](cracking.md), [chaos](chaos.md), [carbon](carbon.md), [curvature](curvature.md), [chemistry](chemistry.md), [censorship](censorship.md) and others. As close second comes S, the most frequent letter in dictionaries, with terms such as [Stallman](rms.md), [science](science.md), [shader](shader.md), [semiconductor](semiconductor.md), [silicon](silicon.md), [software](software.md), [sound](sound.md), [socialism](socialism.md), [state](state.md), [selflessness](selflessness.md), [speech recognition](speech_recognition.md), [steganography](steganography.md), [square root](square_root.md), [sudoku](sudoku.md), [suicide](kys.md), [speedrun](speedrun.md), [space](space.md), [star](star.md), [Sun](sun.md), [sine](sin.md), [Soviet union](ussr.md), [schizophrenia](schizo.md), [set](set.md), [suckless](suckless.md), [shit](shit.md), [sex](sex.md) and others. { This is based on a list I made where I assigned points to each letter. The letters that follow after C and S are P, M, A, E, T, L, R, F, D, G, I, B, H, U, N, W, V, J, O, K, Q, Z, Y, X. ~drummyfish }

6
faq.md
View file

@ -75,11 +75,11 @@ No, of course not you dumbo. There is no intention of deception, this project st
There are many reasons, it serves multiple purposes which also change a bit over time -- the "net good" arising from the existence of this wiki seems to be quite higly positive, so it keeps existing and at least for now flourishes. Anyway here are some reasons for why this wiki exists:
- At the beginning this was mostly a silly fun and a way of communicating among a few people, though soon it became just my own project.
- It really tries to explore -- and also show -- how technology could be done well. By writing this wiki I invent new terms, categorize them, connect concepts together, find useful ideas burried in the history of technology. This wiki can become useful if there is a turnaround, e.g. after the collapse. It also tries to SHOW that many things can be done simply, many articles contain short code snippets that do very useful work in very few lines of code. Many project like libraries and games have been done just by myself and though they many not be perfect, just imagine if some real genius, of a small team of people, tried to do things the way I do them -- we would see miracles happen. Many articles link to cool minimalist programs and projects that demostrate the principles.
- It really tries to explore -- and also show -- how technology could be done well. By writing this wiki I invent new terms, categorize them, connect concepts together, find useful ideas buried in the history of technology. This wiki can become useful if there is a turnaround, e.g. after the collapse. It also tries to SHOW that many things can be done simply, many articles contain short code snippets that do very useful work in very few lines of code. Many project like libraries and games have been done just by myself and though they many not be perfect, just imagine if some real genius, of a small team of people, tried to do things the way I do them -- we would see miracles happen. Many articles link to cool minimalist programs and projects that demonstrate the principles.
- Hopefully it's going to be a useful resource for people who want to e.g. start programming in C, if only as a repository of code snippets for example. By this I hope to help bring more people to the world of good technology. It's also going to be a big book that's completely CC0, there is never enough of these.
- Similarly I hope to spark some critical thinking and non-mainstream midsets such as those of altruism, minimalism, nonviolence and selflessness. There are so few resources that do this, everything is overshadowed by the huge circlejerk avalanche of modern brainwashing of competitiveness, secrecy, self interest, basically just pure evil. I really feel that if I don't say certain things, no one else will.
- I hope to perhaps inspire others to make something similar, be it a wiki in similar style or any other kind of art, shared selflessly in the public domain, trying to lead some moral example etc.
- It's an experiment in creating what for now seems to be a unique kind of work, a highly uncensored "brain dump" of a social outcast which combines a serious encylopedia, half serious shitposting, repository of various data, social comments and so on. It's also being published continuously, with TODOs and WIPs, errors and mistakes, there are no "stable versions", just a kind of "as is" stream of data, take whatever you will out of it.
- It's an experiment in creating what for now seems to be a unique kind of work, a highly uncensored "brain dump" of a social outcast which combines a serious encyclopedia, half serious shitposting, repository of various data, social comments and so on. It's also being published continuously, with TODOs and WIPs, errors and mistakes, there are no "stable versions", just a kind of "as is" stream of data, take whatever you will out of it.
- The wiki tries to document contemporary society, it may be useful for future historians.
- It helps me cope, vent my emotion.
- It immensely helps me explain my worldviews without wasting my time and having to talk to people too much. Before this wiki whenever someone asked me "why do you think X?" over email, I had to spend an hour formulating a reply, then I would send it, the guy would be like "hmm it's cool but I disagree" -- so that was an hour of my life lost. People kept asking me the same things over and over, I used to have the exact same hour long converstations with many people, so now I just write my reasonings here and point to my articles without having to suffer retarded arguments over and over. Really it made me much less suicidal.
@ -117,7 +117,7 @@ In three words basically [anarcho pacifist](anpac.md) [communism](communism.md),
### Why do you blame everything on capitalism when most of the issues you talk about, like propaganda, surveillance, exploitation of the poor and general abuse of power, appeared also under practically any other systems we've seen in history?
This is a good point, we talk about [capitalism](capitalism.md) simply because it is the system of today's world and an immediate threat that needs to be addressed, however we always try to stress that the root issue lies deeper: it is **[competition](comptetition.md)** that we see as causing all major evil. Competition between people is what always caused the main issues of a society, no matter whether the system at the time was called capitalism, feudalism or pseudosocialism. While historically competition and conflict between people was mostly forced by the nature, nowadays we've conquered technology to a degree at which we could practically eliminate competition, however we choose to artificially preserve it via capitalism, the glorification of competition, and we see this as an extremely wrong direction, hence we put stress on opposing capitalism, i.e. artificial prolonging of competition.
This is a good point, we talk about [capitalism](capitalism.md) simply because it is the system of today's world and an immediate threat that needs to be addressed, however we always try to stress that the root issue lies deeper: it is **[competition](competition.md)** that we see as causing all major evil. Competition between people is what always caused the main issues of a society, no matter whether the system at the time was called capitalism, feudalism or pseudosocialism. While historically competition and conflict between people was mostly forced by the nature, nowadays we've conquered technology to a degree at which we could practically eliminate competition, however we choose to artificially preserve it via capitalism, the glorification of competition, and we see this as an extremely wrong direction, hence we put stress on opposing capitalism, i.e. artificial prolonging of competition.
### Why are you calling everything "capitalism" when clearly you can't generalize so much, capitalism needs mass production, things like free trade, corporatism, libertarianism etc. are different things than capitalism, no?

View file

@ -5,7 +5,7 @@ Fixed point arithmetic is a simple and often [good enough](good_enough.md) metho
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 is **natural, easier to understand and therefore better predictable**, less tricky, [KISS](kiss.md), [suckless](sukless.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.)
- 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.).
- 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.

View file

@ -41,7 +41,7 @@ IDFT[k] = 1/N * /__ x[n] * e^(2 * i * pi * k * n / N)
n = 0
```
OK, this is usually where every noob ragequits if he hasn't already because of all the [pi](pi.md)s and [e](e.md)s and just generally ununderstable mess of weird symbols etc. What the heck does this all mean? As said above, it's doing nothing else than [dot product](dot_product.md) or vectors really: one vector is the input signal and the other vectors are the individual frequencies (sine waves) we are trying to discover in the signal -- this looks so complicated because here we are actually viewing the general version for a possible [complex](complex_number.md) input signal, the *e to something* part is actually the above mentioned complex exponential, it is the exponential way of writing a complex number (see e.g. [Euler's identity](eulers_indentity.md)). Anyway, considering only real input signal, we can simplify this to a more programmer friendly form:
OK, this is usually where every noob ragequits if he hasn't already because of all the [pi](pi.md)s and [e](e.md)s and just generally ununderstable mess of weird symbols etc. What the heck does this all mean? As said above, it's doing nothing else than [dot product](dot_product.md) or vectors really: one vector is the input signal and the other vectors are the individual frequencies (sine waves) we are trying to discover in the signal -- this looks so complicated because here we are actually viewing the general version for a possible [complex](complex_number.md) input signal, the *e to something* part is actually the above mentioned complex exponential, it is the exponential way of writing a complex number (see e.g. [Euler's identity](eulers_identity.md)). Anyway, considering only real input signal, we can simplify this to a more programmer friendly form:
```
DFT:

View file

@ -6,7 +6,7 @@ Free (as in freedom) software is a type of ethical [software](software.md) that'
Free software is also known as *free as in freedom*, *free as in speech* software or *libre* software. It is sometimes equated with [open source](open_source.md), even though open source is fundamentally different ([evil](evil.md)), or neutrally labelled FOSS or FLOSS (free/libre and open-source software); sadly free software has lost to open source in mainstream popularity. In contrast to free software, software that is merely gratis (freeware) is sometimes called *free as in beer*.
**Examples of free software** include the [GNU](gnu.md) operating system (also known as "[Linux](linux.md)"), [GIMP](gimp.md) (image editor), [Stockfish](stockfish.md) chess engine, or games such as [Xonotic](xonotic.md) and [Anarch](anarch.md). Free software is actually what runs the world, it is a standard among experts and it is possible to do computing with exclusively free software (though this may depend on how far you stretch the definition), even though most normal people don't even know the term free software exists because they only ever come in contact with abusive [proprietary](proprietary.md) consumer software such as [Windows](windows.md) and capitalist [games](game.md). There also exists a lot of big and successful software, such as [Fireforx](firefox.md), [Linux](linux.md) (the kernel) or [Blender](blender.md), that's often spoken of as free software which may however be only technically true or true only to a big (but not full) degree: for example even though [Linux](linux.md) is 99% free, in its [vanilla](vanilla.md) version it comes with [proprietary](proprietary.md) [binary blobs](binary_blob.md) which breaks the rules of free software. [Blender](blender.md) is technically free but it is also [capitalist software](capitalist_software.md) which doesn't really care about freedom and may de-facto limit some freedoms required by free software, even if they are granted legally by Blender's license. Such software is better called "[open source](open_source.md)" or [FOSS](foss.md) because it doesn't meet the high standards of free software. This issue of technically-but-not-really free software is addressed by some newer movements and philosophies such as [suckless](suckless.md) and our [less retarded software](lrs.md) who usually also aim for [unbloating](bloat.md) technology so as to make it more free in practice.
**Examples of free software** include the [GNU](gnu.md) operating system (also known as "[Linux](linux.md)"), [GIMP](gimp.md) (image editor), [Stockfish](stockfish.md) chess engine, or games such as [Xonotic](xonotic.md) and [Anarch](anarch.md). Free software is actually what runs the world, it is a standard among experts and it is possible to do computing with exclusively free software (though this may depend on how far you stretch the definition), even though most normal people don't even know the term free software exists because they only ever come in contact with abusive [proprietary](proprietary.md) consumer software such as [Windows](windows.md) and capitalist [games](game.md). There also exists a lot of big and successful software, such as [Firefox](firefox.md), [Linux](linux.md) (the kernel) or [Blender](blender.md), that's often spoken of as free software which may however be only technically true or true only to a big (but not full) degree: for example even though [Linux](linux.md) is 99% free, in its [vanilla](vanilla.md) version it comes with [proprietary](proprietary.md) [binary blobs](binary_blob.md) which breaks the rules of free software. [Blender](blender.md) is technically free but it is also [capitalist software](capitalist_software.md) which doesn't really care about freedom and may de-facto limit some freedoms required by free software, even if they are granted legally by Blender's license. Such software is better called "[open source](open_source.md)" or [FOSS](foss.md) because it doesn't meet the high standards of free software. This issue of technically-but-not-really free software is addressed by some newer movements and philosophies such as [suckless](suckless.md) and our [less retarded software](lrs.md) who usually also aim for [unbloating](bloat.md) technology so as to make it more free in practice.
Though unknown to common people, the invention and adoption of free software has been **one the most important events in the history of computers** -- mere technology consumers nowadays don't even realize (and aren't told) that what they're using consists and has been enabled possibly mostly by software written non-commercially, by volunteers for free, basically on [communist](communism.md) principles. Even if consumer technology is unethical because the underlying free technology has been modified by [corporations](corporation.md) to abuse the users, without free software the situation would have been incomparably worse if Richard Stallman hadn't achieved the small miracle of establishing the free software movement. Without it there would probably be practically no alternative to abusive technology nowadays, everything would be much more closed, there would probably be no "[open source](open_source.md)", "[open hardware](open_hardware.md)" such as [Arduino](arduino.md) and things such as [Wikipedia](wikipedia.md). If the danger of [intellectual property](intellectual_property.md) in software wasn't foreseen and countered by Richard Stallman right in the beginning, the corporations' push of legislation would probably have continued and copyright laws might have been many times worse today, to the point of not even being able to legally write free software nowadays. We have to be very grateful that this happened and continue to support free software.

View file

@ -35,7 +35,7 @@ Furthermore many different ways of division and classifications are widely used
- [hard to learn, easy to master](hard_to_learn_easy_to_master.md)
- [easy to learn, easy to master](easy_to_learn_easy_to_master.md)
- [hard to learn, hard to master](hard_to_learn_hard_to_master.md)
- [symmetric](symmetry.md) vs assymetric gameplay
- [symmetric](symmetry.md) vs asymmetric gameplay
- ...
- by number of players:
- [zero player](zero_player.md)

View file

@ -12,7 +12,7 @@ The following are some notable game engines.
- **[Allegro](allegro.md)**: 2D [C](c.md) game library.
- **[BRender](brender.md)**: Old 3D engine that used mainly [software rendering](sw_rendering.md), used e.g. in Carmageddon, later released under [MIT](mit.md).
- **[Cube2](cube2.md)**: 3D [voxel](voxel.md) outdoor shooter engine with real-time editable levels, used e.g. in Cube 2: Sauerbraten.
- **[Godot](godot.md)**: A successful but [bloated](bloat.md) [FOSS](foss.md) ([MIT](mit.md)) [framework](framewrok.md) engine, alternative to the proprietary [Unity](unity.md) engine, written in [C++](cpp.md), supports many platforms, has 3D/2D graphics and physics engines, scripting in many languages and many "advanced" features. [Capitalist software](capitalist_software.md).
- **[Godot](godot.md)**: A successful but [bloated](bloat.md) [FOSS](foss.md) ([MIT](mit.md)) [framework](framework.md) engine, alternative to the proprietary [Unity](unity.md) engine, written in [C++](cpp.md), supports many platforms, has 3D/2D graphics and physics engines, scripting in many languages and many "advanced" features. [Capitalist software](capitalist_software.md).
- *id Tech* engines (engines by [Id software](id_software.md))
- **id Tech 0**: Simple 2D [raycasting](raycasting.md) engine, written in [ANSI C](C.md), used mainly in [Wolf3D](wolf3d.md) (1992).
- **id Tech 1**: [BSP](bsp.md) rendering engine used mainly in [Doom](doom.md) and Doom 2.

View file

@ -80,7 +80,7 @@ There are thousands of documented structures, kind of "life forms" or "species"
[][] toad
```
A typical run of the game from a randomly initialized grid looks a bit similar to the evolution of our [Universe](universe.md): initially (after the [Big Bang](big_bang.md)) the world exhibits a [chaotic](chaos.md) behavior, looking like a random noise of cells switching on and off seemingly without order, then, after a short while, more orderly patterns of the three basic kinds (still lives, oscillators and space ships) emerge and start interacting, either by being too close to each other or by shooting space ships and hitting each other -- this is a kind of "golden age" of life (interesting events, for example spontaneous emergences of [symmetry](symmetry.md)). After some time this usually settles on a repeating set of states with just still life and oscillators, far enough from each other to influence each other (a kind of heat death of the universe).
A typical run of the game from a randomly initialized grid looks a bit similar to the evolution of our [Universe](universe.md): initially (after the [Big Bang](big_bang.md)) the world exhibits a [chaotic](chaos.md) behavior, looking like a random noise of cells switching on and off seemingly without order, then, after a short while, more orderly patterns of the three basic kinds (still lives, oscillators and space ships) emerge and start interacting, either by being too close to each other or by shooting space ships and hitting each other -- this is a kind of "golden age" of life (interesting events, for example spontaneous emergence of [symmetry](symmetry.md)). After some time this usually settles on a repeating set of states with just still life and oscillators, far enough from each other to influence each other (a kind of heat death of the universe).
Staying at analogies with our Universe, game of life also recognizes its analogy to **[speed of light](speed_of_light.md)** (or *speed of life*), the fastest speed by which [information](information.md) can propagate through the game of life universe -- in the basic version this speed is simply one cell per turn (as any possible pattern, no matter how complex, can only ever influence its immediately neighboring cells in one turn). This speed is exploited by some algorithms to [optimize](optimize.md) the game's simulation.

View file

@ -8,7 +8,7 @@ Gopher **doesn't use any [encryption](encryption.md)** (though some servers allo
From the user's perspective **the most important distinction from the Web** is that gopher is based on **menus** instead of "webpages"; a menu is simply a column of items of different predefined types, most importantly e.g. a *text file* (which clients can directly display), *directory* (link to another menu), *text label* (just shows some text), *binary file* etc. A menu can't be formatted or visually changed, there are no colors, images, scripts or [hypertext](hypertext.md) -- a menu is not a presentation tool, it is simply a navigation node towards files users are searching for (but the mentioned ASCII art and label items allow for somewhat mimicking "websites" anyway). Gopher is also often **browsed from the [command line](cli.md)**, though graphical clients are a thing too. Addressing works with [URLs](url.md) just as the Web, the URLs just differ by the protocol part (`gopher://` instead of `http://`), e.g.: `gopher://gopher.floodgap.com:70/1/gstats`. What on Web is called a "website" on gopher we call a **gopherhole** or just *hole* (i.e. a collection of resources usually under a single [domain](domain.md)) and the whole gopher network is called a **gopherspace**. [Blogs](blog.md) are common on gopher and are called **phlogs** (collectively a *phlogosphere*). As menus can refer to one another, gopher creates something akin a **global [file system](file_system.md)**, so browsing gopher is like browsing folders and can comfortably be handled with just 4 arrow keys. Note that as menus can link to any other menu freely, the structure of the "file system" is not a [tree](tree.md) but rather a general [graph](graph.md). Another difference from the Web is gopher's great emphasis on **[plaintext](plaintext.md) and [ASCII art](ascii_art.md)** as it cannot embed images and other media in the menus (even though of course the menus can link to them). There is also a support for sending text to a server so it is possible to implement [search engines](search_engine.md), guest books, [games](game.md) etc.
Gopher is just an [application layer](l7.md) [protocol](protocol.md) (officially running on [port](port.md) 70 assigned by [IANA](iana.md)), i.e it sits above lower layer protocols like [TCP](tcp.md) and takes the same role as [HTTP](http.md) on the Web and so only defines how clients and servers talk to each other -- the gopher protocol doesn't say how menus are written or stored on servers. Nevertheless for the creation of menus so called **gophermaps** have been established, which is a simple format for writing menus and are the gopher equivalent of Web's [HTML](html.md) files (just much simpler, basically just menu items on separate lines, the exact syntax is ultimately defined by server implementation). A server doesn't have to use gophermaps, it may be e.g. configured to create menus automatically from directories and files stored on the server, however gophermaps allow users to write custom menus manually. Typically in someone's gopherhole you'll be served a welcoming intro menu similar to a personal webpage that's been written as a gophermap, which may then link to directiories storing personal files or other hand written menus. Some gopher servers also allow creating dynamic content with scripts called **moles**.
Gopher is just an [application layer](l7.md) [protocol](protocol.md) (officially running on [port](port.md) 70 assigned by [IANA](iana.md)), i.e it sits above lower layer protocols like [TCP](tcp.md) and takes the same role as [HTTP](http.md) on the Web and so only defines how clients and servers talk to each other -- the gopher protocol doesn't say how menus are written or stored on servers. Nevertheless for the creation of menus so called **gophermaps** have been established, which is a simple format for writing menus and are the gopher equivalent of Web's [HTML](html.md) files (just much simpler, basically just menu items on separate lines, the exact syntax is ultimately defined by server implementation). A server doesn't have to use gophermaps, it may be e.g. configured to create menus automatically from directories and files stored on the server, however gophermaps allow users to write custom menus manually. Typically in someone's gopherhole you'll be served a welcoming intro menu similar to a personal webpage that's been written as a gophermap, which may then link to directories storing personal files or other hand written menus. Some gopher servers also allow creating dynamic content with scripts called **moles**.
**Gopher [software](software.md)**: sadly "[modern](modern.md)" browsers are so modern they have millions of lines of code but can't be bothered to support such a trivial protocol like gopher, however there are Web proxies you can use to explore gopherspace (look up e.g. floodgap). Better browsers such as [lynx](lynx.md) (terminal), [sacc](sacc.md), [clic](clic.md) or [forg](forg.md) ([GUI](gui.md)) can be used for browsing gopherspace natively (it's not hard, you don't need to learn any keybinds, using arrow keys usually just works). As a server you may use e.g. Gophernicus (used by [SDF](sdf.md)) or search for another one, there are dozens. { Personally I've used gophrier for server, it was the simplest one I found. ~drummyfish } For the creation of gophermaps you simply use a plaintext editor. **Where to host gopher?** [Pubnixes](pubnix.md) such as [SDF](sdf.md), [tilde.town](tilde_town.md) and [Circumlunar community](circumlunar.md) offer gopher hosting but many people simply [self-host](self_hosting.md) servers e.g. on [Raspberry Pis](rpi.md), it's pretty simple.
@ -30,7 +30,7 @@ To quickly try browsing gopher either use a web proxy, e.g. at https://gopher.fl
More technical details: just as with the web, you have some gopher [server](server.md) running somewhere (some [IP address](ip_address.md)/[domain](domain.md), on [port](port.md) 70) which serves resources to [clients](client.md). A client connects to the server (via [TCP](tcp.md)) and simply sends the name of the resource (file or directory) it wants to retrieve as a [string](string.md) ending with a newline. If the string is empty, the server sends the default directory (the "main page"). You may try this manually in terminal using [telnet](telnet.md), [nc](nc.md) or a similar tool. For example:
```
echo "" | nc floodhap.com 70
echo "" | nc floodgap.com 70
```
The server just sends us back a list of available resources in the "main directory", one per line, each in format:
@ -48,12 +48,12 @@ For example one of the lines here looks like this:
Here `1` says the resource is a directory, then we have a display string (which you'll see in the browser), then the path to the resource, i.e. `/v2`, and then the server and port. If we want to retrieve this directory, we send:
```
echo "/v2" | nc floodhap.com 70
echo "/v2" | nc floodgap.com 70
```
And get a similar response. This is basically all a client needs to know.
As for running a server, details depend on each one, but generally they behave like this: you have a server running in some default directory, let's say `/home/me/my_gopherhole`. By default a server will just serve list of files present in this directory to clients who request the "main directory", treating directories as subdirectories and sending regular files back. However there is one important feature: you may create a **gophermap file** to create a custom menu, or something aking a "gopher website". Gophermap is something like gopher's [HTML](html.md), just much more simple. How to do this? You simply create a file name `gophermap` in the directory (the main one or any subdirectory) -- if the server sees such a file, it serves it instead of listing the directory file.
As for running a server, details depend on each one, but generally they behave like this: you have a server running in some default directory, let's say `/home/me/my_gopherhole`. By default a server will just serve list of files present in this directory to clients who request the "main directory", treating directories as subdirectories and sending regular files back. However there is one important feature: you may create a **gophermap file** to create a custom menu, or something akin a "gopher website". Gophermap is something like gopher's [HTML](html.md), just much more simple. How to do this? You simply create a file name `gophermap` in the directory (the main one or any subdirectory) -- if the server sees such a file, it serves it instead of listing the directory file.
TODO: continue

View file

@ -55,7 +55,7 @@ A great many commonly used tricks in programming could be regarded as hacks even
- **[bit hacks](bit_hack.md)**: Clever manipulations of [bits](bit.md) -- for example it is possible to swap two variable without a temporary variables by using the [xor](xor.md) function. Another simplest example is implementing division by 2 as binary shift by 1 (this hack is used in real life by people for quickly dividing by 10, we just remove the last digit).
- **[copyleft](copyleft.md)**: A legal hack by [Richard Stallman](rms.md), connected to [free software](free_software.md), working on the basis of the following idea: "If [copyright](copyright.md) lets me put any conditions on my work, I may impose a condition on my work that says that any modified version must not impose any restrictive conditions".
- In minimalist [C](c.md) programming mainly two standards of the language are used: C89 and C99. To distinguish between them in source code one can e.g. exploit the fact that C99 introduced line comments (starting with `//`) and make such code that C99 sees part of it commented out while C89 doesn't. For example the following two lines: `int isC89 = 1 //**/ 2`, `; isC89 = !isC89;`.
- **[fast inverse square root](fast_inverse_sqrt.md)**: Famous hack that was used in the [game](game.md) Quake, it [approxmates](approximation.md) an inverse of [square root](sqrt.md) of a [floating point](float.md) number by treating it as an integer and bashing it with a [magic constant](magic_constant.md), which is about four times faster than computing the value with the obvious floating point division.
- **[fast inverse square root](fast_inverse_sqrt.md)**: Famous hack that was used in the [game](game.md) Quake, it [approximates](approximation.md) an inverse of [square root](sqrt.md) of a [floating point](float.md) number by treating it as an integer and bashing it with a [magic constant](magic_constant.md), which is about four times faster than computing the value with the obvious floating point division.
- **memory [rape](rape.md) in [C](c.md)**: E.g. instead of doing proper memory allocation with potentially inefficient and bloated `malloc` one may try to do a custom memory allocation without any libraries by abusing allocation on stack -- allocate a variable size array in main, set some global pointer to it and then manage this chunk of memory with your own allocation functions.
- **actually portable executable** (https://justine.lol/ape.html): Justine Tunney found a way to create an executable format that passes as a valid NATIVE executable on all major systems including [GNU](gnu.md)/[Linux](linux.md), [Windows](windows.md) and [Mac](mac.md), i.e. it is possible to compile a native program (e.g. with [C](c.md)) and then have it natively run on any major OS.
- **[game of life](game_of_life.md) patterns**: Stable patterns such as glider or even programming game of life in game of life is a nice example of game hacking -- in fact exactly game of life hacking stood at the beginning of hacker culture.

View file

@ -110,7 +110,7 @@ uint32_t strHash(const char *s)
TODO: more
BONUS: Here is a kind of string *pseudohash* for identifiers made only of character `a-z`, `A-Z`, `0-9` and `_`, not starting with digit -- it may be useful for symbol tables in compilers. It is parametrized by length *n*, which must be greater than 4. It takes an arbitrary length identifier in this format and outputs another string, also in this format (i.e. also being this kind of identifier), of maximum length *n - 1* (last place being reserved for terminating zero), which remains somewhat human readable (and is the same as input if under limit length), which may be good e.g. for debugging and transpiling (in transpilation you can just directly use these pseudohashes from the table as identifiers). In principle it works something like this: the input characters are cyclically written over and over to a buffer, and when the limit length is exceeded, a three character hash (made of checksum, "checkproduct" and string length) is written on positions 1, 2 and 3 (keeping the first character at position 0 the same). This means e.g. that the last characters will always be recorded, so if input identifiers differ in last characters (like `myvar1` and `myvar2`), they will always give different pseudohash. Also if they differ in first character, length (modulo something like 64), checksum or "checkproduct", their pseudohash is guaranteed to differ. Basically it should be hard to find a collision. Here is the code: { I found no collisions in my dataset of over 5000 identifiers, for *n = 16*. ~drummyfish }
BONUS: Here is a kind of string *pseudohash* for identifiers made only of character `a-z`, `A-Z`, `0-9` and `_`, not starting with digit -- it may be useful for symbol tables in compilers. It is parameterized by length *n*, which must be greater than 4. It takes an arbitrary length identifier in this format and outputs another string, also in this format (i.e. also being this kind of identifier), of maximum length *n - 1* (last place being reserved for terminating zero), which remains somewhat human readable (and is the same as input if under limit length), which may be good e.g. for debugging and transpiling (in transpilation you can just directly use these pseudohashes from the table as identifiers). In principle it works something like this: the input characters are cyclically written over and over to a buffer, and when the limit length is exceeded, a three character hash (made of checksum, "checkproduct" and string length) is written on positions 1, 2 and 3 (keeping the first character at position 0 the same). This means e.g. that the last characters will always be recorded, so if input identifiers differ in last characters (like `myvar1` and `myvar2`), they will always give different pseudohash. Also if they differ in first character, length (modulo something like 64), checksum or "checkproduct", their pseudohash is guaranteed to differ. Basically it should be hard to find a collision. Here is the code: { I found no collisions in my dataset of over 5000 identifiers, for *n = 16*. ~drummyfish }
```
char numPseudohash(unsigned char c)

View file

@ -34,7 +34,7 @@ In 1826 or 1827 French inventor Nicéphore Niépce captured **first [photography
**Sound recording** with phonatograph was invented in 1857 in Paris, however it could not be played back at the time -- the first record of human voice made with this technology can nowadays be reconstructed and played back. It wouldn't be until 1878 when people could both record and play back sounds with [Edison](edison.md)'s improvement of phonatograph. A year later, in 1879, Edison also patented the **light bulb**, even though he didn't invent it -- there were at least 20 people who created a light bulb before him. [Pi](pi.md) at this time is evaluated to roughly 500 digit accuracy (using Machin's formula).
Around 1888 so called **war of the currents** was taking place; it was a heated battle between companies and inventors for whether the [alternating](ac.md) or [direct](dc.md) current would become the standard for distribution of electric energy. The main actors were [Thomas Edison](edison.md), a famous iventor and a huge capitalist dick rooting for DC, and George Westinghouse, the promoter of AC. Edison and his friends used false claims and even killing of animals to show that AC was wrong and dangerous, however AC was objectively better, e.g. by its efficiency thanks to using high voltage, and so it ended up winning the war. AC was also supported by the famous genius inventor [Nikola Tesla](tesla.md) who during these times contributed hugely to electric engineering, he e.g. invented an AC motor and Tesla coil and created a system for wireless transmission of electric power.
Around 1888 so called **war of the currents** was taking place; it was a heated battle between companies and inventors for whether the [alternating](ac.md) or [direct](dc.md) current would become the standard for distribution of electric energy. The main actors were [Thomas Edison](edison.md), a famous inventor and a huge capitalist dick rooting for DC, and George Westinghouse, the promoter of AC. Edison and his friends used false claims and even killing of animals to show that AC was wrong and dangerous, however AC was objectively better, e.g. by its efficiency thanks to using high voltage, and so it ended up winning the war. AC was also supported by the famous genius inventor [Nikola Tesla](tesla.md) who during these times contributed hugely to electric engineering, he e.g. invented an AC motor and Tesla coil and created a system for wireless transmission of electric power.
Also in 1888 probably the **first [video](video.md)** that survived until today was recorded by Lou Le Prince in Northern England, with a single lens camera. It is a nearly 2 second silent black and white shot of people walking in a garden.

View file

@ -151,7 +151,7 @@ This is a summary of some main guidelines on how an LRS supporter should behave
- **Adopt [defeatism](defeatism.md)**; [optimism](optimism.md) is harmful, learn to be [pessimistic](pessimism.md) -- this stops you from engaging in [fight culture](fight_culture.md) and makes you free to behave morally, you will seize to be the slave of bullshit necessary for winning the capitalist game and you'll no longer be working for [capitalism](capitalism.md).
- **Search for the [truth](truth.md)**. You won't find it easily, real truth is always censored and hidden (though often in plain sight), but you can train yourself to spot propaganda and see the red flags. You won't find truth through Google, use different sources, read old books, [encyclopedias](encyclopedia.md) and different points of view (e.g. contrast articles on [Wikipedia](wikipedia.md) with those on [Infogalactic](infogalactic.d)). Learn foreign and old langages such as [Latin](latin.md) so that you can read untranslated and first hand historical accounts. **Question EVERYTHING** (absolutely everything, even this statement). Do not fall into traps such as [pseudoskepticism](pseudoskepticism.md). Train your mind to think critically, avoid [shortcut thinking](shortcut_thinking.md), question your own biased beliefs and wishes.
- **Reject harmful things like [proprietary](proprietary.md) software, [capitalism](capitalism.md), [copyright](copyright.md), [bloat](bloat.md), [work](work.md) etc.** Use and promote the ethical equivalents, i.e. [free software](free_software.md), [free culture](free_culture.md), frugality, [anarchism](anarchism.md) etc.
- **[Don't argue with retards](cant_argue_with_idiot.md)** with the goal of convincing him or winning the argument so that you feel good (the meaning of retard here is simply someone disagreeing with LRS). It's literally wasted time/energy and it's bad for your mental health, it leads nowhere and achieves nothing but make your more suicidal than you already are. You literally can NOT convince anyone who is not open to being convinced, it is impossible, even if you have 100000 mathematical proofs, real world evidence, literature supporting you and anything you can imagine, you cannot logically convince someone who doesn't know how logic works or someone who simply emotionally isn't ready to change his mind. In 99.999999999999999% cases you can tell if it's worth to talk to someone after his first reaction -- you present an idea, such as LRS, and if he just expresses disagreement, there is no point in communicating further, by the disagreement he has taken a defensive stance and will hold it for the rest of his life now, you have to go find someone else. NO, not even if he's an "intellectual", has PhD and thirty Nobel Prizes, if he doesn't wanna see the truth, you cannot help him. As it's been said, trying to argue with an idiot is like trying to win a chess game against a pidgeon -- even if you're the world chess champion, the pidgeon will just shit on the board and think it's won. If you spot a retard, just leave -- don't try to have the last word or anything, even admit him "victory" in the argument and leave him in his world of delusion where he is the unappreciated Einstein, just do not waste an extra second on him, just leave and go do something better. { So many such idiots I have met I can't even count it -- pure stupid peasant aren't even that bad, the wost are the "above averge" intelligence reddit atheists who think they're smart. I literally had such people argue like "you like games therefore competition in society is good because games are part of society therefore society equals competition". Truly I'm not sure if those bastards are just trolling me into suicide or are really so fucking dumb :D ~drummyfish }
- **[Don't argue with retards](cant_argue_with_idiot.md)** with the goal of convincing him or winning the argument so that you feel good (the meaning of retard here is simply someone disagreeing with LRS). It's literally wasted time/energy and it's bad for your mental health, it leads nowhere and achieves nothing but make your more suicidal than you already are. You literally can NOT convince anyone who is not open to being convinced, it is impossible, even if you have 100000 mathematical proofs, real world evidence, literature supporting you and anything you can imagine, you cannot logically convince someone who doesn't know how logic works or someone who simply emotionally isn't ready to change his mind. In 99.999999999999999% cases you can tell if it's worth to talk to someone after his first reaction -- you present an idea, such as LRS, and if he just expresses disagreement, there is no point in communicating further, by the disagreement he has taken a defensive stance and will hold it for the rest of his life now, you have to go find someone else. NO, not even if he's an "intellectual", has PhD and thirty Nobel Prizes, if he doesn't wanna see the truth, you cannot help him. As it's been said, trying to argue with an idiot is like trying to win a chess game against a pidgeon -- even if you're the world chess champion, the pidgeon will just shit on the board and think it's won. If you spot a retard, just leave -- don't try to have the last word or anything, even admit him "victory" in the argument and leave him in his world of delusion where he is the unappreciated Einstein, just do not waste an extra second on him, just leave and go do something better. { So many such idiots I have met I can't even count it -- pure stupid peasant aren't even that bad, the wost are the "above average" intelligence reddit atheists who think they're smart. I literally had such people argue like "you like games therefore competition in society is good because games are part of society therefore society equals competition". Truly I'm not sure if those bastards are just trolling me into suicide or are really so fucking dumb :D ~drummyfish }
- Similarly **avoid [toxic](toxic.md) communities**, don't argue, just leave, it's better to be alone than in bad company. Basically anything with a COC, language filter, SJW vibe, rainbow etc. isn't even more worth checking out.
- **Be a [generalist](generalism.md), see the big picture, study the whole world, educate yourself** -- tantum possumus quantum scimus, what we can do is given by what we know. Do not become overspecialized in the capitalist way. Sure you may become an expert at something, but not for the price of making your view of the world too narrow. You may spend most of your time studying and programming computer compilers for example, but still do (and enjoy) other things, for example reading fiction, studying religions, languages, psychology, playing [go](go.md), making music, building houses, painting, doing sports, ... Learn to enjoy to educate yourself! Education (not necessarily formal) is one of the most valuable things you can get -- no one can take it away from you, it makes you see truth more clearly and though this itself makes you more depressed, it also frees you in many ways, for example knowing languages enables you to read more books and live in more places and talk to more people and you can get a comfy job as a translator if you need money, knowing chess makes you able to entertain yourself without a computer, knowing programming enables you to write your own programs if good ones aren't available, and so on. Education makes you see through other people's lies. It is fine to be retarded, remain ignorant and just play video games all days, your value as a living being will lower that way, but you will forever remain among the retarded majority manipulated by the tides of society, even if you have good opinions and correct views, you'll stay just another retard, you won't be able to help others, you'll be paralyzed, leaving the burden and joy of helping the world on others -- just decide if that is what you want. Have you always admired that someone can play a piano? Why not learn it then? Get some cheap keyboard and make it a habit to practice playing it at least 20 minutes every other day, see how good you become in a year. Were you always bad at chemistry? Why not fix it a bit? Get some chemistry for dummies book and read it every day before sleep, you will go from absolute chemistry retard to well above average soon. You can learn about start constelations, biology, history, train card games, memorize pi digits, run half marathon, learn juggling, write your own small book etcetc. A nice life hack is to **see life as an RPG game**, see yourself as a character you are improving, by improving skills you are unlocking new abilities, enabling new options, increasing your stats -- however be very careful to not become competitive or fall victim to the ["self-improvement" cult](productivity_cult.md)! The key is to not start comparing yourself to other, or rather to not have it as a goal to be better than someone else, the goal should be just your happiness of becoming a higher level living entity that has more abilities for helping other, enjoy the universe and so on.
- **Stop just bitching around and DO SOMETHING** -- don't get this wrong, bitching around and ranting is great, this whole wiki is just one huge wall of rage bitching, however if it's all you do, it literally achieves nothing, it won't convince a single man, no one will read that shit, you are just wasting huge part of your life by being angry on the Internet. First thing you have to do is DO SOMETHING, e.g. if you promote minimalism, go and make a minimalist game, show others it works, prove (even to yourself) the thing you believe in is good, bitching about the world is only to come as a supplement to your main work -- your rants aren't there to convince anyone, your art does that, your writings are there for the people who are already convinced to help them educate themselves further. Consider this: you may spend whole life writing 100 books about how minimalism is awesome, you may examine the whole history in detail, provide mathematical proofs of everything and suggest a completely working system that could be established to solve all the problems in the world -- no one is going to read this. Literally not a single man will give a shit. On the other hand you can take a year to program a minimalist operating system, one that is 1000 times smaller than Linux and is 10 times faster and is completely public domain and basically rapes Linux in every other way, you just post that somewhere and people just can't ignore it, you put before their eyes something they can literally see is infinitely better than what was there before, you instantly get thousands of people hooked and they start creating more art like this. You just changed the world significant for the better in just one year. Note this isn't an argument for chasing popularity at all, on the contrary, your actions will likely contradict the popular and even cause a lot of hate, however realize that words are just words, there are too many words everywhere, words can lie and they never achieve anything by themselves, good is achieved and proven by actions.

View file

@ -23,7 +23,7 @@ TODO: https://www.zakon.org/robert/internet/timeline/, https://www.freesoft.org/
Internet overtook the world thanks to having enabled great number of services to be provided very cheaply, at great scales and/or with extremely elevated attributes such as minimal [delay](delay.md) or great [bandwidth](bandwidth.md). This is crucial to many industries who couldn't do without such a network, however to individuals or even smaller organizations Internet is frequently just a tool of comfort -- they could exist without the Internet, just a little less comfortably. As Internet is becoming more and more monitored, controlled, overcrowded, limited and censored, we may start to consider the less comfortable alternatives as [good enough](good_enough.md) ways that actually gain us advantages in some other ways, e.g. more [freedom of expression](free_speech.md), more robust network (independence of the Internet infrastructure), technological independence etc. We have to keep in mind the services allowed by the Internet, such as long distance communication, information searching or playing games still mostly exist even without Internet, just usually separated or somehow suffering a few disadvantages; nevertheless these disadvantages may be bearable and/or made smaller, e.g. by adjusting ourselves to the limitations (if our communication becomes slower, we'll simply write longer messages to which we put more thought and information etc.) or combining these alternative services in a clever way. Additionally we can make use of the lessons learned from the Internet (e.g. cleverly designed [protocols](protocol.md), steganography, broadcasts, [digital](digital.md) data, ...) and apply them to the alternative networks. Let us now list a few alternatives to the Internet:
- **[books](book.md), [encyclopedias](encyclopedia.md), magazines, libraries, printed media, paper, film, ...**: Paper is an awesome medium, it's cheap and can hold quite a lot of information, both digital and analog, it can be used without a [computer](computer.md) but can still be combined with computers (e.g. [printers](printer.md), scanning and [OCR](ocr.md), [bar codes](bar_code.md), ...) and/or lower tech tools like [typewriters](typewriter.md) that may help manually copy books (see e.g. [samizdat](samizdat.md) that heavily utilized the ability of typewriters to produce several copies at once; in Antiquity books were copied by slaves with one reading the original out loud with others writing down many copies). Quality paper can be used for reliable [backups](backup.md) (source code, books, photos, even sound -- consider a high DPI print with each pixel recording one sample with its brightness). Posters can leave information for others to find. Books that have been written throughout history provide enormous amount of data and information, great part of which isn't even accessible through the Internet. Books are generally of much higher quality than websites, older ones are additionally free of modern propaganda and [censorship](censorship.md). Print encyclopedias can here and there be used instead of [Wikipedia](wikipedia.md), and they are extremely cheap (seek second hand book stores, no one wants them anymore). Books also provide entertainment, from traditional fiction, poetry etc. to entertaining reads such as the Guinness World Records book or even interactive [RPG](rpg.md) games (see [gamebooks](gamebook.md)). Making your own small library of quality books isn't expensive at all and can really greatly reduce your dependence on the Internet in many ways. **[Micrography](micrography.md)** (scaling down documents to fit many of them on a small film) can help maximize store quite large amounts of data on small media without computers.
- **[snail mail](snail_mail.md), avian carriers, arrows, messengers, [USB](usb.md) exchange, messages in bottle, ...**: Physically transforming messages is another historically tested option, travelers will always be around wanting to get from point A to point B and while at it they may also serve as information carriers -- information doesn't weight that much. There even exist volunteer organizations that distribute mail. People used to play correspondence [chess](chess.md) over snail mail, with enough dedication you could probably scale it up to some turn-based [MMORPG](mmorpg.md) game. Owing to the small weight, data can be transferred also by small animals such as pigeons (in some places with very bad Internet this is allegedly still the superior way even nowadays, in wars pigeons helped carry huge numbers of messages on microforms) or even just by "throwing", shooting an arrow with message on it, sending it down the river stream and so on. USB sticks are used by activists to send western propaganda to North Korea (e.g. small helium balloons carrying USB sticks with movies and books over the borders for the inhabitants to find). The disadvantage is high communication delay but even if it's orders of magnitude worse than what Internet offers us, bandwidth can still be excellent, sometimes even beating the Internet! Consider that a truck carrying 1000 1 terabyte harddrives arriving from start to its destination in a week achieves a bandwidth of about 1.6 gigabytes per second. That's pretty solid. Future inhabitans of Mars and other planets will inevitably have to deal with [interplanetary Internet](interplanetary_internet.md) that's doomed by laws of physics to have high delays -- if they can get around the issue, so can we. An interesting concept might be a "slow" network of people who simply meet up once a week and exchange their USB sticks (or SD cards or diskettes or whatever) on which they pass files and messages to others, such as requests for files etc.
- **[snail mail](snail_mail.md), avian carriers, arrows, messengers, [USB](usb.md) exchange, messages in bottle, ...**: Physically transforming messages is another historically tested option, travelers will always be around wanting to get from point A to point B and while at it they may also serve as information carriers -- information doesn't weight that much. There even exist volunteer organizations that distribute mail. People used to play correspondence [chess](chess.md) over snail mail, with enough dedication you could probably scale it up to some turn-based [MMORPG](mmorpg.md) game. Owing to the small weight, data can be transferred also by small animals such as pigeons (in some places with very bad Internet this is allegedly still the superior way even nowadays, in wars pigeons helped carry huge numbers of messages on microforms) or even just by "throwing", shooting an arrow with message on it, sending it down the river stream and so on. USB sticks are used by activists to send western propaganda to North Korea (e.g. small helium balloons carrying USB sticks with movies and books over the borders for the inhabitants to find). The disadvantage is high communication delay but even if it's orders of magnitude worse than what Internet offers us, bandwidth can still be excellent, sometimes even beating the Internet! Consider that a truck carrying 1000 1 terabyte harddrives arriving from start to its destination in a week achieves a bandwidth of about 1.6 gigabytes per second. That's pretty solid. Future inhabitants of Mars and other planets will inevitably have to deal with [interplanetary Internet](interplanetary_internet.md) that's doomed by laws of physics to have high delays -- if they can get around the issue, so can we. An interesting concept might be a "slow" network of people who simply meet up once a week and exchange their USB sticks (or SD cards or diskettes or whatever) on which they pass files and messages to others, such as requests for files etc.
- **leaving signs ([rocks](rock.md), sticks, leaves, messages in sand, bulletin boards, ...)**: Some forest people communicate by leaving signs for others e.g. by leaving tears on leaves or making shapes from sticks or rocks -- these can carry messages like "beware, dangerous animal around", "today I hunted down a monkey here" or "I have extra food, come take some". When improved, we could communicate whole text messages, numbers and any binary data this way -- imagine e.g. a small ["bulletin board"](bbs.md) on some frequently visited crossroads between villages where people leave latest news, offers, demands, requests for information from others, silly jokes etc. In some cities there exist book exchange booths where people just leave their old books for others to take -- this could be further improved by adding some sort of message board for communication.
- **[intranet](intranet.md), [LAN](lan.md), [WAN](wan.md), ...**: Networks using basically the same technology as the Internet ([TCP](tcp.md)/[IP](ip.md), [ethernet](ethernet.md), [wifi](wifi.md), routers, ...), just on smaller scales -- the technology can actually be simpler: simpler routers can be used, no high performance backbone routers are needed, [Ronja](ronja.md) may be used instead of wifi, [DNS](dns.md) may be omitted and so on. There are many such networks, [military](military.md) has its own isolated networks, North Korea has its famous nation-wide isolated intranet ([Kwangmyong](kwangmyong.md)), Cuba has the famous [SNet](snet.md) -- "street net" that's used for pirating and games -- and so on. The advantage is relative simplicity of implementation -- the technology is all there and quite cheap, you can set up your own network in the neighborhood and have complete control over it, government isn't gonna bully you for sharing movies, it won't spy on your communication (at least not so easily) etc.
- **[radio](radio.md), [telegraph](telegraph.md)**: Plain FM/AM radio communication is a serious competition to Internet in terms of delay, bandwidth and distance of reach, while being very simple in comparison -- a skilled individual can construct or repair a radio with just some basic electronic components, which can't be said about digital computer networks that require extremely complex computer chips. Radio can relatively easily transfer analog information such as voice, but it can also send digital information. With [Morse code](morse_code.md) even the most primitive radio communication system can turn into something extremely powerful.

View file

@ -26,7 +26,7 @@ The current US-centered culture unfortunately forces a **right-pseudoleft false
What's called *left* in the [modern](modern.md) western culture 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).
The difference between left and pseudoleft can be shown in many ways; one of them may be that pseudoleft always wants to **[fight](fight_culture.md)** something, usually the right (as they're essentially the same, i.e. natural competitiors). True left wants to end all fights. Pseudoleft invents [bullshit](bullshit.md) artificial issues such as [political correctness](political_correctness.md) that sparks conflict, as it lives by conflict. Left tries to find peace by solving problems. Pseudoleft sees it as acceptable to do bad things to people who commited something it deems bad. True left knows that violence creates violence, it "turns the other cheek", it cures hate with love.
The difference between left and pseudoleft can be shown in many ways; one of them may be that pseudoleft always wants to **[fight](fight_culture.md)** something, usually the right (as they're essentially the same, i.e. natural competitors). True left wants to end all fights. Pseudoleft invents [bullshit](bullshit.md) artificial issues such as [political correctness](political_correctness.md) that sparks conflict, as it lives by conflict. Left tries to find peace by solving problems. Pseudoleft sees it as acceptable to do bad things to people who commited something it deems bad. True left knows that violence creates violence, it "turns the other cheek", it cures hate with love.
Pseudoleft is extra harmful by deceiving the public into thinking what it does really is leftist. Most normal people that don't think too much therefore stand between a choice of a lesser of two evils: the right and pseudoleft. True left, the true good, is not known, it is overshadowed. Let us now compare a few existing movements/ideologies/groups:

View file

@ -77,7 +77,7 @@ Our society is **[anarcho pacifist](anpac.md) and [communist](communism.md)**, m
- **How will society make progress?** Just as it always had: by science, curiosity, necessity, accidental discoveries, pursuit of creating art etc. It is a mistake to think we need capitalism or anything similar in order to make progress; progress cannot be stopped no matter what, it will always be here as long as humans exist.
- **How do you prevent natural human selfish and violent behavior?** Violent and selfish behavior is natural in us just as peaceful and altruistic behavior, we have two sides and which one shows is mostly determined by the conditions in which we live, by our upbringing and people we see as role models. Nowadays we think people are extremely selfish and violent because we live in society that highly fuels the "evil" side in us, when we're forced to fight for basic living and grow up in a highly competitive environment, it's no surprise most adapt to this and grow up to be "dicks". If we're forced to fight for food and brainwashed since birth that "life is a [fight](fight_culture.md)", we will be selfish and violent, just as wild wolves are violent while pet dogs whose needs are secured and who were raised peacefully are mostly completely peaceful. If we have abundance and grow up in a society that naturally rejects any violence, we will grow up to solve conflicts peacefully and think of others, just as nowadays we e.g. naturally learn to wear clothes because simply everyone does it and there is little reason not to. If we make resources abundant, there will be no need for selfishness -- do you see anyone stealing air from others out of selfishness? No, because there is no need for it, air is abundant. By changing the environment people live and grow up in we will make 99.99% of people abandon violence and selfish interests (note the remaining natural need for selfishness and competition can be satisfied e.g. with games).
- **How will you prevent chaos without laws or rules for the people?** We don't say there should be no rules, we are just against complicated written law that no one can even comprehend (even lawyers don't know all laws nowadays) and that has so little in common with morality. Our society works on the basis of moral rules that all stem from the common goal of well being of living beings and that are derived and taught by people themselves -- for example one moral rule that all people would learn would be that money is bad for society (along with the reasons why it is so) and even though there would be no police "enforcing" this rule, the rule would be effective by the fact that absolute majority of people would simply refuse to use money -- in a society where most people know capitalism is bad for them capitalism can't work. Note the importance of the fact that people wouldn't just be taught to memorize such rules as "facts set in stone" (as is our current law), emphasis would be put on people deriving their moral code and understanding how their behavior affects others, people would learn and teach by example.
- **How will you prevent criminality such as stealing, murder and mafia organizations?** In a society with abundance for all which works for the good of all criminality simply won't make sense, i.e. we will eliminate criminality by solving the root cause of it, not by curing the symptoms (building prisons etc.). People have no reason to revolt against a system that benefits them or attack other people if there is no conflict between them. Large criminal organizations also cannot exist if most population rejects them, for example there cannot arise a capitalist corporation (or a similar mafia organization) if most population is educated and refuses to engage in capitalism. In addition to this a more mature, educated and responsible society will naturally minimize genetic predisposition to things such as agressivity and self interest by natural selection as females will choose to rather have offspring with good people (unlike today), making genes associated with bad behavior go extinct. Of course, we probably won't eliminate criminality 100%, but that's not possible under any other system -- even in your current society with prisons and other punishments there still exist criminality. Of course in practice, until we achieve our ideal, we will likely need to keep some anti-criminality precautions as a necessary evil, but generally we will be able to greatly relax them (reduce police numbers, abandon death penalty, ...) as we move towards the ideal society. For example in an intermediate state of our society dangerous criminals won't be killed but only immobilized and they won't be put in prisons as a punishment but only sent to e.g. a remote island so as to be isolated, without punishing them by restricting their freedom within the island.
- **How will you prevent criminality such as stealing, murder and mafia organizations?** In a society with abundance for all which works for the good of all criminality simply won't make sense, i.e. we will eliminate criminality by solving the root cause of it, not by curing the symptoms (building prisons etc.). People have no reason to revolt against a system that benefits them or attack other people if there is no conflict between them. Large criminal organizations also cannot exist if most population rejects them, for example there cannot arise a capitalist corporation (or a similar mafia organization) if most population is educated and refuses to engage in capitalism. In addition to this a more mature, educated and responsible society will naturally minimize genetic predisposition to things such as aggression and self interest by natural selection as females will choose to rather have offspring with good people (unlike today), making genes associated with bad behavior go extinct. Of course, we probably won't eliminate criminality 100%, but that's not possible under any other system -- even in your current society with prisons and other punishments there still exist criminality. Of course in practice, until we achieve our ideal, we will likely need to keep some anti-criminality precautions as a necessary evil, but generally we will be able to greatly relax them (reduce police numbers, abandon death penalty, ...) as we move towards the ideal society. For example in an intermediate state of our society dangerous criminals won't be killed but only immobilized and they won't be put in prisons as a punishment but only sent to e.g. a remote island so as to be isolated, without punishing them by restricting their freedom within the island.
- **How will the [economy](economy.md) work without money?** With abundance of resources there will be no money and no trade, resources will be available to anyone who needs them. Various [anarchist](anarchism.md) schools already have proposals for how distribution of resources could work. The [Venus Project](venus_project.md) calls this a [resource based economy](resource_based_economy.md) and proposes using computers and globally placed sensors to collect data and make decisions about where to distribute resources. Resources would be gathered and distributed more locally and cities would be more self sufficient so as to prevent waste and vulnerability of the system, we wouldn't see a huge globalization like nowadays, there is e.g. no need for transporting exotic food all over the whole world to places where there is enough local food available, however anything could be distributed to places where such resources are scarce (e.g. water to deserts). Each community could have food banks and other storage and distribution centers.
- **How will you prevent discrimination and racism?** Things such as racism appear when one group of people feels endangered by another group, in a society without social competition these issues will naturally disappear.
- **How will you fulfill the natural need of people for competition?** With sports and other games. Competition of people won't be forbidden, it just won't be mandatory and it won't be the basis of society.

View file

@ -105,7 +105,7 @@ As the set is being studied and explored a lot, some even started to make maps o
- Point [0.372138,0.0903982] shows an infinitely zoomable point from which circular arms stem.
- ...
**Generalizations and modifications**: mentioned [Julia sets](julia_set.md) are very similar to the Mandelbrot set. **[Multibrot](multibrot.md)** sets are sets similar to the Mandelbrot which we define by requiring *abs(z[n])* to not surpass some given value *T* under inifinite iteration, i.e. Mandelbrot set is one of Multibrot sets, that in which we set *T = 2* (because as mentioned above, reaching 2 always leads to divergence towards infinity); for different values of *T* we'll get similar but different Multibrot fractal sets. We may also modify the iterative equation from quadratic to cubic (replace *z[n]^2* with *z[n]^3*), or a different power (or modify the equation in similar ways) to again get sets similar to the Mandelbrot. Using [quaternions](quaternion.md) instead of complex numbers generalized Mandelbrot from 2D to 4D. [Buddhabrot](buddhabrot.md) is another famous fractal (which looks like Buddha) and is related to Mandelbrot set.
**Generalizations and modifications**: mentioned [Julia sets](julia_set.md) are very similar to the Mandelbrot set. **[Multibrot](multibrot.md)** sets are sets similar to the Mandelbrot which we define by requiring *abs(z[n])* to not surpass some given value *T* under infinite iteration, i.e. Mandelbrot set is one of Multibrot sets, that in which we set *T = 2* (because as mentioned above, reaching 2 always leads to divergence towards infinity); for different values of *T* we'll get similar but different Multibrot fractal sets. We may also modify the iterative equation from quadratic to cubic (replace *z[n]^2* with *z[n]^3*), or a different power (or modify the equation in similar ways) to again get sets similar to the Mandelbrot. Using [quaternions](quaternion.md) instead of complex numbers generalized Mandelbrot from 2D to 4D. [Buddhabrot](buddhabrot.md) is another famous fractal (which looks like Buddha) and is related to Mandelbrot set.
## Code

View file

@ -21,14 +21,14 @@ It's sad and dangerous that newer generation won't even remember technology used
- Old technology was simpler and **better engineered with minimum [bloat](bloat.md)**. Fewer incompetent people were present in the field and capitalism wasn't yet pushing as hard on extreme development speed and abuse of the user, products still tried to compete by their quality.
- **Old computers were faster** and astronomically more efficient. Computers with a few MHz single-core CPU and under a megabyte of RAM booted faster to [DOS](dos.md) than modern computers boot to Windows 10, despite [Moore's law](moores_law.md) (this shittiness is known as [Wirth's law](wirths_law.md)). Old tech also **reacted faster to input** (had shorter input latency/lag), e.g. thanks to shorter input and output processing [pipelines](pipeline.md). { I've heard this confirmed from [John Carmack](carmack.md) himself in a talk on his development of [VR](vr.md). ~drummyfish } Back in the day things had to work smoothly -- if in the 90s you showed people a phone that you wake up and have to wait 20 seconds before it starts to react, they would laugh at it and on one would buy it -- nowadays such technology is the standard.
- Old devices such as cell phones **lasted much, much longer on battery**. The old phones such as Nokia 3310 would **last long over a week** on stand-by.
- **Old software was shipped [finished](finished.md), complete and with minimum [bugs](bug.md)**. Nowadays newly released "[apps](app.md)" and [games](game.md) are normally released unfinished, even in pre-alpha states and even "finished" ones have [bugs](bug.md) often rendering the software unsuable (see Cyberpunk 2077, GTA: Definiteve Edition etc.), user is supposed to wait years for fixes (without any guarantees), pay for content or even subscriptions. Some software "products" even spend their whole commercial life unfinished. Old software was difficult or even impossible to patch (e.g. [Gameboy](gameboy.md) cartridges) so it had to work.
- **Old software was shipped [finished](finished.md), complete and with minimum [bugs](bug.md)**. Nowadays newly released "[apps](app.md)" and [games](game.md) are normally released unfinished, even in pre-alpha states and even "finished" ones have [bugs](bug.md) often rendering the software unusable (see Cyberpunk 2077, GTA: "Definitive" Edition etc.), user is supposed to wait years for fixes (without any guarantees), pay for content or even subscriptions. Some software "products" even spend their whole commercial life unfinished. Old software was difficult or even impossible to patch (e.g. [Gameboy](gameboy.md) cartridges) so it had to work.
- **Old tech had minimum malicious features**. There wasn't [spyware in CPUs](intel_me.md), **[DRM](drm.md) was either absent or primitive**, there weren't ads in file explorers, there weren't [microtransactions](microtransaction.md) in games, there weren't [autoupdates](autoupdate.md), there weren't psychologically abusive [social networks](social_network.md), technology was **designed to last**, with replaceable parts; not to be [consoomed](consumerism.md), there was much less [censorship](censorship.md).
- **Old tech was much easier to repair, modify and customize**, thanks to not being so overcomplicated and not containing so many anti-repair "features". Old software wasn't in the [cloud](cloud.md) which makes it impossible to modify.
- **Old software was better programmed** because it was firstly made by actually the smartest people such as mathematicians and physicist (who were considering the big picture and saw e.g. the necessity for minimalism) and secondly without such a great pressure of the market because software was more a subject of research and experimenting rather than dirty fight for consumers. This can be seen even on commercial software such as games: for example the [Doom](doom.md) engine was written very nicely, in an extremely [portable](portability.md) way (which actually became legendary), with things such as an elegant deterministic FPS-independent physics (which results in many advantages and is basically THE only correct way of writing an engine) and [software rendering](software_rendering.md) that ran smooth even on that time's slow CPUs. Later engines from the same creators -- those of [Quake](quake.md) games -- began to suffer from worse design (no deterministic physics, dropping of software rendering etc.). Nowadays software is written by high schoolers, women and incompetent minorities forced into tech just for diversity quotas and generally anyone who can just copy paste snippets of code from the web, extremely tight deadlines in the market race make it impossible to tidy any piece of software -- game engines (like anything else) nowadays are indescribably badly written, non-portable, non-deterministic, bloated, running slow even on computers thousands of times faster than those that ran Doom (even if you lower graphic details of a 2023 game to the looks of a 2000s game, it will likely run under 10 FPS on a 2020 computer).
- **Old tech was much more independent and freedom friendly**, did not require Internet connectivity, subscription etc. Thanks to its simplicity and better hackability it was possible for people to partly control their devices, even if the devices were [proprietary](proprietary.md). Nowadays if the manufactures of your phone (or even a car) decides it's time for you to buy a new model, he just remotely kills your device, and you can hardly do anything about it (this is actually happening e.g. with [iPhones](iphone.md)).
- There was **minimum [bullshit](bullshit.md)**. True usefulness was more important than killer features and marketing.
- Old tech was **simpler and more [fun](fun.md) to program**, allowing direct access to hardware, not complicating things with [OOP](oop.md) and similar [shit](shit.md), and so **old programmers were more "[productive](productivity_cult.md)"**, less frustrated and stressed.
- **Old art was more [free in expression](free_speech.md), less [censored](censorship.md) and [toxic](toxic.md), without ads and [SJW](sjw.md) poison**, people still had some standards, there were still artists with artistic freedom and vision (take a look e.g. at the famous movie directors of the 90s, nowadays a director of a movie is just a nobody who has to bow to PR, marketing, diversity depratment, suck the investor dick etc.) there were no diversity quotas and shit. For example in old games such as Faery Tale Adventure II (1997) you could happily start killing children (even little black girls lol) in the village you spawned in and get away with it no problem, it was simply a choice you could make. Compare this to Skyrim (2011) where children were made the only invincible beings in the world, literally more powerful than dragons and gods because they couldn't be touched because the immense cowardice of the devs who are shitscared of lawyers, "PR", just literally aiming for profit and can't stand behind their art. After 2010 art is quite literally dead.
- **Old art was more [free in expression](free_speech.md), less [censored](censorship.md) and [toxic](toxic.md), without ads and [SJW](sjw.md) poison**, people still had some standards, there were still artists with artistic freedom and vision (take a look e.g. at the famous movie directors of the 90s, nowadays a director of a movie is just a nobody who has to bow to PR, marketing, diversity departement, suck the investor dick etc.) there were no diversity quotas and shit. For example in old games such as Faery Tale Adventure II (1997) you could happily start killing children (even little black girls lol) in the village you spawned in and get away with it no problem, it was simply a choice you could make. Compare this to Skyrim (2011) where children were made the only invincible beings in the world, literally more powerful than dragons and gods because they couldn't be touched because the immense cowardice of the devs who are shitscared of lawyers, "PR", just literally aiming for profit and can't stand behind their art. After 2010 art is quite literally dead.
- **Old "look n feel" of software was objectively better**. Just compare the look of [Doom](doom.md) and any shitty soulless "modern" game with billion polygons but literally zero aesthetics.
- ...

View file

@ -8,7 +8,7 @@ Even though neural networks absolutely aren't the only possible model used in [m
**Currently neural networks seem to be bringing back [analog](analog.md) computing.** As of 2023 most neural networks are still simulated with [digital](digital.md) computers, but due to the fact that such networks are analog and parallel in nature the digital approach is inelegant (we make digital devices out of analog circuits and then try to make them behave like analog devices again) and inefficient (in terms of energy consumption). Therefore analog is making a comeback and researchers are experimenting with analog implementations, most notably electronic (classic electronic circuits) and photonic (optics-based) ones. Keep in mind that digital and analog networks are compatible; you can for example train a network digitally and then, once you've found a satisfying network, implement it as analog so that you can e.g. put it in a cellphone so that it doesn't drain too much energy. Analog networks may of course be embedded in digital devices (we don't need to go full analog).
**[Hardware](hw.md) acceleration of neural networks is being developed.** Similarly to how [GPUs](gpu.md) arised to accelerate computer [graphics](graphics.md) during the 90s video game boom, similar hardware is arising for accelerating neural network computations -- these are called **[AI accelerators](ai_accelerator.md)**, notably e.g. Google's [TPU](tpu.md) (tensor processing unit). Currently GPUs are still mostly used for neural networks -- purely software networks are too slow. It is possible that future neural network hardware will be analog-based, as mentioned above.
**[Hardware](hw.md) acceleration of neural networks is being developed.** Similarly to how [GPUs](gpu.md) appeared to accelerate computer [graphics](graphics.md) during the 90s video game boom, similar hardware is appearing for accelerating neural network computations -- these are called **[AI accelerators](ai_accelerator.md)**, notably e.g. Google's [TPU](tpu.md) (tensor processing unit). Currently GPUs are still mostly used for neural networks -- purely software networks are too slow. It is possible that future neural network hardware will be analog-based, as mentioned above.
## Details

View file

@ -44,7 +44,7 @@ There are many terms that are very similar and can many times be used interchang
- **[decentralized](decentralization.md)** vs **[distributed](distributed.md)**
- **[declaration](declaration.md)** vs **[definition](definition.md)**
- **[demo](demo.md)** vs **[intro](intro.md)**
- **[democracy](democrycy.md)** vs **[voting](voting.md)**
- **[democracy](democracy.md)** vs **[voting](voting.md)**
- **[desktop environment](de.md)** vs **[window manager](wm.md)**
- **[duck typing](duck_typing.md)** vs **[weak typing](weak_typing.md)** vs **[dynamic typing](dynamic_typing.md)**
- **[digit](digit.md)** vs **[number](number.md)** vs **[value](value.md)**

View file

@ -54,7 +54,7 @@ What would an operating system designed by [LRS](lrs.md) principles look like? T
The basic idea for a universal LRS operating system is to be something more akin a mere **text [shell](shell.md)** (possibly [comun](comun.md) shell), we wouldn't probably even call it an operating system. A rough vision is something like **"[DOS](dos.md) plus a bit of [Unix philosophy](unix_philosophy.md)"**; we may also imagine it like [GRUB](grub.md) or something similar really. The system would probably seem primitive by "[modern](modern.md) standards", but in a [good society](less_retarded_society.md) it would be sufficient as a universal operating system (i.e. not necessarily suitable for ALL purposes). The OS would in fact be more of a **program loader** (like e.g. the one seen in [Pokitto](pokitto.md)), running with the same privileges as other programs -- its purpose would NOT be to provide a safe environment for programs to run in, to protects user's data and possibly not even to offer a platform for programs to run on (for abstracting hardware away a non-OS [library](library.md) might be used instead), but rather to allow switching between different programs on a computer without having to reupload the programs externally, and to provide basic tools for managing the computer itself (such as browsing files, testing hardware etc.). This shell would basically allow to browse files, load them as programs, and maybe run simple scripts (e.g. in mentioned comun language), allowing things such as automatization of running several program (NOT in parallel but rather one by one) to collaborate on computing something.
An idea worth mentioning is also the possibility to have a have a distribution of this "operating system" that works completely without a file system, i.e. something aking a "big program" that has all the tools compiled into it, without the possibility to install or uninstall programs. Of course this doesn't mean ALL operating systems would in the world would work like this, it would just be a possibility for those that could benefit from it, e.g. very small wrist watch computers that don't wouldn't want and need to include hardware and software required for a mutable filesystem to work, since all they would need would be a few tools like stopwatch and calculator, plus they would gain the advantage of loading a program instantly. The tools to be "compiled in" could be chosen by the user before compilation to make a personalized "immutable distro".
An idea worth mentioning is also the possibility to have a have a distribution of this "operating system" that works completely without a file system, i.e. something akin a "big program" that has all the tools compiled into it, without the possibility to install or uninstall programs. Of course this doesn't mean ALL operating systems would in the world would work like this, it would just be a possibility for those that could benefit from it, e.g. very small wrist watch computers that don't wouldn't want and need to include hardware and software required for a mutable filesystem to work, since all they would need would be a few tools like stopwatch and calculator, plus they would gain the advantage of loading a program instantly. The tools to be "compiled in" could be chosen by the user before compilation to make a personalized "immutable distro".
Let's keep in mind that true LRS computers would be different from the current capitalist ones -- an operating system would only be optional, programs would be able to run on [bare metal](bare_metal.md) as well as under an OS, and operating systems would be as much compatible as possible. By this an OS might be seen as more of an extra tool rather than a platform.

View file

@ -79,7 +79,7 @@ The following are some common methods of automatic optimization (also note that
- **Replacing instructions with faster equivalents**: we replace an instruction (or a series of instructions) with another one that does the same thing but faster (or with fewer instructions etc.). Typical example is replacing multiplication by power of two with a bit shift (e.g. `x * 8` is the same as `x << 3`).
- **Inlining**: a function call may usually (not always though, consider e.g. [recursion](recursion.md)) be replaced by the function code itself inserted in the place of the call (so called inlining). This is faster but usually makes the code bigger so the compiler has to somehow judge and decide when it's worth to inline a function -- this may be affected e.g. by the function size (inlining a short function won't make the code that much bigger), programmer's hints (`inline` keyword, optimize for speed rather than size etc.) or guesstimating how often the function will be called. Function that is only called in one place can be safely inlined.
- **Loop unrolling**: dupliates the body of a loop, making the code bigger but increasing its speed (a condition check is saved). E.g. `for (int i = 0; i < 3; ++i) func();` may be replaced with `func(); func(); func();`. Unrolling may be full or just partial.
- **Loop unrolling**: duplicates the body of a loop, making the code bigger but increasing its speed (a condition check is saved). E.g. `for (int i = 0; i < 3; ++i) func();` may be replaced with `func(); func(); func();`. Unrolling may be full or just partial.
- **[Lazy](lazy_eval.md) evaluation/short circuit/test reordering**: the principles of lazy evaluation (evaluate function only when we actually need it) and short circuit evaluation (don't further evaluate functions when it's clear we won't need them) may be auto inserted into the code to make it more efficient. Test reordering may lead to first testing simpler things (e.g. equality comparison) and leaving complex tests (function calls etc.) for later.
- **Algebraic laws, expression evaluation**: expressions may be partially preevaluated and manipulated to stay mathematically equivalent while becoming easier to evaluate, for example `1 + 3 + 5 * 3 * x / 6` may be transformed to just `4 + 5 * x / 2`.
- **Removing instructions that cancel out**: for example in [Brainfuck](brainfuck.md) the series of instructions `+++--` may be shortened to just `+`.

View file

@ -6,7 +6,7 @@ There is an article on software patents at https://www.gnu.org/philosophy/softwa
Patents are kind of similar to but also very different from copyright ([Richard Stallman](rms.md) stressed the differences and says it is dangerous to think of copyright and patents as similar): while copyright applies to [art](art.md) and is granted automatically, patents apply to ideas (which should ideally be new inventions but in practice can be just any trivially stupid ideas), have to be registered and are kept recorded somewhere. Patents also last a shorter time than copyright (generally 20 years as opposed to copyright's lifetime plus 70 years) and are territorial, i.e. not world-wide. These facts make patents a bit less disastrous than copyright, however they still cause a great deal of damage -- not only do they prevent technological progress (a new ideas such as a new efficient [algorithm](algorithm.md) is simply prohibited to be used by anyone but it's "owner" and those who the owner sells a license), they also allow so called **patent trolling** (patent scams) -- patent trolling takes advantage of the fact that it is practically impossible to safely check if some idea is not patented, i.e. safe to use. There exist troll companies whose sole business is to register trivial patents and then sue random people who unknowingly implement this idea in their projects (there is e.g. a famous video about how this happened to the developer of X-plane, trolled by Uniloc company that had patented the idea of using a "play store" to distribute programs) -- the companies often bully developers to off court settlement for paying a lower free but this includes a contract that **prevents the affected developers from talking about this**.
Granting and checking patents is also becoming progressively more difficult, expensive and sometimes basically impossible, as any new filed patent has to be checked for how "innovative" it is. This means someone has to literally go through all ideas ever invented in computer science (impossible even for the biggest brain on the planet) and check if the new submited idea is really new -- given that computer science progresses by lightning speed, every day it is becoming more and more difficult to check patents. As time for checking a patent is limited, the result is many false positives, errors and grants of patents on trivial or non-innovative ideas, which has disastrous consequences. And of course, we're not even talking about corruption -- patents are highly lucrative and it would be naive to believe there are no cases of someone just buying a patent grant.
Granting and checking patents is also becoming progressively more difficult, expensive and sometimes basically impossible, as any new filed patent has to be checked for how "innovative" it is. This means someone has to literally go through all ideas ever invented in computer science (impossible even for the biggest brain on the planet) and check if the new submitted idea is really new -- given that computer science progresses by lightning speed, every day it is becoming more and more difficult to check patents. As time for checking a patent is limited, the result is many false positives, errors and grants of patents on trivial or non-innovative ideas, which has disastrous consequences. And of course, we're not even talking about corruption -- patents are highly lucrative and it would be naive to believe there are no cases of someone just buying a patent grant.
Many (probably most) [free software](free_software.md) proponents, and just many programmers in general, including for example [Richard Stallman](rms.md), [John Carmack](john_carmack.md) or [Donald Knuth](knuth.md), have highly criticized the existence of software patents. [Richard Stallman](rms.md) himself has been warning of the dangers and has likened the world of patents to a **mine field** because when you're programming, you have no idea whether an idea you get and implement in your program isn't in fact "owned" by anyone, programming itself poses risk of stepping on mines (patents).

View file

@ -14,7 +14,7 @@ Here is a list of people notable in technology or in other ways related to [LRS]
- **[Diogenes](diogenes.md)**: based Greek philosopher who opposed all authorities in very cool ways
- **[Donald Knuth](knuth.md)**: computer scientist, Turing-award winner, author of the famous [Art of Computer Programming](taocp.md) books and the [TeX](tex.md) typesetting system
- **[drummyfish](drummyfish.md)** (Miloslav Číž): creator of [LRS](lrs.md), a few programs and this wiki, [anarcho-pacifist](anpac.md)
- **[Eric S. Raymond](esr.md)**: oldshool hacker turned capitalist, proponent of [open $ource](open_source.md), desperately trying to be popular, co-founder of [OSI](osi.md) and tech writer ([Jargon File](jargon_file.md), [CatB](catb.md), ...)
- **[Eric S. Raymond](esr.md)**: oldschool hacker turned capitalist, proponent of [open $ource](open_source.md), desperately trying to be popular, co-founder of [OSI](osi.md) and tech writer ([Jargon File](jargon_file.md), [CatB](catb.md), ...)
- **[Fabrice Bellard](fabrice_bellard.md)**: legendary programmer, made many famous programs such as [ffmpeg](ffmpeg.md), [tcc](tcc.md), [TinyGL](tinygl.md) etc.
- **[Geoffrey Knauth](geoffrey_knauth.md)**: very [shitty](shit.md) president of [Free Software Foundation](fsf.md) since 2020 who embraces [proprietary](proprietary.md) software lol
- **[Grigori Perelman](perelman.md)** based Russian mathematician who solved one of the biggest problems in math ([Poincare conjecture](poincare_conjecture.md)), then refused Fields medal and million dollar prize, refuses to talk to anyone and make [hero](hero_culture.md) of himself, just sent a huge fuck you to the system

View file

@ -26,7 +26,7 @@ Pokito, unlike most other open consoles, is NOT based on [Arduino](arduino.md),
**How [free](free_software.md) is Pokitto?** Quite freedom friendly, but not nearly 100% free; It is made out of [proprietary](proprietary.md) hardware, but it's quite [KISS](kiss.md), the Pokitto library, emulator and most tools as well as many games are [FOSS](foss.md), however the library contains a few proprietary pieces of code (short vendor source code without license), though these are almost certainly not harmful and could easily be replaced. Schematics and printable STL files are available, though license seems to be non-present. No Pokitto trademarks were surprisingly found during brief search.
**Downsides** of Pokitto are that the community is an [open source](open_source.md) community rather than [free software](free_software.md) one, purists like us will find they lean towards [bloated](bloat.md) solutions even though the technical limitation of the console largely prevent their implementation. The web forums runs on [discourse](discourse.md) and requires [JavaScript](js.md) for interactivity. [Discord](discord.md) is also actively used for communication, even though some community members bridged it to free alternatives. The official library is relatively bloated and even contains some small pieces of unlicensed code from the [MCU](mcu.md) manufacturer -- they are very simple assembly snippets that may be easily replacaeble, but we should be cautious even about this. Anyway, a reasonably dedicated programmer might create a suckless Pokitto library without greater problems.
**Downsides** of Pokitto are that the community is an [open source](open_source.md) community rather than [free software](free_software.md) one, purists like us will find they lean towards [bloated](bloat.md) solutions even though the technical limitation of the console largely prevent their implementation. The web forums runs on [discourse](discourse.md) and requires [JavaScript](js.md) for interactivity. [Discord](discord.md) is also actively used for communication, even though some community members bridged it to free alternatives. The official library is relatively bloated and even contains some small pieces of unlicensed code from the [MCU](mcu.md) manufacturer -- they are very simple assembly snippets that may be easily replaceable, but we should be cautious even about this. Anyway, a reasonably dedicated programmer might create a suckless Pokitto library without greater problems.
Some quite nice [hacks](hacking.md) were achieved with Pokitto, e.g. using it as a display for a PC or even running [GameBoy](gameboy.md) games on it -- this was done thank to a small [FOSS](foss.md) GameBoy emulator and a tool that packs this emulator along with selected GameBoy ROM into a Pokitto executable -- this of course comes with some limitations, e.g. on sound or game size. Yes, Pokitto quite comfortably runs [Anarch](anarch.md).

View file

@ -1,6 +1,6 @@
# Prime Number
Prime number (or just *prime*) is a [whole](integer.md) positive [number](number.md) only divisible by 1 and itself, except for the number [1](one.md). I.e. prime numbers are 2, 3, 5, 7, 11, 13, 17 etc. Non-prime numbers are called *composite numbers*. Prime numbers are extremely important, [interesting](interesting.md) and mysterious for their properties and distribution among other numbers, they have for millennia fascinated [mathematicians](math.md), nowadays they are studied in the math subfield called [number theory](number_theory.md). Primes are for example essential in [assymetric cryptography](assymetric_cryptography.md). Primes can be seen as the opposite of [highly composite numbers](highly_composite_number.md) (also antiprimes, numbers that have more divisors than any lower number).
Prime number (or just *prime*) is a [whole](integer.md) positive [number](number.md) only divisible by 1 and itself, except for the number [1](one.md). I.e. prime numbers are 2, 3, 5, 7, 11, 13, 17 etc. Non-prime numbers are called *composite numbers*. Prime numbers are extremely important, [interesting](interesting.md) and mysterious for their properties and distribution among other numbers, they have for millennia fascinated [mathematicians](math.md), nowadays they are studied in the math subfield called [number theory](number_theory.md). Primes are for example essential in [asymmetric cryptography](asymmetric_cryptography.md). Primes can be seen as the opposite of [highly composite numbers](highly_composite_number.md) (also antiprimes, numbers that have more divisors than any lower number).
```
.##.#.#...#.#...#.#...#.....#.#.....#...#.#...#.....#.....#.#.....#...

View file

@ -1,6 +1,6 @@
# Procedural Generation
Procedural generation (procgen, also PCG -- *procedural content generation* -- not to be confused with [procedural programming](imperative.md)) refers to creation of data, such as [art](art.md) assets in [games](game.md) or test data for data processing software, by using [algorithms](algorithm.md) and mathematical formulas rather than creating it manually or measuring it in the real world (e.g. by taking photographs). This can be used for example for automatic generation of [textures](texture.md), texts, [music](music.md), game levels or 3D models but also practically anything else, e.g. test [databases](database.md), animations or even computer programs. Such data are also called *synthetic*. Procedural art currently doesn't reach artistic qualities of a skilled human artist, but it can be [good enough](good_enough.md) or even necessary (e.g. for creating extremely large worlds), it may be preferred e.g. for its extreme save of storage memory, it can help add detail to human work, be a good filler, a substitute, an addition to or a basis for manually created art. Procedural generation has many advantages such as saving space (instead of large data we only store small code of the algorithm that generates it), saving artist's time (once we have an algorithm we can generate a lot data extremely quickly), parametrization (we can tweak parameters of the algorithm to control the result or create animation, often in real-time), increasing resolution practically to infinity or extending data to more dimensions (e.g. [3D textures](3d_texture.md)). Procedural generation can also be used as a helper and guidance, e.g. an artist may use a procedurally generated game level as a starting point and fine tune it manually, or vice versa, procedural algorithm may create a level by algorithmically assembling manually created building blocks.
Procedural generation (procgen, also PCG -- *procedural content generation* -- not to be confused with [procedural programming](imperative.md)) refers to creation of data, such as [art](art.md) assets in [games](game.md) or test data for data processing software, by using [algorithms](algorithm.md) and mathematical formulas rather than creating it manually or measuring it in the real world (e.g. by taking photographs). This can be used for example for automatic generation of [textures](texture.md), texts, [music](music.md), game levels or 3D models but also practically anything else, e.g. test [databases](database.md), animations or even computer programs. Such data are also called *synthetic*. Procedural art currently doesn't reach artistic qualities of a skilled human artist, but it can be [good enough](good_enough.md) or even necessary (e.g. for creating extremely large worlds), it may be preferred e.g. for its extreme save of storage memory, it can help add detail to human work, be a good filler, a substitute, an addition to or a basis for manually created art. Procedural generation has many advantages such as saving space (instead of large data we only store small code of the algorithm that generates it), saving artist's time (once we have an algorithm we can generate a lot data extremely quickly), parameterization (we can tweak parameters of the algorithm to control the result or create animation, often in real-time), increasing resolution practically to infinity or extending data to more dimensions (e.g. [3D textures](3d_texture.md)). Procedural generation can also be used as a helper and guidance, e.g. an artist may use a procedurally generated game level as a starting point and fine tune it manually, or vice versa, procedural algorithm may create a level by algorithmically assembling manually created building blocks.
As neural [AI](ai.md) approaches human level of creativity, we may see computers actually replacing many artists in near future, however it is debatable whether AI generated content should be called procedural generation as AI models are quite different from the traditional hand-made algorithms -- AI art is still seen as a separate approach than procedural generation. For this we'll only be considering the traditional approach from now on.

View file

@ -8,6 +8,6 @@ Techniques associated with primitive 3D are for example [2D raycasting](raycasti
## See Also
- [sofware rendering](sw_rendering.md)
- [software rendering](sw_rendering.md)
- [bsp rendering](bsp.md)
- [raycasting](raycasting.md)

View file

@ -29,7 +29,7 @@ Even a pretty simple computer without an [operating system](os.md) is able to:
The project wouldn't aim to create a specific single "model" of a computer but rather blueprints that would be easily adjusted and mapped to any specific existing technology -- the goal would be to create an abstract [hardware](hardware.md) specification as well as basic [software](software.md) for the computer.
Abstract hardware specification means e.g. description on the [logic gate](logic_gate.md) level so that the computer isn't dependent on any contemporary and potentially proprietary lower level technology such as [CMOS](cmos.md). The project would simply create a big [logic circuit](logic_circuit.md) of the computer and this description could be compiled/synthesized to a lower level circuit board description. The hardware description could also be parametrized so that certain features could be adjusted -- for example it might be possible to choose the amount of [RAM](ram.md) or disable specific CPU instructions to make a simpler, cheaper circuit board.
Abstract hardware specification means e.g. description on the [logic gate](logic_gate.md) level so that the computer isn't dependent on any contemporary and potentially proprietary lower level technology such as [CMOS](cmos.md). The project would simply create a big [logic circuit](logic_circuit.md) of the computer and this description could be compiled/synthesized to a lower level circuit board description. The hardware description could also be parameterized so that certain features could be adjusted -- for example it might be possible to choose the amount of [RAM](ram.md) or disable specific CPU instructions to make a simpler, cheaper circuit board.
**The computer would have to be created from the ground up**, with every design aspect following the ultimate goal. The project roadmap could look similarly to this one:

File diff suppressed because it is too large Load diff

View file

@ -281,7 +281,7 @@ int main(void)
How to make this more advanced? Here are some hints and tips:
- **textured walls**: This is pretty simply, the ray hit basically gives us a horizontal texturing coordinate, and we simply stretch the texture vertically to fit the wall. I.e. when the ray hits a wall, we take the hit coordinate along the principal axis of the wall (e.g. for vertical hit we take the Y coordinate) and [mod](mod.md) it by the fixed point unit which will give us the texturing coordinate. This coordinate tells us the column of the texture that the rendered column shall have; we read this texture column and render it stretched vertically to fit the column height given by the perspective. Note that for [cache](cache.md) friendliness ([optimization](optimization.md)) textures should be stored column-wide in memory as during rendering we'll be reading the texture by columns (row-wise stored textures would make us jump wide distances in the memory which CPU caches don't like).
- **textured floor/ceiling**: Something aking [mode7](mode7.md) rendering can be used.
- **textured floor/ceiling**: Something akin [mode7](mode7.md) rendering can be used.
- **sliding door**: TODO
- **jumping**: Camera can easily be shifted up and down. If we are to place the camera e.g. one fixed point unit above its original position, then for each column we render we compute, with perspective applied to this one fixed point unit (the same way with which we determine the column size on the screen) the vertical screen-space offset of the wall and render this wall column that many pixel lower.
- **looking up/down**: Correct view of a camera that's slightly tilted up/down can't be achieved (at least not in a reasonably simple way), but there's a simple trick for faking it -- camera shearing. Shearing literally just shifts the rendered view vertically, i.e. if we're to look a bit up, we render that same way as usual but start higher up on the screen (in the part of the rendered image that's normally above the screen and not visible), so that the vertical center of the screen will be shifted downwards. For smaller angles this looks [good enough](good_enough.md).

View file

@ -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.
Before the infamous censorship wave circa 2019 reddit used to be quite a beuatiful 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.
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.
What was the big moment? Basically in 2019 reddit presented one the most visible, greatest examples of a **profit motivated 180 degree turn from a [free speech](free_speech.md) site to a [censorship](censorship.md) dictatorship** -- as some cock invested money to reddit, the reddit CEO just said yeah, let's make this advertisement friendly and ban all free speech on the site; there were hilarious historical moments like Alexis Ohanian, the co-founder of the site, saying "we never intended reddit to be the bastion of free speech" while someone actually found a quote of him saying the exact opposite in the past :D This shitstorm resulted in one of the greatest disasters to ever have happened on the Internet. Subreddits such as *r/politicallyincorrect*, *r/Offensive_Wallpapers*, *r/watchpeopledie*, *r/necrophilia*, *r/PicsOfHorseVaginas*, *r/sjwhate*, *r/lovenotacrime*, *r/fatpeoplehate* and THOUSANDS of other were all banned (you can probably still find them in archives, but you can no longer discuss of course). Of course those who criticized this were just banned too, anyone who showed a dislike of this got a "fuck you bitch" message from a mod with a swift ban. People not familiar with reddit or Internet too much perhaps didn't notice too much, but to an Internet citizen this was comparable to something like the Pope one day waking up, admitting to [atheism](atheism.md), dressing up as [Voldemort](hitler.md) and starting to masturbate on the balcony, cumming on people while promoting nuclear war, all because someone paid him $1 to do it. Of course this was completely expected under [capitalism](capitalism.md), reddit just showed a very rapid, "we don't give a shit about users or society or anything but money" kind of step, one that must show clear as day even to any blind idiot what capitalism really is about. After this many people left reddit for good { Including me. ~drummyfish }, some migrated to alternative sites like [Voat](voat.md), but it was never what it used to be, communities were fragmented and they mostly degenerated to small groups bitching about how reddit fucked up. At least it's a great lesson learned about "free market" society.

2
rms.md
View file

@ -33,6 +33,6 @@ Stallman has a beautifully [minimalist](minimalism.md) website at http://www.sta
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).
In the book *Free As In Freedom* it is also mentioned that **Stallman had aversion to passwords and secrecy in general** -- at MIT he used the username RMS with the same password so that other people could easily log in through his account and access [ARPANET](arpanet.md) (the predecessor of [Internet](internet.md)). Indeed, we applaud this, the "[sucurity](security.md)" hysteria is killing the computing world.
In the book *Free As In Freedom* it is also mentioned that **Stallman had aversion to passwords and secrecy in general** -- at MIT he used the username RMS with the same password so that other people could easily log in through his account and access [ARPANET](arpanet.md) (the predecessor of [Internet](internet.md)). Indeed, we applaud this, the "[security](security.md)" hysteria is killing the computing world.
As [anarchists](anarchism.md) we of course despise the idea of worshiping people, creating [heroes](hero_culture.md) and cults of personalities, but the enormous [historical](history.md) significance of Stallman has to be stressed as a plain and simple fact and though we may disagree with some of his methods and even opinions, it's as clear as it can be that he acted [selflessly](selflessness.md), in favor of all people -- something that can be said about very few, if anyone at all. Most other old time hackers, such as [Eric S. Ramyond](esr.md) and [Rob Pike](rob_pike.md) immediately abandoned all ideals of ethics and jumped the capitalist train with the first sight of money, Stallman stayed opposed to it, and for this he has our uttermost respect. Even though in our days his name is overshadowed in the mainstream by rich businessman and creators of commercially successful technology and even though we ourselves disagree with Stallman on some points, in the future [history](history.md) may well see Stallman as perhaps the greatest man of the software era, and rightfully so. Stallman isn't a mere creator of a commercially successful software product or a successful politician, he is an extremely morally strong philosopher, a great example to others, a prophet, someone who sees the truth and shows it to people -- he brilliantly foresaw the course of history and quickly defined ethics needed for the new era of mass available programmable computers at the right time, before the hammer hit. And not only that, he also basically alone established this ethics as a standard IN SPITE of all the world's [corporations](corporation.md) [fighting](fight_culture.md) back, in a field that back then was relatively obscure, unpopular in mainstream and hence not much supported by any mass media. He is also extremely unique in not pursuing self interest, in TRULY living his own philosophy, dedicating his whole life to his cause and refusing to give in even partially. All of this is at much higher level than simply becoming successful and famous within the contemporary capitalist system, his life effort is pure, true and timeless, unlike things achieved by pieces of shit such as [Steve Jobs](steve_jobs.md).

View file

@ -2,4 +2,4 @@
TODO
{ lmao https://yt.artemislena.eu/watch?v=ewAbJn96krw ~drummyfish }
{ lmao https://yewtu.be/watch?v=ewAbJn96krw ~drummyfish }

View file

@ -1,10 +1,10 @@
# Sorting
Sorting means rearranging a sequence, such as a [list](list.md) of numbers, so that the elements are put in a specific order (e.g. ascending or descending). In [computer science](compsci.md) sorting is quite a wide topic, there are dozens of sorting [algorithms](algorithm.md), each with pros and cons and different attributes are being studied, e.g. the algorithm's [time complexity](time_complexity.md), its stability etc. Sorting algorithms are a favorite subject of programming classes as they provide a good exercise for programming and analysis of algorithms and can be nicely put on tests :)
Sorting means rearranging a sequence, such as a [list](list.md) of numbers, so that the elements are put in a specific order (e.g. ascending or descending). In [computer science](compsci.md) sorting is quite a wide topic, there are dozens, maybe hundreds of sorting [algorithms](algorithm.md), each with pros and cons and different attributes are being studied, e.g. the algorithm's [time complexity](time_complexity.md), its stability etc. Sorting algorithms are a favorite subject of programming classes as they provide a good exercise for [programming](programming.md) and analysis of algorithms and can be nicely put on tests :)
Some famous sorting algorithms include [bubble sort](bubble_sort.md) (a simple KISS algorithm), [quick](quick_sort.md) and [merge](merge_sort.md) sort (some of the fastest algorithms) and [stupid sort](bogosort.md) (just tries different [permutations](permutation.md) until it hits the jackpot).
Some famous sorting algorithms include [bubble sort](bubble_sort.md) (a simple [KISS](kiss.md) algorithm), [quick](quick_sort.md) and [merge](merge_sort.md) sort (some of the fastest algorithms) and [stupid sort](bogosort.md) (just tries different [permutations](permutation.md) until it hits the jackpot).
In practice however we oftentimes end up using some of the simplest sorting algorithms (such as [bubble sort](bubble_sort.md)) anyway, unless we're programming a database or otherwise dealing with enormous amounts of data. If we need to sort just a few hundred of items and/or the sorting doesn't occur very often, a simple algorithm does the job well, sometimes even faster due to a potential initial overhead of a very complex algorithm. So always consider the [KISS](kiss.md) approach first.
In practice we often get away with using just some of the simplest sorting algorithms (such as [bubble sort](bubble_sort.md) or [insertion sort](insertion_sort.md)) anyway, unless we're programming a database or otherwise dealing with enormous amounts of data. If we need to sort just a few hundred of items and/or the sorting doesn't occur very often, a simple algorithm does the job well, sometimes even faster due to a potential initial overhead of a very complex algorithm. So always consider the [KISS](kiss.md) approach first.
Attributes of sorting algorithms we're generally interested in are the following:
@ -20,3 +20,216 @@ In practice not only the algorithm but also its implementation matters. For exam
## List Of Sorting Algorithms
TODO
## Example And Code
For starters let's take a look at one of the simplest sorting algorithms, bubble sort. Its basic version looks something like this ([pseudocode](pseudocode.md)):
```
for j from 0 to N - 2 (inclusive)
for i from 0 to to N - 2 - j (inclusive)
is array[i] > array[i + 1]
swap array[i] and array[i + 1]
```
How does this work? Firstly notice there are two loops. The outer loop, with counter variable *j*, runs *N - 1* times -- in each iteration of this loop we will ensure one value gets to its correct place; specifically the values will be getting to their correct places from the top -- highest values will be sorted first (you can also implement the algorithm the other way around too, to sort the lowest values first, try it as an exercise). This makes sense, imagine that we have e.g. a sequence of length *N = 4* -- then the outer loop will run *N - 1 = 3* times (*j* will have values 0, 1 and 2); after fist iteration 1 value will be in its correct place, after 2 iterations 3 values will be in place and after 3 iterations 3 values will be in place which also means the last (forth) value has to be in place too, i.e. the array must be sorted. Now for the inner loop (with variable *i*): this one ensures actually getting the value in its place. Notice it goes from 0 to the top and always compares two neighbors in the array -- if the bottom neighbor is higher than the top neighbor, the loop swaps them, ensuring that the highest value will get to the top (it kind of "bubbles" up, hence the algorithm name). Also notice this loop doesn't always go to the very end of the array! It subtracts the value *j* from its top boundary because there the values that are already in place reside, so we don't need to sort them anymore; the inner loop can end earlier and earlier as the outer loop progresses. The algorithm would still work if we went through the whole array every time (try it), but its [time complexity](time_complexity.md) would suffer, i.e. by noticing the inner loop can get progressively shorter we greatly [optimize](optimization.md) the algorithm. Anyway, how the algorithm actually works is best seen on an example, so let's now try to use the algorithm to sort the following sequence:
```
3 7 8 3 2
```
The length of the sequence is *N = 5*, so *j* (the outer loop) will go from 0 to 3. The following shows how the array changes (`/\` shows comparison of neighbors, read top to bottom and left to right):
```
j = 0 j = 1 j = 2 j = 3
swapped
i = 0 /\ /\ /\ /\
37832 37328 33278 23378 <-- SORTED
""""
swapped swapped
i = 1 /\ /\ /\
37832 33728 32378 <--- last 3 items are in their places
"""
swapped swapped
i = 2 /\ /\
37382 33278 <--- last 2 items are in their places
""
swapped
i = 3 /\
37328 <--- last item is in its place
"
```
Hopefully it's at least a bit clear -- if not, try to perform the algorithm by hand, that's a practically guaranteed way of gaining understanding of the algorithm.
Now let's see other algorithms and some actual runnable code. The following is a [C](c.md) program that shows implementations of some of the common sorting algorithms and also measures their speed:
```
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define N 64
char array[N + 1]; // extra 1 for string terminating zero
void swap(int i1, int i2)
{
int tmp = array[i1];
array[i1] = array[i2];
array[i2] = tmp;
}
void setupArray(void) // fills the array with pseudorandom ASCII letters
{
array[N] = 0;
srand(123);
for (int i = 0; i < N; ++i)
array[i] = 'A' + rand() % 26;
}
void test(void (*sortFunction)(void), const char *name)
{
int timeTotal = 0;
for (int i = 0; i < 64; ++i) // run the sort many times to average it a bit
{
setupArray();
long int t = clock();
sortFunction();
timeTotal += clock() - t;
}
printf("%-10s: %s, CPU ticks: %d\n",name,array,(int) timeTotal);
}
// ============================ sort algorithms ================================
void sortBubble(void)
{
for (int j = 0; j < N - 1; ++j)
for (int i = 0; i < N - 1 - j; ++i)
if (array[i] > array[i + 1])
swap(i,i + 1);
}
void sortBubble2(void) // simple bubble s. improvement, faster if already sorted
{
for (int j = 0; j < N - 1; ++j)
{
int swapped = 0;
for (int i = 0; i < N - 1 - j; ++i)
if (array[i] > array[i + 1])
{
swap(i,i + 1);
swapped = 1;
}
if (!swapped) // if no swap happened, the array is already sorted
break;
}
}
void sortInsertion(void)
{
for (int j = 1; j < N; ++j)
for (int i = j; i > 0; --i)
if (array[i] < array[i - 1]) // keep moving down until we find its place
swap(i,i - 1);
else
break;
}
void sortSelection(void)
{
for (int j = 0; j < N - 1; ++j)
{
int min = j;
for (int i = j + 1; i < N; ++i) // find the minimum
if (array[i] < array[min])
min = i;
swap(j,min);
}
}
void sortStupid(void)
{
while (1)
{
for (int i = 0; i < N; ++i) // check if the array is sorted
if (i == (N - 1))
return;
else if (array[i] > array[i + 1])
break; // we got to the end, the array is sorted
for (int i = 0; i < N; ++i) // randomly shuffle the array
swap(i,rand() % N);
}
}
void _sortQuick(int a, int b) // helper recursive function for the main quick s.
{
if (b <= a || a < 0)
return;
int split = a - 1;
for (int i = a; i < b; ++i)
if (array[i] < array[b])
{
split++;
swap(split,i);
}
split++;
swap(split,b);
_sortQuick(a,split - 1);
_sortQuick(split + 1,b);
}
void sortQuick(void)
{
_sortQuick(0,N - 1);
}
int main(void)
{
setupArray();
printf("array : %s\n",array);
#if 0 // stupid sort takes too long, only turn on while decreasing N to like 10
test(sortStupid,"stupid");
#endif
test(sortBubble,"bubble");
test(sortBubble2,"bubble2");
test(sortInsertion,"insertion");
test(sortBubble2,"selection");
test(sortQuick,"quick");
return 0;
}
// TODO: let's add more algorithms in the future :-)
```
It may output for example:
```
array : RLPALFTOCFWGVJYPLLUNEPDBSOMIBMXSXMVLROZUWXARHAIUNCJTUNVMDHWHTTZT
bubble : AAABBCCDDEFFGHHHIIJJLLLLLMMMMNNNOOOPPPRRRSSTTTTTUUUUVVVWWWXXXYZZ, CPU ticks: 1191
bubble2 : AAABBCCDDEFFGHHHIIJJLLLLLMMMMNNNOOOPPPRRRSSTTTTTUUUUVVVWWWXXXYZZ, CPU ticks: 1164
insertion : AAABBCCDDEFFGHHHIIJJLLLLLMMMMNNNOOOPPPRRRSSTTTTTUUUUVVVWWWXXXYZZ, CPU ticks: 665
selection : AAABBCCDDEFFGHHHIIJJLLLLLMMMMNNNOOOPPPRRRSSTTTTTUUUUVVVWWWXXXYZZ, CPU ticks: 1217
quick : AAABBCCDDEFFGHHHIIJJLLLLLMMMMNNNOOOPPPRRRSSTTTTTUUUUVVVWWWXXXYZZ, CPU ticks: 365
```
## See Also
- [searching](search.md)
- [pathfinding](pathfinding.md)

View file

@ -22,7 +22,7 @@ Here is a quick rough comparison of seydevs and actual good programmers (nowaday
| computer knowledge| all-level, big-picture knowledge of principles | knowledge of trivia ("This checkbox in this framework has to be unchecked.", ...) |
| specialization | generalist | hyperspecialized, knows one language/framework |
| prog. languages | C, assembly, FORTRAN, Forth, comun, lisp, ... | Python, JavaScript, Rust, Java, C#, C++2045, ... |
| mostly does | thiking about algorithms and data structures | typing glue code for different libraries, updates/maintains systems, talks to people |
| mostly does | thinking about algorithms and data structures | typing glue code for different libraries, updates/maintains systems, talks to people |
| political opinions| politically incorrect hippie anarcho pacifist | liberal capitalist feminist pro black lesbian LGBT fascist anti Nazi |
| hardware | 640x480 1990s laptop, no mouse | 2023 touchscreen 1080K macbook with stickers all over, wireless $1000 AI gaming mouse |
|memorized knowledge| 10000 digits of pi | 10000 genders plus offensive words he mustn't say |

View file

@ -1,6 +1,6 @@
# Vector
Vector is a basic [mathematical](math.md) object that expresses direction and magnitude (such as velocity, force etc.) and is very often expressed as (and many times misledingly equated with) an "array of numbers". Nevertheless in programming 1 dimensional arrays are somewhat synonymous with vectors -- for example in two dimensional space an array `[4,3]` expresses a vector pointing 4 units to the "right" (along X axis) and 3 units "up" (along Y axis) and has the magnitude 5 (which is the vector's length). Vectors are one of the very basic concepts of advanced math and are used almost in any advanced area of math, physics, programming etc. -- basically all of physics and engineering operates with vectors, programmers will mostly encounter them in areas such as 3D [graphics](graphics.md), [physics engines](physics_engine.md) (forces, velocities, acceleration, ...), [machine learning](machine_learning.md) (feature vectors, ...) or [signal processing](signals.md) (e.g. [Fourier transform](fourier_transform.md) just interprets a signal as a vector and transforms it to a different basis) etc. In this article we will implicitly focus on vectors from programmer's point of view (i.e. "arrays of numbers"), which to a mathematician will seem very simplified, but we'll briefly also foreshadow the mathematical view.
Vector is a basic [mathematical](math.md) object that expresses direction and magnitude (such as velocity, force etc.) and is very often expressed as (and many times misleadingly equated with) an "array of numbers". Nevertheless in programming 1 dimensional arrays are somewhat synonymous with vectors -- for example in two dimensional space an array `[4,3]` expresses a vector pointing 4 units to the "right" (along X axis) and 3 units "up" (along Y axis) and has the magnitude 5 (which is the vector's length). Vectors are one of the very basic concepts of advanced math and are used almost in any advanced area of math, physics, programming etc. -- basically all of physics and engineering operates with vectors, programmers will mostly encounter them in areas such as 3D [graphics](graphics.md), [physics engines](physics_engine.md) (forces, velocities, acceleration, ...), [machine learning](machine_learning.md) (feature vectors, ...) or [signal processing](signals.md) (e.g. [Fourier transform](fourier_transform.md) just interprets a signal as a vector and transforms it to a different basis) etc. In this article we will implicitly focus on vectors from programmer's point of view (i.e. "arrays of numbers"), which to a mathematician will seem very simplified, but we'll briefly also foreshadow the mathematical view.
(NOTE: the term *vector* is used a lot in different contexts and fields, usually with some connection to the mathematical idea of vector which is sometimes however very loose, e.g. in low-level programming *vector* means a memory holding an address of some event handler. It's better to just look up what "vector" means in your specific area of interest.)

View file

@ -12,7 +12,7 @@ The project is a child of [Jacque Fresco](jacque_fresco.md), a [generalist](gene
Although the project seems to be avoiding specific political labels (possibly as to avoid historical associations), it is [de facto](de_facto.md) **[anarcho pacifist](anpac.md) [communist](communism.md)** movement (i.e. politically the same as [LRS](lrs.md)). Very nicely it also seems, at least as of 2022, uninfected with the [SJW](sjw.md) [cancer](cancer.md) -- [fight culture](fight_culture.md) and [fascism](fascism.md) goes directly against their goals and Fresco explicitly stated that we have to stop constantly fighting for human rights and rather establish a society with human rights built-in.
Fresco highly criticizes today's society and just as [us](us.md) says it only tries to cure the symptoms (search the solutions within the current framework and mindset) rather than the root cause of its issues (the system itself). He mainly criticizes the presence of the monetary system and laws -- currently taking the form of [capitalism](capitalism.md) -- which he correctly blames for most today's issues such as artificial scarcity, hunger, wars, [fascism](fascism.md), lack of social security, poverty, [wage slavery](wage_slavery.md), destruction of natural environment, waste, energy crisis, [planned obsolescence](plenned_obsolescence.md), deteriorating psychological health etc. He says with the presence of advanced technology we have this system is highly outdated (for example it forces artificial scarcity because only scarce resources can be sold, unlike for example air) and points out the fact that we have more than enough resources for everyone on Earth and could live in abundance and peace, practicing **[collaboration](collaboration.md) rather than [competition](comptetition.md)**. Therefore he argues that we have to eliminate [money](money.md), barter and markets from the society and change the very basis of whole society, down to our mentality and outdated historical associations (and eventually even language which should be closer to the scientific language).
Fresco highly criticizes today's society and just as [us](us.md) says it only tries to cure the symptoms (search the solutions within the current framework and mindset) rather than the root cause of its issues (the system itself). He mainly criticizes the presence of the monetary system and laws -- currently taking the form of [capitalism](capitalism.md) -- which he correctly blames for most today's issues such as artificial scarcity, hunger, wars, [fascism](fascism.md), lack of social security, poverty, [wage slavery](wage_slavery.md), destruction of natural environment, waste, energy crisis, [planned obsolescence](plenned_obsolescence.md), deteriorating psychological health etc. He says with the presence of advanced technology we have this system is highly outdated (for example it forces artificial scarcity because only scarce resources can be sold, unlike for example air) and points out the fact that we have more than enough resources for everyone on Earth and could live in abundance and peace, practicing **[collaboration](collaboration.md) rather than [competition](competition.md)**. Therefore he argues that we have to eliminate [money](money.md), barter and markets from the society and change the very basis of whole society, down to our mentality and outdated historical associations (and eventually even language which should be closer to the scientific language).
He argues to replace the monetary system with so called **[resource based economy](resource_based_economy.md)** (RBE) which should be a pillar of the future society. RBE is called an "economy" but doesn't use any money or barter, it starts by declaring that all Earth's resources are a common heritage of all people on Earth -- it basically means that "everything is available to everyone", i.e. no one can own resources of the Earth, they belong to us all and whoever needs something can take it. RBE would be supported by high automatization and computer monitoring to deliver resources where they are needed. Normies usually can't comprehend that this could work, they say "but then someone will just steal everything", but Fresco correctly argues that with correct and rational use of our technology we can, unlike in the past, already extract as many resources as to satisfy everyone with high abundance; basically we can make for example food as abundant as is air nowadays -- no one will be (and can be) stealing food when there's more free food than anyone can eat, just as stealing air isn't a concern nowadays.

File diff suppressed because one or more lines are too long

View file

@ -3,8 +3,8 @@
This is an autogenerated article holding stats about this wiki.
- number of articles: 563
- number of commits: 727
- total size of all texts in bytes: 3237172
- number of commits: 728
- total size of all texts in bytes: 3249220
longest articles:
@ -24,6 +24,20 @@ longest articles:
latest changes:
```
Date: Thu Mar 7 23:59:21 2024 +0100
backgammon.md
chess.md
disease.md
iq.md
lmao.md
prime.md
race.md
random_page.md
version_numbering.md
wiki_pages.md
wiki_stats.md
wikipedia.md
windows.md
Date: Wed Mar 6 16:08:58 2024 +0100
4chan.md
bloat.md
@ -48,19 +62,6 @@ sudoku.md
wiki_pages.md
wiki_stats.md
xxiivv.md
Date: Mon Mar 4 23:14:06 2024 +0100
ascii_art.md
coc.md
faq.md
fun.md
iq.md
linux.md
programming_language.md
random_page.md
regex.md
steganography.md
wiki_pages.md
wiki_stats.md
```
most wanted pages:

View file

@ -10,7 +10,8 @@ If you contribute, add yourself to [wiki authors](wiki_authors.md)! You can also
2. **No [fair use](fair_use.md)** or even unfair use. We want this Wiki to be as free as possible and don't thread the fine legal lines. That means you can't directly include anything on this Wiki if it's copyrighted, **even if it's under a free license**. So generally **avoid any copy pasting and rather try to write everything yourself**.
3. **No unnecessary [censorship](censorship.md)**. Necessary censorship basically only includes spam, shitty content, [IP](intellectual_property.md)-infected content (content that would make this wiki not be in public domain) and hardcore illegal stuff that would immediately put us in jail, though we would of course love to include it. However spreading truth mustn't be hurt by fear of jail. Controversial/incorrect/taboo content etc. is NOT to be censored.
4. **Electronic bullying of other wiki users is NOT PROHIBITED**. Nothing is prohibited here. { Also I'm alone here so at best I can bully myself :D ~drummyfish }
5. [Nigger](nigger.md).
5. **ILLEGAL CONTENT IS ALLOWED** -- it still won't be added, because that would make this wiki less legally [free](free_culture.md), however this rule will be here to show we shit on laws and also that it's mostly quite stupid to forbid something that is already forbidden by definition, websites resort to doing it to dodge responsibility because they are [shit scared](fear_culture.md), but it's still stupid nonetheless. Putting rules like "uploading illegal content is prohibited" is basically like saying "I declare it that in my house laws of physics must function", illegal content will be prohibited whether you forbid it or not.
6. [Nigger](nigger.md). This rule has practically no effect because linguistically it has no meaning, but it is here to help [free speech](free_speech.md).
## Style

6
wow.md
View file

@ -2,6 +2,8 @@
World of Warcraft (WoW) is an AAA [proprietary](proprietary.md) [game](game.md) released in [2004](2004.md) by [Blizzard](blizzard.md) that was one of the most successful and influencing games among [MMORPGs](mmorpg.md).
There is a [FOSS](foss.md) implementation of WoW server called [MaNGOS](mangos.md) that's used to make private servers. The client is of course proprietary and if you dare make a popular server Blizzard will kill your grandmother and rape your children.
There is a [FOSS](foss.md) implementation of WoW server called [MaNGOS](mangos.md) (now having some [forks](fork.md)) that's used to make private servers. The client is of course proprietary and if you dare make a popular server Blizzard (or whatever it's called now, it's probably merged with [Micro$oft](microfost.md) or something now) will just rape you.
{ The classic WoW (some time until the end of WOTLK) lied somewhere in the middle between good old and shitty [modern](modern.md) games (the WoW of today is 100% shit of course). For me the peak of Warcraft was [Warcraft III:TFT](warcraft.md), it was perfect in every way (except for being proprietary and bloated of course). As a great fan of Warcraft III, seeing WoW in screenshots my fantasy made it the best game possible to be created. When I actually got to playing it it was really good -- some of my best memories come from that time -- nevertheless I also remember being disappointed in many ways. Especially with limitation of freedom (soulbound items, forced grinding, effective linearity of leveling, GMs preventing hacking the game in fun ways etc.) and here and there a lack of polish (there were literally visible unfinished parts of the map, also visual transitions between zones too fast and ugly and the overall world design felt kind of bad), laziness and repetitiveness of the design. I knew how the game could be fixed, however I also knew it would never be fixed as it was in hands of a corporation that had other plans with it. That was the time I slowly started to see things not being ideal and the possibility of a great thing going to shit. ~drummyfish }
The classic WoW (mostly the vanilla but we can possibly extend this to the end of WOTLK) lied somewhere in the middle between good old and shitty [modern](modern.md) games, it had many great things like the iconic awesome [low poly](low_poly.md) hand painted stylized graphics, big open world, amazing PvP and PvE, but the modern poison was already creeping in. The WoW of today is of course 100% pure [shit](shit.md), it's [bloated](blot.md) beyond any imagination, the graphics is absolutely ruined (semi realistic style with the retarded shit like character outlines), it's extremely [censored](censorship.md) and [politically correct](political_correctness.md) (you can literally change gender of your character at barbershop lol, they removed the *spit* emote because it was "offensive" -- yes, a game that's all about [war](war.md) and killing and literally has war in its name must restrain you from hurting someone's feelings by spitting on the ground). Basically every race can now be any class, even if it doesn't make any sense, like Tauren rogue (in the past this used to be a [joke](joke.md) but today jokes are made into reality) -- otherwise it would be [racism](racism.md) or something. The game has about 1 billion expansions while the lore writers had already ran out of any ideas after like 5 of them, so they now just started to mess around with time travel and alternative timelines (resorting to time rape is always that desperate last resort move which signifies the work has been dead for a long time by then). The game is so bad Blizzard even started running official vanilla, no expansion servers ("classic WoW"), which is the only thing holding it above the water now. Of course before this they nuked all the popular unofficial private vanilla servers with legal threats so they could force a [monopoly](monopoly.md) -- this destroyed great many communities but Blizzard is a corporation so they could do anything they want.
{ For me the peak of Warcraft was [Warcraft III:TFT](warcraft.md), it was perfect in every way (except for being proprietary and bloated of course). As a great fan of Warcraft III, seeing WoW in screenshots my fantasy made it the best game possible to be created. When I actually got to playing it it was really good -- some of my best memories come from that time -- nevertheless I also remember being disappointed in many ways. Especially with limitation of freedom (soulbound items, forced grinding, effective linearity of leveling, GMs preventing hacking the game in fun ways etc.) and here and there a lack of polish (there were literally visible unfinished parts of the map, also visual transitions between zones too fast and ugly and the overall world design felt kind of bad), laziness and repetitiveness of the design. I knew how the game could be fixed, however I also knew it would never be fixed as it was in hands of a corporation that had other plans with it. That was the time I slowly started to see things not being ideal and the possibility of a great thing going to shit. ~drummyfish }

2
www.md
View file

@ -49,7 +49,7 @@ As the time marched on web used to become more and more [shit](shit.md), as is t
Mainstream web is quite literally unusable nowadays. { 2023 update: whole web is now behind [cuckflare](cloudfare.md) plus [secure HTTPS safety privacy antipedophile science encrypted privacy antiterrorist democratic safety privacy security expert antiracist sandboxed protection](https.md) and therefore literally can't be used. Also Google has been absolutely destroyed by the [LLM](llm.md) AIs now. ~drummyfish } What people searched for on the web they now search on on a handful of platforms like Facebook and YouTube (often not even using a web browser but rather a mobile "[app](app.md)"); if you try to "google" something, what you get is just a list of unusable sites written by [AIs](ai.md) that load for several minutes (unless you have the latest 1024 TB RAM beast) and won't let you read beyond the first paragraph without registration. These sites are uplifted by [SEO](seo.md) for pure commercial reasons, they contain no useful information, just ads. Useful sites are buried under several millions of unusable results or downright censored for political reasons (e.g. using some forbidden word). Thankfully you can still try to browse the [smol web](smol_internet.md) with search engines such as [wiby](wiby.md), but still that only gives a glimpse of what the good old web used to be.
{ More of web 2023 experience: if you want to Google something as simple as "HTML ampersand", just to get the HTML entity 5 character code, you basically get referred to a site that's 200 MB big, loads for about 1 minute (after you pass 10 checks for not being a robot), has 50 sections and subsections like "Who This Tutorial on Copypasting 5 Character is for", "What You Will Learn in This Tutorial", "Time Required for Reading This Tutorial" (which without these sections would be like 3 seconds), "Introduction: History of HTML" (starting with Stone Age) etc. There are of course about 7 video ads between each section and the next. Then finally there is the `&amp;` code you can copy paste, burried in level 12 subsection ("HTML Code" -> "History of Programming Since Napoleon Bonaparte" -> "How Ada Lovelace Invented Computer Science" -> "How Tim Berners-Lee Stole The Idea For Web from His Wife" -> "Why Women Only Crews For Next Space Mission are a Good Idea" -> "How This All Finally Gets Us to HTML Amp Entity" -> ...). Then of course there follow about 600 more sections like "Methodology Used to Create This Copypasting Tutorial" etcetc. until "Conclusion: What We Have Learned about the HTML Amp Entity and History of Feminism"; but at least you don't have to scroll through that; anyway at this point you are already suicidal and don't even want to write your HTML anymore. ~drummyfish }
{ More of web 2023 experience: if you want to Google something as simple as "HTML ampersand", just to get the HTML entity 5 character code, you basically get referred to a site that's 200 MB big, loads for about 1 minute (after you pass 10 checks for not being a robot), has 50 sections and subsections like "Who This Tutorial on Copypasting 5 Character is for", "What You Will Learn in This Tutorial", "Time Required for Reading This Tutorial" (which without these sections would be like 3 seconds), "Introduction: History of HTML" (starting with Stone Age) etc. There are of course about 7 video ads between each section and the next. Then finally there is the `&amp;` code you can copy paste, buried in level 12 subsection ("HTML Code" -> "History of Programming Since Napoleon Bonaparte" -> "How Ada Lovelace Invented Computer Science" -> "How Tim Berners-Lee Stole The Idea For Web from His Wife" -> "Why Women Only Crews For Next Space Mission are a Good Idea" -> "How This All Finally Gets Us to HTML Amp Entity" -> ...). Then of course there follow about 600 more sections like "Methodology Used to Create This Copypasting Tutorial" etcetc. until "Conclusion: What We Have Learned about the HTML Amp Entity and History of Feminism"; but at least you don't have to scroll through that; anyway at this point you are already suicidal and don't even want to write your HTML anymore. ~drummyfish }
## History

View file

@ -4,7 +4,7 @@ YouTube (also JewTube { Lol jewtube.com actually exists. ~drummyfish}) is a huge
{ https://www.vidlii.com seems alright though, at least as a curiosity. Anyway if you need to watch YouTube, do not use their website, it's shitty as hell and you will die of ad cancer, rather use something like invidious or youtube-dl. Here is an **awesome hack I discovered to search only old videos on youtube**! The new shit is just unwatchable, there's clickbait, sponsors, propaganda, SJW shit everywhere, thankfully you can just exclude any year from the search with with "-year" (at least for now), for example: https://yewtu.be/search?q=free+software+-2023+-2022+-2021+-2020+-2019+-2018+-2017+-2016+-2015+-2014+-2013+-2012+-2011+-2010+-2009&page=1&date=none&type=video&duration=none&sort=relevance. Enjoy. ~drummyfish }
A [FOSS](foss.md) alternative to YouTube is e.g. [PeerTube](peertube.md), a federated video platform, however for intended use it requres [JavaScript](javascript.md) and there are other issues that make it unusable ([SJW](sjw.md) censorship, videos load extremely slowly, ...). There also exist alternative YouTube [frontends](frontend.md) (normally also [FOSS](foss.md)), e.g. HookTube, Invidious or FreeTube -- these let you access YouTube's videos via less [bloated](bloat.md) and more privacy-friendly interface. More hardcore people use [CLI](cli.md) tools such as [youtube-dl](youtube_dl.md) to directy download the videos and watch them in native players.
A [FOSS](foss.md) alternative to YouTube is e.g. [PeerTube](peertube.md), a federated video platform, however for intended use it requires [JavaScript](javascript.md) and there are other issues that make it unusable ([SJW](sjw.md) censorship, videos load extremely slowly, ...). There also exist alternative YouTube [frontends](frontend.md) (normally also [FOSS](foss.md)), e.g. HookTube, Invidious or FreeTube -- these let you access YouTube's videos via less [bloated](bloat.md) and more privacy-friendly interface. More hardcore people use [CLI](cli.md) tools such as [youtube-dl](youtube_dl.md) to directy download the videos and watch them in native players.
In November 2021 YouTube removed the dislike count on videos so as to make it impossible to express dislike or disagreement with their propaganda as people naturally started to dislike the exponentially skyrocketing shit and immorality of content [corporations](corporation.md) and [SJWs](sjw.md) started to force promote on YouTube (such as that infamous Lord of the Rings series with ["afro american"](nigger.md) dwarves that got like a billion dislikes [lmao](lmao.md)). In other words capitalism has made it to the stage of banning disagreement when people started to dislike the horse shit they're being force fed. This was met with a wave of universal criticism but of course YouTube told people to shut up and keep consuming that horse excrement -- of course [zoomers](zoomer.md) are just brainless zombies dependent on YouTube like a street whore on heroin so they just accepted that recommendation. Orwell would definitely be happy to see this.

2
zen.md
View file

@ -1,6 +1,6 @@
# Zen
Zen, a term coming from zen [Buddhism](busshism.md) (the word itself from *dhyana*, meaning *meditation*), means emphasis on mediation that leads to enlightenment; in a wider sense it hints on related things and feelings such as tranquility, spiritual peace, sudden coming to realization and understanding. In [hacker](hacking.md) speech *zen* is a very frequent term, according to [Jargon file](jargon_file.md) "to zen" means to understand something by simply meditating about it or by sudden realization (as opposed to e.g. active [trial and error](trial_and_error.md)).
Zen, a term coming from zen [Buddhism](buddhism.md) (the word itself from *dhyana*, meaning *meditation*), means emphasis on mediation that leads to enlightenment; in a wider sense it hints on related things and feelings such as tranquility, spiritual peace, sudden coming to realization and understanding. In [hacker](hacking.md) speech *zen* is a very frequent term, according to [Jargon file](jargon_file.md) "to zen" means to understand something by simply meditating about it or by sudden realization (as opposed to e.g. active [trial and error](trial_and_error.md)).
[Wikiwikiweb](wikiwikiweb.md) has a related discussion under *ZenConcepts*.