master
Miloslav Ciz 2 months ago
parent 280aba9025
commit 5117c92dd9

@ -248,11 +248,11 @@ press key to animate
You may have come here just to learn about the typical realtime 3D rendering used in today's [games](game.md) because aside from research and niche areas this kind of 3D is what we normally deal with in practice. This is what this section is about.
Nowadays "game 3D" means a [GPU](gpu.md) accelerated 3D [rasterization](rasterization.md) done with rendering [APIs](api.md) such as [OpenGL](opengl.md), [Vulkan](vulkan.md), [Direct3D](d3d.md) or [Metal](metal.md) (the last two being [proprietary](proprietary.md) and therefore [shit](shit.md)) and higher level engines above them, e.g. [Godot](godot.md), [OpenSceneGraph](osg.md) etc. The methods seem to be evolving to some kind of rasterization/[pathtracing](pathtracing.md) hybrid, but rasterization is still the basis.
These days "game 3D" means a [GPU](gpu.md) accelerated 3D [rasterization](rasterization.md) done with rendering [APIs](api.md) such as [OpenGL](opengl.md), [Vulkan](vulkan.md), [Direct3D](d3d.md) or [Metal](metal.md) (the last two being [proprietary](proprietary.md) and therefore [shit](shit.md)) and higher level engines above them, e.g. [Godot](godot.md), [OpenSceneGraph](osg.md) etc. The methods seem to be evolving to some kind of rasterization/[pathtracing](pathtracing.md) hybrid, but rasterization is still the basis.
This mainstream rendering uses an [object order](object_order.md) approach (it blits 3D objects onto the screen rather than determining each pixel's color separately) and works on the principle of **triangle rasterization**, i.e. 3D models are composed of triangles (or higher polygons which are however eventually broken down into triangles) and these triangles are projected onto the screen according to the position of the virtual camera and laws of [perspective](perspective.md). Projecting the triangles means finding the 2D screen coordinates of each of the triangle's three vertices -- once we have thee coordinates, we draw (rasterize) the triangle to the screen just as a "normal" 2D triangle (well, with some asterisks).
Furthermore things such as [z-buffering](z_buffer.md) (for determining correct overlap of triangles) and [double buffering](double_buffering.md) are used, which makes this approach very memory ([RAM](ram.md)/[VRAM](vram.md)) expensive -- of course mainstream computers have more than enough memory but smaller computers (e.g. [embedded](embedded.md)) may suffer and be unable to handle this kind of rendering. Thankfully it is possible to adapt and imitate this kind of rendering even on "small" computers -- even those that don't have a GPU, i.e. with pure [software rendering](sw_rendering.md). For this we e.g. replace z-buffering with [painter's algorithm](painters_algorithm.md) (triangle sorting), drop features like [perspective correction](perspective_correction.md), [MIP mapping](mip_mapping.md) etc. (of course quality of the output will go down).
Additionally things such as [z-buffering](z_buffer.md) (for determining correct overlap of triangles) and [double buffering](double_buffering.md) are used, which makes this approach very memory ([RAM](ram.md)/[VRAM](vram.md)) expensive -- of course mainstream computers have more than enough memory but smaller computers (e.g. [embedded](embedded.md)) may suffer and be unable to handle this kind of rendering. Thankfully it is possible to adapt and imitate this kind of rendering even on "small" computers -- even those that don't have a GPU, i.e. with pure [software rendering](sw_rendering.md). For this we e.g. replace z-buffering with [painter's algorithm](painters_algorithm.md) (triangle sorting), drop features like [perspective correction](perspective_correction.md), [MIP mapping](mip_mapping.md) etc. (of course quality of the output will go down).
Also additionally there's a lot of [bloat](bloat.md) added in such as complex [screen space](screen_space.md) shaders, [pathtracing](pathtracing.md) (popularly known as *raytracing*), [megatexturing](megatexturing.md), [shadow rendering](shadow.md), [postprocessing](postprocessing.md), [compute shaders](compute_shader.md) etc. This may make it difficult to get into "modern" 3D rendering. Remember to [keep it simple](kiss.md).

@ -1,6 +1,6 @@
# Abstraction
Abstraction is an important concept in [programming](programming.md), [mathematics](math.md) and other fields of science, philosophy and art, which in simple words can be described as "viewing an issue from a distance", thinking in higher-level concepts, i.e. paying less attention to fine detail so that one can see the bigger picture. In programming for example we distinguish [programming languages](programming_language.md) of high and low level of abstraction, depending on how close they are "to the [hardware](hardware.md)" (e.g. [assembly](assembly.md) being low level, [JavaScript](js.md) being high level); in [art](art.md) high abstraction means portraying and capturing things such as ideas, feelings and emotions with shapes that may seem "distant", not resembling anything concrete or familiar. We usually talk about different **levels of abstraction**, depending on the "distance" we take in vieweing the issue at hand -- this concept may very well be demonstrated on [sciences](science.md): particle [physics](physics.md) researches the world at the lowest level of abstraction, in extreme close-up, for example by examining individual atoms that make up our brains, while [biology](biology.md) resides at a higher level of abstraction, viewing the brain at the level of individual cells, and finally [psychology](psychology.md) shows a very high level of abstraction because it looks at the brain from great distance and just studies its behavior.
Abstraction is an important concept in [programming](programming.md), [mathematics](math.md) and other fields of [science](science.md), philosophy and [art](art.md), which in simple words can be described as "viewing an issue from a distance", thinking in higher-level concepts, i.e. paying less attention to fine detail so that one can see the bigger picture. In programming for example we distinguish [programming languages](programming_language.md) of high and low level of abstraction, depending on how close they are "to the [hardware](hardware.md)" (e.g. [assembly](assembly.md) being low level, [JavaScript](js.md) being high level); in [art](art.md) high abstraction means portraying and capturing things such as ideas, feelings and emotions with shapes that may seem "distant", not resembling anything concrete or familiar. We usually talk about different **levels of abstraction**, depending on the "distance" we take in vieweing the issue at hand -- this concept may very well be demonstrated on [sciences](science.md): particle [physics](physics.md) researches the world at the lowest level of abstraction, in extreme close-up, for example by examining individual atoms that make up our brains, while [biology](biology.md) resides at a higher level of abstraction, viewing the brain at the level of individual cells, and finally [psychology](psychology.md) shows a very high level of abstraction because it looks at the brain from great distance and just studies its behavior.
In mainstream [programming](programming.md) education it is generally taught to "abstract as much as possible" because that's aligned with the [capitalist](capitalism.md) way of technology -- high abstraction is easy to handle for incompetent programming monkeys, it helps preventing them from making damage by employing billions of safety mechanisms, it also perpetuates the cult of never stopping layering of the abstraction sandwich, creating [bloat](bloat.md), [hype](hype.md), bullshit jobs, it makes computers slower, constantly outdated and so drives software [consumerism](consumerism.md). As with everything in capitalism, new abstractions are products hyped on grounds of immediate benefit: creating more comfort, being something new and "[modern](modern.md)", increasing "[productivity](productivity_cult.md)", lowering "barriers of entry" so that ANYONE CAN NOW BE A PROGRAMMER without even knowing anything about computers (try to imagine this e.g. in the field of medicine) etc. -- of course, long term negative effects are completely ignored. **This is extremely wrong.** It is basically why technology has been on such a huge downfall in the latest decades. Opposing this, [LRS](lrs.md) advocates to employ only as little abstraction as needed, so as to support [minimalism](minimalism.md). **Too much abstraction is bad.** For example a widely used general purpose programming language should basically only have as much abstraction as to allow [portability](portability.md), it should definitely NOT succumb high abstraction such as [object obsessed programming](oop.md).

@ -1,6 +1,6 @@
# Artificial Intelligence
Artificial intelligence (AI) is an area of [computer science](compsci.md) whose effort lies in making [computers](computer.md) simulate thinking of humans and possibly other biologically living beings. This may include making computers play [games](game.md) such as [chess](chess.md), compose music, paint pictures, understand and processing audio, images and text on high level of [abstraction](abstraction.md) (e.g. translation between natural languages), making predictions about complex systems such as stock market or weather or even exhibit a general human-like behavior. Even though today's focus in AI is on [machine learning](machine_learning.md) and especially [neural networks](neural_network.md), there are many other usable approaches and models such as "hand crafted" state tree searching algorithms that can simulate and even outperform the behavior of humans in certain specialized areas.
Artificial intelligence (AI) is an area of [computer science](compsci.md) whose effort lies in making [computers](computer.md) simulate thinking of humans and possibly other biologically [living beings](life.md). This may include making computers play [games](game.md) such as [chess](chess.md), compose music, paint pictures, understand and processing audio, images and text on high level of [abstraction](abstraction.md) (e.g. translation between natural languages), making predictions about complex systems such as stock market or weather or even exhibit a general human-like behavior. Even though today's focus in AI is on [machine learning](machine_learning.md) and especially [neural networks](neural_network.md), there are many other usable approaches and models such as "hand crafted" state tree searching algorithms that can simulate and even outperform the behavior of humans in certain specialized areas.
There's a concern that's still a matter of discussion about the dangers of developing a powerful AI, as that could possibly lead to a [technological singularity](tech_singularity.md) in which a super intelligent AI might take control over the whole world without humans being able to seize the control back. Even though it's still likely a far future and many people say the danger is not real, the question seems to be about *when* rather than *if*.

