This commit is contained in:
Miloslav Ciz 2025-04-12 12:45:37 +02:00
parent f19efc7b70
commit 5604db85d2
24 changed files with 2048 additions and 2026 deletions

View file

@ -1,24 +1,24 @@
# 21st Century
21st century, known as the *Age Of [Shit](shit.md)*, *Dark Ages*, *Middle Ages 2.0*, *The [Brainwashing](brainwashing.md) Era* or *the century when [jokes](jokes.md) become reality*, is already one of the worst centuries in [history](history.md), despite only being around for a short time. Hell on [Earth](earth.md), sorrow, constant violence and [war](war.md), godawful stupidity everywhere, destruction and corruption, depression and cultural decadence, infinite hatred and [greed](greed.md), [fascism](fascism.md), misery, dystopian technology, daily torture and suffering without end are just some phrases that come to mind upon thinking of these times, middle ages now almost seem like a dreamed of paradise. Completely absurd things you wouldn't have believed were ever possible are happening daily. How unlucky it is to have been born in such [shitty](shit.md) times. Everyone just wishes he was dead and many [try to die](suicide.md) voluntarily just to suffer no more in this century. [Abominations](snowflake.md) wonder in the streets. In this century there exists no more [good](good.md), only [evil](right.md) opposed by [another evil](pseudoleft.md) and people no longer even have an idea what good stands for, all they do is support one of the two evils, thinking it's the good; there are rare few who support some kind of third evil that's not one of the two major evils, but all in all there is nothing but evil. One of the biggest issues of this century is that most people [think that good still exists](optimism.md) (that it's just "in minority") -- they think fake [selflessness](selflessness.md) is real selflessness, exactly what the media wants them to believe. [Witch hunts](pedophilia.md) are more common than in middle ages now. While in the past only a portion of population were slaves, under today's late stage [capitalism](capitalism.md) the whole population has already been enslaved. People are [tortured](marketing.md) constantly, since birth until death, every day, at their own homes. People are absurdly stupid, and everything is getting much worse every millisecond.
21st century, known as the *Age Of [Shit](shit.md)*, *Dark Ages*, *Middle Ages 2.0*, *The [Brainwashing](brainwashing.md) Era* or *the century when [jokes](jokes.md) become reality*, is already one of the worst centuries in [history](history.md), despite only being around for a short time. It is hell on [Earth](earth.md) full of unspeakable sorrow, violence and [wars](war.md), godawful stupidity, destruction and corruption, [depression](depression.md) and [cultural](culture.md) decline, hatred and [greed](greed.md) without end, [fascism](fascism.md), misery, dystopian [technology](tech.md), daily torture and suffering, middle ages now seem like a dreamed of paradise. Completely absurd things you wouldn't have believed were ever possible are happening daily. How unlucky it is to have been born in such [shitty](shit.md) times. Everyone just wishes he was dead and many [try to die](suicide.md) voluntarily just to suffer no more in this century. [Abominations](snowflake.md) wonder in the streets. In this century there exists no more [good](good.md), only [evil](right.md) opposed by [another evil](pseudoleft.md) and people no longer even have an idea what good stands for, all they do is support one of the two evils, thinking it's the good; there are rare few who support some kind of third evil that's not one of the two major evils, but all in all there is nothing but evil. One of the biggest issues of this century is that most people [think that good still exists](optimism.md) (that it's just "in minority") -- they think fake [selflessness](selflessness.md) is real selflessness, exactly what the media wants them to believe. [Witch hunts](pedophilia.md) are more common than in middle ages now. While in the past only a portion of population were slaves, under today's late stage [capitalism](capitalism.md) the whole population has already been enslaved. People are [tortured](marketing.md) constantly, since birth until death, every day, at their own homes. People are absurdly stupid, and everything is getting much worse every millisecond.
I FUCKING CAN'T ANYMORE, SHIT INTENSIFIES TOO QUICKLY.
I FUCKING CAN'T ANYMORE, SHIT INTENSIFIES TOO QUICKLY. How the [fuck](fuck.md) could have this happened?
This so called society has brought people in the "first world" (also western or "civilized" world) mainly the following:
This so called society has achieved for the "first world" (also western or "civilized" world) mainly the following:
- People have ZERO self sufficiency and are ABSOLUTELY dependant on the extremely corrupt, abusive system, in turn becoming its absolute slaves. No one knows how to get or make food, build a house or shelter, build tools, make machines, cure diseases, survive the winter or have fun without constant access to commercial entertainment. The system decides who gets food, shelter, healthcare, comfort, reproduction rights and warmth in winter. It also decides who can walk freely, who can communicate with others, who is perceived as a criminal and even who will live or die. It dictates what people may see, what they must think and how they must behave.
- People are EXTREMELY degenerated, miserable, sick and fragile: they [kill themselves](suicide.md) without taking daily doses of drugs, many require drugs to not physically die (diabetes, eppilepsy, ...), they can't see without (very expensive) glasses, they are hurt or even die in exposure to natural environment, animals and food (so called alergies), they die of flu and [cancer](cancer.md), they are either morbidly fat or skinny, they can't reproduce anymore without heavy medical assistance, women can't give birth on their own, people are weak and endure nothing, slight fluctualtions in weather temperature result in many deaths.
- People are 100% brainwashed, not thinking on their own, absolutely and blindly accepting anything fed to them through media.
- People are miserable, unhappy, powerless, constantly unsatisfied, heavily depressed or overly and blindly [optimistic](optimism.md), apathetic, paranoid, passive, hostile to everyone, not knowing empathy, [love](love.md) and compassion, only [money](money.md), self interest and [competition](competition.md).
- People [slave](work.md) for their whole lives, all year round, no matter what weather, now even at home and on "holiday" (thanks to so called "[modern](modern.md) technology"), doing absolutely meaningless tasks, spending best years of their lives in dungeons, poisoned unnatural environment being yelled at by managers and bosses, being watched, pressured to never stop, left exhausted and depressed, broken.
- People have ZERO [self sufficiency](self_sufficiency.md) and became ABSOLUTELY dependent on the tragically corrupt, abusive system, turning into its absolute slaves. No one knows how to get or make food, build a house or shelter, build tools, make machines, cure diseases, survive the winter or have fun without constant access to commercial entertainment, not even how to survive a day without [electricity](electricity.md). The system dictates who gets food, shelter, healthcare, comfort, reproduction [rights](rights_culture.md) and warmth in winter. It also decides who can walk freely, who can communicate with others, who is perceived as a criminal and even who will live or die. It dictates what people may see, what they must think and how they must behave.
- People are EXTREMELY degenerated, miserable, sick and fragile: without daily drugs they [kill themselves](suicide.md), many require drugs to not physically die (diabetes, epilepsy, ...), they can't see without (very expensive) glasses, they are hurt or even die in exposure to natural environment, animals and food (so called allergies), they die of flu and [cancer](cancer.md), they are either morbidly fat or [skinny](anorexia.md), they can't reproduce anymore without heavy medical assistance, women can't give birth on their own, people are weak and endure nothing, slight fluctuations in weather temperature result in high death tolls.
- Everyone is 100% brainwashed, fearing to use own brain, blindly accepting anything fed by the media.
- People are miserable, unhappy, powerless, constantly unsatisfied, clinically depressed or clinically [optimistic](optimism.md), apathetic, paranoid, passive, hostile to others, without empathy, [love](love.md) and compassion, seeing only [money](money.md), [self interest](self_interest.md) and [competition](competition.md).
- People [slave](work.md) for their whole lives, all year round, regardless of weather or health, even at home and on "holidays" ("thanks" to so called "[modern](modern.md) technology"), spending days performing [meaningless tasks](bullshit.md) just for the sake of staying busy, wasting their best years in dungeons, poisoned unnatural environment being yelled at by managers and bosses, under constant surveillance, [pressured to never stop](productivity_cult.md), left exhausted and depressed, broken.
In 21st century there are already long established offices whose sole purpose is to ensure people cannot make use of useful ideas (see [patents](patent.md)). It is also possible -- and actually extremely common -- to draw a rectangle on the ground and then buy a paper that makes it possible to bully anyone who enters that rectangle, even kill him. Whole [Earth](earth.md) is now covered with such rectangles, it is impossible to set foot anywhere else -- in fact if you want to live, you have to buy a paper that gives you your own rectangle where you won't be bullied if you fall asleep, but you have to continuously pay for that paper, i.e. you are doomed to slavery just by existing. In 21 century it is forbidden to shit or urinate if you have no money in your pocket, without money you are OFFICIALLY supposed and expected to hold it until your bladder explodes and you die in the street -- if you're in a big city and you want to shit, you cannot do it, you may only pay for someone to let you take a shit in his house. Also in 21st century you cannot eat food that is next to you, that no one else is eating and that will be thrown away, and that even if you're starving -- it is called theft and you will be beaten for it, maybe even killed. In this century you can also no longer drink from rivers or lakes, they have been poisoned so that you cannot drink at all if you don't have money in your pocket -- doing the same with air is already work in progress, major cities already have borderline unbreathable air. Never ending torture is part of everyday life: for example every day you are forced to stop sleeping very early and go perform [slavery](work.md) that you hate deeply, the whole day you are continuously targeted with repeated brainwashing ([ads](marketing.md), news, social media, [fear culture](fear_culture.md), industrial noise, ...) that equate psychological torture. In 21st century every [joke](jokes.md) has to be preceded by 35 disclaimers, apologies to anyone who might find the joke unfunny, to the corporations that hold ownership of the words that the joke borrows, warning that the font may cause epileptic seizure, waivers of any responsibility for anything the joke may cause, threat to anyone who would think of copying the joke, attribution of all people in history thanks to which the joke is possible, several ads for sponsors of the joke and warnings about the pure coincidental similarity between any real life concepts and the concepts used in the joke -- after reading this you don't even want to read the joke anymore. But people have conformed to it, it is now standard. There are many more things like this but trying to recount them all would result in many thousands of billions of volumes of books.
In 21st century there are already long established offices whose sole purpose is to ensure people cannot make use of useful ideas (see [patents](patent.md)). More and more so called "[rights](rights_culture.md)" are being invented, which ensure people have less and less [freedom](freedom.md). It is also possible -- and completely common -- to draw a rectangle on the ground and then buy a paper that makes it possible to bully anyone who should enter the rectangle, even kill him. Whole [Earth](earth.md) is now covered with such rectangles, it is impossible to set foot anywhere else -- in fact if you want to live, you have to buy a paper that gives you your own rectangle where you won't be bullied if you fall asleep, but you have to continuously pay for that paper, i.e. you are doomed to slavery just by existing. In 21 century it is forbidden to [shit](shit.md) or urinate if you have no money in your pocket, without money you are OFFICIALLY supposed and expected to hold it until your bladder explodes and you bleed out in the streets (and you'll be posthumously charged the cleaning costs) -- should you find yourself in a big city (which soon will be just everywhere) and in need of shitting, you can't do it, you may only pay someone to let you take a shit in his house. Also in 21st century you cannot eat food that is right next to you, that no one else is eating and that will be thrown away, and that even if you're starving -- it is called theft and you will be beaten for it, probably even killed. In this century you can also no longer drink from rivers or lakes, they have been poisoned so that you cannot drink at all if you don't have money in your pocket -- doing the same with air is already work in progress, major cities already have borderline unbreathable air. Never ending torture is part of everyday life: for example every day you are forced to stop sleeping very early and go perform obnoxious [slavery](work.md) that you hate deeply, the whole day you are continuously targeted with repeated brainwashing ([ads](marketing.md), news, social media, [fear culture](fear_culture.md), industrial noise, ...) that equate psychological torture. In 21st century every [joke](jokes.md) has to be preceded by at least 10 times its length of [disclaimers](disclaimer.md), apologies to anyone who might find the joke unfunny, to the corporations that hold ownership of the words that the joke borrows, warning that the font may cause epileptic seizure, waivers of any responsibility for anything the joke may cause, threat to anyone who would think of copying the joke, attribution of all people in history thanks to which the joke is possible, several ads for sponsors of the joke and warnings about the pure coincidental similarity between any real life concepts and the concepts used in the joke -- after reading this you don't even want to read the joke anymore. But people have conformed to it, it is now standard. There are many more things like this but trying to recount them all would result in many thousands of billions of volumes of books.
Millions of animals are tortured and brutally murdered on a daily basis in city-sized concentration camps that make Auschwitz look like the garden of Eden. They pump living beings with growth hormones, keep them chained and pump food down their throats with pipes, not letting them see sunlight for their whole lives, they force them to sex and take babies away from mothers. This is a never ending, never stopping horror, done solely so that morbidly fat biotrash can fill their stomach with yet more hamburgers.
The hardest thing to do among all this [evil](evil.md) is not turn evil yourself, whole society is pressuring you to it every single day and that is why everyone has given in.
The hardest thing to do among all this [evil](evil.md) is not becoming evil yourself, whole society is pressuring you to it every single day and that is why everyone has given in. Those resisting are swiftly removed, forbidden from reproducing and ensured to die -- that is why there are no more good people around.
Maybe most depressing of all is that people reading this article think it's some kind of [joke](jokes.md) or exaggeration while it's in fact just an exact, accurate description stripped of any propaganda or fake [optimism](optimism.md). They think it's a joke or sarcasm because they can't accept they REALLY live in such world, it's better for them to cover the fact with laughter as if it then made it not real.
Maybe most depressing of all is that a reader of this article, himself living in this hell, will think it's a [joke](jokes.md) or exaggeration while it's in fact just an exact, accurate description stripped of lies, propaganda and fake [optimism](optimism.md). People think this is a joke or sarcasm because it would be unbearable to accept the reality of living in such an absurd world, it's better for them to cover the fact with laughter as if it then made it not real.
21st century is a horror, devoid of all humanity. No sincerity exists anymore, only fakes, as everyone is seeking some kind of [capital](capitalism.md), no art is sincere anymore, no soul is present in any craft, there is no place for soul among pure self interest -- despite the world being filled with bright colors and infantile pictures, it's like a world full of creepy clowns, cartoon animals are dancing all around in ads and movies but you know it's all just soulless robots beneath the shell, something aimed purely at taking advantage of you, at raping you. They will torture you to death with a smile on their face.

