This commit is contained in:
Miloslav Ciz 2024-01-04 16:45:30 +01:00
parent 690e441493
commit 9635bbfa85
7 changed files with 32 additions and 23 deletions

View file

@ -98,7 +98,7 @@ TODO: VoxelQuest has some innovative voxel rendering, check it out (https://www.
## 3D Rendering Basics For Nubs ## 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, 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 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 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 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.
The absolute basic thing in 3D is probably **[perspective](perspective.md)**, or the concept which says that "things further away look smaller". This is basically the number one thing you need to know and with which you can 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 "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 } The absolute basic thing in 3D is probably **[perspective](perspective.md)**, or the concept which says that "things further away look smaller". This is basically the number one thing you need to know and with which you can 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 "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 }
@ -242,6 +242,8 @@ One frame of the animation should look like this:
press key to animate press key to animate
``` ```
**PRO TIP**: It 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.
## Mainstream Realtime 3D ## Mainstream Realtime 3D
You may have come here just to learn about the typical realtime 3D rendering used in today's [games](game.md) because aside from research and niche areas this kind of 3D is what we normally deal with in practice. This is what this section is about. You may have come here just to learn about the typical realtime 3D rendering used in today's [games](game.md) because aside from research and niche areas this kind of 3D is what we normally deal with in practice. This is what this section is about.

View file