@ -1,6 +1,6 @@
# Aliasing
Aliasing is a certain typically undesirable phenomenon that distorts signals (such as sounds or images) when they are [sampled](sampling.md) [discretely](discrete.md) (captured at single points, usually at periodic intervals) -- this can happen e.g. when capturing sound with digital recorders or when [rendering](rendering.md) computer graphics. There exist [antialiasing](antialiasing.md) methods for suppressing or even eliminating aliasing. Aliasing can be often seen on small checkerboard patterns as a moiré pattern (spatial aliasing), or maybe more famously on rotating wheels or helicopter rotor blades that in a video look like standing still or rotating the other way (temporal aliasing, caused by capturing images at intervals given by the camera's [FPS](fps.md)).
Aliasing is a certain typically undesirable phenomenon that distorts [signals](signal.md) (such as sounds or images) when they are [sampled](sampling.md) [discretely](discrete.md) (captured at single points, usually at periodic intervals) -- this can happen e.g. when capturing sound with digital recorders or when [rendering](rendering.md) computer graphics. There exist [antialiasing](antialiasing.md) methods for suppressing or even eliminating aliasing. Aliasing can be often seen on small checkerboard patterns as a moiré pattern (spatial aliasing), or maybe more famously on rotating wheels or helicopter rotor blades that in a video look like standing still or rotating the other way (temporal aliasing, caused by capturing images at intervals given by the camera's [FPS](fps.md)).
A simple example showing how sampling at discrete points can quite dramatically alter the recorded result:
@ -48,7 +48,7 @@ The explanation above shows why a helicopter's rotating blades look to stand sti
Of course this doesn't only happen with perfect sine waves. [Fourier transform](fourier_transform.md) shows that any signal can be represented as a sum of different sine waves, so aliasing can appear anywhere.
**NyquistShannon sampling theorem** says that aliasing can NOT appear if we sample with at least twice as high frequency as that of the highest frequency in the sampled signal. This means that we can eliminate aliasing by using a [low pass filter](low_pass.md) before sampling which will eliminate any frequencies higher than the half of our sampling frequency. This is why audio is normally sampled with the rate of 44100 Hz -- from such samples it is possible to correctly reconstruct frequencies up to about 22000 Hz which is about the upper limit of human hearing.
**Nyquist-Shannon sampling theorem** says that aliasing can NOT appear if we sample with at least twice as high frequency as that of the highest frequency in the sampled signal. This means that we can eliminate aliasing by using a [low pass filter](low_pass.md) before sampling which will eliminate any frequencies higher than the half of our sampling frequency. This is why audio is normally sampled with the rate of 44100 Hz -- from such samples it is possible to correctly reconstruct frequencies up to about 22000 Hz which is about the upper limit of human hearing.
Aliasing is also a common problem in [computer graphics](computer_graphics.md). For example when rendering textured 3D models, aliasing can appear in the texture if that texture is rendered at a smaller size than its resolution (when the texture is enlarged by rendering, aliasing can't appear because enlargement decreases the frequency of the sampled signal and the sampling theorem won't allow it to happen). (Actually if we don't address aliasing somehow, having lower resolution textures can unironically have beneficial effects on the quality of graphics.) This happens because texture samples are normally taken at single points that are computed by the texturing algorithm. Imagine that the texture consists of high-frequency details such as small checkerboard patterns of black and white pixels; it may happen that when the texture is rendered at lower resolution, the texturing algorithm chooses to render only the black pixels. Then when the model moves a little bit it may happen the algorithm will only choose the white pixels to render. This will result in the model blinking and alternating between being completely black and completely white (while it should rather be rendered as gray).

@ -1,6 +1,6 @@
# Analytic Geometry
Analytic geometry is part of [mathematics](math.md) that solves [geometric](geometry.md) problems with [algebra](algebra.md); for example instead of finding an intersection of a line and a circle with ruler and compass, analytic geometry finds the intersection by solving an equation. In other words, instead of using pen and paper we use numbers. This is very important in computing as computers of course just work with numbers and aren't normally capable of drawing literal pictures and drawing results from them -- that would be laughable (or awesome?). Analytic geometry finds use especially in such fields as [physics simulations](physics_engine.md) ([collision](collision.md) detections) and [computer graphics](graphics.md), in methods such as [raytracing](raytracing.md) where we need to compute intersections of rays with various mathematically defined shapes in order to render 3D images. Of course the methods are used in other fields, for example [rocket science](rocket_science.md) and many other physics areas. Analytic geometry reflects the fact that geometric and algebraic problem are often analogous, i.e. it is also the case that many times problems we encounter in arithmetic can be seen as geometric problems and vice versa (i.e. solving an equation is the same as e.g. finding an intersection of some N-dimensional shapes).
Analytic geometry is part of [mathematics](math.md) that solves [geometric](geometry.md) problems with [algebra](algebra.md); for example instead of finding an intersection of a [line](line.md) and a [circle](circle.md) with ruler and compass, analytic geometry finds the intersection by solving an equation. In other words, instead of using pen and paper we use numbers. This is very important in computing as computers of course just work with numbers and aren't normally capable of drawing literal pictures and drawing results from them -- that would be laughable (or awesome?). Analytic geometry finds use especially in such fields as [physics simulations](physics_engine.md) ([collision](collision.md) detections) and [computer graphics](graphics.md), in methods such as [raytracing](raytracing.md) where we need to compute intersections of rays with various mathematically defined shapes in order to render 3D images. Of course the methods are used in other fields, for example [rocket science](rocket_science.md) and many other physics areas. Analytic geometry reflects the fact that geometric and algebraic problem are often analogous, i.e. it is also the case that many times problems we encounter in arithmetic can be seen as geometric problems and vice versa (i.e. solving an equation is the same as e.g. finding an intersection of some N-dimensional shapes).
[Fun](fun.md) fact: approaches in the opposite direction also exist, i.e. solving mathematical problems physically rather than by computation. For example [back in the day](back_then.md) when there weren't any computers to compute very difficult [integrals](integral.md) and computing them by hand would be immensely hard, people literally cut physical function plots out of paper and weighted them in order to find the integral. Awesome oldschool [hacking](hacking.md).

@ -1,6 +1,6 @@
# Anarchism
Anarchism (from Greek *an*, no and *archos*, ruler) is a [socialist](socialism.md) political philosophy rejecting any social hierarchy and oppression, most notably that of [capitalism](capitalism.md) and [state](state.md) but also any other form, e.g. [nationalism](nationalism.md), [identity politics](identity_politics.md), [hero culture](hero_culture.md) etc. **Anarchism doesn't mean without rules, but without rulers**; despite popular misconceptions **anarchism is not [chaos](chaos.md)** -- on the contrary, it strives for a stable, ideal society of equal people that live in peace. It means **order without power**. Let's also stress that **anarchism is ALWAYS incompatible with and strongly opposes [capitalism](capitalism.md)**, as it's sadly heard too many times from the mouth of common people they think anarchism to be something akin "true capitalism" or "[free market](free_market.md)" (people get very confused by abuse of the word "free") -- NO, capitalism and formal government are an anarchist's two most opposed ideas (and please do not be mislead by attempts at deception e.g. by so called "[anarcho capitalists](ancap.md)"; such a term just tries to merge two fundamentally incompatible ideas, like for example "militant pacifist" or "communist capitalist"). The symbols of anarchism include the letter A in a circle and a black flag that for different branches of anarchism is diagonally split from bottom left to top right and the top part is filled with a color specific for that branch.
Anarchism (from Greek *an*, no and *archos*, ruler) is a [socialist](socialism.md) political philosophy rejecting any social hierarchy and oppression, most notably that of [capitalism](capitalism.md) and [state](state.md) but also any other form, e.g. [nationalism](nationalism.md), [identity fascism](identity_politics.md), [hero culture](hero_culture.md) etc. **Anarchism doesn't mean without rules, but without rulers**; despite popular misconceptions **anarchism is not [chaos](chaos.md)** -- on the contrary, it strives for a stable, ideal society of equal people who live in peace. It means **order without power**. Let's also stress that **anarchism is ALWAYS incompatible with and strongly opposes [capitalism](capitalism.md)**, as it's sadly heard too many times from the mouth of common people they think anarchism to be something akin "true capitalism" or "[free market](free_market.md)" (people get very confused by abuse of the word "free") -- NO, capitalism and formal government are an anarchist's two most opposed ideas (and please do not be mislead by attempts at deception e.g. by so called "[anarcho capitalists](ancap.md)"; such a term just tries to merge two fundamentally incompatible ideas, like for example "militant pacifist" or "communist capitalist"). The symbols of anarchism include the letter A in a circle and a black flag that for different branches of anarchism is diagonally split from bottom left to top right and the top part is filled with a color specific for that branch.
[LRS](lrs.md) is a truly anarchist movement, specifically [anarcho pacifist](anpac.md) and [anarcho communist](ancom.md) one. **True, purest anarchism is [pacifist](pacifism.md), [communist](communism.md) and [altruistic](altruism.md)** as that's the perfect ideal of society without hierarchy. Other forms of anarchism that try to sneak in acceptance of concepts such as "justified violence" or some form of "market economy" are mostly just poses of teenage boys who really believe in capitalism but want to adopt a cool label of "anarchist".
@ -8,4 +8,9 @@ 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 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.
## See Also
- [communism](communism.md)
- [libertarianism](libertarianism.md)

@ -1,7 +1,7 @@
# Anarcho Pacifism
Anarcho pacifism (anpac) is a form of [anarchism](anarchism.md) that completely rejects any violence. Anarcho pacifists argue that since anarchism opposes hierarchy and oppression, we have to reject violence which is a tool of oppression and establishing hierarchy. This would make it the one true purest form of anarchism. Anarcho pacifists use a black and white flag.
Anarcho pacifism (anpac) is a form of [anarchism](anarchism.md) that completely rejects any violence. Anarcho pacifists argue that since anarchism opposes hierarchy and oppression, we have to reject violence which is the greatest tool of oppression and establishing hierarchy. This would make it the one true purest form of anarchism. Anarcho pacifists use a black and white flag.
Historically anarcho pacifists such as [Leo Tolstoy](tolstoy.md) were usually religiously motivated for rejecting violence, however this stance may also come from logic and other than religious beliefs, e.g. the simple belief that violence will only spawn more violence ("eye for an eye will only make the whole world blind"), or pure unconditional love of life.
Historically anarcho pacifists such as [Leo Tolstoy](tolstoy.md) were usually religiously motivated for rejecting violence, however this stance may also come from logic or other than religious beliefs, e.g. the simple belief that violence will only spawn more violence ("eye for an eye will only make the whole world blind"), or pure unconditional love of life which one simply feels and chooses to follow without the need for any further justification.
We, [LRS](lrs.md), advocate anarcho pacifism. We see how violence can be a short term solution, even to preventing a harm of many, however from the long term perspective we only see the complete delegitimisation of violence as leading to a truly mature society. We realize a complete, 100% non violent society may be never achieved, but with enough education and work it will be possible to establish a society with absolute minimum of violence, a society in which firstly people grow up in a completely non violent environment so that they never accept violence, and secondly have all needs secured so that they don't even have a reason for using violence. We should at least try to get as close to this ideal as possible.

@ -1,6 +1,6 @@
# Approximation
Approximating means calculating or representing something with lesser than best possible precision -- estimating -- purposefully allowing some margin of error in results and using simpler mathematical models than the most accurate ones: this is typically done in order to save resources (CPU cycles, memory etc.) and reduce [complexity](complexity.md) so that our projects and analysis stay manageable. Simulating real world on a computer is always an approximation as we cannot capture the infinitely complex and fine nature of the real world with a machine of limited resources, but even withing this we need to consider how much, in what ways and where to simplify.
Approximating means calculating or representing something with lesser than best possible precision -- estimating -- purposefully allowing some margin of error in results and using simpler mathematical models than the most accurate ones: this is typically done in order to save resources (CPU cycles, memory etc.) and reduce [complexity](complexity.md) so that our projects and analysis stay manageable. Simulating real world on a computer is always an approximation as we cannot capture the infinitely complex and fine nature of the real world with a machine of limited resources, but even within this we need to consider how much, in what ways and where to simplify.
Using approximations however doesn't have to imply decrease in precision of the final result -- approximations very well serve [optimization](optimization.md). E.g. approximate metrics help in [heuristic](heuristic.md) algorithms such as [A*](a_star.md). Another use of approximations in optimization is as a quick preliminary check for the expensive precise algorithms: e.g. using bounding spheres helps speed up collision detection (if bounding spheres of two objects don't collide, we know they can't possibly collide and don't have to expensively check this).

@ -2,7 +2,7 @@
ASCII art is the [art](art.md) of manually creating graphics and images only out of [fixed-width](fixed_width.md) [ASCII](ascii.md) characters. This means no [unicode](unicode.md) or extended ASCII characters are allowed, of course. ASCII art is also, strictly speaking, separate from mere [ASCII rendering](ascii_rendering.md), i.e. automatically rendering a bitmap image with ASCII characters in place of [pixels](pixel.md), and ASCII graphics that utilizes the same techniques as ASCII art but can't really be called art (e.g. computer generated diagrams). Pure ASCII art should make no use of [color](color.md).
This kind of art used to be a great part of the culture of earliest [Internet](internet.md) communities for a number of reasons imposed largely by the limitations of old computers -- it could be created easily with a text editor and saved in pure text format, it didn't take much space to store or send over a network and it could be displayed on text-only displays and terminals. The principle itself predates computers, people were already making this kind of images with type writers. Nevertheless the art survives even to present day and lives on in the hacker culture, in [Unix](unix.md) communities, on the [Smol Internet](smol_internet.md) etc. ASCII diagram may very well be embedded e.g. in a comment in a source code to explain some spatial concept -- that's pretty [KISS](kiss.md). We, [LRS](lrs.md), highly advocate use of ASCII art whenever it's [good enough](good_enough.md).
This kind of art used to be a great part of the [culture](culture.md) of earliest [Internet](internet.md) communities for a number of reasons imposed largely by the limitations of old computers -- it could be created easily with a text editor and saved in pure text format, it didn't take much space to store or send over a network and it could be displayed on text-only displays and terminals. The principle itself predates computers, people were already making this kind of images with type writers. Nevertheless the art survives even to present day and lives on in the hacker culture, in [Unix](unix.md) communities, on the [Smol Internet](smol_internet.md) etc. ASCII diagram may very well be embedded e.g. in a comment in a source code to explain some spatial concept -- that's pretty [KISS](kiss.md). We, [LRS](lrs.md), highly advocate use of ASCII art whenever it's [good enough](good_enough.md).
Here is a simple 16-shade ASCII [palette](palette.md) (but watch out, whether it works will depend on your font): `#OVaxsflc/!;,.- `. Another one can be e.g.: `WM0KXkxocl;:,'. `.

@ -130,6 +130,8 @@ We will now compile it to different assembly languages (you can do this e.g. wit
{ I used this online tool: https://godbolt.org. ~drummyfish }
{ Also not sure the comments are 100% correct, let me know if not. ~drummyfish }
The [x86](x86.md) assembly may look like this:
```

@ -4,9 +4,9 @@
Bulletin board system (BBS) is, or rather used to be, a kind of [server](server.md) that hosts a community of users who connect to it via [terminal](terminal.md), who exchange messages, files, play [games](game.md) and otherwise interact -- BBSes were mainly popular before the invention of [web](www.md), i.e. from about 1978 to mid 1990s, however some still exist today. BBSes are powered by special BBS [software](software.md) and the people who run them are called sysops.
Back then people connected to BBSes via dial-up [modems](modem.md) and connecting was much more complicated than connecting to a server today: you had to literally dial the number of the BBS and you could only connect if the BBS had a free line. **Early BBSes weren't normally connected through Internet** but rather through other networks like [UUCP](uucp.md) working through phone lines. I.e. a BBS would have a certain number of modems that defined how many people could connect at once. It was also expensive to make calls into other countries so BBSes were more of a local thing, people would connect to their local BBSes. Furthermore these things ran often on non-[multitasking](multitasking.md) systems like [DOS](dos.md) so allowing multiple users meant the need for having multiple computers. The boomers who used BBSes talk about great adventure and a sense of intimacy, connecting to a BBS meant the sysop would see you connecting, he might start chatting with you etc. Nowadays the few existing BBSes use protocols such as [telnet](telnet.md), nevertheless there are apparently about 20 known dial-up ones in north America. Some BBSes evolved into more modern communities based e.g. on [public access Unix](pubnix.md) systems -- for example [SDF](sdf.md).
Back then people connected to BBSes via dial-up [modems](modem.md) and connecting was much more complicated than connecting to a server today: you had to literally dial the number of the BBS and you could only connect if the BBS had a free line. **Early BBSes weren't normally connected through [Internet](internet.md)** but rather through other networks like [UUCP](uucp.md) working through phone lines. I.e. a BBS would have a certain number of modems that defined how many people could connect at once. It was also expensive to make calls into other countries so BBSes were more of a local thing, people would connect to their local BBSes. Furthermore these things ran often on non-[multitasking](multitasking.md) systems like [DOS](dos.md) so allowing multiple users meant the need for having multiple computers. The boomers who used BBSes talk about great adventure and a sense of intimacy, connecting to a BBS meant the sysop would see you connecting, he might start chatting with you etc. Nowadays the few existing BBSes use protocols such as [telnet](telnet.md), nevertheless there are apparently about 20 known dial-up ones in north America. Some BBSes evolved into more modern communities based e.g. on [public access Unix](pubnix.md) systems -- for example [SDF](sdf.md).
A BBS was usually focused on a certain topic such as technology, fantasy [roleplay](rolaplay.md), dating, [warez](warez.md) etc., they would typically greet the users with a custom themed [ANSI art](ansi_art.md) welcome page upon login -- it was pretty cool.
A BBS was usually focused on a certain topic such as technology, fantasy [roleplay](rolaplay.md), dating, [warez](warez.md) etc., they would typically greet the users with a custom themed [ANSI art](ansi_art.md) welcome page upon login -- it was pretty cool. BBSes were used to share [plain text](plain_text.md) files of all sorts, be it [anarchist](anarchism.md) writings, computer manuals, poetry or recipes.
{ There's some documentary on BBS that's upposed to give you an insight into this shit, called literally *BBS: The documentary*. It's about 5 hours long tho. ~drummyfish }

@ -2,6 +2,8 @@
Bloat is a very wide term that in the context of [software](software.md) and [technology](tech.md) means overcomplication, unnecessary complexity and/or extreme growth in terms of source code size, overall complexity, number of [dependencies](dependency.md), [redundancy](redundancy.md), unnecessary and/or useless features (e.g. [feature creep](feature_creep.md)) and resource usage, all of which lead to inefficient, badly designed technology with [bugs](bug.md) (crashes, unusable features, memory leaks, [security](security.md) vulnerabilities, ...), as well as great [obscurity](obscurity.md), ugliness, **loss of [freedom](free_software.md)** and waste of human effort. Simply put bloat is burdening [bullshit](bullshit.md). Bloat is extremely bad and one of the greatest technological issues of today. Creating bloat is bad engineering at its worst and unfortunately it is what's absolutely taking over all technology nowadays, mostly due to [capitalism](capitalism.md) causing commercialization, [consumerism](consumerism.md), rushed "[just works](just_werks.md)" products, creating demand for newer hardware and so on, also allowing incompetent people ("let's push more women/minorities into programming") trying to take on jobs they are in no way qualified to do.
A related but different term is **bloatware**; it's more commonly used among normie users and stands for undesirable programs that eat up computer resources, usually being preinstalled by the computer manufacturer etc. Further on we will focus on bloat as defined previous.
TODO: history of bloat?
[LRS](lrs.md), [suckless](suckless.md) and some others rather small groups are trying to address the issue and write software that is good, [minimal](minimalism.md), reliable, efficient and well functioning. Nevertheless our numbers are very small and in this endeavor we are basically standing against the whole world and the most powerful tech [corporations](corporation.md). The issue lies not only in capitalism pushing bloat but also in common people not seeing the issue (partly due to the capitalist propaganda promoting [maximalism](maximalism.md)), no one is supporting the few people who are genuinely trying to create good tools, on the contrary such people often face hostility from the mainstream.

@ -85,7 +85,7 @@ Now let's see what the source code means:
- `puts("It works.");` is a "command" for printing text strings to the command line (it's a command from the `stdio` library included above). Why exactly this is written like this will be explained later, but for now notice the following. The command starts with its name (`puts`, for *put string*), then there are left and right brackets (`(` and `)`) between which there are arguments to the command, in our case there is one, the text string `"It works."`. Text strings have to be put between quotes (`"`), otherwise the compiler would think the words are other commands (the quotes are not part of the string itself, they won't be printed out). The command is terminated by `;` -- all "normal" commands in C have to end with a semicolon.
- `return 0;` is another "command", it basically tells the operating system that everything was terminated successfully (`0` is a code for success). This command is an exception in that it doesn't have to have brackets (`(` and `)`). This doesn't have to bother us too much now, let's just remember this will always be the last command in our program.
Also notice how the source code is formatted, e.g. the indentation of code withing the `{` and `}` brackets. White characters (spaces, new lines, tabs) are ignored by the compiler so we can theoretically write our program on a single line, but that would be unreadable. We use indentation, spaces and empty lines to format the code to be well readable.
Also notice how the source code is formatted, e.g. the indentation of code within the `{` and `}` brackets. White characters (spaces, new lines, tabs) are ignored by the compiler so we can theoretically write our program on a single line, but that would be unreadable. We use indentation, spaces and empty lines to format the code to be well readable.
To sum up let's see a general structure of a typical C program. You can just copy paste this for any new program and then just start writing commands in the `main` function.

@ -1,6 +1,6 @@
# Chaos
In [mathematics](math.md) chaos is a phenomenon that makes it extremely difficult to predict, even approximately, the result of some process even if we completely know how the process works and what state it starts in. In more technical terms chaos is a property of a [nonlinear](nonlinear.md) [deterministic](determinism.md) [system](system.md) in which even a very small change in input creates a great change in the output, i.e. the system is very sensitive to [initial conditions](initial_condition.md). Chaos is a topic studied by the field called **chaos theory** and is important in all [science](science.md). In [computer science](compsci.md) it is important for example for the generation of [pseudorandom](pseudorandom.md) numbers or in [cryptography](cryptography.md). Every programmer should be familiar with the existence of chaotic behavior because in mathematics (programming) it emerges very often, it may pose a problem but, of course, it may be taken advantage of as well.
In [mathematics](math.md) chaos is a phenomenon that makes it extremely difficult to predict, even approximately, the outcome of some process even if we completely know how the process works and what state it starts in. In more technical terms chaos is a property of a [nonlinear](nonlinear.md) [deterministic](determinism.md) [system](system.md) in which even a very small change in input creates a great change in the output, i.e. the system is very sensitive to [initial conditions](initial_condition.md). Chaos is a topic studied by the field called **chaos theory** and is important in all [science](science.md). In [computer science](compsci.md) it is important for example for the generation of [pseudorandom](pseudorandom.md) numbers or in [cryptography](cryptography.md). Every programmer should be familiar with the existence of chaotic behavior because in mathematics (programming) it emerges very often, it may pose a problem but, of course, it may be taken advantage of as well.
Perhaps the most important point is that a chaotic system is difficult to predict NOT because of [randomness](randomness.md), lack of information about it or even its incomprehensible complexity (many chaotic systems are defined extremely simply), but because of its inherent structure that greatly amplifies any slight nudge to the system and gives any such nudge a great significance. This may be caused by things such as [feedback loops](feedback_loop.md) and [domino effects](domino_effect.md). Generally we describe this behavior as so called **[butterfly effect](butterfly_effect.md)** -- we liken this to the fact that a butterfly flapping its wings somewhere in a forest can trigger a sequence of events that may lead to causing a tornado in a distant city a few days later.

@ -25,7 +25,7 @@ Chess as a game is not and cannot be [copyrighted](copyright.md), but **can ches
## Chess In General
Chess evolved from ancient board games in India in about 6th century. Nowadays the game is internationally governed by **FIDE** which has taken the on role of an authority that defines the official rules: FIDE rules are considered to be the standard chess rules. FIDE also organizes tournaments, promotes the game and keeps a list of registered players whose performance it rates with so called Elo system based on the performance it also grants titles such as **Grandmaster** (GM, strongest), **Internation Master** (IM, second strongest) or **Candidate Master** (CM). A game of chess is so interesting in itself that chess is usually not played for money like many other games ([poker](poker.md), [backgammon](backgammon.md), ...).
Chess evolved from ancient board games in India in about 6th century. Nowadays the game is internationally governed by **FIDE** which has taken the on role of an authority that defines the official rules: FIDE rules are considered to be the standard chess rules. FIDE also organizes tournaments, promotes the game and keeps a list of registered players whose performance it rates with so called Elo system -- based on the performance it also grants titles such as **Grandmaster** (GM, strongest), **Internation Master** (IM, second strongest) or **Candidate Master** (CM). A game of chess is so interesting in itself that chess is usually not played for money like many other games ([poker](poker.md), [backgammon](backgammon.md), ...).
The mastery of chess is often divided into two main areas (it is also common to divide strong players into these two categories depending on where their main strength lies):

@ -2,9 +2,9 @@
*See also http://techrights.org/2019/04/23/code-of-coercion/.*
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 withing 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).
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).
**[LRS](lrs.md) must never include any COC**, with possible exceptions of anti-COC (such as NO COC) or parody style COCs, not because we dislike genuine inclusivity, but because we believe COCs are bullshit and mostly harmful as they support bullying, censorship and exclusion of people.
**[LRS](lrs.md) must never employ any COC**, with possible exceptions of anti-COC (such as NO COC) or parody style COCs, not because we dislike genuine inclusivity, but because we believe COCs are bullshit and mostly harmful as they support bullying, censorship and exclusion of people.
Anyway it's best to avoid any kind of COC file in the repository, it just takes up space and doesn't serve anything. We may simply ignore this shitty concept completely. You may argue why we don't ignore e.g. [copyright](copyright.md) in the same way and just not use any [licenses](license.md)? The situation with copyright is different: it exists by default, without a license file the code is proprietary and our neighbors don't have the legal safety to execute basic freedoms, they may be bullied by the state -- for this we are forced to include a license file to get rid of copyright. With COC there simply isn't any such implicit issues to be solved (because COCs are simply inventing their own issues), so we just don't try to solve non-issues.

@ -1,6 +1,6 @@
# Competition
Competition is a situation of conflict in which several entities try to overpower or otherwise win over each other. It is the opposite of [collaboration](collaboration.md). Competition is connected to pursuing [self interest](self_interest.md).
Competition is a situation of conflict in which several entities try to [overpower](fight_culture.md) or otherwise win over each other. It is the opposite of [collaboration](collaboration.md). Competition is connected to pursuing [self interest](self_interest.md).
**Competition is the absolute root cause of most [evil](evil.md) in society. Society must never be based on competition**. Unfortunately our society has decided to do the exact opposite with [capitalism](capitalism.md), the glorification of competition -- this will very likely lead to the [destruction of our society](collapse.md), possibly even to the destruction of all [life](life.md).

@ -88,7 +88,7 @@ Here is a list of some common compression programs/utilities/standards/formats/e
| util/format | extensions | free? | media | lossless? | notes |
| ----------------- | ---------- | ----- | ------------- | --------- | -------------------------------------------- |
|[bzip2](bzip2.md) | .bz2 | yes | general | yes | BurrowsWheeler alg. |
|[bzip2](bzip2.md) | .bz2 | yes | general | yes | Burrows-Wheeler alg. |
|[flac](flac.md) | .flac | yes | audio | yes | super free lossless audio format |
|[gif](gif.md) | .gif |now yes| image/anim. | no | limited color palette, patents expired |
|[gzexe](gzexe.md) | | yes |executable bin.| yes | makes self-extracting executable |

@ -6,7 +6,7 @@ We can divide computers based on many attributes, e.g.:
- by continuous or discrete **representation of data**: [digital](digital.md) vs [analog](analog.md)
- by **[hardware](hw.md) technology**: [electronic](electronics.md) ("lightning in sand"), [mechanical](mechanical.md), [quantum](quantum.md), biological etc.
- by **purpose**: special purpose vs general purpose, [personal](pc.md), [server](server.md), [embedded](embedded.md), [supercomputers](supercomputer.md), gaming computer etc.
- by **purpose**: special purpose vs general purpose, [personal](pc.md), [server](server.md), [embedded](embedded.md), [workstation](workstation.md), [supercomputers](supercomputer.md), [gaming](game.md) computer etc.
- by **[programmability](programming.md)**: non-programmable, partially or fully programmable
- by the theoretical **[model of computation](model_of_computation.md)** it is based on: [Turing machine](turing_machine.md), [lambda calculus](lambda_calculus.md) etc.
- by **computational power**: how difficult problems the computer is able to solve, i.e. where in the [Chomsky hierarchy](chomsky_hierarchy.md) it stands (typically we want [Turing complete](turing_completeness.md) computers)
@ -15,23 +15,23 @@ We can divide computers based on many attributes, e.g.:
```
______________
| ________ | \_
| |>.. | | \
| | | | ]
| |________| | _/
___ |____________|_/'. ___
/.\ \ \...../ '. /.\ \
|;:;| | _____/_____\_____ :|;:;| |
|;:;| |:| [][] ,,,___ | |.'|;:;| |
|___|_| |______________|__|:.|___|_|
__...--':
.-''' .-''
| |>.. | | : \ ||
| | | | : ] |:==-'
| |________| | :_/ ___||___
___ |____________|_/'. ___ /########\
/ \ \ \...../ '. / \ \ |""""""""|
|;:;| | _____/_____\_____ :|;:;| | |O O O O |
|;:;| |:|[o][o],,, === | |.'|;:;| | || | | | |
|___|_| |______________|__|:.|___|_| || | | | |
__...--': ||,|,|,|,|
.-''' .-'' \########/
___________;__ _:_
/:::::::.::'::/| /-'-)
/:::::::'.:.::// (___/
"""""""""""""""
```
*Typical personal computer, with case, monitor, keyboard, mouse and speakers.*
*On the left typical personal computer, with case, monitor, keyboard, mouse and speakers; on the right a pocket mechanical calculator of the Curta type.*
Computers are theoretically studied by [computer science](compsci.md). The kind of computer we normally talk about consists of two main parts:
@ -79,10 +79,11 @@ Here is a list of notable computers.
| [VIC 20](vic_20.md) | 1980 | 32K RAM, 1MHz CPU 8bit, 20K ROM | successful TV-connected home computer by Commodore|
| [IBM PC](ibm_pc.md) | 1981 | 256K RAM, CPU 4.7MHz 16bit, BASIC, DOS | 1st personal computer as we know it now, modular |
| [Commodore 64](c64.md) | 1982 | 64K RAM, 20K ROM, CPU 1MHz 8bit | very popular TV-connected home computer |
| [ZX Spectrum](zx_spectrum.md) | 1982 | 128K RAM, CPU 3.5MHz 8bit | successful UK TV-connected home comp. by Sinclair |
| [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 |
| [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 |
| [TI](texas_instruments.md)-80 | 1995 | 7K RAM, CPU 980KHz, 48x64 1bit screen | famous programmable graphing calculator |
@ -92,6 +93,7 @@ Here is a list of notable computers.
| [GameBoy Advance](gba.md) | 2001 | ~256K RAM, 96K VRAM, CPU 16MHz 32bit ARM, 240x160 | successor to GBC |
| [Xbox](xbox.md) | 2001 | 64M RAM, CPU 733MHz Pentium III | TV-connected game console by Micro$oft |
| [Nintendo DS](nds.md) | 2004 | 4M RAM, 256K ROM, CPU ARM 67MHz, touchscreen | famous handheld game console by Nintendo |
| [Nintendo Wii](wii.md) | 2006 | 24M RAM, 512M ROM, SD, CPU PPC 729M | famous family TV console with "stick" controllers |
| [iPhone](iphone.md) (aka spyphone) | 2007 | 128M RAM, CPU ARM 620MHz, GPU, cam., Wifi, 480x320| 1st of the harmful Apple "smartphones" |
| [ThinkPad](thinkpad.md) X200 | 2008 | 8G RAM, CPU 2.6GHz, Wifi | legendary laptop, great constr., freedom friendly |
| [ThinkPad](thinkpad.md) T400 | 2008 | 8G RAM, CPU 2.8GHz, Wifi | legendary laptop, great constr., freedom friendly |
@ -104,4 +106,4 @@ Here is a list of notable computers.
|[PD computer](public_domain_computer.md) | | | planned LRS computer |
|[Turing machine](turing_machine.md) | | | important theoretical computer by Alan Turing |
TODO: mnt reform 2, pinephone, NeXT, 3DO, ti-89, quantum?, wii?
TODO: mnt reform 2, pinephone, 3DO, ti-89, quantum?

@ -1,8 +1,8 @@
# Copyleft
Copyleft (also share-alike) is a concept of allowing sharing and modifications of intellectual works (such as pictures, music or computer programs) on the legal condition that others will share it under the same terms (i.e. that they will also allow the work's further free sharing and modification etc.); it was created by the critics of [copyright](copyright.md) as a "more sane" take on sharing. The symbol of copyleft is mirrored copyright symbol, i.e. horizontally flipped C in circle (C looking "to the left"). Copyleft is widely utilized by some proponents of [free (as in freedom) software](free_software.md) and [culture](free_culture.md) to legally ensure this software/art and its modifications will always remain free, however other camps of freedom proponents argue that copyleft is still too restrictive and share their works under [even more relaxed](premissive.md) legal conditions. Copyleft kind of [hacks](hacking.md) [copyright](copyright.md) to de-facto remove copyright (the monopoly it creates) by its own power.
Copyleft (also share-alike) is a concept of allowing sharing and modifications of intellectual works (such as pictures, music or computer programs) on the legal condition that others will share it under the same terms (i.e. that they will also allow the work's further free sharing and modification etc.); it was created by the critics of [copyright](copyright.md) as a "more sane" take on this concept. The symbol of copyleft is a mirrored copyright symbol, i.e. horizontally flipped C in circle (C looking "to the left", [Unicode](unicode.md) U+1F12F). Copyleft is widely utilized by some proponents of [free (as in freedom) software](free_software.md) and [culture](free_culture.md) to legally (i.e. with a [license](license.md)) ensure this software/art and its modifications will always remain free (as in freedom), however other camps of freedom proponents argue that copyleft is still too restrictive and share their works under [even more relaxed](premissive.md) legal conditions. Copyleft kind of [hacks](hacking.md) [copyright](copyright.md) to [de-facto](de_facto.md) remove copyright (the monopoly it creates) by its own power. Typical examples of copyleft licenses are the [GPL](gpl.md) (mostly used for [software](sw.md)) and [CC BY-SA](cc_by_sa.md) (mostly used for non-software works).
Copyleft has been by its mechanisms likened to a virus because once it is applied to certain software, it "infects" it and will force its conditions on any [descendants](fork.md) of that software, i.e. it will spread itself (in this case the word virus does not bear a negative connotation, at least to some, they see it as a "good virus").
Copyleft has been by its mechanisms likened to a virus because once it is applied to a certain work, it "infects" it and will force its conditions on any [descendants](fork.md) of that work, i.e. it will spread itself -- the word virus here bears less of a negative connotation, at least to some who see it as a "good virus".
For free/open-source software the alternative to copyleft is so called **[permissive](permissive.md)** licensing which (same as with copyleft) grants all the necessary freedom rights, but, unlike copyleft, does NOT require further modified versions to grant these rights as well. This allows free software being forked and developed into [proprietary](proprietary.md) software and is what copyleft proponents criticize. However, both copyleft and permissive licensing are free as in freedom.
@ -16,7 +16,7 @@ In the great debate of copyleft vs permissive free licenses we, as technological
- 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.
- **Copyleft drags people into activism, 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 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.
- **There are currently no nice copyleft licenses** -- this of course isn't argument against copyleft itself but it's a practical argument nevertheless. Copyleft nowadays basically means GPL and GPL has a shitton of burdening stuff like requiring credit etc. If you want pure copyleft without anything on top, good luck looking for a license (keep in mind that making your own license or using some obscure, legally untested license is mostly a bad idea).

@ -1,5 +1,5 @@
# C++
C++ (also crippled C) is an [object-obsessed](oop.md) [joke](jokes.md) language based on [C](c.md) to which it adds only [capitalist](capitalist_software.md) features and [bloat](bloat.md), most notably [object obsession](oop.md). Most good programmers such as [Richard Stallman](rms.md) and [Linus Torvalds](linus_torvalds.md) agree that C++ is hilariously messy and also tragic in that it actually succeeded to become mainstream. The language creator [Bjarne Stroustrup](stroustrup.md) himself infamously admitted the language suck but laughs at its critics because it became successful anyway -- indeed, in a retarded society only [shit](shit.md) can succeed. As someone once said, "C++ is not an increment, it is excrement". C++ specification has **over 2000 pages** :D
C++ (also crippled C) is an [object-obsessed](oop.md) [joke](jokes.md) language based on [C](c.md) to which it adds only [capitalist](capitalist_software.md) features and [bloat](bloat.md), most notably [object obsession](oop.md). Most good programmers such as [Richard Stallman](rms.md) and [Linus Torvalds](linus_torvalds.md) agree that C++ is hilariously messy and also tragic in that it actually succeeded to become mainstream. The language creator [Bjarne Stroustrup](stroustrup.md) himself infamously admitted the language sucks but laughs at its critics because it became successful anyway -- indeed, in a retarded society only [shit](shit.md) can succeed. As someone once said, "C++ is not an increment, it is excrement". C++ specification has **over 2000 pages** :D
C++ source code files have the extensions `.cpp` or `.cc` (for "crippled C").

@ -1,10 +1,10 @@
# Demoscene
Demoscene is a [hacker](hacking.md) [art](art.md) subculture revolving around making so called [demos](demo.md), programs that produce rich and interesting audiovisual effects and which are sometimes limited by strict size constraints (so called [intros](intro.md)). The scene originated in northern [Europe](europe.md) sometime in 1980s (even though things like screen hacks existed long before) among groups of [crackers](cracker.md) who were adding small signature effect screens into their cracked software (like "digital graffiti"); programming of these cool effects later became an art of its own and started to have their own competitions (sometimes with high financial prizes), so called *[compos](compo.md)*, at dedicated real life events called *[demoparties](demoparty.md)* (which themselves evolved from *[copyparties](copyparty.md)*, real life events focused on [piracy](piracy.md)). The community is still centered mostly in the Europe (primarily Finland, in some countries demoscene was even officially added to the cultural heritage), it is underground, out of the mainstream; [Wikipedia](wikipedia.md) says that by 2010 its size was estimated to 10000 people (such people are called *demosceners*).
Demoscene is a [hacker](hacking.md) [art](art.md) subculture revolving around making so called [demos](demo.md), programs that produce rich and interesting audiovisual effects which are sometimes limited by strict size constraints (so called [intros](intro.md)). The scene originated in northern [Europe](europe.md) sometime in 1980s (even though things like screen hacks existed long before) among groups of [crackers](cracker.md) who were adding small signature effect screens into their cracked software (popularly likened to "digital graffiti"); [programming](programming.md) of these cool effects later became an art of its own and started to have their own competitions (sometimes with high financial prizes), so called *[compos](compo.md)*, at dedicated real life events called *[demoparties](demoparty.md)* (which themselves evolved from *[copyparties](copyparty.md)*, real life events focused on [piracy](piracy.md)). The community is still centered mostly in the [Europe](europe.md) (primarily Finland, in some countries demoscene was even officially added to the cultural heritage), it is underground, out of the mainstream; [Wikipedia](wikipedia.md) says that by 2010 its size was estimated to 10000 people (such people are called *demosceners*).
Demoscene is a bittersweet topic: on one side it's awesome, full of beautiful hacking, great ideas and minimalism, on the other side there are secretive people who don't share their source code (most demos are [proprietary](proprietary.md)) and ugly unportable programs that exploit quirks of specific platforms -- common ones are [DOS](dos.md), [Commodore 64](c64.md), [Amiga](amiga.md) or [Windows](windows.md). These guys simply try to make the coolest visuals and smallest programs, with all good and bad that comes with it. Try to take only the good of it.
Demoscene is a bittersweet topic: on one side it's awesome, full of beautiful hacking, great ideas and minimalism, on the other side there are secretive people who don't share their source code (most demos are [proprietary](proprietary.md)) and ugly unportable programs that exploit quirks of specific platforms. Common platforms are [DOS](dos.md), [Commodore 64](c64.md), [Amiga](amiga.md) or [Windows](windows.md). These guys simply try to make the coolest visuals and smallest programs, with all good and bad that comes with it. Please strive to take only the good of it.
Besides "digital graffiti" the scene is also perhaps a bit similar to the culture of street rap in its underground nature, of course except that there's less improvisation (obviously, making a program takes long) and competition happens between groups rather than individuals. Nevertheless the focus is on competition, originality, style etc. But demos should show off technological skills as the highest priority -- trying to "win by content" rather than programming skills is sometimes frowned upon. Individuals within a demogroup have roles such as a [programmer](programmer.md), visual artist, music artist, director, even [PR](pr.md) etc. The whole mindset and relationship to technology within demoscene is much different from the mainstream; for example it's been stated that while mainstream sees computers just as a tool that should just make happen what we imagine, a demoscener puts technology first, he doesn't see computing platforms in terms of better or worse e.g. for its raw computational power, he rather sees a rich world of unique computing platforms, each one with specific personality and feel, kind of like a visual artist sees different painting styles.
Besides "digital graffiti" the scene is also perhaps a bit similar to the culture of street rap in its underground and competitive nature, but of course it differs by lack of improvisation and in centering on groups rather than individuals. Nevertheless the focus is on competition, originality, style etc. But demos should show off technological skills as the highest priority -- trying to "win by content" rather than programming skills is sometimes frowned upon. Individuals within a demogroup have roles such as a [programmer](programmer.md), visual artist, music artist, director, even [PR](pr.md) etc. The whole mindset and relationship to technology within demoscene is much different from the mainstream; for example it's been stated that while mainstream sees computers just as a tool that should just make happen what we imagine, a demoscener puts technology first, he doesn't see computing platforms in terms of better or worse e.g. for its raw computational power, he rather sees a rich world of unique computing platforms, each one with specific personality and feel, kind of like a visual artist sees different painting styles.
A demo isn't a video, it is a non-[interactive](interactive.md) [real time](real_time.md) executable that produces the same output on every run (even though categories outside of this may also appear). [Viznut](viznut.md) has noted that this "static nature" of demos may be due to the established culture in which demos are made for a single show to the audience. Demos themselves aren't really limited by resource constraints (well, sometimes a limit such as 4 MB is imposed), it's where the programmers can show off all they have. However compos are often organized for **intros**, demos whose executable size is limited (i.e. NOT the size of the source code, like in [code golfing](golf.md), but the size of the compiled binary). The main categories are 4Kib intros and 64Kib intros, rarely also 256Kib intros (all sizes are in [kibibytes](memory_units.md)). Apparently even such categories as 256 [byte](byte.md) intro appear. Sometimes also platform may be specified (e.g. [Commodore 64](c64.md), [PC](pc.md) etc.). The winner of a compo is decided by voting.
@ -14,6 +14,7 @@ Some of the biggest demoparties are or were Assembly (Finland), The Party (Denma
## See Also
- [hacker culture](hacking.md)
- [code golf](golf.md)
- [kkrieger](kkrieger.md)
- [LAN party](lan_party.md)

@ -0,0 +1,3 @@
# Docker
I don't fucking know what this is and I don't wanna know that.

@ -1,8 +1,8 @@
# Dynamic Programming
Dynamic programming is a programming technique that can be used to make many algorithms more efficient (faster). It works on the principle of repeatedly breaking given problem down into smaller subproblems and then solving one by one from the simplest and remembering already calculated results that can be reused later.
Dynamic programming is a [programming](programming.md) technique that can be used to make many [algorithms](algorithm.md) more efficient (usually meaning faster). It can be seen as an [optimization](optimization.md) technique that works on the principle of repeatedly breaking given problem down into smaller subproblems and then solving one by one from the simplest and remembering already calculated results that can be reused later.
It is usually contrasted to the *[divide and conquer](divide_and_conquer.md)* (DAC) technique which at the first sight looks similar but is in fact quite different. DAC also subdivides the main problem into subproblems, but then solves them [recursively](recursion.md), i.e. it is a top-down method. DAC also doesn't remember already solved subproblem and may end up solving the same problem multiple times, wasting computational time. Dynamic programming on the other hand starts solving the subproblems from the simplest ones -- i.e. it is a **bottom-up** method -- and remembers solutions to already solved subproblems in some kind of a [table](lut.md) which makes it possible to quickly reuse the results if such subproblem is encountered again. The order of solving the subproblems should be made such as to maximize the efficiency of the algorithm.
It is frequently contrasted to the *[divide and conquer](divide_and_conquer.md)* (DAC) technique which at the first sight looks similar but is in fact quite different. DAC also subdivides the main problem into subproblems, but then solves them [recursively](recursion.md), i.e. it is a top-down method. DAC also doesn't remember already solved subproblem and may end up solving the same problem multiple times, wasting computational time. Dynamic programming on the other hand starts solving the subproblems from the simplest ones -- i.e. it is a **bottom-up** method -- and remembers solutions to already solved subproblems in some kind of a [table](lut.md) which makes it possible to quickly reuse the results if such subproblem is encountered again. The order of solving the subproblems should be made such as to maximize the efficiency of the algorithm.
It's not the case that dynamic programming is always better than DAC, it depends on the situation. Dynamic programming is effective **when the subproblems overlap** and so the same subproblems WILL be encountered multiple times. But if this is not the case, DAC can easily be used and memory for the look up tables will be saved.

@ -1,7 +1,9 @@
# Elon Mu$k
Elon Musk is an enormous [capitalist](capitalism.md) dick.
Elon Musk is an enormous [capitalist](capitalism.md) dick. Elon's hair is the least fake thing about him. His [IQ](iq.md) is immesurably low but he liked to LARP as Einstein on Twitter, it's super cringe, he's like a child, just more retarded and uglier.
TODO
TODO: more dirt
Musk's company [Neuralink](neuralink.md) killed 1500 animals in 4 years, was charged with animal cruelty ([sauce](https://me.mashable.com/tech/22724/elon-musks-neuralink-killed-1500-animals-in-four-years-now-under-trial-for-animal-cruelty-report)).
Musk's company [Neuralink](neuralink.md) killed 1500 animals in 4 years, was charged with animal cruelty ([sauce](https://me.mashable.com/tech/22724/elon-musks-neuralink-killed-1500-animals-in-four-years-now-under-trial-for-animal-cruelty-report)).
TODO: that moment he tried to play superhero when the kids got stuck in the cave :D

@ -56,7 +56,7 @@ Here is a list of notable encyclopedias, focused on general knowledge English la
| Old Wikipedia | 2001 | GFDL | online | 19K | archived old Wikipedia, less censorship, https://nostalgia.wikipedia.org |
| Pears' Cyclopedia | 1897 | PD (old) | 1 vol. 740p | | contains dictionary, general knowl. maps, reference etc., scanned on archive.org |
| World Almanac and Book of Facts|1868...| some PD (old) | 1 vol. | | interesting and useful information, data and facts from old to new age, US-centered |
| **The World Book** |1917...| proprietary | 22 vol. | 17K | best selling print enc., large, probably high quality, US propaganda (anticommunism etc.) |
| **The World Book** |1917...| proprietary | 22 vol. | 17K | best selling print enc., large, high quality but for younger audience, US propaganda (anticommunism etc.) |
| The World Book 1917 |1917 | PD (old) | 8 vol. | 3K | nicely readable |
| Uncyclopedia |2005...| proprietary (NC) | online | 37K | parody, [fun](fun.md) enc., "more normie friendly dramatica" |

@ -1,6 +1,6 @@
# Entropy
Entropy is a quite cryptic, often misunderstood [scientific](science.md) term that may have different definitions depending on specific field and context, which can intuitively be interpreted as an amount of disorder, uncertainty or [randomness](randomness.md). There are two main kinds of entropy: information entropy (information theory) and thermodynamic entropy (physics).
Entropy is a quite cryptic, often misunderstood [scientific](science.md) term that may have different definitions depending on specific field and context, which can intuitively be interpreted as an amount of disorder, uncertainty or [randomness](randomness.md). There are two main kinds of entropy: [information](information.md) entropy (information theory) and thermodynamic entropy (physics).
## Information Entropy

@ -1,8 +1,8 @@
# Furry
*"Human seriously believing he's a rat not considered mental illness anymore."* --[21st century](21st_century.md)
*"Human seriously believing to be a dog not considered mental illness anymore."* --[21st century](21st_century.md)
Furriness is a serious mental disorder (dolphi will forgive :D) and fetish that makes people extremely creepily obsessed and/or identify with anthropomorphic animals (usually those with fur) far beyond any line of acceptability as a healthy personality trait, they often identify e.g. with [cats](cat.md), foxes or even completely made up species. To a big degree it's a sexual identity but those people just try to pretend (and possibly even believe) they're animals everywhere; not only do they have furry conventions, you just see furry avatars all over the internet, on issue trackers on programming websites and forums, recently zoomer kids started to even e.g. meow in classes because they identify as cats (this caused some huge drama somewhere in the UK). You cannot NOT meet a furry on the [Internet](internet.md). They usually argue it's "cute" and try to make no big deal of it, however that's a mask beyond which something horribly rotten lies. There is something more to furrydom, it's basically a cult that has taken an idea too far, kind of like anorexia takes losing weight a bit too far -- cuteness is OK, however furries are not really cute, they are CREEPY, they take this beyond healthy passion, you see the psychopathic stares in their faces, they take child cartoon characters and fantasize about them being transsexual and gore raping them and having children with them, some even attempt suicides if you insult their favorite characters etc.
Furriness is a serious mental [disorder](disease.md) (dolphi will forgive :D) and fetish that makes people extremely creepily obsessed and/or identify with anthropomorphic animals (usually those with fur) far beyond any line of acceptability as a healthy personality trait, they often identify e.g. with [cats](cat.md), foxes or even completely made up species. To a big degree it's a sexual identity but those people just try to pretend (and possibly even believe) they're animals everywhere; not only do they have furry conventions, you just see furry avatars all over the internet, on issue trackers on programming websites and forums, recently zoomer kids started to even e.g. meow in classes because they identify as cats (this caused some huge drama somewhere in the UK). You cannot NOT meet a furry on the [Internet](internet.md). They usually argue it's "cute" and try to make no big deal of it, however that's a mask beyond which something horribly rotten lies. There is something more to furrydom, it's basically a cult that has taken an idea too far, kind of like anorexia takes losing weight a bit too far -- cuteness is OK, however furries are not really cute, they are CREEPY, they take this beyond healthy passion, you see the psychopathic stares in their faces, they take child cartoon characters and fantasize about them being transsexual and gore raping them and having children with them, some even attempt suicides if you insult their favorite characters etc.
Also the furry community -- it's extremely [toxic](toxic.md), firstly as any big internet-centered group it's mostly completely infected with [wokeness](woke.md), [LGBT](lgbt.md)+[feminazism](feminism.md), which combined with the cult behavior may really lead to the community cyber pushing you to suicide if you e.g. question the gender of some child cartoon character (or even if you for example oppose the idea the character has to have some non-binary gender). A favorite hobby of furries is to destroy software project by pushing ugly woke furry mascots, threatening by suicide if the project doesn't accept them. Furries also seem to have a strong love of [copyright](copyright.md) so as to "protect" their shitty amateur art no one would want to copy anyway. Many create their own "fursonas" or "species" and then prohibit others from using them, they are so emotionally invested in this they may literally try to murder you if you do something to the drawing of their character. Stay away.

@ -8,7 +8,7 @@ The GNU/Linux operating system has several variants in a form of a few GNU appro
GNU greatly prefers [GPL](gpl.md) [licenses](license.md), i.e. it strives for [copyleft](copyleft.md), even though it accepts even projects under permissive licenses. GNU also helps with enforcing these licenses legally and advises developers to transfer their [copyright](copyright.md) to GNU so that they can "defend" the software for them.
Although GNU is great and has been one of the best things to happen in software ever, it has many flaws. For example their programs are known to be kind of a [bloat](bloat.md), at least from the strictly [suckless](suckless.md) perspective. **It also doesn't mind proprietary non-functional data** (e.g. assets in video games) and their obsession with copyleft also isn't completely aligned with [LRS](lrs.md). GNU is also generally **NOT supportive of [free culture](free_culture.md) and use copyright to prohibit modifications of their propaganda texts**: the [GFDL](gfdl.md) license they use for texts may contain sections that are prohibited from being modified and so are non-free by definition. This sucks big time and shows some of fascist corruption withing the movement.
Although GNU is great and has been one of the best things to happen in software ever, it has many flaws. For example their programs are known to be kind of a [bloat](bloat.md), at least from the strictly [suckless](suckless.md) perspective. **It also doesn't mind proprietary non-functional data** (e.g. assets in video games) and their obsession with copyleft also isn't completely aligned with [LRS](lrs.md). GNU is also generally **NOT supportive of [free culture](free_culture.md) and use copyright to prohibit modifications of their propaganda texts**: the [GFDL](gfdl.md) license they use for texts may contain sections that are prohibited from being modified and so are non-free by definition. This sucks big time and shows some of fascist corruption within the movement.
## History

@ -4,7 +4,7 @@ Gopher (allegedly from "go for information") is a network [protocol](protocol.md
Gopher **doesn't use any [encryption](encryption.md)** (though some servers allow access via [Tor](tor.md)). **This is good, encryption is [bloat](bloat.md)**. Gopher also doesn't really know or care about [Unicode](unicode.md) and similar bloat (which mostly serves trannies to insert emojis of pregnant men into readmes anyway, we don't need that), it's basically just [ASCII](ascii.md) (of course you can employ Unicode as gopher just transfers files really, it's just that Unicode is not part of gopher's specification and most people prefer to keep it ASCII). Gopher's simple design is intentional, the authors deemed simplicity a [good](good.md) feature. Gopher is so simple that you may very well write your own client and server and comfortably use them -- **you can even browse gopher just by manually using [telnet](telnet.md)** to communicate with the server.
**How big is/was gopherspace?** In 1994 there were over 1300 gopher servers (source: 1994 book *Finding it on the Internet"*), around 1995 there were already more than 6000 (source: 1995 video *Searching the Internet - Gopher | The Internet Revealed*). Most of them are now gone, in 2005 there were only 145 servers reported by Veronica search engine (source: *2007 gopher archive*), though Gopher recently saw a new wave of popularity. As of 2023 the Veronica search engine reported 315 gopher servers in the world with 5+ million indexed selectors, which they estimated was 83% of the whole gopherspace (the peak server count was in 2020 at almost 400). Quarry search engine reports 369 servers and 1+ million indexed selectors. Contrition search engine reported even 495 servers and 7+ million selectors. Gopher LAWN directory (made by [bitreich](bitreich.md)) contains 281 selected quality gopher holes.
**How big is/was gopherspace?** In 1994 there were over 1300 gopher servers (source: 1994 book *Finding it on the Internet"*), around 1995 there were already more than 6000 (source: 1995 video *Searching the Internet - Gopher | The Internet Revealed*). Most of them are now gone, in 2005 there were only 145 servers reported by Veronica search engine (source: *2007 gopher archive*), though Gopher recently saw a new wave of popularity. As of 2023 the Veronica search engine reported 315 gopher servers in the world with 5+ million indexed selectors, which they estimated was 83% of the whole gopherspace (the peak server count was in 2020 at almost 400). Quarry search engine reports 369 servers and 1+ million indexed selectors. Contrition search engine reported even 495 servers and 7+ million selectors. The "grawler" crawler of gopherspace.de reported 192 active servers at the beginning of 2016, 182 in 2020, 413 in 2023 (bumped its search list) and 380 in 2024. Gopher LAWN directory (made by [bitreich](bitreich.md)) contains 281 selected quality gopher holes.
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.

@ -15,7 +15,7 @@ Jesus Christ (also Jesus of Nazareth, about 4 BC to 33 AD) was a [jewish](jew.md
( | | )
```
*Artist's depiction of our Lord and Savior.*
*"Artist"'s depiction of our Lord and Savior.*
As perhaps the most influential man in history whose image has been twisted, used and abused over the centuries, we have to nowadays distinguish two separate characters:

@ -22,6 +22,7 @@ WORK IN PROGRESS
| [CSS](css.md) | cascading style shit |
| [C++](cpp.md) | crippled C |
| [democracy](democracy.md) | democrazy |
| digital garden | digital swamp |
| digital rights management ([DRM](drm.md)) | digital restrictions management |
| [encryption](encryption.md) | bloatcryption |
| [entrepreneur](entrepreneur.md) | murderer |
@ -44,6 +45,7 @@ WORK IN PROGRESS
| "left" | [pseudoleft](pseudoleft.md), SJW |
| [LGBT](lgbt.md) | FGTS, TTTT |
| "[Linux](linux.md)" | [GNU](gnu.md), lunix, loonix |
| [logic gate](logic_gate.md) | logic gayte |
| Macintosh | Macintoy, Macintrash, Maggotbox |
| [Microsoft](microsoft.md) | Microshit |
| [microtransaction](microtransaction.md) | microtheft |

@ -31,7 +31,7 @@ Our current western music is almost exclusively based on major and minor diatoni
*Tones on piano keyboard, the "big keys" are [white](white.md), the "smaller keys on top" are [black](black.md).*
OK so above we have part of a piano keyboard, tones go from lower (left) to higher (right), the keyboard tones just repeat the same above and below. The white keys are named simply A, B, C, ..., the black keys are named by their neighboring white key either by adding *#* (sharp) to the left note or by adding *b* (flat) to the right note (notes such as C# and Db can be considered the same withing the scales we are dealing with). Note: it is convenient to see C as the "start tone" (instead of A) because then we get a nice major scale that has no black keys in it and is easy to play on piano; just ignore this and suppose we kind of "start" on C for now.
OK so above we have part of a piano keyboard, tones go from lower (left) to higher (right), the keyboard tones just repeat the same above and below. The white keys are named simply A, B, C, ..., the black keys are named by their neighboring white key either by adding *#* (sharp) to the left note or by adding *b* (flat) to the right note (notes such as C# and Db can be considered the same within the scales we are dealing with). Note: it is convenient to see C as the "start tone" (instead of A) because then we get a nice major scale that has no black keys in it and is easy to play on piano; just ignore this and suppose we kind of "start" on C for now.
Take a look at the C note at the left for example; we can see there is another C on the right; the latter C is one **octave** above, i.e. it is the "same" note by name but it is also higher (for this we sometimes number the notes as C2, C3 etc.). The same goes for any other tone, each one has its different versions in different octaves. Kind of like the color red has different versions, a lighter one, a darker one etc. Octave is a basic interval we have to remember, **a tone that's one octave above another tone has twice its frequency**, so e.g. if C2 has 65 hertz, C3 has 130 hertz etc. This means that **music intervals are [logarithmic](log.md), NOT linear!** I.e. an interval (such as octave) says a number by which we have to MULTIPLY a frequency to get the higher frequency, NOT a number which we would have to add. This is extremely important.

@ -8,7 +8,7 @@ Here we propose a programming style and C code formatting you may use in your pr
- **Respect the [LRS](lrs.md) design principles** ([KISS](kiss.md), no [OOP](oop.md), avoid dependencies such as [stdlib](stdlib.md) etc.).
- **Indentation: use two spaces, NEVER use [tabs](tab.md)**. Why? Tabs are ugly, tricky (look the same as spaces) non-standard behaving characters (behavior is dependent on editor and settings, some processors will silently convert tabs and spaces, copy-paste may do so also etc.), they don't carry over to some platforms (especially paper), some very simple platforms may not even support them; your source will contain spaces either way, no need to insert additional blank character.
- **Limit source code width to 80** columns or similar value. Keep in mind the source may be edited on computers with small screens (like old [thinkpads](thinkpad.md), especially withing context of LRS) with a screen split vertically.
- **Limit source code width to 80** columns or similar value. Keep in mind the source may be edited on computers with small screens (like old [thinkpads](thinkpad.md), especially within context of LRS) with a screen split vertically.
- Write **opening and closing curly brackets on their own lines, in the same columns**, e.g.:
```

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -3,7 +3,7 @@
This is an autogenerated article holding stats about this wiki.
- number of articles: 560
- number of commits: 707
- number of commits: 708
- total size of all texts in bytes: 3102044
longest articles:
@ -24,6 +24,10 @@ longest articles:
latest changes:
```
Date: Sat Feb 24 19:26:17 2024 +0100
random_page.md
wiki_pages.md
wiki_stats.md
Date: Sat Feb 24 16:17:37 2024 +0100
c.md
c_pitfalls.md
@ -48,15 +52,6 @@ less_retarded_society.md
open_source.md
random_page.md
rights_culture.md
wiki_pages.md
wiki_stats.md
Date: Thu Feb 22 23:16:14 2024 +0100
bazaar.md
binary.md
bloat.md
cyber.md
jokes.md
open_console.md
```
most wanted pages:

Loading…
Cancel
Save