View file

@ -19,23 +19,23 @@ A graphics programmer quickly comes to realize that **3D rendering is to a great
Having said this, let's now take a look at possible **classifications** of 3D rendering methods. As seen, there are many ways:
- by **order**:
- **object order**: The method iterates on objects and draws object by object, one after another. This results in pixels being drawn to "random" places on the screen and possibly already drawn pixels being [overdrawn](overdraw.md) with new pixels (though this can be further reduced). Typically requires a [frame buffer](frame_buffer.md) and [double buffering](double_buffering.md), often also [z-buffer](z_buffer.md) (or [sorting](sorting.md)), i.e. requires a lot of memory. This method is also a bit ugly but typically also faster than the alternative, so it is prevailing nowadays.
- **image order**: The method iterates on screen pixels, typically going pixel by pixel from left to right, top to bottom, deciding the color of each pixel independently. May be easier to program and require less memory (no frame buffer is needed, see e.g. [frameless rendering](frameless.md)), however though [parallelism](parallelism.md) is applicable here (many pixels may potentially be independently computed in parallel, speeding up rendering), the algorithms used (e.g. [path tracing](path_tracing.md)) often have to expensively simulate light behavior and so performance is still an issue.
- **object order**: The method iterates on objects (3D models, sprites, ...), i.e. draws object by object, one after another. This results in pixels being drawn to "random" places on the screen, allowing undesired [overdraw](overdraw.md) (drawing pixels over already drawn pixels) and leaving "holes". This typically requires a [frame buffer](frame_buffer.md) and [double buffering](double_buffering.md) (which may sometimes be avoided with painter's algorithm, i.e. [sorting](sorting.md)), implying high memory demands. This method is also a bit ugly but typically also faster than the alternative, so it is prevailing nowadays.
- **image order**: The method iterates on screen pixels, typically going pixel by pixel from left to right, top to bottom, computing the [color](color.md) of each visited pixel independently. May be easier to program and require less memory (no frame buffer is needed, see e.g. [frameless rendering](frameless.md)), however though [parallelism](parallelism.md) is applicable here (many pixels may potentially be independently computed in parallel, speeding up rendering), the algorithms used (e.g. [path tracing](path_tracing.md)) are normally too slow to be used in real time without limitations (as for each of the millions of pixels ALL objects have to be checked somehow).
- by **speed**:
- **[realtime](realtime.md)**: Able to render at interactive [FPS](fps.md), typically used in [games](game.md) etc.
- **[offline](offline.md)**: Spends a lot of time (even many minutes) on rendering each frame with the goal to produce output of extreme quality, typically used to render 3D movies etc.
- by **relative limitation**:
- **primitive/"pseudo3D"/2.5D/...**: Older methods that produce 3D views but had great limitations e.g. in camera degrees of freedom or possible environment geometry that was usually limited to a "2D sector map" (see e.g. [Doom](doom.md)).
- **full/"true" 3D**: The "new" way of 3D rendering that allows freely rotating camera, arbitrary 3D geometry etc. Though this still has limitations (as any computer approximation of reality), many people just call this the "true" 3D.
- **[realtime](realtime.md)**: Able to render at interactive [FPS](fps.md) (let's say 10 and above), typically used in [games](game.md), [virtual reality](vr.md) etc.
- **[offline](offline.md)**: Spends a lot of time (even many minutes and possibly hours) to render a frame with the goal of producing output of very high quality, used for example for 3D movies, posters etc.
- by **freedoms and restrictions**:
- **[primitive/"pseudo3D"/2.5D/3D-ish/fake 3D/...](primitive_3d.md)**: Methods producing relatively cheap 3D looking renders but for the price of limitations, e.g. those in camera degrees of freedom or possible environment geometry, popular mainly in older video games such as [Doom](doom.md).
- **full/"true" 3D, 6 DOF**: Relatively unrestricted 3D rendering allowing full camera freedom, arbitrary 3D geometry etc. However there will always exist limitations (because any computer only ever [approximates](approximation.md) reality), for example only finite resolution of textures and 3D model etc.
- by **approach** (sides of above mentioned rendering spectrum):
- **appearance based**: Focuses on achieving desired appearance by any means necessary, faking, "cheating", not trying to stay physically correct. This is typically faster.
- **appearance based**: Focuses on achieving desired appearance by any means necessary, faking, "cheating", not honoring physical correctness. This is typically faster.
- **[physics](physics.md) simulation** (see also [physically based rendering](pbr.md)): Focuses on simulating the underlying physics of reality with high correctness so that we also get a very realistic result.
- by **main method/algorithm** (see also the table below):
- **rasterization**: Appearance based object order methods further based on a relatively simple algorithm capable of drawing (rasterizing) a simple geometric shape (such as a triangle) which we then use to draw the whole complex 3D scene (composed of great many of triangles).
- **ray casting/tracing**: Physics simulation image order methods further based on tracing paths of light in a manner that's closer to reality.
- **rasterization**: Appearance based object order methods based on a relatively simple algorithm capable of drawing (rasterizing) a simple [two-dimensional](2d.md) geometric shape (such as a [triangle](triangle.md)) which is subsequently used to draw the whole complex 3D scene (composed of many triangles).
- **ray/[path](pathtracing.md)/cone(/...) [casting](raycasting.md)/[tracing](raytracing.md)**: Physics simulation image order methods based on tracing paths of light.
- ...
- by **3D data** ([vector](vector.md) vs [raster](raster.md) classification applies here just as in 2D graphics):
- **triangle meshes** (vector, and other boundary representations)
- **triangle meshes** ([vector](vector.md), and other boundary representations)
- **[voxels](voxel.md)** (raster, and potentially other volumetric representations)
- **[point clouds](point_cloud.md)**
- **[heightmaps](heightmap.md)**
@ -44,16 +44,16 @@ Having said this, let's now take a look at possible **classifications** of 3D re
- **2D sectors** (e.g. [Doom](doom.md)'s [BSP](bsp.md) "pseudo 3D" rendering)
- ...
- by **[hardware](hw.md)**:
- **[software rendering](sw_rendering.md)**: Rendering only with [CPU](cpu.md). This is typically slower as a CPU mostly performs sequential computation, eliminating the possible parallelism optimization, however the approach is more [KISS](kiss.md) and [portable](portablity.md).
- **[GPU](gpu.md) accelerated**: Making use of specialized graphics rendering hardware (GPU) that typically uses heavy parallelism to immensely speed up rendering. While this is the mainstream, extremely fast way of rendering, it is also highly [bloated](bloat.md) while often being an [overkill](overkill.md) that overcomplicates programming and makes programs less [portable](portability.md), less [future proof](future_proof.md) etc.
- **[software rendering](sw_rendering.md)**: Rendering only on the [CPU](cpu.md). This is typically slower as a CPU lacks higher levels of parallelism needed to process many elements (pixels, vertices, ...) at once, however the approach is more [KISS](kiss.md) and [portable](portablity.md).
- **[GPU](gpu.md) accelerated**: Making use of specialized graphics rendering hardware (GPU) capable of heavy parallelism to immensely speed up rendering. Although this is the [mainstream](mainstream.md), fastest way of rendering, it is also highly [bloated](bloat.md) and often also an [overkill](overkill.md) that overcomplicates programming and makes programs less [portable](portability.md), less [future proof](future_proof.md) etc.
- by **realism** of output:
- **[photorealistic](photorealism.md)**
- **stylized**, flat [shaded](shading.md), [wireframe](wireframe.md), ...
- ...
- **[hybrids](hybrid.md)**: Methods may be combined and/or lie in between different extremes, for example we may see a rasterizing renderer that uses ray tracing to add detail (shadows, reflections, ...) to the scene, ones that allow triangle meshes as well as voxels etc. { One nice hybrid looking engine is e.g. [Chasm: The Rift](chasm_the_rift.md). ~drummyfish }
- **[hybrids](hybrid.md)**: Methods may be combined and/or stand in between different extremes, for instance we may see a rasterizing renderer that uses ray tracing to add detail ([shadows](shadow.md), reflections, ...) to the scene, ones supporting polygonal meshes and voxels at the same time etc. { One nice hybrid looking engine was used in [Chasm: The Rift](chasm_the_rift.md). ~drummyfish }
- ...
Finally a table of some common 3D rendering methods follows, including the most simple, most advanced and some unconventional ones. Note that here we talk about methods and techniques rather than algorithms, i.e. general approaches that are often modified and combined into a specific rendering algorithm. For example the traditional triangle rasterization is sometimes combined with raytracing to add e.g. realistic reflections. The methods may also be further enriched with features such as [texturing](texture.md), [antialiasing](antialiasing.md) and so on. The table below should help you choose the base 3D rendering method for your specific program.
Finally a table of some common 3D rendering methods follows, including the most primitive, most sophisticated and some unconventional ones. Note that here we highlight methods and techniques rather than algorithms, i.e. general approaches that are frequently modified and combined into a concrete rendering algorithm. As an example the traditional triangle rasterization has recently started to be combined with raytracing to add realistic reflections etc. The methods may also be additionally enriched with features such as [texturing](texture.md), [antialiasing](antialiasing.md) and so on. The table below should help finding the base 3D rendering method to further shape to any program's specific needs.
The methods may be tagged with the following:
@ -100,11 +100,11 @@ TODO: VoxelQuest has some innovative voxel rendering, check it out (https://www.
## 3D Rendering Basics For Nubs
If you're a complete noob and are asking what the essence of 3D is or just how to render simple 3Dish pictures for your game without needing a [PhD](phd.md), here's the very basics. Yes, you can use some 3D engine such as [Godot](godot.md) that has all the 3D rendering preprogrammed, but you'll surrender to [bloat](bloat.md), you won't really know what's going on and your ability to tinker with the rendering or optimizing it will be basically zero... AND you'll miss on all the [fun](fun.md) :) So here we just foreshadow some concepts you should start with if you want to program your own 3D rendering.
If you're a complete [noob](noob.md) and are asking what the essence of 3D is or just how to render simple 3Dish pictures for your game without needing a [PhD](phd.md), here are the 101 basics. Yes, you can use a 3D engine such as [Godot](godot.md) with all the 3D rendering preprogrammed, but you'll surrender to [bloat](bloat.md), you won't really know what's going on and your ability to tinker with the rendering or optimizing it will be basically [zero](zero.md)... AND you'll miss on all the [fun](fun.md) :) You might as well ask ChatGPT to program it for you, right? So let's just foreshadow some concepts you should start with if you want to program your own 3D rendering.
The first, 101 most basic concept in 3D is probably **[perspective](perspective.md)**, or the effect by which "things further away look smaller". This is basically the number one idea to know which will enable you to very quickly make simple 3D pictures, even though there are many more effects and concepts that "make pictures look 3D" and which you can potentially study later (lighting, shadows, [focus and blur](depth_of_field.md), [stereoscopy](stereo.md), [parallax](parallax.md), visibility/obstruction etc.). { It's probably possible to make something akin to "3D" even without perspective, just with [orthographic](ortho.md) projection, but that's just getting to details now. Let's just suppose we need perspective. ~drummyfish }
Arguably the first, most elementary concept in 3D is that of **[perspective](perspective.md)**, or the effect by which "things further away look smaller". Practically speaking, this is the grand idea opening the door to start making simple 3D pictures, even though there are many more effects and concepts that eventually "make pictures look 3D" and which you can potentially study later (lighting, shadows, [focus and blur](depth_of_field.md), [stereoscopy](stereo.md), [parallax](parallax.md), visibility/obstruction etc.). { It's probably possible to make something akin to "3D" even without perspective, just with [orthographic](ortho.md) projection, but that's just getting to details now. Let's just suppose we need perspective. ~drummyfish }
If you don't have rotating camera and other fancy things, perspective is actually mathematically very simple, you basically just **divide the object's size by its distance from the viewer**, i.e. its Z coordinate (you may divide by some multiple of Z coordinate, e.g. by 2 * Z to get different [field of view](fov.md)) -- the further away it is, the bigger number its size gets divided by so the smaller it becomes. This "dividing by distance" ultimately applies to all distances, so in the end even the details on the object get scaled according to their individual distance, but as a first approximation you may just consider scaling objects as a whole. Just keep in mind you should only draw objects whose Z coordinate is above some threshold (usually called a *near plane*) so that you don't divide by 0! With this "dividing by distance" trick you can make an extremely simple "3Dish" renderer that just draws [sprites](sprite.md) on the screen and scales them according to the perspective rules (e.g. some space simulator where the sprites are balls representing planets). There is one more thing you'll need to handle: **[visibility](visibility.md)**, i.e. nearer objects have to cover the further away objects -- you can do this by simply [sorting](sorting.md) the objects by distance and drawing them back-to-front ([painter's algorithm](painters_algorithm.md)).
If you don't require rotating camera and other fancy stuff, perspective is actually mathematically very simple, you basically just **divide the object's size by its distance from the viewer**, i.e. its Z coordinate (you may divide by some multiple of Z coordinate, e.g. by 2 * Z to get different [field of view](fov.md)) -- the further away it is, the bigger number its size gets divided by so the smaller it becomes. This "dividing by distance" ultimately applies to all [distances](distance.md), so in the end even the details on the object get scaled according to their individual distance, but as a first approximation you may just consider scaling objects as a whole. Just keep in mind you should only draw objects whose Z coordinate is above some threshold (usually called a *near plane*) so that you don't divide by 0! With this "dividing by distance" trick you can make an extremely simple "3Dish" renderer that just draws [sprites](sprite.md) on the screen and scales them according to the perspective rules (e.g. some space simulator where the sprites are balls representing planets). There is one more thing you'll need to handle: **[visibility](visibility.md)**, i.e. nearer objects have to cover the further away objects -- you can do this by simply [sorting](sorting.md) the objects by distance and drawing them back-to-front ([painter's algorithm](painters_algorithm.md)).
Here is some "simple" [C](c.md) code that demonstrates perspective and draws a basic animated wireframe cuboid as ASCII in terminal:
@ -244,7 +244,7 @@ One frame of the animation should look like this:
press key to animate
```
**PRO TIP**: It will also help if you learn a bit about [photography](photo.md) because 3D usually tries to simulate [cameras](camera.md) and 3D programmers adopt many terms and concepts from photography. At least learn the very basics such as [focal length](focal_length.md), [pinhole camera](pinhole_camera.md), the "exposure triangle" (shutter speed, [aperture](aperture.md), [ISO](iso.md)) etc. You should know how focal length is related to [FOV](fov.md), what the "f number" means, how to use exposure settings to increase or decrease things like [motion blur](motion_blur.md) and [depth of field](depth_of_field.md), what [HDR](hdr.md) means etc.
**PRO TIP**: It will also help if you learn a bit about [photography](photo.md) because 3D usually tries to simulate [cameras](camera.md) and 3D programmers adopt many terms and concepts from photography. At least learn the very basics such as [focal length](focal_length.md), [pinhole camera](pinhole_camera.md), the "exposure triangle" (shutter speed, [aperture](aperture.md), [ISO](iso.md)) etc. You should know how focal length is related to [FOV](fov.md), what the "f number" means, how exposure settings affect [motion blur](motion_blur.md), what [depth of field](depth_of_field.md) means, what [HDR](hdr.md) is etc.
## Mainstream Realtime 3D
@ -256,11 +256,11 @@ This mainstream rendering is classified as an [object order](object_order.md) ap
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 incapable of handling 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).
Also on top of that 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).
On [PCs](pc.md) the whole rendering process is hardware-accelerated with a [GPU](gpu.md) (graphics card). GPU is a special hardware capable of performing many operations in [parallel](parallelism.md) (as opposed to a [CPU](cpu.md) which mostly computes sequentially with low level of parallelism) -- this is ideal for graphics because we can for example perform mapping and drawing of many triangles at once, greatly increasing the speed of rendering ([FPS](fps.md)). However this hugely increases the [complexity](complexity.md) of the whole rendering system, we have to have a special [API](api.md) and [drivers](driver.md) for communication with the GPU and we have to upload data (3D models, textures, ...) to the GPU before we want to render them. [Debugging](debugging.md) gets a lot more difficult. So again, this is [bloat](bloat.md), consider avoiding GPUs.
On [PCs](pc.md) (and mobiles, ...) the whole rendering process is hardware-accelerated with a [GPU](gpu.md) (graphics card). GPU is a special hardware capable of performing many operations in [parallel](parallelism.md) (as opposed to a [CPU](cpu.md) which mostly computes sequentially with low level of parallelism) -- this is ideal for graphics because we can for example perform mapping and drawing of many triangles at once, greatly increasing the speed of rendering ([FPS](fps.md)). However this hugely increases the [complexity](complexity.md) of the whole rendering system, we have to have a special [API](api.md) and [drivers](driver.md) for communication with the GPU and we have to upload data (3D models, textures, ...) to the GPU before we want to render them. [Debugging](debugging.md) gets a lot more difficult. So again, this is [bloat](bloat.md), consider avoiding GPUs.
GPUs nowadays are no longer just focusing on graphics, but are kind of a general computing device usable for more than just 3D rendering (e.g. [crypto](crypto.md) mining, training [AI](ai.md) etc.) and can no longer even perform 3D rendering completely by themselves -- for this they have to be programmed. I.e. if we want to use a GPU for rendering, not only do we need a GPU but also some extra code. This code is provided by "systems" such as [OpenGL](opengl.md) or [Vulkan](vulkan.md) which consist of an [API](api.md) (an [interface](interface.md) we use from a [programming language](programming_language.md)) and the underlying implementation in a form of a [driver](driver.md) (e.g. [Mesa3D](mesa3d.md)). Any such rendering system has its own architecture and details of how it works, so we have to study it a bit if we want to use it.
GPUs nowadays are no longer just focusing on graphics, but are a kind of "bitch for everything", a general computing device usable for more than just 3D rendering (e.g. [crypto](crypto.md) mining, training [AI](ai.md) etc.) and can no longer even perform 3D rendering completely by themselves -- for this they have to be programmed. I.e. if we want to use a GPU for rendering, not only do we need a GPU but also some extra code. This code is provided by "systems" such as [OpenGL](opengl.md) or [Vulkan](vulkan.md) which consist of an [API](api.md) (an [interface](interface.md) we use from a [programming language](programming_language.md)) and the underlying implementation in a form of a [driver](driver.md) (e.g. [Mesa3D](mesa3d.md)). Any such rendering system has its own architecture and details of how it works, so we have to study it a bit if we want to use it.
The important part of a system such as OpenGL is its **rendering [pipeline](pipeline.md)**. Pipeline is the "path" through which data go through during the rendering process. Each rendering system and even potentially each of its version may have a slightly different pipeline (but generally all mainstream pipelines somehow achieve rasterizing triangles, the difference is in details of how they achieve it). The pipeline consists of **stages** that follow one after another (e.g. the mentioned mapping of vertices and drawing of triangles constitute separate stages). A very important fact is that some (not all) of these stages are programmable with so called **[shaders](shader.md)**. A shader is a program written in a special language (e.g. [GLSL](glsl.md) for OpenGL) running on the GPU that processes the data in some stage of the pipeline (therefore we distinguish different types of shaders based on at which part of the pipeline they reside). In early GPUs stages were not programmable but they became so as to give a greater flexibility -- shaders allow us to implement all kinds of effects that would otherwise be impossible.

View file

@ -4,7 +4,7 @@ Abstraction is an important concept in [programming](programming.md), [mathemati
[Mathematics](math.md) is a discipline best exemplifying abstraction: it deals purely with abstract concepts. Initially this abstraction is mild -- [numbers](number.md) and [sets](set.md) for example -- and the more it advances, the deeper and harder to grasp the abstraction becomes, towards difficult to imagine concepts such as [differential equations](differential_equation.md), [categories](category.md), [quaternions](quaternion.md), different types of [infinities](infinity.md), [decidability](decidability.md) etc. Some subjects go as far to almost lose any connection with the [real world](irl.md), leaving us completely without any intuition or a way to even visualize what we're dealing with. Ever growing abstraction is probably the inevitable purpose and objective of mathematics, but now let's rather ask how abstraction relates to programming.
In programming we have to be more careful: abstraction here means basically "making stuff easier by hiding and ignoring lower levels of abstraction", i.e. making [libraries](library.md), [languages](programming_language.md) and other tools that facilitate work with the astronomically complex computer hardware. 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](soydev.md), it helps preventing them from making damage by employing billions of safety mechanisms, it allows them to quickly learn to do poorly what should be done properly, 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. Abstraction is useful but what's happening here is twisting its meaning: instead of **ignoring details** where it's acceptable and useful, abstraction is now used as an excuse meaning **ignorance of details**, i.e. whereas originally a programmer knew the details and would decide to ignore them where it's of benefit, nowadays the programmer doesn't know the details at all because he thinks he is allowed to by the existence of abstraction, and so he ignores them in any situation. **This is extremely wrong.** It is basically why technology has been on such a huge downfall in the latest decades and why so many incompetent people flooded the industry. 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).
In programming we have to be more careful: abstraction here means basically "making stuff easier by hiding and ignoring lower levels of abstraction", i.e. making [libraries](library.md), [languages](programming_language.md) and other tools that facilitate work with the astronomically complex computer hardware. 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](soydev.md), it helps preventing them from making damage by employing billions of safety mechanisms, it allows them to quickly learn to do poorly what should be done properly, 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. Abstraction is useful but what's happening here is twisting its meaning: instead of **ignoring details** where it's acceptable and useful, abstraction is now used as an excuse meaning **ignorance of details**, i.e. whereas originally a programmer knew the details and would decide to ignore them where it's of benefit, nowadays the programmer doesn't know the details at all because he thinks he is allowed to by the existence of abstraction, and so he ignores them in any situation. **This is BAD.** It is basically why technology has been on such a huge downfall in the latest decades and why so many incompetent people flooded the industry. 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).
Upon closer inspection we find that abstraction is not one-dimensional, we may abstract in different directions ("look at the issue from different angles"); for example [functional](functional.md), [logic](logic_paradigm.md) and [object](object.md) paradigms are different ways of programming languages abstracting from the low level, each one in different way. So the matter of abstracting is further complicated by trying to **choose the right abstraction** -- one kind of abstraction may work well for certain kinds of problems (i.e. solving these problems will become simple when applying this abstraction) but badly for other kinds of problems. The art of choosing right abstraction ([model](model.md)) is important e.g. in designing computer [simulations](simulation.md) -- if we want so simulate e.g. human society, do we simulate individual people in it or just societies as whole entities? Do we simulate wars as a simple dice roll or do we let individual soldiers fight their own battles? Do we represent roads as actual surfaces on top of which cars move according to laws of physics, or do we simplify to something like mathematical graph connecting cities with mere abstract lines, or something in between like a cellular automaton maybe? Do we consider beings living on a round planet, with possibilities like meteor impacts and space flights, or do we simply consider people living on a flat 2D sheet of paper? Similar though has come to designing [games](game.md) (another kind of simulation).

View file

@ -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](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).
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](equation.md). 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).

View file

@ -73,6 +73,7 @@ And now to some general tips:
- **tofu**: Amazing, yummy, good low calorie replacement for meat.
- **soups**: Consist mostly of water and taste great.
- **mozzarella and some processed cheese**: Cheese can have quite a lot of calories in general but it can be eaten e.g. instead of meat. Again, preferable are the "watery" kinds of cheese like mozzarella.
- **stevia**: Natural sweetener, three times sweeter than sugar, with practically zero calories! Can be used instead of sugar.
- **honey**: It's not exactly low in calories but it's a good replacement for normal sugar and sweets in times of crisis. Firstly it has considerably less calories than normal sugar, but it's also healthier AND quite filling, so in a crisis instead of eating a whole chocolate it's often enough to take one spoon of honey.
- **[depression](depression.md)**: In depression one lose appetite and starts to lose weight like nothing. Depression sucks but this is a small advantage.
- **when/how to weight oneself**: For accurate tracking one must always weight at the same time of the day, usually morning, and under the same conditions, i.e. without clothes, after peeing etc. The weight jumps up and down quite rapidly, for example we sweat out a lot of liquid during the night etc. It's also pointless to weight every day, weighting every friday for example is cool.

View file

@ -6,6 +6,6 @@ Indeed, **what really IS the axiom of choice?** It is an [axiom](axiom.md), i.e.
This doesn't sound weird, does it? Well, in many normal situations it isn't. For example if we have finitely many sets, we can simply write out each element of the set, we don't need to define any selection function, so we don't need axiom of choice to make our choice of elements here. But also if we have infinitely many sets that are well ordered (we can compare elements), for example infinitely many sets of [natural numbers](natural_number.md), we can simply define a function that takes e.g. the smallest number from each set -- here we don't need axiom of choice either. The issues start if we have e.g. infinitely many sets of [real numbers](real_number.md) (which can't be well ordered without the axiom of choice, consider that e.g. open intervals don't have lowest number) -- here we can't say how a function should select one element from each set, so we have to either accept axiom of choice (we say it simply can be done "somehow", e.g. by writing each element out on an infinitely large paper) or reject it (we say it can't be done). Here it is again the case that what's normally completely non-problematic starts to get very weird once you involve [infinity](infinity.md).
**Why is it problematic?** Once you learn about axiom of choice, your first question will probably be why should it pose any problems if it just seems like an obvious fact. Well, it turns out it leads to strange things. If we accept axiom of choice, then some weird things happen, most famously e.g. the [Banach-Tarski paradox](banach_tarski.md) which uses the axiom of choice to prove that you can disassemble a sphere into finitely many pieces, then move and rotate them so that they create TWO new spheres, each one identical to the original (i.e. you duplicate the original sphere). But if we reject the axiom of choice, other weird things happen, for example we can't prove that every vector space has a basis -- it seems quite elementary that every vector space should have a basis, but this can't be proven without the axiom of choice and in fact accepting this implies the axiom of choice is true. Besides this great many number of proofs simply don't work without axiom of choice. So essentially either way things get weird, whether we accept axiom of choice or not.
**Why is it [problematic](shitword.md)?** Once you learn about axiom of choice, your first question will probably be why should it pose any problems if it just seems like an obvious fact. Well, it turns out it leads to strange things. If we accept axiom of choice, then some weird things happen, most famously e.g. the [Banach-Tarski paradox](banach_tarski.md) which uses the axiom of choice to prove that you can disassemble a sphere into finitely many pieces, then move and rotate them so that they create TWO new spheres, each one identical to the original (i.e. you duplicate the original sphere). But if we reject the axiom of choice, other weird things happen, for example we can't prove that every vector space has a basis -- it seems quite elementary that every vector space should have a basis, but this can't be proven without the axiom of choice and in fact accepting this implies the axiom of choice is true. Besides this great many number of proofs simply don't work without axiom of choice. So essentially either way things get weird, whether we accept axiom of choice or not.
**So what do mathematicians do?** How do they deal with this and why don't they kill themselves? Well, in reality most of them are pretty chill and don't really care, they try avoid it if they can (their proof is kind of stronger if it relies on fewer axioms) but they accept it if they really need it for a specific proof. Many elementary things in mathematics actually rely on axiom of choice, so there's no fuss when someone uses it, it's very normal. Turns out axiom of choice is more of something they argue over a beer, they usually disagree about whether it is INTUITIVELY true or false, but that doesn't really affect their work.

View file

@ -31,6 +31,7 @@ Here there will be a constantly WIP list of [books](book.md) that might be of in
- **The Pig and the Box** (MCM, 2009): A short story for kids showing the dangers of [DRM](drm.md), released under [CC0](cc0.md)!
- **The Tao of Programming** (James, 1987): Famous piece of [hacker culture](hacking.md) literature, wisdom of programming written in taoist style.
- **Tricks of the Game Programming Gurus** (1994): Very nice, readable book, that implements a whole 90s shooter game in [C](c.md), without drowning the reader in tons of equations and smartass talk. It's written with the 90s mindset and in common language, contains many practical tricks for optimizing the code etc.
- **Truly Tasteless Jokes**: A collection of dark humor [jokes](joke.md), very useful since they can no longer be found on the [Internet](internet.md).
- ...
{ TODO (have to read first): Lisp From Nothing (implementing minimal self-hosted Lisp, CC0 code!). ~drummyfish }

View file

@ -1,3 +1,5 @@
# Cope
{ WIP. Love you :-) Write me an email if u need help <3 ~drummyfish }
COMING SOON
{ Love you :-) Write me an email if u need help <3 ~drummyfish }

View file

@ -18,7 +18,7 @@ By the same reasoning we'll find that **[generalism](generalism.md) and self suf
NOTE: One may ask how will [LRS](lrs.md) deal with the above? If we argue for true freedom, do we argue for feeling no responsibility even for things like murder etc.? The answer is basically this: to make people not do bad things don't remove their freedom to do bad things, keep their freedom to do anything while making them want to choose to do good things.
Freedom is something promised by most (if not all) ideologies/movements/etc.; this is because without further specification the term is so wide it says very little -- the very basic thing to know is, of course, that **there is no such thing as general freedom**; one kind of freedom restricts other kinds of freedom -- for example so called freedom of market says that a rich capitalist is free to do whatever he wants, which leads to him enslaving people, killing the freedom of those people. **Wrong understanding of freedom (present especially in the [USA](usa.md)) -- also pseudofreedom -- is that of "law of the jungle**, i.e. letting everyone just follow [self interest](self_interest.md) by any means necessary -- this is just tyranny of self interest and those strong enough to enforce their self interest on the detriment of others. In such society most people can NOT do whatever they want because they're FORCED (perhaps not by law but [de facto](de_facto.md) e.g. by [fear](fear_culture.md) and physical oppression) to do the bidding of the stronger. Therefore this by definition NOT real freedom, it is the rule of the strong, no different from any other kind of dictatorship. It is what eventually results in the strongest becoming absolute ruler who starts writing down orders (which at this point will be called "[laws](law.md)") enforced by his personal army (which will be called [police](police.md), [justice](justice.md) system etc.). Real freedom means lawlessness which however MUST also be rid of self interest and principles of the jungle -- [less retarded society](less_retarded_society.md). Only then will everyone be as free as possible: though it's impossible to ensure that everyone would always be able to do whatever it is he wishes to do without restricting the freedom of others, it is possible to maximize this kind of freedom, to get very close to the situation when mostly one CAN do whatever it is he wishes to do.
Freedom is something promised by most (if not all) ideologies/movements/etc.; this is because without further elaborating on the definition, the term is so broad it says very little -- as a matter of fact, of course, **there is no such thing as general freedom**; one kind of freedom restricts other types of freedom -- for instance the so called "freedom of market" allows a rich capitalist the "freedom" to do whatever he desires, which leads to him enslaving people, taking freedom away from these people. **Wrong understanding of freedom (present especially in the [USA](usa.md)) -- also pseudofreedom -- is that of "law of the jungle**, i.e. letting everyone just follow [self interest](self_interest.md) by any means necessary -- this is just tyranny of self interest and those strong enough to enforce their self interest on the detriment of others. In such society most people can NOT do whatever they want because they're FORCED (perhaps not by law but [de facto](de_facto.md) e.g. by [fear](fear_culture.md) and physical oppression) to do the bidding of the stronger. Therefore this by definition NOT real freedom, it is the rule of the strong, no different from any other kind of dictatorship. It is what eventually results in the strongest becoming absolute ruler who starts writing down orders (which at this point will be called "[laws](law.md)") enforced by his personal army (which will be called [police](police.md), [justice](justice.md) system etc.). Real freedom means lawlessness which however MUST also be rid of self interest and principles of the jungle -- [less retarded society](less_retarded_society.md). Only then will everyone be as free as possible: though it's impossible to ensure that everyone would always be able to do whatever it is he wishes to do without restricting the freedom of others, it is possible to maximize this kind of freedom, to get very close to the situation when mostly one CAN do whatever it is he wishes to do.
What kind of freedom is [LRS](lrs.md) interested in? Basically the freedom for living beings to do what makes them happy -- of course this can't be achieved 100% (if one desires to enslave others, their freedom would disappear), however we can get very close (make a [society](less_retarded_society.md) in which people don't wish to enslave others). For this goal we choose to support such freedoms as [free speech](free_speech.md), [free software](free_software.md), [free culture](free_culture.md), free love etc.

View file

@ -1,8 +1,8 @@
# Function
Function is a very basic term in [mathematics](math.md) and [programming](programming.md) with a slightly different meanings in each, also depending on exact context: mathematical function basically maps [numbers](number.md) to other numbers, a function in programming is similar but is rather seen as a subprogram to which we divide a bigger program. Well, that's pretty simplified but those are the very rough ideas. A more detailed explanation will follow.
Function is a very basic term in [mathematics](math.md) and [programming](programming.md) with a slightly different meanings in each, also depending on exact context: mathematical function basically maps [numbers](number.md) to other numbers, a function in programming is similar but is rather seen as a subprogram to which we divide a bigger program. Well, that's a pretty simplified gist of it but it's roughly how it is. Incoming is a more detailed explanation.
Yet another attempt at quick summary: imagine function as a tiny box. In mathematics you throw numbers (or similar object, for example [sets](set.md)) to the box and it spits out other numbers (or "objects"); the number that falls out always only depends on the number you throw in. So the box basically just transforms numbers into other numbers. In programming a function is similar, it is also a box to which you throw numbers and can behave like the mathematical function, but the limitations are relaxed so the box can also do additional things when you throw a number in it, it may for example light up a light bulb; it may also remember things and sometimes spit out a different number when you throw in the same number twice.
Yet another attempt at a quick summary: imagine function as a miniature box. In mathematics you throw numbers (or similar object, for example [sets](set.md)) into the box and it spits out other numbers (or "objects"); the number that falls out always only depends on the number you throw in. So the box essentially just transforms numbers into other numbers. In programming a function is similar, it is also a box into which you throw numbers and can behave like the mathematical function, but the limitations are relaxed so the box can also do additional stuff, it may for example light up a light bulb; it may also remember things and sometimes shit out a different number when you throw in the same number twice -- sometimes the box is so fancy that it doesn't even need any input numbers anymore, it's just turned on with a button and it starts going around and doing stuff.
## Mathematical Functions
@ -95,7 +95,7 @@ Mathematical functions can be seen as [models of computation](model_of_computati
Functions commonly used in mathematics range from the trivial ones (such as the constant functions, *f(x) = constant*) to things like trigonometric functions ([sine](sin.md), [cosine](cos.md), [tangent](tan.md), ...), [factorial](factorial.md), [logarithm](log.md), [logistic](logistic_function.md) sigmoid function, [Gaussian function](gaussian_function.md) etc. Furthermore some more complex and/or interesting functions are (the term function may be applied liberally here):
- **[Ackermann function](ackermann_function.md)**: Extremely fast growing function with some weird properties.
- **[Ackermann function](ackermann_function.md)**: Grows fast as hell and has some weird properties.
- **[busy beaver function](busy_beaver.md)**: A famous, extremely quickly growing [uncomputable](computability.md) function.
- **Minkowski's [questionmark function](questionmark_function.md)**: Weird function with [fractal](fractal.md) properties.
- **sin(1/x)**: Simple function that gets [chaotic](chaos.md) close to zero.
@ -114,7 +114,7 @@ Functions commonly used in mathematics range from the trivial ones (such as the
## Programming Functions
In programming the definition of a function is less strict, even though some languages, namely [functional](functional.md) ones, are built around purely mathematical functions -- for distinction we call these strictly mathematical functions **pure**. In traditional languages functions may or may not be pure, a function here normally means a **subprogram** which can take parameters and return a value, just as a mathematical function, but it can further break some of the rules of mathematical functions -- for example it may have so called **[side effects](side_effect.md)**, i.e. performing additional actions besides just returning a number (such as modifying data in memory which can be read by others, printing something to the screen etc.), or use randomness and internal states, i.e. potentially returning different numbers when invoked (called) multiple times with exactly the same arguments. These functions are called **impure**; in programming a *function* without an adjective is implicitly expected to be impure. Thanks to allowing side effects these functions don't have to actually return any value, their purpose may be to just invoke some behavior such as writing something to the screen, initializing some hardware etc. The following piece of code demonstrates this in [C](c.md):
Programmers, being mere scum compared to mathematicians, define a function less strictly, even though some programming languages, namely [functional](functional.md) ones, are still built around purely mathematical functions -- for distinction we call the "strictly mathematical functions" **pure**. In traditional languages functions may or may not be pure, a function here normally means a **subprogram** which can take parameters and return a value, just as a mathematical function, but it can further break some of the rules of mathematical functions -- for example it may have so called **[side effects](side_effect.md)**, i.e. performing additional actions besides just returning a number (such as modifying data in memory which can be read by others, printing something to the screen etc.), or use randomness and internal states, i.e. potentially returning different numbers when invoked (called) multiple times with exactly the same arguments. These functions are called **impure**; in programming a *function* without an adjective is implicitly expected to be impure. Thanks to allowing side effects these functions don't have to actually return or take any value, their purpose may be to just invoke some behavior such as writing something to the screen, initializing some hardware etc. The following piece of code demonstrates this in [C](c.md):
```
int max(int a, int b, int c) // pure function, returns the greatest of three numbers
@ -136,3 +136,8 @@ unsigned int pseudoRandom(unsigned int maxValue) // impure function
In older languages functions were also called *[procedures](procedure.md)* or *[routines](routine.md)*. Sometimes there was some distinction between them, e.g. in [Pascal](pascal.md) functions returned a value while procedures didn't.
Just as in mathematics, a function in programming may be [recursive](recursion.md) -- here we define recursion as a function that calls itself.
## See Also
- [math](math.md)
- [lambda calculus](lambda_calculus.md)

2
go.md
View file

@ -80,7 +80,7 @@ WORK IN PROGRESS
These are some tips on how to play well:
- As a newcomer first overview the absolutely basics: life and death, liberties, eyes, ko, komi, cutting, atari, ladders and so on. Just like with learning a new [language](human_language.md), however, do not spend too much time just reading books: invest time in actually playing and try to notice and learn what you read about. You must collect countless games under your belt to truly come to intuitively understand the concepts.
- As a newcomer first overview the absolutely basics: life and death, liberties, eyes, ko, komi, cutting, atari, ladders, nets and so on. Just like with learning a new [language](human_language.md), however, do not spend too much time just reading [books](books.md): invest time in actually playing and try to notice and learn what you read about. You must collect countless games under your belt to truly come to intuitively understand the concepts.
- Another beginner advice: start playing on the tiny 5x5 board, then after a while move to a 9x9 board and stay practicing there. Only when you feel somewhat comfortable move to the full size board.
- Double atari is a basic tactic similar to fork in chess: with one move you threaten to immediately take two groups on the next move and the opponent will only be able to save one.
- Oftentimes it happens that a good move is to place your stone where the opponent would want to place his stone, so think from the point of view of your opponent, it may aid you in finding your own move.

7
hw.md
View file

@ -1,3 +1,8 @@
# Hardware
Hardware (HW), as opposed to [software](sw.md), are the physical parts of a [computer](computer.md), i.e. the circuits, the mouse, keyboard, the printer etc. Anything you can smash when the machine pisses you off.
Hardware (HW), as opposed to [software](sw.md), are the physical parts of a [computer](computer.md), i.e. the circuits, the mouse, keyboard, the printer etc. Anything you can smash when the machine pisses you off.
## See Also
- [software](sw.md)
- [firmware](firmware.md)

View file

@ -63,6 +63,10 @@ Insofar as **food** goes we are unfortunately not 100% self sufficient yet, main
TODO: birth control (anal, oral, fuck old/young, infertile, pregnant, ...)
### The Council
The council is a subgroup of inhabitants of the Island, a group of those whose questions have not been answered. It doesn't follow its self interest and so it is NOT as [fascist](fascism.md) group. Initially the council is formed by the single wisest man of all the inhabitants. Whenever someone has a perplexing question, he goes to ask the council for an answer. If the council fails to satisfyingly answer the question, then that who came to ask becomes a new member of the council.
## See Also
- [less retarded society](less_retarded_society.md)

View file

@ -63,12 +63,13 @@ Also remember the worst thing you can do to a joke is put a [disclaimer](disclai
- The new version of MacOS is going to constantly have [gay](gay.md) porn playing as a wallpaper. Why? So that you don't feel alone in being fucked in the ass when using it.
- How many [Python](python.md) programmers do you need to change a lightbulb? Only one -- he holds the bulb while the world revolves around him.
- After all it may not take so long to establish our [utopia](less_retarded_society.md). By the time [Windows](windows.md) has updated we will have already done it ten times over.
- One of the great milestones yet left to be achieved by science is to find intelligent life in our Solar System.
- One of the biggest milestones yet left to be achieved by science is to find intelligent life in our Solar System.
- An evil capitalist, good capitalist and [female](woman.md) genius walk in the park. A bee stings one of them. Who did it sting? The evil capitalists, the other two don't exist.
- Why did [Bill Gate$](bill_gates.md) make [Windows](windows.md)? After watching Nascar he wanted to bring the excitement of constant crashed to the computing world.
- Cool statistics: 9 out of 10 people enjoy a gang [rape](rape.md).
- 9 out of 10 people enjoy a gang [rape](rape.md).
- What does a shitty programmer say when his program crashes? [OOP](oop.md)s. { Thanks my secret friend. :D ~drummyfish }
- Basement hackers never die, they just smell that way. Musicians never die, they just decompose (and musicians working part time are [semiconductors](semiconductor.md)).
- What's more disgusting than 100 dead babies in a trash bin? One live at the bottom eating its way up.
- `int randomInt(void) { int x; return x; }`
- Boss: "We're going to need to store additional information about gender of all 1600 people in our database." Me: "OK that's only 200 extra bytes.". Diversity department: "You're fired."
- [Java](java.md) is like Alzheimers -- it starts slow and in some time takes away all your memory.
@ -105,6 +106,7 @@ Also remember the worst thing you can do to a joke is put a [disclaimer](disclai
- How many lesbians do you need to screw a lightbulb? Eleven: one to screw it and ten to talk about how great it was doing it without a man.
- Look at that obese singer typing something on her laptop. I think it's a Dell.
- Two [women](woman.md) in prison shared a cell for 25 years, what did one say to the other when they were released? "Let's meet next week, you gotta tell me the rest."
- Did you know how copper wire was invented? When two [Jews](jew.md) found the same penny on the ground.
- A policeman interrogates a witness of an assault of a gay activist. He asks: "So you saw these 4 men attack the guy? Why didn't you help?". The guy says: "I thought 4 was already enough".
- What's big and [bloated](bloat.md)? Your mom.
- A fine is tax for doing bad, a tax is fine for doing good.
@ -112,6 +114,7 @@ Also remember the worst thing you can do to a joke is put a [disclaimer](disclai
- Engineer is that who thinks of equations as [approximations](approximation.md) of the [real world](irl.md). Scientist is someone who thinks of real world as approximation of the equations. Mathematician is that who can't see a connection between real world and equations.
- [USA](usa.md) is the fastest progressing country in the world: it managed to jump from the uncivilized stage right to decadence without even going through the transitional stage of civilization.
- 1 + 1 = 3, for large values of 1.
- What do broccoli and anal sex have in common? You probably won't like it as an adult if you're forced it as a kid.
- A black jew, man in a horse mask and obese transsexual walk into a bar. Oh sorry, you wanted a joke? I'm just describing France in [2020s](21st_century.md).
- Autocorrect is my worst enema.
- Today in [Women](woman.md)'s Chess News we are looking at this awesome game with a brilliant king sacrifice.
@ -120,6 +123,7 @@ Also remember the worst thing you can do to a joke is put a [disclaimer](disclai
- A [transsexual](tranny.md), [coder](coding.md) and a [capitalist](capitalism.md) find a magic device with a text written on it that says: "you cannot tell me a lie!" They decide to test it, so the transsexual says: "I think I'm a real woman" -- and PUFF, he disappears. The coder says: "I think I am smart" -- and PUFF, he disappears. The capitalist says: "I think ..." -- and PUFF, he's gone.
- A rich faggot passes by a poor fisherman, he asks the fisherman: "Hey, nice fishing, why don't you buy a boat and hire a few employees to help you out?". The guy says: "Why?" The rich guy continues: "So that you catch more fish, sell them, keep the surplus and buy even more boats." The guy says: "Why?" The rich guy responds: "So that you can make a big business, buy the best ships and have hundreds, if not thousands of employees. Eventually you can make so much money that you'll just pay people to do everything for you, you'll get free time to do whatever you want, like..." -- The guy interrupts him: "go fishing?"
- Hey I won a box with lifetime supply of condoms in an [assembly](assembly.md) programming competition! Turns out the box was just empty.
- What do you do when an epileptic falls into a pool? Throw in your laundry.
- What does a pirate on a sinking ship say? "[Leak, arrrr](licar.md)!" { Donated by Ramon :D ~drummyfish }
- There's a new trend on [TikTok](tiktok.md): the Russian roulette challenge. No one has won yet, they forgot to tell them it's played with a revolver.
- In C++ friends have access to your private members.

View file

@ -1,18 +1,18 @@
# Lambda Calculus
Lambda calculus is an extremely simple (one of the simplest possible), low-level [mathematical](math.md) system that can perform computation with mathematical [functions](function.md), and can in fact be used to describe and perform any conceivable computation. Lambda calculus provides a theoretical basis for **[functional programming languages](functional.md)** and is a **[model of computation](model_of_computation.md)** similar to e.g. a [Turing machine](turing_machine.md) or [interaction nets](interaction_net.md) -- lambda calculus has actually exactly the same computational power as a Turing machine, which is the greatest possible computational power, and so these systems are alternatives to one another. Lambda calculus can also be viewed as a **primitive [programming language](programming_language.md)**, however its extreme simplicity (for example the lack of even such basic concepts as [numbers](number.md)) doesn't allow its pure form to be used for practical programming, it is more of a mathematical tool for studying computers [theoretically](compsci.md), constructing [proofs](proof.md) etc. The system is a result of searching for most [minimal](minimalism.md) systems capable of computation, just like the most essential physics equations come from searching for the most basic rules of our [Universe](universe.md). Nevertheless anything that can be programmed in any classic programming language can in theory be also programmed in lambda calculus.
Lambda calculus is an extremely simple (one of the simplest possible), low-level [mathematical](math.md) system capable of performing computation with mathematical [functions](function.md), and can in fact be used to describe and carry out any conceivable computation. Lambda calculus provides a theoretical basis for **[functional programming languages](functional.md)** and is a **[model of computation](model_of_computation.md)** just like for example the [Turing machine](turing_machine.md) or [interaction nets](interaction_net.md) -- lambda calculus has in fact exactly the same computational power as a Turing machine, which is the greatest possible, and so these systems are alternatives to one another. Lambda calculus can also be viewed as a **primitive [programming language](programming_language.md)**, however its immense simplicity (for example the lack of even such basic concepts as [numbers](number.md)) doesn't allow its pure form to be used for practical programming, it is more of a mathematical tool for studying computers [theoretically](compsci.md), constructing [proofs](proof.md) etc. The system is a result of the search for the most [minimal](minimalism.md) systems capable of computation, just like the most essential physics equations emerge from searching for the most elementary rules of our [Universe](universe.md). Nevertheless anything that can be programmed in any classic programming language can in theory be also programmed in lambda calculus.
While Turing machines use memory cells as the medium to carry out computation -- which closely imitates the "number crouching" of real life computers -- lambda calculus instead performs computation solely by simplifying an expression made of pure mathematical functions -- that means there are no [global variables](variable.md) or [side effects](side_effect.md) (the role of memory is essentially replaced by the expression itself, the lambda expression is both the program and its memory at the same time). It has to be stressed that the functions in question are mathematical functions, also called **pure functions**, NOT functions we know from programming (which can do all kinds of nasty stuff). A pure function cannot have any side effects such as changing global state and its result also cannot depend on any global state or [randomness](randomness.md), the only thing a pure function can do is return a value, and this value has to always be the same if the arguments to the function are same. In addition to this the pure mathematical functions are yet much simpler than those we encounter in high school, there are no algebraic operators or numbers, just symbols.
While Turing machines use memory cells as the medium supporting computation -- which closely imitates the "number crouching" of real life computers -- lambda calculus instead performs computation solely by simplifying an expression made of pure mathematical functions -- that means there are no [global variables](variable.md) or [side effects](side_effect.md) (the role of memory is essentially replaced by the expression itself, the lambda expression is both the program and its memory at the same time). It has to be stressed that the functions in question are mathematical functions, also called **pure functions**, NOT functions we know from programming (which can do all kinds of nasty stuff). A pure function cannot have any side effects such as changing global state and its result also cannot depend on any global state or [randomness](randomness.md), the only thing a pure function can do is return a value, and this value has to always be the same if the arguments to the function are same. In addition to this the pure mathematical functions are yet much simpler than those we encounter in high school, there are no algebraic operators or numbers, just symbols.
## How It Works
(For simplicity we'll use pure ASCII text. Let the letters L, A and B signify the Greek letters lambda, alpha and beta.)
(For the sake of simplicity we'll rely on pure ASCII text. Let the letters L, A and B signify the Greek letters lambda, alpha and beta.)
Lambda calculus is extremely simple in its definition, but it may not be so simple to learn to understand it. Most students don't get it the first time, so don't worry :)
Lambda calculus is exceptionally simple in its definition, but it may not be so simple to grasp. Most students don't get it the first time, so don't worry :)
In lambda calculus function have no names, they are what we'd call anonymous functions or lambdas in programming (now you know why they're called lambdas).
Computations in lambda calculus don't work with numbers but with sequences of symbols, i.e. the computation can be imagined as manipulating the text string of the program itself with operations that can intuitively just be seen as "search/replace". That is we start with a program (text) that then gets transformed by simple rules over and over before reaching some final form -- the result of the computation. If you know some programming language already, the notation of lambda calculus will seem familiar to functions you already know from programming (functions, their bodies, arguments, variables, ...), but BEWARE, this will also confuse you; functions in lambda calculus are a little different (much simpler) than those in traditional languages; e.g. you shouldn't imagine that variables and function arguments represent numbers -- they are really just "text symbols", all we're doing with lambda calculus is really manipulating text with very simple rules. Things like numbers, their addition etc. don't exist at the basic level of lambda calculus, they have to be implemented (see later). This is on purpose ([feature](feature.md), not a [bug](bug.md)), lambda calculus is really trying to explore how simple we can make a system to still keep it as powerful as a Turing machine.
Computations in lambda calculus don't work with numbers but with sequences of symbols, i.e. the computation can be imagined as manipulating the text string of the program itself with operations that can intuitively just be seen as "search/replace". That is we start with a program (text) that subsequently gets transformed by simple rules over and over before reaching a final form -- the result of the computation. If you know some programming language already, the notation of lambda calculus will seem familiar to functions you already know from programming (functions, their bodies, arguments, variables, ...), but BEWARE, this will also confuse you; functions in lambda calculus are a little different (much simpler) than those in traditional languages; e.g. you shouldn't imagine that variables and function arguments represent numbers -- they are really just "text symbols", all we're doing with lambda calculus is really manipulating text with very simple rules. Things like numbers, their addition etc. don't exist at the basic level of lambda calculus, they have to be implemented (see later). This is on purpose ([feature](feature.md), not a [bug](bug.md)), lambda calculus is really trying to explore how simple we can make a system to still keep it as powerful as a Turing machine.
In lambda calculus an expression, also a **lambda term** or "program" if you will, consists only of three types of [syntactical](syntax.md) constructs:
@ -48,7 +48,7 @@ Let's take a complete **example**. We'll use the above shown increment function
(Lf.Lx.fx) B-reduction
```
We see we've gotten the representation of number 1.
We see we've gotten the representation of the number 1.
TODO: C code

View file

@ -2,11 +2,11 @@
Love is a deep feeling of liking and affection towards someone or something, usually accompanied by a strong emotion. There are many different kinds of love and love has always been one of the most important feelings that higher [living](life.md) being are capable of, it permeates human [art](art.md), [culture](culture.md) and daily lives. Unconditional [selfless](selflessness.md) love towards all living beings is the basis of [less retarded society](less_retarded_society.md).
What is the opposite of love? Many say it is [hatred](hate.md), even though it may also very well be argued that it is rather indifference, i.e. just "not caring", because hate and love often come hand in hand and are sometimes actually very similar -- both hate and love arouse strong emotion, even obsession, and can be present at the same time (so called love-hate relationship). Love sometimes quickly changes to hate and vice versa.
What is the opposite of love? Our instinct might suggest [hatred](hate.md), but it may be argued that indifference is possibly a better answer, i.e. "just not caring". This is because hate and love often come hand in hand and are sometimes in fact very similar -- both hate and love arouse strong emotion, even obsession, and can be present at the same time (so called love-hate relationship). At time love swiftly turns to hate and vice versa.
As mentioned, **love is not a single feeling**, there are many types of it, for example parental love, love of a life partner, platonic love, self love, love for a friend, towards [God](god.md), of pet animal, love of [art](art.md), knowledge, [life](life.md), nature, as well as selfish obsessive love, [selfless](selflessness.md) love and many others. Some kinds of love may be so rare and complex that it's hard to describe them, for example it is possible to passionately love a complete stranger merely for his existence, without feeling a sexual desire towards him. One may love a [beautiful](beauty.md) mathematical formula and even people who hurt him. Love is a very complex thing.
As mentioned, **love is not a single feeling**, many kinds exist: for example parental love, love of a life partner, platonic love, self love, love for a friend, towards [God](god.md), of pet animal, love of [art](art.md), knowledge, [life](life.md), nature, as well as selfish obsessive love, [selfless](selflessness.md) love and many others. Some kinds of love may be so rare and complex that they're hard to describe and explain, for example it is possible to passionately love a complete stranger merely for his existence, without feeling a sexual desire towards him. One may love a [beautiful](beauty.md) mathematical formula and even people who hurt him.
Is there a **good real life example of unconditional selfless love**? Yes. When a fascist [Brenton Tarrant](brenton_tarrant.md) shot up the Christchurch mosques on 15 March 2019 and killed 51 people, there was a woman among them whose husband said after the incident he wanted to hug Tarrant. The husband was also present during the shooting. Not only has he forgiven the killer of his wife and someone who almost also murdered him alone, he showed him loved, something which must have been unimaginably difficult and something that proved him one of the most pure people on this planet. He said about it the following (paraphrased for copyright concerns): "There is no use in anger. Anger and fight will not fix it, only with love and caring can we warm hearts. [...] I love him because he is a human being, he is my brother. [...] I don't support his act. [...] But perhaps he was hurt in his life, perhaps something happened to him. [...] Everyone has two sides, a bad one and a good one; bring out the good in you.". (source: https://www.mirror.co.uk/news/world-news/husband-forgives-new-zealand-terrorist-14154882) { This moved me so much when I read it, I can't explain how much this affected my life. I have so much admiration for what this man said and I wish I could follow his message for my whole life. Only the words of the man alone have awoken so much of the purest love in me towards every living being on this planet, which I didn't even know existed. ~drummyfish }
Is there a **good real life example of unconditional selfless love**? Yes. When the fascist [Brenton Tarrant](brenton_tarrant.md) murdered 51 people at the Christchurch mosques on 15 March 2019, there was a [woman](woman.md) among them whose husband said after the incident he wanted to hug Tarrant. The husband was also present during the shooting. Not only has he forgiven the killer of his wife and someone who almost also murdered him alone, he showed him loved, something which must have been unimaginably difficult and something that proved him one of the most pure people on this planet. He said about it the following (paraphrased for copyright concerns): "There is no use in anger. Anger and fight will not fix it, only with love and caring can we warm hearts. [...] I love him because he is a human being, he is my brother. [...] I don't support his act. [...] But perhaps he was hurt in his life, perhaps something happened to him. [...] Everyone has two sides, a bad one and a good one; bring out the good in you.". (source: https://www.mirror.co.uk/news/world-news/husband-forgives-new-zealand-terrorist-14154882) { This moved me so much when I read it, I can't explain how much this affected my life. I have so much admiration for what this man said and I wish I could follow his message for my whole life. Only the words of the man alone have awoken so much of the purest love in me towards every living being on this planet, which I didn't even know existed. ~drummyfish }
**Love does not imply [politeness](political_correctness.md). Love does not imply lack of hate.** As stated above, love and hate are closely related, strong love possibly even requires hatred.

View file

@ -1,8 +1,8 @@
# Pseudo 3D
The term pseudo 3D, also 2.5D or primitive 3D (preferred by [us](lrs.md)), is used for [computer graphics](graphics.md) that only uses the simplest techniques of [3D](3d.md) [rendering](rendering.md) (such as 2D [raycasting](raycasting.md), mode7 etc.) and so creates more of an "illusion of 3D" that poses many limitations (such as those on camera movement and rotation); genuine 3D rendering that uses more advanced techniques (typically triangle rasterization, [raytracing](raytracing.md) etc.) is then called [true 3D](true_3d.md). However it's crucial to realize that EVERY 3D rendering is in the end only an illusion and so there is eventually no objective line separating primitive 3D and true 3D -- by convention some techniques ended up being assigned mostly to one group or the other, but the line is in the end drawn just arbitrarily. In the mainstream using the traditional pseudo 3D techniques is nowadays mostly a thing of the past as everything including cell phones now has a powerful [GPU](gpu.md) capable or most advanced 3D rendering (and so it is even used to "fake" the simpler techniques for aesthetic reasons), nevertheless for [suckless](suckless.md)/[KISS](kiss.md)/[LRS](lrs.md) programming the techniques used in the past are very valuable, interesting and useful, considering we greatly prefer [software rendering](sw_rendering.md).
The term pseudo 3D, also 2.5D or primitive 3D (preferred by [us](lrs.md)), is used for [computer graphics](graphics.md) that only uses cheap techniques of [3D](3d.md) [rendering](rendering.md) (such as 2D [raycasting](raycasting.md), mode7 etc.) and so creates more of an "illusion of 3D" that poses many limitations (such as those on camera movement and rotation); genuine 3D rendering that uses more advanced techniques (typically triangle rasterization, [raytracing](raytracing.md) etc.) is then called "[true 3D](true_3d.md)" (also "6 degrees of freedom" etc.). However it's crucial to realize that EVERY 3D rendering is in the end only an illusion and so there is eventually no objective line separating primitive 3D and true 3D -- by convention some techniques ended up being assigned mostly to one group or the other, but the line is in the end drawn just arbitrarily. In the mainstream using the traditional pseudo 3D techniques is nowadays mostly a thing of the past as everything including cell phones now has a powerful [GPU](gpu.md) capable or most advanced 3D rendering (and so it is even used to "fake" the simpler techniques for aesthetic reasons), nevertheless for [suckless](suckless.md)/[KISS](kiss.md)/[LRS](lrs.md) programming the techniques used in the past are very valuable, interesting and useful, considering we greatly prefer [software rendering](sw_rendering.md).
As an example [BSP rendering](bsp.md) rendering in early games such as [Doom](doom.md) is generally called pseudo 3D in the mainstream, however, as stated above, it is pretty debatable what exactly should classify as true 3D and what not because any computer rendering technique will inevitably have some kind of simplification of the true 3D reality of real life. And so the debate of "Was Doom really 3D?" arises. In the end this is the same debate as "Is Pluto a planet or not?", it's just a matter or settling for a definition of a word. One side argues that in Doom's BSP rendering it for example wasn't possible to look up and down or have rooms above other rooms, all due to the limitations of the rendering system which this side sees as "not real 3D". On the other hand Doom really internally worked in 3 dimensions, player DID have a height coordinate (without it it wouldn't be able to smoothly fall into holes), but most importantly: there will always be limitations in any 3D software -- even modern 3D renderers have limitations such as mostly being able to only render models made out of [triangles](triangle.md) (while reality can have completely smooth shapes), having a limited resolution of textures (while reality has infinitely detailed surfaces), being limited by resolution of [floating point](float.md) coordinates or neglecting relativistic spacetime deformations. If we rewrite Doom rendering in OpenGL while giving the camera freedom to look up and down but keep the technical limitations for maps, is it now true 3D or not? If we have a 3D game with complete freedom of camera but with all objects only being 2D sprites, is it true 3D or not? Is Minecraft true 3D even if it can't render anything sphere-shaped? If a game uses traditional 3D rendering on the GPU to output an isometric 2D image without perspective, is it true 3D or not? Where to draw the line for "true 3D" is subjective -- we see it as reasonable to say that **if it looks 3D, it IS 3D**, i.e. we think Doom's graphics WAS really 3D, albeit limited. For this reason we also advise to rather use the term **primitive 3D** rather than pseudo 3D.
To give an example: [BSP rendering](bsp.md) rendering in early games such as [Doom](doom.md) is traditionally called pseudo 3D in the [mainstream](mainstream.md), however, as stated above, it is pretty debatable what exactly should classify as true 3D and what not because any computer rendering technique will inevitably have some kind of simplification of the true 3D reality of real life. And so the debate of "Was Doom really 3D?" arises. In the end this is the same debate as "Is Pluto a planet or not?", it's just a matter or settling for a definition of a word. One side argues that in Doom's BSP rendering it for example wasn't possible to look up and down or have rooms above other rooms, all due to the limitations of the rendering system which this side deems "not sufficiently 3D". On the other hand Doom really internally functioned with 3 dimensions, player DID have a height coordinate (without it it would be impossible to smoothly fall from heights), but most importantly: any 3D renderer will always impose restrictions -- not even modern 3D renderers are spared from suffering limitations such as being able to only render models made out of [triangles](triangle.md) (when reality indeed shows a greater variety of shapes), having a limited resolution of textures (when reality shows infinitely detailed surfaces), being limited by resolution of [floating point](float.md) coordinates or neglecting relativistic spacetime deformations. If we rewrite Doom rendering in OpenGL while giving the camera freedom to look up and down but keep the technical limitations for maps, is it now true 3D or not? If we have a 3D game with complete freedom of camera but with all objects only being 2D sprites, is it true 3D or not? Is Minetest true 3D even if it can't render anything sphere-shaped? If a game uses traditional 3D rendering on the GPU to output an isometric 2D image without perspective, is it true 3D or not? Where to draw the line for "true 3D" is subjective -- we see it as reasonable to say that **if it looks 3D, it IS 3D**, i.e. we think Doom's graphics WAS really 3D, albeit limited. For this reason we also advise to rather use the term **primitive 3D** rather than pseudo 3D.
Techniques associated with primitive 3D are for example [2D raycasting](raycasting.md), [BSP rendering](bsp.md), [mode7](mode7.md), [parallax scrolling](parallax.md), [voxel space](voxel_space.md) terrain rendering or perspective-scaled [sprites](sprite.md).

File diff suppressed because it is too large Load diff

6
sw.md
View file

@ -10,4 +10,8 @@ Usually we can pretty clearly say what is software vs what is hardware, however
- [free software](free_software.md)
- [shitware](shitware.md)
- [rapeware](rapeware.md)
- [hardware](hw.md)
- [malware](malware.md)
- [bloatware](bloat.md)
- [firmware](firmware.md)
- [hardware](hw.md)
- [brain software](brain_software.md)

View file

@ -6,7 +6,7 @@ Vector is a basic [mathematical](math.md) object that expresses direction and ma
Just like in elemental mathematics we deal with "simple" numbers such as 10, -2/3 or [pi](pi.md) -- we retrospectively call such "simple" numbers **[scalars](scalar.md)** -- advanced mathematics generalizes the concept of such a number into vector ("arrays of numbers", e.g. `[1,0,-3/5]` or `[0.5,0.5]`) and yet further to [matrices](matrix.md) ("two dimensional arrays of numbers") and defines a way to deal with such generalizations into **[linear algebra](linear_algebra.md)**, i.e. we have ways to add and multiply vectors and matrices and solve [equations](equation.md) with them, just like we did in elemental algebra (of course, linear algebra is a bit more complex as it mixes together scalars, vectors and matrices). In yet more advanced mathematics the concepts of vectors and matrices are further generalized to **[tensors](tensor.md)** which may also be seen as "N dimensional arrays of numbers" but further add new rules and interpretation of such "arrays" -- vectors can therefore be also seen as a tensor (of rank 1) -- note that in this context there is e.g. a fundamental distinction between row and column vectors. Keep in mind that vectors, matrices and tensors aren't the only possible generalization of numbers, another one is e.g. that of [complex numbers](complex_number.md), [quaternions](quaternion.md), [p-adic numbers](p_adic.md) etc. Anyway, in this article we won't be discussing tensors or any of the more advanced concepts further, they are pretty non-trivial and mostly beyond the scope of mere programmer's needs :) We'll keep it at linear algebra level.
**Vector is not merely a coordinate**, though the traditional representation of it suggest such representation and programmers often use vector data types to store coordinates out of convenience (e.g. in [3D graphics](3d_rendering.md) engines vectors are used to specify coordinates of 3D objects); vector should properly be seen as a **direction and magnitude** which has **no position**, i.e. a way to correctly imagine a vector is something like an **arrow** -- for example if a vector represents velocity of an object, the direction (where the arrow points) says in which direction the object is moving and the magnitude (the arrow length) says how fast it is moving (its [speed](speed.md)), but it doesn't say the position of the object (the arrow itself records no position, it just "hangs in thin air").
**Vector is not merely a coordinate**, though the traditional representation of it suggest such representation and programmers often use vector [data types](data_type.md) to store coordinates out of convenience (e.g. in [3D graphics](3d_rendering.md) engines vectors are used to specify coordinates of 3D objects); vector should properly be seen as a **direction and magnitude** which has **no position**, i.e. a way to correctly imagine a vector is something like an **arrow** -- for example if a vector represents velocity of an object, the direction (where the arrow points) says in which direction the object is moving and the magnitude (the arrow length) says how fast it is moving (its [speed](speed.md)), but it doesn't say the position of the object (the arrow itself records no position, it just "hangs in thin air").
Watch out, **mathematicians dislike defining vectors as arrays of numbers** because vectors are essentially NOT arrays of numbers, such arrays are just one way to express them. Similarly we don't have to interpret any array of numbers as a vector, just as we don't have to interpret any string of letter as a word in human language. A vector is simply a direction and magnitude, an "arrow in space" of *N* dimensions; a natural way of expressing such arrow is through multiples of basis vectors (so called components), BUT the specific numbers (components) depend on the choice of basis vectors, i.e. the SAME vector may be written as an array of different numbers (components) in a different basis, just as the same concept of a [dog](dog.md) is expressed by different words in different languages. Even with the same basis vectors the numbers (components) depend on the method of measurement -- instead of expressing the vector as a linear combination of the *N* basis vectors we may express it as *N* [dot products](dot_product.md) with the basis vectors -- the numbers (components) will be different, but the expressed vector will be the same. Mathematicians usually define vectors abstractly simply as members of a **[vector space](vector_space.md)** which is a set of elements (vectors) along with operations of addition and multiplication which satisfy certain given rules ([axioms](axiom.md)).

File diff suppressed because one or more lines are too long

View file

@ -3,9 +3,9 @@
This is an autogenerated article holding stats about this wiki.
- number of articles: 637
- number of commits: 1002
- total size of all texts in bytes: 5315059
- total number of lines of article texts: 38358
- number of commits: 1003
- total size of all texts in bytes: 5320470
- total number of lines of article texts: 38383
- number of script lines: 324
- occurrences of the word "person": 10
- occurrences of the word "nigger": 123
@ -35,60 +35,79 @@ longest articles:
top 50 5+ letter words:
- which (2913)
- there (2293)
- people (2190)
- example (1847)
- other (1655)
- about (1485)
- number (1360)
- software (1311)
- which (2915)
- there (2292)
- people (2193)
- example (1849)
- other (1657)
- about (1486)
- number (1361)
- software (1314)
- because (1224)
- their (1137)
- would (1104)
- something (1098)
- their (1140)
- would (1103)
- something (1100)
- being (1087)
- program (1069)
- language (1011)
- called (983)
- things (957)
- without (893)
- simple (885)
- things (958)
- without (898)
- simple (886)
- function (879)
- computer (857)
- numbers (842)
- computer (858)
- numbers (843)
- different (824)
- these (797)
- however (797)
- programming (792)
- world (783)
- these (798)
- however (796)
- programming (794)
- world (785)
- system (762)
- should (752)
- should (754)
- still (748)
- doesn (741)
- doesn (742)
- games (714)
- drummyfish (699)
- while (698)
- point (690)
- society (683)
- possible (680)
- possible (681)
- always (673)
- simply (671)
- always (670)
- probably (669)
- using (657)
- probably (671)
- using (656)
- course (630)
- similar (623)
- actually (617)
- https (609)
- someone (604)
- actually (618)
- https (611)
- someone (606)
- though (593)
- first (592)
- really (586)
- really (585)
- basically (578)
latest changes:
```
Date: Thu Apr 10 22:26:01 2025 +0200
abstraction.md
anorexia.md
cope.md
doom.md
evil.md
exercises.md
game_engine.md
infinity.md
jokes.md
lrs.md
main.md
random_page.md
real_number.md
reddit.md
rms.md
wiki_pages.md
wiki_stats.md
wikipedia.md
Date: Tue Apr 8 21:14:43 2025 +0200
cpu.md
doom.md
@ -103,31 +122,6 @@ Date: Tue Apr 8 21:14:43 2025 +0200
Date: Tue Apr 8 14:44:09 2025 +0200
4chan.md
ai.md
anorexia.md
avpd.md
chess.md
determinism.md
dramatica.md
drummyfish.md
faq.md
free_software.md
freedom.md
ioccc.md
jargon_file.md
lgbt.md
main.md
math.md
people.md
project.md
random_page.md
rule110.md
stereotype.md
wiki_pages.md
wiki_stats.md
wolf3d.md
woman.md
work.md
zoomer.md
```
most wanted pages:
@ -135,8 +129,8 @@ most wanted pages:
- [data_type](data_type.md) (16)
- [retard](retard.md) (14)
- [meme](meme.md) (13)
- [irl](irl.md) (13)
- [embedded](embedded.md) (13)
- [irl](irl.md) (12)
- [cli](cli.md) (12)
- [buddhism](buddhism.md) (12)
- [emacs](emacs.md) (11)
@ -155,36 +149,36 @@ most wanted pages:
most popular and lonely pages:
- [lrs](lrs.md) (343)
- [lrs](lrs.md) (345)
- [capitalism](capitalism.md) (315)
- [c](c.md) (247)
- [bloat](bloat.md) (243)
- [bloat](bloat.md) (244)
- [free_software](free_software.md) (206)
- [game](game.md) (158)
- [game](game.md) (159)
- [suckless](suckless.md) (152)
- [proprietary](proprietary.md) (140)
- [modern](modern.md) (127)
- [minimalism](minimalism.md) (126)
- [minimalism](minimalism.md) (127)
- [computer](computer.md) (123)
- [censorship](censorship.md) (122)
- [kiss](kiss.md) (121)
- [programming](programming.md) (116)
- [shit](shit.md) (112)
- [math](math.md) (112)
- [fun](fun.md) (112)
- [math](math.md) (111)
- [gnu](gnu.md) (107)
- [woman](woman.md) (105)
- [woman](woman.md) (106)
- [linux](linux.md) (105)
- [corporation](corporation.md) (103)
- [history](history.md) (101)
- [bullshit](bullshit.md) (101)
- [fight_culture](fight_culture.md) (100)
- [art](art.md) (100)
- [hacking](hacking.md) (95)
- [hacking](hacking.md) (96)
- [less_retarded_society](less_retarded_society.md) (93)
- [programming_language](programming_language.md) (92)
- [free_culture](free_culture.md) (92)
- [programming_language](programming_language.md) (91)
- [work](work.md) (89)
- [work](work.md) (90)
- ...
- [free_body](free_body.md) (5)
- [explicit](explicit.md) (5)

View file

@ -6,7 +6,7 @@
World (or world-wide) [broadcast](broadcast.md) is a possible [technological](tech.md) service (possibly complementing the [Internet](internet.md)) which could be implemented in a [good society](less_retarded_society.md) and whose main idea is to broadcast generally useful [information](information.md) over the whole globe so that simple and/or energy saving [computers](computer.md) could get basic information without having to perform complex and costly two-way communication.
It would work on the same principle as e.g. [teletext](teletext.md): there would be many different [radio](radio.md) transmitters (e.g. towers, satellites or small radios) that would constantly be broadcasting generally useful information (e.g. time or news) in a very simple format (something akin to text in [Morse code](morse_code.md)). Any device capable of receiving radio signal could wait for desired information (e.g. waiting for certain keyword such as `TIME:` or `NEWS:`) and then save it. The advantage would be [simplicity](kiss.md): unlike with [Internet](internet.md) (which would of course still exist) the device wouldn't have to communicate with anyone, there would be no servers communicating with the devices, there would be no communication protocols, no complex code, no [DDOS](ddos.md)-like overloading of servers, and the receiving devices wouldn't waste energy (as transmitting a signal requires significant energy compared to receiving it -- like shouting vs just listening). It would also be more widely available than Internet connection, e.g. in deserts.
It would work on the same principle as [teletext](teletext.md) for example: there would be many different [radio](radio.md) transmitters (e.g. towers, satellites or small radios) that would be constantly broadcasting generally useful information (e.g. time or news) in a very simple format (something akin to text in [Morse code](morse_code.md)). Any device capable of receiving radio signal could wait for the desired information (e.g. waiting for certain keyword such as `TIME:` or `NEWS:`) and then save it. The advantage would be [simplicity](kiss.md): unlike with [Internet](internet.md) (which would of course still exist) the device wouldn't have to communicate with anyone, there would be no servers communicating with the devices, there would be no communication protocols, no complex code, no [DDOS](ddos.md)-like overloading of servers, and the receiving devices wouldn't waste energy (as transmitting a signal requires significant energy compared to receiving it -- like shouting vs just listening). It would also be more widely available than Internet connection, e.g. in deserts.
## See Also

View file

@ -1,6 +1,6 @@
# Zoomer
Zoomers (also *GenZ*, *zombie generation* or *technoslave*) are weird aliens that started to be born instead of real people from around late [1990s](90s.md), they come after [millennials](millennial.md), the last generation of true people to have appeared on [Earth](earth.md). Zoomers are very scary, like slenderman from creepypasta, basically robotic entities born from normal people, no longer having real emotion or normal taste, ability to see what looks good or bad or what's nice and what's degenerated, they are just born to hold a cellphone and [consume](consumerism.md) ads that appear on the display served by the [corporations](corporation.md). One trouble with zoomers is also that no matter where they're born, they're [american](usa.md). Usually they look like the mentioned slenderman: two to three meters tall -- due to having grown up in [21st century](21st_century.md) and only dieting genetically modified chicken -- but extremely [anorexic](anorexia.md) and wearing broccoli haircut, constantly looking down into the [smartphone](smartphone.md) which the zoomer's organism needs to survive; without smartphone a zoomer falls into coma and dies within 24 hours. Zoomers are absolute slaves to [technology](tech.md) (without knowing how it works), mental [illnesses](disease.md) (of which they must have at least 10) as well as sexual confusion -- zoomer has no idea what gender or even species he is, he thinks he is a [rabbit](furry.md) hermaphrodite or [transsexual](transsexual.md) fluid or afroamerican [jewish](jew.md) spiderman or something, it would just be weird for him to be a normal man or [woman](woman.md). He also thinks only about [sex](sex.md) from the day he is born, he can't watch even a child fairytale without sexually analyzing every scene and painting [rule 34](rule34.md) scenarios in his head, he has addiction to masturbation, [porn](porn.md), [Internet](internet.md), [ads](marketing.md), food, [ricing](ricing.md), TikTok videos and all in all just everything he comes to contact with. Zoomer chicks look like Jynx from [Pokemon](pokemon.md), practically just a walking ass with tiny head on top, they have trousers pulled up below armpits like Clint Eastwood, to showcase that gigantic ass (despite actually protesting sexualization of women). For some reason they also have ugly faces -- usually the youngest generation is also the prettiest, but this somehow doesn't hold for zoomers, perhaps due to general degradation of the gene pool.
Zoomers (also *GenZ*, *zombie generation* or *technoslave*) are weird aliens that started to be born instead of real people from around late [1990s](90s.md), they come after [millennials](millennial.md), the last generation of true people to have appeared on [Earth](earth.md). Zoomers are very scary, like slenderman from creepypasta, basically robotic entities born from normal people, no longer having real emotion or normal taste, ability to see what looks good or bad or what's nice and what's degenerated, they are just born to hold a cellphone and [consume](consumerism.md) [ads](marketing.md) appearing on a display remotely controlled by [corporations](corporation.md). One trouble with zoomers is also that regardless of where they're born, they're always [american](usa.md). Usually they look like said slenderman: two to three meters tall -- due to having grown up in [21st century](21st_century.md) and only dieting genetically modified chicken -- but extremely [anorexic](anorexia.md) and wearing broccoli haircut, constantly looking down into the [smartphone](smartphone.md) which the zoomer's organism needs to survive; without smartphone a zoomer falls into coma and dies within 24 hours. Zoomers are absolute slaves to [technology](tech.md) (without knowing how it works), mental [illnesses](disease.md) (of which they must have at least 10) as well as sexual confusion -- zoomer has no idea what gender or even species he is, he thinks he is a [rabbit](furry.md) hermaphrodite or [transsexual](transsexual.md) fluid or afroamerican [jewish](jew.md) spiderman or something, it would just be weird for him to be a normal man or [woman](woman.md). He also thinks only about [sex](sex.md) from the day he is born, he can't watch even a child fairytale without sexually analyzing every scene and painting [rule 34](rule34.md) scenarios in his head, he has addiction to masturbation, [porn](porn.md), [Internet](internet.md), [ads](marketing.md), food, [ricing](ricing.md), TikTok videos and all in all just everything he comes to contact with. Zoomer chicks look like Jynx from [Pokemon](pokemon.md), practically just a walking ass with tiny head on top, they have trousers pulled up below armpits like Clint Eastwood, to showcase that gigantic ass (despite actually protesting sexualization of women). For some reason they also have ugly faces -- usually the youngest generation is also the prettiest, but this somehow doesn't hold for zoomers, perhaps due to general degradation of the gene pool.
```
.,---._
@ -33,12 +33,14 @@ Like you tune a [radio](radio.md) to specific stations, zoomer's brain is tuned
Zoomers are dangerous by no longer being people, they don't know what looks good or bad, they don't remember what good is because they never lived during times when good still existed, they think that [modern](modern.md) things are the best we can achieve, it's pretty scary. Once older generations that zoomers die out, the world will be destroyed.
Contrary to past predictions stating the generation would be one of "technology natives" possessing unprecedented technological skills, absolute opposite turned out to be the case: **zoomers are awfully terrible with technology and don't know basic things about it**. In this they are the first generation with worse technological skills than the preceding one (they are also less cool than millennials etc.). This is not their fault of course, they are a failure because they were so unlucky to be born into dystopian [ultracapitalism](capitalism.md) that obscures technology and enforces consumption: hence the skills of a zoomer are limited to manipulating a device he is given so that he can use it for consumption of content. A zoomer cannot use [computer mouse](mouse.md), [pirate](piracy.md), he sometimes doesn't even know what a [file](file.md) is, he only thinks of "content in cloud" or "photos in an [app](app.md)", and we're not even talking about serious stuff like [assembly](assembly.md) programming -- this to him is rocket science. The highest skill a zoomer can have is probably [ricing](ricing.md) and [distro hopping](distro_hopping.md).
Contrary to past predictions stating the generation would be one of "technology natives" possessing unprecedented technological skills, absolute opposite turned out to be the case: **zoomers are awfully terrible with technology and don't know basic shit about it**. They are the first generation with worse technological skills than the preceding one (they are also less cool than millennials etc.). This is not their fault of course, they are a failure because they were so unlucky to be born into dystopian [ultracapitalism](capitalism.md) that obscures technology and enforces consumption: hence the skills of a zoomer are limited to manipulating a device he is given so that he can use it for consumption of content. A zoomer cannot use [computer mouse](mouse.md), [pirate](piracy.md), he sometimes doesn't even know what a [file](file.md) is, he only thinks of "content in cloud" or "photos in an [app](app.md)", and we're not even talking about serious stuff like [assembly](assembly.md) programming -- this to him is rocket science. The highest skill a zoomer can have is probably [ricing](ricing.md) and [distro hopping](distro_hopping.md).
Zoomers also don't know what headphones are, they just walk and play music or videos at full volume, not giving a single shit about the fact this is pissing off everyone around, a zoomer can't even comprehend anything so complex as empathy.
Zoomers also don't know what headphones are, they just walk and play music or videos at full volume, not giving a single [fuck](fuck.md) about the fact this is pissing off everyone around, a zoomer can't even comprehend anything so complex as empathy.
Fun fact: "Zoomer" was also the name of a creature in Metroid games, described as "not having a brain", just flying in staight lines.
**Zoomers are victims** of dystopian [capitalism](capitalism.md), it is not their fault they're dumb and miserable, we must [love](love.md) them like everyone else and perhaps even show our love that much more. Imagine being born and instead of a toy being handed a smartphone. Growing up bombarded daily by [LGBT](lgbt.md) brainwashing, with parents so busy you hardly see them, classmates committing [suicides](suicide.md), nothing but junk food to eat, no nature to play in, no [computers](computer.md) to tinker with, only content consumption devices. [90s](90s.md) kids at least had a normal childhood and grew up looking at a bright future, zoomers only ever hear about different ways in which our society is fucked. They are poor living beings born to unfortunate circumstances and their lives are difficult. This is not to belittle the generation, it's to highlight their suffering; the next generation will be to them what they are to us now.
## See Also
- [NPC](npc.md)