@ -17,13 +17,13 @@ FIRSTLY let's make it more clear what *f(N)* returns exactly -- when computing a
- **best case** scenario: Here we assume *f(N)* always returns the best possible value for given *N*, usually the lowest (i.e. least number of steps, least amount of memory etc.). So e.g. with array sorting for each array length we will assume the input array has such values that the given algorithm will achieve its best result (fastest sorting, best memory usage, ...). I.e. this is the **lower bound** for all possible values the function could give for given *N*. - **best case** scenario: Here we assume *f(N)* always returns the best possible value for given *N*, usually the lowest (i.e. least number of steps, least amount of memory etc.). So e.g. with array sorting for each array length we will assume the input array has such values that the given algorithm will achieve its best result (fastest sorting, best memory usage, ...). I.e. this is the **lower bound** for all possible values the function could give for given *N*.
- **average case** scenario: Here *f(N)* returns the average, i.e. taking all possible inputs for given input size *N*, we just average the performance of our algorithm and this is what the function tells us. - **average case** scenario: Here *f(N)* returns the average, i.e. taking all possible inputs for given input size *N*, we just average the performance of our algorithm and this is what the function tells us.
- **worst case** scenario: Here *f(N)* return the worst possible value for given *N*, i.e. the opposite of best case scenario. This is the **upper bound** for all possible value the function could give for given *N*. - **worst case** scenario: Here *f(N)* return the worst possible values for given *N*, i.e. the opposite of best case scenario. This is the **upper bound** for all possible value the function could give for given *N*.
This just deals with the fact that some algorithms may perform vastly different for different data -- imagine e.g. linear searching of a specific value in a list; if the searched value is always at the beginning, the algorithm always performs just one step, no matter how long list is, on the other hand if the searched value is at the end, the number of steps will increase with the list size. So when analyzing an algorithm **we always specify which kind of case we are analyzing** (WATCH OUT: do not confuse these cases with differences between big O, big Omega and big Theta defined below). So let's say from now on we'll be implicitly examining worst case scenarios. This just deals with the fact that some algorithms may perform vastly different for different data -- imagine e.g. linear searching of a specific value in a list; if the searched value is always at the beginning, the algorithm always performs just one step, no matter how long the list is, on the other hand if the searched value is at the end, the number of steps will increase with the list size. So when analyzing an algorithm **we always specify which kind of case we are analyzing** (WATCH OUT: do not confuse these cases with differences between big O, big Omega and big Theta defined below). So let's say from now on we'll be implicitly examining worst case scenarios.
SECONDLY rather than being interested in PRECISE complexity functions we will rather focus on so called **asymptotic complexity** -- this kind of complexity is only concerned with how fast the resource usage generally GROWS as the size of input data approaches big values (infinity). So again, taking the example of array sorting, we don't really need to know exactly how many steps we will need to sort any given array, but rather how the time needed to sort bigger and bigger arrays will grow. This is also aligned with practice in another way: we don't really care how fast our program will be for small amount of data, it doesn't matter if it takes 1 or 2 microseconds to sort a small array, but we want to know how our program will [scale](scalability.md) -- if we have 10 TB of data, will it take 10 minutes or half a year to sort? If this data doubles in size, will the sorting time also double or will it increase 1000 times? This kind of complexity also no longer depends on what machine we use, the rate of growth will be the same on fast and slow machine alike, so we can conveniently just consider some standardized computer such as [Turing machine](turing_machine.md) to mathematically study complexity of algorithms. SECONDLY rather than being interested in PRECISE complexity functions we will rather focus on so called **asymptotic complexity** -- this kind of complexity is only concerned with how fast the resource usage generally GROWS as the size of input data approaches big values (infinity). So again, taking the example of array sorting, we don't really need to know exactly how many steps we will need to sort any given array, but rather how the time needed to sort bigger and bigger arrays will grow. This is also aligned with practice in another way: we don't really care how fast our program will be for small amount of data, it doesn't matter if it takes 1 or 2 microseconds to sort a small array, but we want to know how our program will [scale](scalability.md) -- if we have 10 TB of data, will it take 10 minutes or half a year to sort? If this data doubles in size, will the sorting time also double or will it increase 1000 times? This kind of complexity also no longer depends on what machine we use, the rate of growth will be the same on fast and slow machine alike, so we can conveniently just consider some standardized computer such as [Turing machine](turing_machine.md) to mathematically study complexity of algorithms.
Rather than exact value of resource usage (such as exact number of steps or exact number of bytes in RAM) asymptotic complexity tells us a **[class](class.md)** into which our complexity falls. These classes are given by mathematical functions that grow as fast as our complexity function. So basically we get kind of "tiers", like *constant*, *linear*, *logarithmic* *quadratic* etc., and our complexity simply falls under one of them. Some common complexity classes, from "best" to "worst", are following (note this isn't an exhaustive list): Rather than exact value of resource usage (such as exact number of steps or exact number of bytes in RAM) asymptotic complexity tells us a **[class](class.md)** into which our complexity falls. These classes are given by mathematical functions that grow as fast as our complexity function. So basically we get kind of "tiers", like *constant*, *linear*, *logarithmic*, *quadratic* etc., and our complexity simply falls under one of them. Some common complexity classes, from "best" to "worst", are following (note this isn't an exhaustive list):
- **constant**: Given by function *f(x) = 1* (i.e. complexity doesn't depend on input data size). Best. - **constant**: Given by function *f(x) = 1* (i.e. complexity doesn't depend on input data size). Best.
- **[logarithmic](log.md)**: Given by function *f(x) = log(x)*. Note the base of logarithm doesn't matter. - **[logarithmic](log.md)**: Given by function *f(x) = log(x)*. Note the base of logarithm doesn't matter.
@ -35,13 +35,13 @@ Rather than exact value of resource usage (such as exact number of steps or exac
Now we just put all the above together, introduce some formalization and notation that computer scientists use to express algorithm complexity, you will see it anywhere where this is discussed. There are the following: Now we just put all the above together, introduce some formalization and notation that computer scientists use to express algorithm complexity, you will see it anywhere where this is discussed. There are the following:
- **big O (Omicron) notation**, written as *O(f(N))*: Says the algorithm complexity (for whatever we are measuring, i.e. time, space etc. and also the specific kind of case, i.e. worst/best/average) is asymptotically bounded from ABOVE by function *f(N)*, i.e. says the **upper bound** of complexity. This is probably the most common information regarding complexity you will encounter (we usually want this "pessimistic" view). More mathematically: complexity *f(x)* belongs to class *O(g(y))* if from some *N0* (we ignore some initial oscillations before this value) the function always stays under function *g* multiplied by any non-zero constant *C*. Formally: *f(x) belongs to O(g(y)) => exists C > 0 and N0 > 0: for all n >= N0: 0 <= f(n) <= C * g(n)*. - **big O (Omicron) notation**, written as *O(f(N))*: Says the algorithm complexity (for whatever we are measuring, i.e. time, space etc. and also the specific kind of case, i.e. worst/best/average) is asymptotically bounded from ABOVE by function *f(N)*, i.e. says the **upper bound** of complexity. This is probably the most common information regarding complexity you will encounter (we usually want this "pessimistic" view). More mathematically: complexity *f(x)* belongs to class *O(g(y))* if from some *N0* (we ignore some initial oscillations before this value) the function *f* always stays under function *g* multiplied by some positive constant *C*. Formally: *f(x) belongs to O(g(y)) => exists C > 0 and N0 > 0: for all n >= N0: 0 <= f(n) <= C * g(n)*.
- **big Omega notation**, written as *Omega(f(N))*: Says the algorithm complexity **lower bound** is given by function *f(N)*. Formally: *f(x) belongs to Omega(g(y)) => exists C > 0 and N0 > 0: for all n >= N0: 0 <= C * g(n) <= f(n)*. - **big Omega notation**, written as *Omega(f(N))*: Says the algorithm complexity **lower bound** is given by function *f(N)*. Formally: *f(x) belongs to Omega(g(y)) => exists C > 0 and N0 > 0: for all n >= N0: 0 <= C * g(n) <= f(n)*.
- **big Theta notation**, written as *Theta(f(N))*: This just means the complexity is both *O(f(N))* and *Omega(f(N))*, i.e. the complexity is tightly bounded by given function. - **big Theta notation**, written as *Theta(f(N))*: This just means the complexity is both *O(f(N))* and *Omega(f(N))*, i.e. the complexity is tightly bounded by given function.
Please note that big O/Omega/Theta are a different thing than analyzing best/worst/average case! We can compute big O, big Omega and big Theta for all best, worst and average case, getting 9 different "complexities". Please note that big O/Omega/Theta are a different thing than analyzing best/worst/average case! We can compute big O, big Omega and big Theta for all best, worst and average case, getting 9 different "complexities".
Now notice (also check by the formal definitions) that we simply don't care about additive and multiplicative constant and we also don't care about some initial oscillations of the complexity function -- it doesn't matter if the complexity function is *f(x) = x* or *f(x) = 100000000 + 100000000 * x*, it still falls under linear complexity! If we have algorithm *A* and *B* and *A* has better complexity, *A* doesn't necessarily ALWAYS perform better, it's just that as we scale our data size to very high values, *A* will prevail in the end. Now notice (also check by the formal definitions) that we simply don't care about additive and multiplicative constants and we also don't care about some initial oscillations of the complexity function -- it doesn't matter if the complexity function is *f(x) = x* or *f(x) = 100000000 + 100000000 * x*, it still falls under linear complexity! If we have algorithm *A* and *B* and *A* has better complexity, *A* doesn't necessarily ALWAYS perform better, it's just that as we scale our data size to very high values, *A* will prevail in the end.
Another thing we have to clear up: **what does input size really mean?** I.e. what exactly is the *N* in *f(N)*? We've said that e.g. with array sorting we saw *N* as the length of the array to be sorted, but there are several things to additionally talk about. Firstly it usually doesn't matter if we measure the size of input in bits, bytes or number of items -- note that as we're now dealing with asymptotic complexity, i.e. only growth rate towards infinity, we'll get the same complexity class no matter the units (e.g. a linear growth will always be linear, no matter if our *x* axis measures meters or centimeters or light years). SECONDLY however it sometimes DOES matter how we define the input size, take e.g. an algorithm that takes a square image with resolution *R * R* on the input, iterates over all pixels and find the brightest one; now we can define the input size either as the total number of pixels of the image (i.e. *N = R * R*) OR the length of the image side (i.e. *N = R*) -- with the former definition we conclude the algorithm to have linear time complexity (for *N* input pixels the algorithm makes roughly *N* steps), with the latter definition we get QUADRATIC time complexity (for image with side length *N* the algorithm makes roughly *N * N* steps). What now, how to solve this? Well, this isn't such an issue -- we can define the input size however we want, we just have to **stay consistent** so that we are able to compare different algorithms (i.e. it holds that if algorithm *A* has better complexity than algorithm *B*, it will stay so under whatever definition of input size we set), AND when mentioning complexity of some algorithm we should mention how we define the input size so as to prevent confusion. Another thing we have to clear up: **what does input size really mean?** I.e. what exactly is the *N* in *f(N)*? We've said that e.g. with array sorting we saw *N* as the length of the array to be sorted, but there are several things to additionally talk about. Firstly it usually doesn't matter if we measure the size of input in bits, bytes or number of items -- note that as we're now dealing with asymptotic complexity, i.e. only growth rate towards infinity, we'll get the same complexity class no matter the units (e.g. a linear growth will always be linear, no matter if our *x* axis measures meters or centimeters or light years). SECONDLY however it sometimes DOES matter how we define the input size, take e.g. an algorithm that takes a square image with resolution *R * R* on the input, iterates over all pixels and find the brightest one; now we can define the input size either as the total number of pixels of the image (i.e. *N = R * R*) OR the length of the image side (i.e. *N = R*) -- with the former definition we conclude the algorithm to have linear time complexity (for *N* input pixels the algorithm makes roughly *N* steps), with the latter definition we get QUADRATIC time complexity (for image with side length *N* the algorithm makes roughly *N * N* steps). What now, how to solve this? Well, this isn't such an issue -- we can define the input size however we want, we just have to **stay consistent** so that we are able to compare different algorithms (i.e. it holds that if algorithm *A* has better complexity than algorithm *B*, it will stay so under whatever definition of input size we set), AND when mentioning complexity of some algorithm we should mention how we define the input size so as to prevent confusion.
@ -60,7 +60,7 @@ Similarly to algorithm complexity, with problems we again define **[classes](cla
- **DSpace(f(x))**: Same as DTime but for space complexity. - **DSpace(f(x))**: Same as DTime but for space complexity.
- **NSpace(f(x))**: Same as NTime but for space complexity. - **NSpace(f(x))**: Same as NTime but for space complexity.
- **[P](p.md)**: Union of all classes *DTime(n^k)*, i.e. all problems that can be solved by a DETERMINISTIC Turing machine with [polynomial](polynomial.md) time complexity. - **[P](p.md)**: Union of all classes *DTime(n^k)*, i.e. all problems that can be solved by a DETERMINISTIC Turing machine with [polynomial](polynomial.md) time complexity.
- **[NP](np.md)**: Union of all classes *NTime(n^k)*, i.e. the same as above but for NON-DETERMINISTIC Turing machine. It is currently not know [if classes P and NP are the same](p_vs_np.md), though it's believed to be not the case -- in fact this is probably the most famous yet unsolved problem of computer science. - **[NP](np.md)**: Union of all classes *NTime(n^k)*, i.e. the same as above but for NON-DETERMINISTIC Turing machine. It is currently not know [if classes P and NP are the same](p_vs_np.md), though it's believed to not be the case -- in fact this is probably the most famous yet unsolved problem of computer science.
- **EXP**: Union of all classes *DTime(2^n^k)*. - **EXP**: Union of all classes *DTime(2^n^k)*.
- ... - ...

1
fun.md
View file

@ -8,6 +8,7 @@ Fun is a rewarding lighthearted satisfying feeling you get as a result of doing
This is subjective AF, even within a single man this depends on day, hour and mood. Anyway some fun stuff may include: This is subjective AF, even within a single man this depends on day, hour and mood. Anyway some fun stuff may include:
- the `#capitalistchallenge`: Try to win this game, you have as many shots as you want. Go to some tech store, seek the shop assistant and tell him you are deciding to buy one of two products, ask which one he would recommend. If he recommends the cheaper one you win.
- [programming](programming.md) - [programming](programming.md)
- [games](game.md) such as [chess](chess.md), [go](go.md) and [shogi](shogi.md), even vidya gaymes (programming them and/or playing them), but only old+libre ones - [games](game.md) such as [chess](chess.md), [go](go.md) and [shogi](shogi.md), even vidya gaymes (programming them and/or playing them), but only old+libre ones
- [jokes](jokes.md) - [jokes](jokes.md)

View file

@ -89,12 +89,16 @@ Now you have to upload this html file to the hosting server -- check out the det
### How To Make A Wiki Like This One ### How To Make A Wiki Like This One
Do NOT use wikifarms (sites that allow you to easily set up your own wiki) like fandom: all are [bloated](bloat.md) and most importantly censored. Also you will tie yourself to their shitty formats, clouds and databases and won't be able to easily migrate. Just avoid this. Do NOT use wikifarms (sites that allow you to easily set up your own wiki) like fandom: all are [bloated](bloat.md) and most importantly [censored](censorship.md). Also you will tie yourself to their shitty formats, clouds and databases and won't be able to easily migrate. Just avoid this.
First step to do is set up some kind of independent "online presence" like a website or gopherhole described above. Then you may either go the mainstream way and set up e.g. MediaWiki (the software used by [Wikipedia](wikipedia.md)) OR, better, do something like our [LRS wiki](lrs_wiki.md) does, i.e. [keep it simple](kiss.md) and start writing articles in some super simple format like [Markdown](md.md), plain [HTML](html.md) or even [plain text](plain_text.md). To convert these articles into a wiki you basically just make a small [shell](shell.md) script that just converts the format you write the articles in to a format you publish them in (so for example Markdown to HTML pages) and possibly automatically creates things like a list of all articles or a simple navigation bar on top of each page. You don't have to know any advanced programming at all, the script can literally be like 5 lines that just invoke [CLI](cli.md) utilities that convert formats and copy files. First step to do is set up some kind of independent "online presence" like a website or gopherhole described above. Then you may either go the mainstream way and set up e.g. MediaWiki (the software used by [Wikipedia](wikipedia.md)) OR, better, do something like our [LRS wiki](lrs_wiki.md) does, i.e. [keep it simple](kiss.md) and start writing articles in some super simple format like [Markdown](md.md), plain [HTML](html.md) or even [plain text](plain_text.md). To convert these articles into a wiki you basically just make a small [shell](shell.md) script that just converts the format you write the articles in to a format you publish them in (so for example Markdown to HTML pages) and possibly automatically creates things like a list of all articles or a simple navigation bar on top of each page. You don't have to know any advanced programming at all, the script can literally be like 5 lines that just invoke [CLI](cli.md) utilities that convert formats and copy files.
If you want, just literally take this wiki and make it your own, you can get the source code (there is link to the git repo somewhere nearby) and it's completely legally [public domain](public_domain.md). It works basically as just described -- you write articles in markdown and convert them to HTML or TXT with a bash script, then you just upload this all to you online hosting (possibly with another script) and voila, it's done. If you want, just literally take this wiki and make it your own, you can get the source code (there is link to the git repo somewhere nearby) and it's completely legally [public domain](public_domain.md). It works basically as just described -- you write articles in markdown and convert them to HTML or TXT with a bash script, then you just upload this all to you online hosting (possibly with another script) and voila, it's done.
### How To Learn Compsci/Programming
TODO: some kinda way/plan to learning this from start to finish
## How To Live, Dos and Don'ts ## How To Live, Dos and Don'ts
This is a summary of some main guidelines on how an LRS supporter should behave in general so as to stay consistent with LRS philosophy, however it is important that this is shouldn't be taken as rules to be blindly followed -- the last thing we want is a religion of brainwashed NPCs who blindly follow orders. One has to understand why these principles are in place and even potentially modify them. This is a summary of some main guidelines on how an LRS supporter should behave in general so as to stay consistent with LRS philosophy, however it is important that this is shouldn't be taken as rules to be blindly followed -- the last thing we want is a religion of brainwashed NPCs who blindly follow orders. One has to understand why these principles are in place and even potentially modify them.
@ -103,23 +107,23 @@ This is a summary of some main guidelines on how an LRS supporter should behave
- **Do NOT [fight](fight_culture.md)**, do NOT say you fight something. Fighting and rhetoric centered around "fighting something" is part of harmful [fight culture](fight_culture.md), most people don't even realize they take part in it. It is important to unlearn this. We do not want to defeat anyone, we want to convince by means of rationality, nonviolence and love. However note that what is unacceptable to do to a living being may be completely acceptable to do to non living object (for example destroying a corporation is OK, in fact it is very desirable). We often take actions that common people would call a "fight" (for example we may organize a strike), however it is important that we don't call it a fight -- a point of view is sometimes as important as the action itself as it will determine our future direction. Remember that [naming is important](name_is_important.md). **Watch out for [A/B fails](fail_ab.md)**. - **Do NOT [fight](fight_culture.md)**, do NOT say you fight something. Fighting and rhetoric centered around "fighting something" is part of harmful [fight culture](fight_culture.md), most people don't even realize they take part in it. It is important to unlearn this. We do not want to defeat anyone, we want to convince by means of rationality, nonviolence and love. However note that what is unacceptable to do to a living being may be completely acceptable to do to non living object (for example destroying a corporation is OK, in fact it is very desirable). We often take actions that common people would call a "fight" (for example we may organize a strike), however it is important that we don't call it a fight -- a point of view is sometimes as important as the action itself as it will determine our future direction. Remember that [naming is important](name_is_important.md). **Watch out for [A/B fails](fail_ab.md)**.
- **Do NOT worship or create [heroes](hero_culture.md), don't become one**. Watch out for [cult of personality](cult_of_personality.md). It is another common mistake to for example call [Richard Stallman](rms.md) a "hero of free software" and to even worship him as a celebrity. The concept of a hero is [harmful](harmful.md), rightist concept that is connected to war mentality, it goes against [anarchist](anarchism.md) principles, it creates social hierarchy and given some people a power to deceive. People are imperfect and make mistake -- only ideas can be perfect. Respect people but don't make anyone your moral compass, you should rather subscribe to specific ideas, i.e. rather than worshipping Stallman subscribe to and promote his idea of [free software](free_software.md). - **Do NOT worship or create [heroes](hero_culture.md), don't become one**. Watch out for [cult of personality](cult_of_personality.md). It is another common mistake to for example call [Richard Stallman](rms.md) a "hero of free software" and to even worship him as a celebrity. The concept of a hero is [harmful](harmful.md), rightist concept that is connected to war mentality, it goes against [anarchist](anarchism.md) principles, it creates social hierarchy and given some people a power to deceive. People are imperfect and make mistake -- only ideas can be perfect. Respect people but don't make anyone your moral compass, you should rather subscribe to specific ideas, i.e. rather than worshipping Stallman subscribe to and promote his idea of [free software](free_software.md).
- **Do not [identify](identity.md) with specific groups and organizations** -- this one is tricky because there is a fine line between many people together agreeing on an idea (good) and those people creating a formal hierarchical group which sooner or later inevitably becomes [fascist](fascism.md) or at the very least corrupt, eventually to the degree of betraying its original beliefs (bad). Remember principles of [anarchism](anarchism.md): loosely associate with others but do not create power structures and hierarchies. An example here may be supporting [free software](free_software.md) (good) vs supporting the (now greatly corrupt) [Free Software Foundation](fsf.md) (bad). Free software as an idea is pure and good, in merely supporting the idea we will not create any hierarchy of people, power structures or attach other unrelated ideas to ride on the free software wave (e.g. that of [political correctness](political_correctness.md) now promoted by the FSF). They say there is strength in unity, that is true, but there are different kinds of unity, and if perhaps one kind of unity (the bad one) is momentarily stronger, it is so because it's the "dark side of the force": yes, it may be stronger, but it is evil. Resist this urge. For this we also don't want to start any formal [LRS](lrs.md) group. - **Do not [identify](identity.md) with specific groups and organizations** -- this one is tricky because there is a fine line between many people together agreeing on an idea (good) and those people creating a formal hierarchical group which sooner or later inevitably becomes [fascist](fascism.md) or at the very least corrupt, eventually to the degree of betraying its original beliefs (bad). Remember principles of [anarchism](anarchism.md): loosely associate with others but do not create power structures and hierarchies. An example here may be supporting [free software](free_software.md) (good) vs supporting the (now greatly corrupt) [Free Software Foundation](fsf.md) (bad). Free software as an idea is pure and good, in merely supporting the idea we will not create any hierarchy of people, power structures or attach other unrelated ideas to ride on the free software wave (e.g. that of [political correctness](political_correctness.md) now promoted by the FSF). They say there is strength in unity, that is true, but there are different kinds of unity, and if perhaps one kind of unity (the bad one) is momentarily stronger, it is so because it's the "dark side of the force": yes, it may be stronger, but it is evil. Resist this urge. For this we also don't want to start any formal [LRS](lrs.md) group.
- **CREATE, do NOT waste your life on bullshit, do NOT get too obsessed with tools and hopping** such as [distrohopping](distrohopping.md), [githopping](githopping.md) [audiophilia](audiophilia.md), hardware consumerism, 100% minimalist perfectionism etc. The perfect is the enemy of the good. Remember, the goal of your life is to create something new and better; too many people just get stuck doing nothing but switch distros, rant about which editor is best, making sure their OS has zero bloat and zero proprietary code etc. If that's all you do, it's completely useless, your life is completely wasted. Dedicate time to creating art that will last, e.g. programming [LRS](lrs.md) (creating source code text) or making free cultural art -- it doesn't matter whether you create it with Ubuntu or Gentoo. - **CREATE, do NOT waste your life on [bullshit](bullshit.md), do NOT get too obsessed with tools and hopping** such as [distrohopping](distrohopping.md), [githopping](githopping.md) [audiophilia](audiophilia.md), hardware consumerism, 100% minimalist perfectionism etc. The perfect is the enemy of the good. Remember, the goal of your life is to create something new and better; too many people just get stuck doing nothing but switch distros, rant about which editor is best, making sure their OS has zero bloat and zero proprietary code etc. If that's all you do, it's completely useless, your life is completely wasted. Dedicate time to creating art that will last, e.g. programming [LRS](lrs.md) (creating source code text) or making free cultural art -- it doesn't matter whether you create it with Ubuntu or Gentoo.
- **Lead an example**, this is the best way to spread our values, however be also extremely careful not to become a worshipped [authority](hero_culture.md). Know the difference between a humble intellectual authority and an authoritative self-centered celebrity who uses his fame for deception. The more famous you are, the more humble you should become. - **Lead an example**, this is the best way to spread our values, however be also extremely careful not to become a worshipped [authority](hero_culture.md). Know the difference between a humble intellectual authority and an authoritative self-centered celebrity who uses his fame for deception. The more famous you are, the more humble you should become.
- **Be [loving](love.md), even towards opposition** -- remember: hate and revenge towards people perpetuates the endless circle. [Love](love.md) leads to more love, understanding, good deeds, friendship, happiness, collaboration and all the other positive things. **Do not confuse love with [political correctness](political_correctness.md)**. You may get angry or frustrated, just don't get violent against, rather try to break something, write your anger out, play some video game etc. - **Be [loving](love.md), even towards opposition** -- remember: hate and revenge towards people perpetuates the endless circle. [Love](love.md) leads to more love, understanding, good deeds, friendship, happiness, collaboration and all the other positive things. **Do not confuse love with [political correctness](political_correctness.md)**. You may get angry or frustrated, just don't get violent against, rather try to break something, write your anger out, play some video game etc.
- **Don't be [politically correct](political_correctness.md)**, never use gender neutral pronouns (always use "he" as the default pronoun), don't be afraid to say forbidden words like [nigger](nigger.md), never use any [code of coercion](coc.md), "personal pronouns" etc. Even if you think you're moderate in views and that it "can't hurt" to just "play along" a little bit, IT DOES HURT, you are approving of fascism and carrying its flag, remember that Nazism only got so big thanks to a nation of moderate people who just "played along" to avoid trouble. There is always only very few true extremists, a great evil relies on masses of people who just want to get by and will make no trouble in conforming. - **Don't be [politically correct](political_correctness.md)**, never use gender neutral pronouns (always use "he" as the default pronoun), don't be afraid to say forbidden words like [nigger](nigger.md), never use any [code of coercion](coc.md), "personal pronouns" etc. Even if you think you're moderate in views and that it "can't hurt" to just "play along" a little bit, IT DOES HURT, you are approving of fascism and carrying its flag, remember that Nazism only got so big thanks to a nation of moderate people who just "played along" to avoid trouble. There is always only very few true extremists, a great evil relies on masses of people who just want to get by and will make no trouble in conforming. Remember that staying silent often means supporting status quo, so the more deceit you see in society, the more you should try to not stay silent and the more you should try to tell the truth.
- **Try to do [selfless](selflessness.md) things** -- TRULY selfless ones. Help those in need without expecting any kind of repay, do not even seek attention or gratitude for it, only your good feeling. Create selfless art, whatever it is you enjoy doing -- computer programs, 3D models, music, videos, ... put them in the [public domain](public_domain.md) and let others enjoy them :) Try to **make doing good things a habit** -- some people smoke, drink, overeat and do other kinds of things harmful to themselves and their environment as means for relieving stress. If you exploit this natural human tendency and rather develop GOOD habits, such as writing free software or helping charities as a means of relaxing and relieving stress, you have won at life; doing good and feeling good will be natural and effortless. **The thing you dedicate your life to should be the thing you love, not the thing that earns you money** or benefits you in similar ways -- try to maximize doing what you love (which may and probably should be more than one thing) and also **try to love doing what is good** so that you can do it a lot. **If you love something, never do it for money**; then it becomes business and as we know, business spoils everything. - **Try to do [selfless](selflessness.md) things** -- TRULY selfless ones. Help those in need without expecting any kind of repay, do not even seek attention or gratitude for it, only your good feeling. Create selfless art, whatever it is you enjoy doing -- computer programs, 3D models, music, videos, ... put them in the [public domain](public_domain.md) and let others enjoy them :) Try to **make doing good things a habit** -- some people smoke, drink, overeat and do other kinds of things harmful to themselves and their environment as means for relieving stress. If you exploit this natural human tendency and rather develop GOOD habits, such as writing free software or helping charities as a means of relaxing and relieving stress, you have won at life; doing good and feeling good will be natural and effortless. **The thing you dedicate your life to should be the thing you love, not the thing that earns you money** or benefits you in similar ways -- try to maximize doing what you love (which may and probably should be more than one thing) and also **try to love doing what is good** so that you can do it a lot. **If you love something, never do it for money**; then it becomes business and as we know, business spoils everything.
- **Protest in non-violent ways** -- this doesn't mean you should be passive; you should be exposing the truth, propaganda, corruption, boycotting corporations and state, promoting your values and expressing disagreement with certain ideas, but do not aim for destruction of those who stand in opposition -- if you're attacked, it is best if you do not fight back; not only is this the morally ideal thing to do, it also sends a very powerful message and makes the aggressor himself think. - **Protest in non-violent ways** -- this doesn't mean you should be passive; you should be exposing the truth, propaganda, corruption, boycotting corporations and state, promoting your values and expressing disagreement with certain ideas, but do not aim for destruction of those who stand in opposition -- if you're attacked, it is best if you do not fight back; not only is this the morally ideal thing to do, it also sends a very powerful message and makes the aggressor himself think.
- **Try to be so that if everyone was like that, the society would be good (in agreement with [LRS](less_retarded_society.md))** -- this is a good general [rule of thumb](rule_of_thumb.md) (and as such may also possibly fail sometimes, be careful) that can help you make some difficult decisions. DO NOT confuse this advice with the ["do unto others as you would have them do unto you"](do_unto_others.md) advice, that is indeed a [shitty](shit.md) one, supposing everyone likes the same things, i.e. for example a man who enjoys being [raped](rape.md) is advised here to go and rape others -- that's of course bad. - **Try to be so that if everyone was like that, the society would be good (in agreement with [LRS](less_retarded_society.md))** -- this is a good general [rule of thumb](rule_of_thumb.md) (and as such may also possibly fail sometimes, be careful) that can help you make some difficult decisions. DO NOT confuse this advice with the ["do unto others as you would have them do unto you"](do_unto_others.md) advice, that is indeed a [shitty](shit.md) one, supposing everyone likes the same things, i.e. for example a man who enjoys being [raped](rape.md) is advised here to go and rape others -- that's of course bad.
- **Do NOT support [pseudoleft](pseudoleft.md) ([LGBT](lgbt.md), [feminism](feminism.md), [Antifa](antifa.md), [soyence](soyence.md) ...)**, don't become [type A fail](fail_ab.md). Of course you should equally reject [rightism](right.md), but that goes without saying. - **Do NOT support [pseudoleft](pseudoleft.md) ([LGBT](lgbt.md), [feminism](feminism.md), [Antifa](antifa.md), [soyence](soyence.md) ...)**, don't become [type A fail](fail_ab.md). Of course you should equally reject [rightism](right.md), but that goes without saying.
- **Do NOT engage in [political correctness](political_correctness.md)**. Remember that staying silent often means supporting status quo, so the more deceit you see in society, the more you should try to not stay silent and the more you should try to tell the truth.
- **[Free](freedom.md) yourself from the system** (and generally from as many things as possible) -- similarly to how you free yourself technologically, free yourself also socially, live frugally and minimize your expenses. Stop consuming, stop living in luxury, stop spending money for shit (gyms, sports, clothes, car, streaming services, games, cigarettes, ...), use free things that people throw away and enjoy hobbies that are cheap (programming, reading books, going for walks, playing chess, collecting [rocks](rock.md), ...). **Stop watching news** (it's just brainwashing and distraction, what's really important will get to you anyway), stop engaging in fashion, stop talking to retards and watching tiktok manipulators. You need very little to live, you don't even need internet connection; with good computing you can hack offline and only connect to the internet once in a while on some public wifi to download emails and upload your programs. **Stop using [cellphone](phone.md)** (if you need it e.g. for banking, just use it for banking and don't carry it around with you, don't make it something you need with you). Make yourself self sufficient, prepare for the [collapse](collapase.md). If you can live somewhere in the woods and would enjoy it, go for it. - **[Free](freedom.md) yourself from the system** (and generally from as many things as possible) -- similarly to how you free yourself technologically, free yourself also socially, live frugally and minimize your expenses. Stop consuming, stop living in luxury, stop spending money for shit (gyms, sports, clothes, car, streaming services, games, cigarettes, ...), use free things that people throw away and enjoy hobbies that are cheap (programming, reading books, going for walks, playing chess, collecting [rocks](rock.md), ...). **Stop watching news** (it's just brainwashing and distraction, what's really important will get to you anyway), stop engaging in fashion, stop talking to retards and watching tiktok manipulators. You need very little to live, you don't even need internet connection; with good computing you can hack offline and only connect to the internet once in a while on some public wifi to download emails and upload your programs. **Stop using [cellphone](phone.md)** (if you need it e.g. for banking, just use it for banking and don't carry it around with you, don't make it something you need with you). Make yourself self sufficient, prepare for the [collapse](collapase.md). If you can live somewhere in the woods and would enjoy it, go for it.
- **Adopt [defeatism](defeatism.md)**, that stops you from engaging in [fight culture](fight_culture.md) and makes you free to behave morally, you will seize to be the slave of bullshit necessary for winning the capitalist game and you'll no longer be working for [capitalism](capitalism.md). - **Adopt [defeatism](defeatism.md)**, that stops you from engaging in [fight culture](fight_culture.md) and makes you free to behave morally, you will seize to be the slave of bullshit necessary for winning the capitalist game and you'll no longer be working for [capitalism](capitalism.md).
- **Search for [truth](truth.md)**. You won't find it easily, real truth is always censored and hidden (though often in plain sight), but you can train yourself to spot propaganda and see the red flags. You won't find truth through Google, use different sources, read old books, [encyclopedias](encyclopedia.md) and different points of view (e.g. contrast articles on [Wikipedia](wikipedia.md) with those on [Infogalactic](infogalactic.d)). Learn foreign and old langages such as [Latin](latin.md) so that you can read untranslated and first hand historical accounts. **Question EVERYTHING** (absolutely everything, even this statement). Do not fall into traps such as [pseudoskepticism](pseudoskepticism.md). Train your mind to think critically, avoid [shortcut thinking](shortcut_thinking.md), question your own biased beliefs and wishes. - **Search for the [truth](truth.md)**. You won't find it easily, real truth is always censored and hidden (though often in plain sight), but you can train yourself to spot propaganda and see the red flags. You won't find truth through Google, use different sources, read old books, [encyclopedias](encyclopedia.md) and different points of view (e.g. contrast articles on [Wikipedia](wikipedia.md) with those on [Infogalactic](infogalactic.d)). Learn foreign and old langages such as [Latin](latin.md) so that you can read untranslated and first hand historical accounts. **Question EVERYTHING** (absolutely everything, even this statement). Do not fall into traps such as [pseudoskepticism](pseudoskepticism.md). Train your mind to think critically, avoid [shortcut thinking](shortcut_thinking.md), question your own biased beliefs and wishes.
- **Reject harmful things like [proprietary](proprietary.md) software, [capitalism](capitalism.md), [copyright](copyright.md), [bloat](bloat.md), [work](work.md) etc.** Use and promote the ethical equivalents, i.e. [free software](free_software.md), [free culture](free_culture.md), frugality, [anarchism](anarchism.md) etc. - **Reject harmful things like [proprietary](proprietary.md) software, [capitalism](capitalism.md), [copyright](copyright.md), [bloat](bloat.md), [work](work.md) etc.** Use and promote the ethical equivalents, i.e. [free software](free_software.md), [free culture](free_culture.md), frugality, [anarchism](anarchism.md) etc.
- **[Don't argue with retards](cant_argue_with_idiot.md)** with the goal of convincing him or winning the argument so that you feel good (the meaning of retard here is not someone with low IQ but rather someone who isn't really open to the ideas or LRS, though these are mostly the same people). It's literally wasted time/energy and it's bad for your mental health, it leads nowhere and achieves nothing. You literally can NOT convince anyone who is not open to being convinced, it is impossible, even if you have 100000 mathematical proofs, real world evidence, literature supporting you and anything you can imagine, you cannot logically convince someone who doesn't know how logic works or someone who simply emotionally isn't ready to change his mind. NO, not even if he's an "intellectual", has PhD and Nobel Prize, if he doesn't wanna see the truth, you cannot help him. As it's been said, trying to argue with an idiot is like trying to win a chess game against a pidgeon -- even if you're the world chess champion, the pidgeon will just shit on the board and think it's won. If you spot a retard, just leave -- don't try to have the last word or anything, even admit him "victory" in the argument and leave him in his world of delusion where he is the unappreciated Einstein, just do not waste an extra second on him, just leave and go do something better. { So many such idiots I have met I can't even count it -- pure stupid peasant aren't even that bad, the wost are the "above averge" intelligence reddit atheists who think they're smart. I literally had such people argue like "you like games therefore competition in society is good because games are part of society therefore society equals competition". Truly I'm not sure if those bastards are just trolling me into suicide or are really so fucking dumb :D ~drummyfish } - **[Don't argue with retards](cant_argue_with_idiot.md)** with the goal of convincing him or winning the argument so that you feel good (the meaning of retard here is not someone with low IQ but rather someone who isn't really open to the ideas or LRS, though these are mostly the same people). It's literally wasted time/energy and it's bad for your mental health, it leads nowhere and achieves nothing. You literally can NOT convince anyone who is not open to being convinced, it is impossible, even if you have 100000 mathematical proofs, real world evidence, literature supporting you and anything you can imagine, you cannot logically convince someone who doesn't know how logic works or someone who simply emotionally isn't ready to change his mind. NO, not even if he's an "intellectual", has PhD and Nobel Prize, if he doesn't wanna see the truth, you cannot help him. As it's been said, trying to argue with an idiot is like trying to win a chess game against a pidgeon -- even if you're the world chess champion, the pidgeon will just shit on the board and think it's won. If you spot a retard, just leave -- don't try to have the last word or anything, even admit him "victory" in the argument and leave him in his world of delusion where he is the unappreciated Einstein, just do not waste an extra second on him, just leave and go do something better. { So many such idiots I have met I can't even count it -- pure stupid peasant aren't even that bad, the wost are the "above averge" intelligence reddit atheists who think they're smart. I literally had such people argue like "you like games therefore competition in society is good because games are part of society therefore society equals competition". Truly I'm not sure if those bastards are just trolling me into suicide or are really so fucking dumb :D ~drummyfish }
- Similarly **avoid [toxic](toxic.md) communities**, don't argue, just leave, it's better to be alone than in bad company. Basically anything with a COC, language filter, SJW vibe, rainbow etc. isn't even more worth checking out. - Similarly **avoid [toxic](toxic.md) communities**, don't argue, just leave, it's better to be alone than in bad company. Basically anything with a COC, language filter, SJW vibe, rainbow etc. isn't even more worth checking out.
- **Be a [generalist](generalism.md), see the big picture, study the whole world**, do not become overspecialized in the capitalist way. Sure you may become an expert at something, but it shouldn't make your view of the world too narrow. You may spend most of your time studying and programming computer compilers for example, but still do (and enjoy) other things, for example reading fiction, studying religions, languages, psychology, playing [go](go.md), making music, building houses, painting, doing sports, ... - **Be a [generalist](generalism.md), see the big picture, study the whole world**, do not become overspecialized in the capitalist way. Sure you may become an expert at something, but it shouldn't make your view of the world too narrow. You may spend most of your time studying and programming computer compilers for example, but still do (and enjoy) other things, for example reading fiction, studying religions, languages, psychology, playing [go](go.md), making music, building houses, painting, doing sports, ...
- **Live your life as you want**, don't let someone else control your life and manipulate you, e.g. with feelings of guilt -- this often happens with your parents, partner, friends, culture, laws, ... This isn't an argument for self interest! On the contrary, most people nowadays will try to push you to following self interest or fascist goals that will also benefit them. You only have one life, others have theirs, so listen to advice but remember to always make your own decisions in important things. If you feel you don't want to go to school or that you don't want to work or that you want to do something that people despise or you want to do something that you've read is wrong, just do what you feel is best, even if it's a let down for your family or if it contradicts what the whole society is telling you. - **Live your life as you want**, don't let someone else control your life and manipulate you, e.g. with feelings of guilt -- this often happens with your parents, partner, friends, culture, laws, ... This isn't an argument for self interest! On the contrary, most people nowadays will try to push you to following self interest or fascist goals that will also benefit them. You only have one life, others have theirs, so listen to advice but remember to always make your own decisions in important things. If you feel you don't want to go to school or that you don't want to work or that you want to do something that people despise or you want to do something that you've read is wrong, just do what you feel is best, even if it's a let down for your family or if it contradicts what the whole society is telling you.
- PRO TIP: **Get yourself [banned](ban.md) on toxic platforms** like [Wikipedia](wikipedia.md), [GitHub](github.md), [Steam](steam.md), [4chan](4chan.md) etcetc., it has many advantages -- you gain [freedom](freedom.md) (no longer having to care about platform you are banned on), the platform loses one user/slave (you), you stop being abused by the platform, it's also [fun](fun.md) (just find some creative way to get banned, possibly cause uprising on the platform, make mods angry and waste their time on cleaning up your mess), it will make you become more self sufficient and you help decentralize the Internet again (can't edit Wikipedia? Just make your own :-]), it will make you find better places, you may also help bring the toxic platform down (others will see the platform utilizes censorship, some may follow you in leaving...) etcetc.
- ... - ...
## How Not To Get Depressed Living In This Shitty Dystopia ## How Not To Get Depressed Living In This Shitty Dystopia

View file

@ -4,4 +4,4 @@ Piracy is a capitalist propaganda term for the act of illegally sharing copyrigh
It is greatly admirable to support piracy, however also keep in mind the following: if you pirate a [proprietary](proprietary.md) piece of information, you get it gratis but it stays proprietary, it abuses you, it limits your freedom -- you won't get the source code, you won't be able to publicly host it without being bullied, you won't be allowed to legally create and share derivative works etc. Therefore **prefer [free (as in freedom)](free_culture.md) alternatives to piracy**, i.e. pieces of information that are not only gratis but also freedom supporting. It is greatly admirable to support piracy, however also keep in mind the following: if you pirate a [proprietary](proprietary.md) piece of information, you get it gratis but it stays proprietary, it abuses you, it limits your freedom -- you won't get the source code, you won't be able to publicly host it without being bullied, you won't be allowed to legally create and share derivative works etc. Therefore **prefer [free (as in freedom)](free_culture.md) alternatives to piracy**, i.e. pieces of information that are not only gratis but also freedom supporting.
{ Where to pirate stuff? See e.g. https://www.reddit.com/r/Piracy/wiki/megathread. ~drummyfish } { Where to pirate stuff? See e.g. https://www.reddit.com/r/Piracy/wiki/megathread and https://piracy.vercel.app. ~drummyfish }

View file

@ -18,6 +18,8 @@ Usenet was the pre-[web](www.md) web, kind of like an 80s [reddit](reddit.md) wh
Search for Usenet archives, I've found some sites dedicated to this, also [Internet archive](internet_archive.md) has some newsgroups archived. [Google](google.md) has Usenet archives on a website called "Google groups" (now sadly requires login). There is a nice archive at https://www.usenetarchives.com. Possibly guys from Archive Team can help (https://wiki.archiveteam.org/index.php/Usenet, https://archive.org/details/usenet, ...). See also http://www.eternal-september.org. There is an archive from 1981 accessible through [gopher](gopher.md) at gopher://gopher.quux.org/1/Archives/usenet-a-news. Also https://yarchive.net/. Search for Usenet archives, I've found some sites dedicated to this, also [Internet archive](internet_archive.md) has some newsgroups archived. [Google](google.md) has Usenet archives on a website called "Google groups" (now sadly requires login). There is a nice archive at https://www.usenetarchives.com. Possibly guys from Archive Team can help (https://wiki.archiveteam.org/index.php/Usenet, https://archive.org/details/usenet, ...). See also http://www.eternal-september.org. There is an archive from 1981 accessible through [gopher](gopher.md) at gopher://gopher.quux.org/1/Archives/usenet-a-news. Also https://yarchive.net/.
{ Also here's some stuff https://old.reddit.com/r/usenet/wiki/index. ~drummyfish }
## See Also ## See Also
- [BBS](bbs.md) - [BBS](bbs.md)

View file

@ -2,8 +2,8 @@
This is an auto-generated article holding stats about this wiki. This is an auto-generated article holding stats about this wiki.
- number of articles: 532 - number of articles: 534
- total size of all texts in bytes: 2670984 - total size of all texts in bytes: 2689486
longest articles: longest articles:
@ -23,6 +23,14 @@ longest articles:
latest changes: latest changes:
``` ```
Date: Wed Jan 3 22:30:48 2024 +0100
books.md
complexity.md
computational_complexity.md
corporation.md
jokes.md
wiki_stats.md
work.md
Date: Tue Jan 2 15:42:07 2024 +0100 Date: Tue Jan 2 15:42:07 2024 +0100
acronym.md acronym.md
bloat.md bloat.md
@ -48,13 +56,5 @@ fight_culture.md
function.md function.md
history.md history.md
how_to.md how_to.md
less_retarded_society.md
marxism.md
portability.md
programming_language.md
programming_tips.md
usa.md
wiki_stats.md
Date: Sun Dec 31 01:01:53 2023 +0100
``` ```