Update
This commit is contained in:
parent
d624e17688
commit
c0fb21debe
21 changed files with 2001 additions and 1985 deletions
|
@ -12,6 +12,7 @@ Here is a list of some acronyms:
|
||||||
- **[ADSL](adsl.md)** (asymmetric digital subscriber line)
|
- **[ADSL](adsl.md)** (asymmetric digital subscriber line)
|
||||||
- **[AF](af.md)** (as fuck)
|
- **[AF](af.md)** (as fuck)
|
||||||
- **[AFAIK](afaik.md)** (as far as I know)
|
- **[AFAIK](afaik.md)** (as far as I know)
|
||||||
|
- **[AFK](afk.md)** (away from keyboard)
|
||||||
- **[AJAX](ajax.md)** (asynchronous [JavaScript](js.md) and [XML](xml.md))
|
- **[AJAX](ajax.md)** (asynchronous [JavaScript](js.md) and [XML](xml.md))
|
||||||
- **[AFK](afk.md)** (away from keyboard)
|
- **[AFK](afk.md)** (away from keyboard)
|
||||||
- **[ALU](alu.md)** (arithmetic logic unit)
|
- **[ALU](alu.md)** (arithmetic logic unit)
|
||||||
|
@ -44,6 +45,7 @@ Here is a list of some acronyms:
|
||||||
- **[BIOS](bios.md)** (basic [input/output](io.md) system)
|
- **[BIOS](bios.md)** (basic [input/output](io.md) system)
|
||||||
- **[BJ](bj.md)** (blow job)
|
- **[BJ](bj.md)** (blow job)
|
||||||
- **[BJT](bjt.md)** (bipolar junction transistor)
|
- **[BJT](bjt.md)** (bipolar junction transistor)
|
||||||
|
- **[BRB](brb.md)** (be right back)
|
||||||
- **[BS](bs.md)** (bullshit)
|
- **[BS](bs.md)** (bullshit)
|
||||||
- **[BSD](bsd.md)** (Berkeley software distribution)
|
- **[BSD](bsd.md)** (Berkeley software distribution)
|
||||||
- **[BTFO](btfo.md)** (blown the fuck out)
|
- **[BTFO](btfo.md)** (blown the fuck out)
|
||||||
|
|
12
aliasing.md
12
aliasing.md
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
*See also [antialiasing](antialiasing.md).*
|
*See also [antialiasing](antialiasing.md).*
|
||||||
|
|
||||||
Aliasing is a certain typically undesirable phenomenon that distorts [signals](signal.md) (such as sounds or images) when they are [sampled](sampling.md) [discretely](discrete.md) (captured at single points, usually at periodic intervals) -- this can happen e.g. when capturing sound with digital recorders or when [rendering](rendering.md) computer graphics. There exist [antialiasing](antialiasing.md) methods for suppressing or even eliminating aliasing. Aliasing can be often seen on small checkerboard patterns as a moiré pattern (spatial aliasing), or maybe more famously on rotating wheels or helicopter rotor blades that in a video look like standing still or rotating the other way (temporal aliasing, caused by capturing images at intervals given by the camera's [FPS](fps.md)).
|
Aliasing is a certain typically undesirable phenomenon that distorts [signals](signal.md) (such as sounds or images) when they are [sampled](sampling.md) [discretely](discrete.md) (captured at single points, usually at periodic intervals) -- this can occur e.g. when capturing sound with digital recorders or when [rendering](rendering.md) computer [graphics](graphics.md). There exist [antialiasing](antialiasing.md) methods for suppressing or even eliminating aliasing. Aliasing can be often seen on small checkerboard patterns as a moire pattern (spatial aliasing), or maybe more famously on rotating wheels or helicopter rotor blades that in a video look like standing still or rotating the other way (temporal aliasing, caused by capturing images at intervals given by the camera's [FPS](fps.md)).
|
||||||
|
|
||||||
A simple example showing how sampling at discrete points can quite dramatically alter the recorded result:
|
A simple example showing how sampling at discrete points can quite dramatically alter the recorded result:
|
||||||
|
|
||||||
|
@ -42,20 +42,20 @@ V : : : :
|
||||||
V
|
V
|
||||||
```
|
```
|
||||||
|
|
||||||
The top signal is a [sine](sin.md) function of a certain [frequency](frequency.md). We are sampling this signal at periodic intervals indicated by the vertical lines (this is how e.g. digital sound recorders record sounds from the real world). Below we see that the samples we've taken make it seem as if the original signal was a sine wave of a much lower frequency. It is in fact impossible to tell from the recorded samples what the original signal looked like.
|
The top signal is a [sine](sin.md) function with certain [frequency](frequency.md). We are sampling the signal at periodic intervals indicated by the vertical lines (this is how e.g. digital sound recorders record sounds from the real world). Below we observe that the samples we've taken make it seem as if the original signal was a sine wave of a much lower frequency. It is in fact impossible to tell from the recorded samples what the original signal looked like.
|
||||||
|
|
||||||
Let's note that signals can also be two and more dimensional, e.g. images can be viewed as 2D signals. These are of course affected by aliasing as well.
|
Let's note that signals can also be two and more dimensional, e.g. images may be understood as 2D signals. These are of course affected by aliasing as well.
|
||||||
|
|
||||||
The explanation above shows why a helicopter's rotating blades look to stand still in a video whose [FPS](fps.md) is synchronized with the rotation -- at any moment the camera captures a frame (i.e. takes a sample), the blades are in the same position as before, hence they appear to not be moving in the video.
|
The explanation above reveals why a helicopter's rotating blades look to stand still in a video whose [FPS](fps.md) is synchronized with the rotation -- at any moment the camera captures a frame (i.e. takes a sample), the blades are in the same position as before, hence they appear to not be moving in the video.
|
||||||
|
|
||||||
Of course this doesn't only happen with perfect sine waves. [Fourier transform](fourier_transform.md) shows that any signal can be represented as a sum of different sine waves, so aliasing can appear anywhere.
|
Of course this doesn't only happen with perfect sine waves. [Fourier transform](fourier_transform.md) shows that any signal can be represented as a sum of different sine waves, so aliasing can appear anywhere.
|
||||||
|
|
||||||
**Nyquist-Shannon sampling theorem** says that aliasing can NOT appear if we sample with at least twice as high frequency as that of the highest frequency in the sampled signal. This means that we can eliminate aliasing by using a [low pass filter](low_pass.md) before sampling which will eliminate any frequencies higher than the half of our sampling frequency. This is why audio is normally sampled with the rate of 44100 Hz -- from such samples it is possible to correctly reconstruct frequencies up to about 22000 Hz which is about the upper limit of human hearing.
|
**Nyquist-Shannon sampling theorem** says that aliasing can NOT appear if we sample with at least twice as high frequency as that of the highest frequency in the sampled signal. This means that we can eliminate aliasing by using a [low pass filter](low_pass.md) before sampling which will eliminate any frequencies higher than the half of our sampling frequency. This is why audio is normally sampled with the rate of 44100 Hz -- from such samples it is possible to correctly reconstruct frequencies up to about 22000 Hz which is about the upper limit of human hearing.
|
||||||
|
|
||||||
Aliasing is also a common problem in [computer graphics](computer_graphics.md). For example when rendering textured 3D models, aliasing can appear in the texture if that texture is rendered at a smaller size than its resolution (when the texture is enlarged by rendering, aliasing can't appear because enlargement decreases the frequency of the sampled signal and the sampling theorem won't allow it to happen). (Actually if we don't address aliasing somehow, having lower resolution textures can unironically have beneficial effects on the quality of graphics.) This happens because texture samples are normally taken at single points that are computed by the texturing algorithm. Imagine that the texture consists of high-frequency details such as small checkerboard patterns of black and white pixels; it may happen that when the texture is rendered at lower resolution, the texturing algorithm chooses to render only the black pixels. Then when the model moves a little bit it may happen the algorithm will only choose the white pixels to render. This will result in the model blinking and alternating between being completely black and completely white (while it should rather be rendered as gray).
|
Aliasing also presents a common problem in [computer graphics](computer_graphics.md). For instance when rendering textured 3D models, aliasing can appear in the texture if that texture is rendered at a smaller size than its resolution (when the texture is enlarged by rendering, aliasing can't appear because enlargement decreases the frequency of the sampled signal and the sampling theorem won't allow it to happen). (Actually if we don't address aliasing somehow, having lower resolution textures can unironically have beneficial effects on the quality of graphics.) This happens because texture samples are normally taken at single points that are computed by the texturing algorithm. Imagine that the texture consists of high-frequency details such as small checkerboard patterns of black and white pixels; it may happen that when the texture is rendered at lower resolution, the texturing algorithm chooses to render only the black pixels. Then when the model moves a little bit it may happen the algorithm will only choose the white pixels to render. This will result in the model blinking and alternating between being completely black and completely white (while it should rather be rendered as gray).
|
||||||
|
|
||||||
The same thing may happen in [ray tracing](ray_tracing.md) if we shoot a single sampling ray for each screen pixel. Note that [interpolation/filtering](interpolation.md) of textures won't fix texture aliasing. What can be used to reduce texture aliasing are e.g. by [mipmaps](mipmap.md) which store the texture along with its lower resolution versions -- during rendering a lower resolution of the texture is chosen if the texture is rendered as a smaller size, so that the sampling theorem is satisfied. However this is still not a silver bullet because the texture may e.g. be shrink in one direction but enlarged in other dimension (this is addressed by [anisotropic filtering](anisotropic_filtering.md)). However even if we sufficiently suppress aliasing in textures, aliasing can still appear in geometry. This can be reduced by [multisampling](multisampling.md), e.g. sending multiple rays for each pixel and then averaging their results -- by this we **increase our sampling frequency** and lower the probability of aliasing.
|
The same thing may happen in [ray tracing](ray_tracing.md) if we shoot a single sampling ray for each screen pixel. Note that [interpolation/filtering](interpolation.md) of textures won't fix texture aliasing. What can be used to reduce texture aliasing are e.g. by [mipmaps](mipmap.md) which store the texture along with its lower resolution versions -- during rendering a lower resolution of the texture is chosen if the texture is rendered as a smaller size, so that the sampling theorem is satisfied. However this is still not a silver bullet because the texture may e.g. be shrink in one direction but enlarged in other dimension (this is addressed by [anisotropic filtering](anisotropic_filtering.md)). However even if we sufficiently suppress aliasing in textures, aliasing can still appear in geometry. This can be reduced by [multisampling](multisampling.md), e.g. sending multiple rays for each pixel and then averaging their results -- by this we **increase our sampling frequency** and lower the probability of aliasing.
|
||||||
|
|
||||||
**Why doesn't aliasing happen in our eyes and ears?** Because our senses don't sample the world discretely, i.e. in single points -- our senses [integrate](integration.md). E.g. a rod or a cone in our eyes doesn't just see exactly one point in the world but rather an averaged light over a small area (which is ideally right next to another small area seen by another cell, so there is no information to "hide" in between them), and it also doesn't sample the world at specific moments like cameras do, its excitation by light falls off gradually which averages the light over time, preventing temporal aliasing (instead of aliasing we get [motion blur](motion_blur.md)). Also our brain does a lot of filtering and postprocessing of the raw input, what we see is not really what comes out of the retina, so EVEN IF there was a bit of aliasing here and there (because of some blind spots or something maybe?), the brain would probably learn to filter it out with "AI-style" magic, just like it filters out noise in low light conditions and so on.
|
**Why doesn't aliasing happen in our eyes and ears?** Because our senses don't sample the world discretely, i.e. in single points -- our senses [integrate](integration.md). The rods and cones in our eyes doesn't just see exactly one point in the world but rather an averaged light over a small area (which is ideally right next to another small area seen by another cell, so there is no information to "hide" in between them), and it also doesn't sample the world at specific moments like cameras do, its excitation by light falls off gradually which averages the light over time, preventing temporal aliasing (instead of aliasing we get [motion blur](motion_blur.md)). Also our brain does a lot of filtering and postprocessing of the raw input, what we see is not really what comes out of the retina, so EVEN IF there was a bit of aliasing here and there (because of some blind spots or something maybe?), the brain would probably learn to filter it out with "AI-style" magic, just like it filters out noise in low light conditions and so on.
|
||||||
|
|
||||||
So all in all, **how to prevent aliasing?** As said above, we always try to satisfy the sampling theorem, i.e. make our sampling frequency at least twice as high as the highest frequency in the signal we're sampling, or at least get close to this situation and lower the probability of aliasing. This can be done by either increasing sampling frequency (which can be done smart, some methods try to detect where sampling should be denser), or by preprocessing the input signal with a low pass filter or otherwise ensure there won't be too high frequencies (e.g. using lower resolution textures).
|
So all in all, **how to prevent aliasing?** As said above, we always try to satisfy the sampling theorem, i.e. make our sampling frequency at least twice as high as the highest frequency in the signal we're sampling, or at least get close to this situation and lower the probability of aliasing. This can be done by either increasing sampling frequency (which can be done smart, some methods try to detect where sampling should be denser), or by preprocessing the input signal with a low pass filter or otherwise ensure there won't be too high frequencies (e.g. using lower resolution textures).
|
|
@ -1,17 +1,17 @@
|
||||||
# Antialiasing
|
# Antialiasing
|
||||||
|
|
||||||
Antialiasing (AA) means preventing [aliasing](aliasing.md), i.e. distortion of [signal](signal.md) (images, audio, video, ...) caused by discrete sampling. Most people think antialiasing stands for "smooth edges in video game graphics", however that's a completely inaccurate understanding of antialiasing: [yes](yes.md), one of the most noticeable effects of 3D graphics antialiasing for a common human is that of having smooth edges, but smooth edges are not the primary goal, they are not the only effect and they are not even the most important effect of antialisng. Understanding antialiasing requires understanding what aliasing is, which is not a completely trivial thing to do (it's not the most difficult thing in the world either, but most people are just afraid of mathematics, so they prefer to stick with "antialiasing = smooth edges" simplification).
|
Antialiasing (AA) means preventing [aliasing](aliasing.md), i.e. distortion of [signal](signal.md) (images, audio, video, ...) caused by discrete sampling. Popularly antialiasing is though of as "smooth edges in video game graphics", however that's an inaccurate normie simplification suggesting misunderstanding of the subject: [yes](yes.md), one of the most noticeable effects of [3D graphics](3d_rendering.md) antialiasing to a common folk is that of seeing smooth edges in video games, but smooth edges are not the primary goal, they are not the only effect and they are not even the most important effect of antialisng. Naturally, understanding antialiasing firstly requires understanding what aliasing is, which is not completely trivial (it's not the most difficult thing in the world either, but most people are just afraid of mathematics, so they prefer to stick with "antialiasing = smooth edges" simplification).
|
||||||
|
|
||||||
The basic **sum up** is following: aliasing is a negative effect which may arise when we try to sample (capture) continuous signals potentially containing high frequencies (the kind of "infinitely complex" data we encounter in real world such as images or sounds) in discrete (non-continuous) ways by capturing the signal values at specific points in time (as opposed to capturing [integrals](integral.md) of intervals), i.e. in ways native and natural to [computers](computer.md). Note that the aliasing effect is mathematical and is kind of a "punishment" for our "[cheating](cheating.md)" which we do by trying to simplify capturing of very complex signals, i.e. aliasing has nothing to do with [noise](noise.md) or recording equipment imperfections, and it may occur not only when recording real world data but also when simulating real world, for example during 3D graphics rendering (which simulates capturing real world with a camera). A typical example of such aliasing effect is a video of car wheels rotating very fast (with high frequency) with a relatively low FPS camera, which then seem to be rotating very slowly and in opposite direction -- a high frequency signal (fast rotating wheels) caused a distortion (illusion of wheels rotating slowly in opposite direction) due to simplified discrete sampling (recording video as a series of photographs taken at specific points in time in relatively low FPS). Similar undesirable effects may appear e.g. on high resolution textures when they're scaled down on a computer screen (so called Moire effect), but also in sound or any other data. Antialiasing exploits the mathematical Nyquist–Shannon sampling theorem that says that aliasing cannot occur when the sampling frequency is high enough relatively to the highest frequency in the sampled data, i.e. antialiasing tries to prevent aliasing effects typically by either preventing high frequency from appearing in the sampled data (e.g. blurring textures, see [MIP mapping](mipmap.md)) or by increasing the sampling frequency (e.g. [multisampling](multisampling.md)). As a side effect of better sampling we also get things such as smoothly rendered edges etc.
|
The basic **summary** is following: aliasing is an undesirable effect which may arise when we try to sample (capture) continuous signals potentially containing high frequencies (the kind of "infinitely complex" data we encounter in real world such as images or sounds) in discrete (non-continuous) ways by capturing the signal values at specific points in time (as opposed to capturing [integrals](integral.md) of intervals), i.e. in ways native and natural to [computers](computer.md). Note that the aliasing effect is mathematical and is kind of a "punishment" for our "[cheating](cheating.md)" which we do by trying to simplify capturing of very complex signals, i.e. aliasing has nothing to do with [noise](noise.md) or recording equipment imperfections, and it may occur not only when recording real world data but also when simulating real world, for example during 3D graphics rendering (which simulates capturing real world with a camera). A typical example of such aliasing effect is a video of car wheels rotating very fast (with high frequency) with a relatively low FPS camera, which then seem to be rotating very slowly and in opposite direction -- a high frequency signal (fast rotating wheels) caused a distortion (illusion of wheels rotating slowly in opposite direction) due to simplified discrete sampling (recording video as a series of photographs taken at specific points in time in relatively low FPS). Similar undesirable effects may appear e.g. on high resolution textures when they're scaled down on a computer screen (so called Moire effect), but also in sound or any other data. Antialiasing exploits the mathematical Nyquist–Shannon sampling theorem that says that aliasing cannot occur when the sampling frequency is high enough relatively to the highest frequency in the sampled data, i.e. antialiasing tries to prevent aliasing effects typically by either preventing high frequency from appearing in the sampled data (e.g. blurring textures, see [MIP mapping](mipmap.md)) or by increasing the sampling frequency (e.g. [multisampling](multisampling.md)). As a side effect of better sampling we also get things such as smoothly rendered edges etc.
|
||||||
|
|
||||||
Note that the word *anti* in antialising means that some methods may not prevent aliasing completely, they may just try to suppress it somehow. For example the [FXAA](fxaa.md) (fast approximate antialiasing) method is a [postprocessing](postprocessing.md) algorithm which takes an already rendered image and tries to make it as if it was properly rendered in ways preventing aliasing, however it cannot be 100% successful as it doesn't know the original signal, all it can do is try to give us a [good enough](good_enough.md) [approximation](approximation.md).
|
Perhaps it's obvious, but the prefix *anti* in *antialising* signifies that some methods may not absolutely eliminate all aliasing, just suppress it. Completely preventing aliasing is usually possible but may be costly or otherwise inconvenient. For example the [FXAA](fxaa.md) (fast approximate antialiasing) method is a [postprocessing](postprocessing.md) algorithm which works with an already rendered (potentially aliased) image and attempts to apply a kind of smoothing or "plastic surgery" to make it look as if it was properly rendered in ways correctly preventing aliasing, however by principle it can't always provide a completely ideal result as it simply doesn't know the original signal, it can't retrieve information that's been lost, all it can do is try to give us a [good enough](good_enough.md) [approximation](approximation.md).
|
||||||
|
|
||||||
**How to do antialiasing?** There are many ways, depending on the kind of data (e.g. the number of dimensions of the signal or what frequencies you expect in it) or required quality (whether you want to prevent aliasing completely or just suppress it). As stated above, most methods make use of the Nyquist–Shannon sampling theorem which states that **aliasing cannot occur if the sampling frequency is at least twice as high as the highest frequency in the sampled signal**. I.e. if you can make sure your sampling frequency is high enough relatively to the highest frequency in the signal, you will completely prevent aliasing -- you can do this by either processing the input signal with a low pass filter (e.g. blurring an image) or by increasing your sampling frequency (e.g. rendering at higher resolution). Some specific antialiasing methods include:
|
Mkay, that's all nice, but **how to actually DO antialiasing?** There are several ways, depending on the kind of data (e.g. the number of dimensions of the signal or what frequencies you expect in them) or required quality (whether you want to prevent aliasing completely, how precisely you want to do it, if you're fine with just suppressing aliasing etc.). As already stated, everything revolves around the Nyquist–Shannon sampling theorem which says that **aliasing cannot occur if the sampling frequency is at least twice as high as the highest frequency in the sampled signal**. I.e. ensuring the sampling frequency is high enough relative to the highest frequency in the sampled signal completely prevents aliasing -- you can do this by either processing the input signal with a low pass filter (e.g. blurring an image) or by increasing your sampling frequency (e.g. rendering at higher resolution). Some specific antialiasing methods include:
|
||||||
|
|
||||||
- **avoiding aliasing**: A pretty straightforward way :) Aliasing can be avoided e.g. simply by using low resolution textures as opposed to high resolution ones.
|
- **avoiding/hiding aliasing**: A pretty straightforward way :) Aliasing can be avoided for instance simply by using low resolution textures. A way of hiding aliasing may be for example distance fog that decreases color contrast and makes aliasing less noticeable in spite of its presence.
|
||||||
- **[multisampling](multisampling.md)** (MSAA), **[supersampling](supersampling.md)** (SSAA) etc.: Increasing sampling frequency, typically in computer graphics rendering. The specific methods differ by where and how they increase the number of samples (some methods increase sampling uniformly everywhere, some try to detect aliasing areas and only put more samples there etc). A simple (but expensive) way of doing this is rendering the image at higher resolution and then scaling it back down.
|
- **[multisampling](multisampling.md)** (MSAA), **[supersampling](supersampling.md)** (SSAA) etc.: Increasing sampling frequency, typically in graphics rendering. The specific methods vary by where and how they increase the number of samples (some methods increase sampling uniformly everywhere, some try to detect aliasing areas and only put more samples there etc). A simple (but expensive) way of doing this is rendering the image at higher resolution and then scaling it back down.
|
||||||
- **[FXAA](fxaa.md)**: Cheating, approximation of antialiasing by [postprocessing](postprocessing.md), usually in [shaders](shader.md), cheap but can be imperfect.
|
- **[FXAA](fxaa.md)**: [Cheating](cheating.md), approximation of antialiasing with [postprocessing](postprocessing.md) (tl;dr: detecting lines and then smoothing them), usually implemented as a pixel/fragment [shader](shader.md), cheap but can be imperfect.
|
||||||
- **[MIP mapping](mipmap.md)**: Way of preventing aliasing in rendering of scaled-down [textures](texture.md) by having precomputed scaled-down antialiased versions of it.
|
- **[MIP mapping](mipmap.md)**: Way of preventing aliasing in rendering of scaled-down [textures](texture.md) by keeping precomputed scaled-down antialiased versions of it.
|
||||||
- **[anisotrpic filtering](anisotropic_filtering.md)**: Improved version of MIP mapping.
|
- **[anisotrpic filtering](anisotropic_filtering.md)**: Improved version of MIP mapping.
|
||||||
- **[motion blur](motion_blur.md)**: Temporal antialiasing in video, basically increasing the number of samples in the time domain.
|
- **[motion blur](motion_blur.md)**: Temporal antialiasing in video, basically increasing the number of samples in the time domain.
|
||||||
- ...
|
- ...
|
||||||
|
|
|
@ -122,11 +122,11 @@ int main(void)
|
||||||
|
|
||||||
## Variables, Arithmetic, Data Types
|
## Variables, Arithmetic, Data Types
|
||||||
|
|
||||||
Programming is a lot like mathematics, we compute equations and transform numerical values into other values. You probably know in mathematics we use *variables* such as *x* or *y* to denote numerical values that can change (hence variables). In programming we also use variables -- here **[variable](variable.md) is a place in memory which has a name** (and in this place there will be stored a value that can change over time).
|
Programming is a lot like [mathematics](math.md), we compute equations and transform [numeric](number.md) values into other values -- in the end everything is just a number. You probably remember that in mathematics we use *variables* such as *x* or *y* to denote numeric values that can change (hence variables). In programming we also use variables that are likewise names that stand for values that can change -- more specifically **[variable](variable.md) is a place in memory which has a name** (and in this place there will be stored a value that can change over time).
|
||||||
|
|
||||||
We can create variables named `x`, `y`, `myVariable` or `score` and then store specific values (for now let's only consider numbers) into them. We can read from and write to these variables at any time. These variables physically reside in [RAM](ram.md), but we don't really care where exactly (at which address) they are located -- this is e.g. similar to houses, in common talk we normally say things like *John's house* or *the pet store* instead of *house with address 3225*.
|
We can create variables named `x`, `y`, `myVariable` or `score` and then store specific values (for now let's only consider numbers) into them. We can read from and write to these variables at any time. These variables physically reside in [RAM](ram.md), but we don't really care where exactly (at which address) they are located -- this is similar to houses for example, in common talk we normally say something like *John's house* or *the pet store* instead of *house with address 3225*.
|
||||||
|
|
||||||
Variable names can't start with a digit (and they can't be any of the [keywords](keyword.md) reserved by C). By convention they also shouldn't be all uppercase or start with uppercase (these are normally used for other things). Normally we name variables like this: `myVariable` or `my_variable` (pick one style, don't mix them).
|
Variable names can't start with a digit (and they can't be any of the [keywords](keyword.md) reserved by C). By convention they also shouldn't be all uppercase or start with uppercase (these are normally used for other things). Frequently used conventions for naming variable are these: `myVariable` or `my_variable` (pick one style, don't mix them).
|
||||||
|
|
||||||
In C as in other languages each variable has a certain **[data type](data_type.md)**; that is each variable has associated an information of what kind of data is stored in it. This can be e.g. a *whole number*, *fraction*, a *text character*, *text string* etc. Data types are a more complex topic that will be discussed later, for now we'll start with the most basic one, the **integer type**, in C called `int`. An `int` variable can store whole numbers in the range of at least -32768 to 32767 (but usually much more).
|
In C as in other languages each variable has a certain **[data type](data_type.md)**; that is each variable has associated an information of what kind of data is stored in it. This can be e.g. a *whole number*, *fraction*, a *text character*, *text string* etc. Data types are a more complex topic that will be discussed later, for now we'll start with the most basic one, the **integer type**, in C called `int`. An `int` variable can store whole numbers in the range of at least -32768 to 32767 (but usually much more).
|
||||||
|
|
||||||
|
@ -409,7 +409,7 @@ The output is
|
||||||
|
|
||||||
Now imagine we decide we also want our temperatures in Fahrenheit. We can simply edit the code in `writeTemperature` function and the program will automatically be writing temperatures in the new way.
|
Now imagine we decide we also want our temperatures in Fahrenheit. We can simply edit the code in `writeTemperature` function and the program will automatically be writing temperatures in the new way.
|
||||||
|
|
||||||
Let's see how to create and invoke functions. Creating a function in code is done between inclusion of libraries and the `main function`, and we formally call this **defining a function**. The function definition format is following:
|
Let's see how to create and invoke functions. Creating a function in code is typically done between inclusion of libraries and the `main function`, and we formally call this **defining a function**. The function definition format is following:
|
||||||
|
|
||||||
```
|
```
|
||||||
RETURN_TYPE FUNCTION_NAME(FUNCTION_PARAMETERS)
|
RETURN_TYPE FUNCTION_NAME(FUNCTION_PARAMETERS)
|
||||||
|
@ -829,7 +829,7 @@ The `-c` flag tells the compiler to only compile the file, i.e. only generate th
|
||||||
gcc -c -o program.o program.c
|
gcc -c -o program.o program.c
|
||||||
```
|
```
|
||||||
|
|
||||||
This will generate the file *program.o*. Note that during this process the compiler is working only with the *program.c* file, it doesn't know the code of the function `square`, but it knows this function exists, what it returns and what parameter it has thanks to us including the library header *library.h* with `#include "library.h"` (quotes are used instead of `<` and `>` to tell the compiler to look for the files in the current directory).
|
This will generate the file *program.o*. Note that during this process the compiler is working only with the *program.c* file, it doesn't know the code of the function `square`, but it knows the function exists, what it returns and what parameter it takes thanks to us including the library header *library.h* with `#include "library.h"` (quotes are used instead of `<` and `>` to tell the compiler to look for the files in the current directory).
|
||||||
|
|
||||||
Now we have the file *program.o* in which the compiled `main` function resides and file *library.o* in which the compiled function `square` resides. We need to link them together. This is done like this:
|
Now we have the file *program.o* in which the compiled `main` function resides and file *library.o* in which the compiled function `square` resides. We need to link them together. This is done like this:
|
||||||
|
|
||||||
|
@ -899,7 +899,7 @@ What is this good for? Why don't we just create global variables such as `carl_i
|
||||||
|
|
||||||
**Structs can be nested**. So you may see things such as `myHouse.groundFloor.livingRoom.ceilingHeight` in C code.
|
**Structs can be nested**. So you may see things such as `myHouse.groundFloor.livingRoom.ceilingHeight` in C code.
|
||||||
|
|
||||||
Another extremely important compound type is **[array](array.md)** -- a sequence of items, all of which are of the same data type. Each array is specified with its length (number of items) and the data type of the items. We can have, for instance, an array of 10 `int`s, or an array of 235 `Human`s. The important thing is that we can **index** the array, i.e. we access the individual items of the array by their position, and this position can be specified with a variable. This allows for **looping over array items** and performing certain operations on each item. Demonstration code follows:
|
Another immensely important compound type is **[array](array.md)** -- a sequence of items, all of which are of the same data type. Each array is specified with its length (number of items) and the data type of the items. We can have, for instance, an array of 10 `int`s, or an array of 235 `Human`s. The important thing is that we can **index** the array, i.e. we access the individual items of the array by their position, and this position can be specified with a variable. This allows for **looping over array items** and performing certain operations on each item. Demonstration code follows:
|
||||||
|
|
||||||
```
|
```
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -1230,13 +1230,13 @@ This creates a new data type `Fruit`. Variables of this type may have values `AP
|
||||||
|
|
||||||
## Pointers
|
## Pointers
|
||||||
|
|
||||||
Pointers are an advanced topic that many people fear -- many complain they're hard to learn, others complain about memory unsafety and potential dangers of using pointers. These people are stupid, pointers are great.
|
Pointers belong under advanced topics that many people fear -- many complain they're hard to learn, others complain about memory unsafety and potential "dangers" connected to pointers. These people are stupid, pointers are great. Let's dissect the subject bit by bit.
|
||||||
|
|
||||||
But beware, there may be too much new information in the first read. Don't get scared, give it some time.
|
Beware still, there may be too much new information in the first read. Don't get scared, give it some time.
|
||||||
|
|
||||||
Pointers allow us to do certain advanced things such as allocate dynamic memory, return multiple values from functions, inspect content of memory or use functions in similar ways in which we use variables.
|
Pointers allow us to handle certain advanced tasks such as allocating dynamic memory, returning multiple values from functions, inspecting content of memory or using functions in similar ways in which we use variables.
|
||||||
|
|
||||||
A **[pointer](pointer.md)** is essentially nothing complicated: it is a **data type that can hold a memory address** (plus an information about what data type should be stored at that address). An address is simply a number. Why can't we just use an `int` to store a memory address? Because the size of `int` and a pointer may differ, the size of pointer depends on each platform's address width. Besides this, as said, a pointer actually holds not only an address but also the information about the type it points to, which is a safety mechanism that will become clear later. It is also good when the compiler knows a certain variable is supposed to point to a memory rather than to hold a generic number -- this can all prevent bugs. I.e. pointers and generic integers are distinguished for the same reason other data types are distinguished -- in theory they don't have to be distinguished, but it's safer.
|
The definition of a **[pointer](pointer.md)** is essentially nothing complicated: it is a **data type that can hold a memory address** (plus an information about what data type should be stored at that address). Address is nothing but a non-negative integer [number](number.md). Why can't we just use an `int` to store a memory address? Because the size of `int` and a pointer may differ, the size of pointer depends on the size of the computer's address bus. Besides this, as said, a pointer actually holds not only an address but also the information about the type it points to, which is a safety mechanism that will become clear later. It is also good when the compiler knows a certain variable is supposed to point to a memory rather than to hold a generic number -- this can all prevent bugs. I.e. pointers and generic integers are distinguished for the same reason other data types are distinguished -- in theory they don't have to be distinguished, but it's safer.
|
||||||
|
|
||||||
It is important to stress again that a pointer is not a pure address but it also knows about the data type it is pointing to, so there are many kinds of pointers: a pointer to `int`, a pointer to `char`, a pointer to a specific struct type etc.
|
It is important to stress again that a pointer is not a pure address but it also knows about the data type it is pointing to, so there are many kinds of pointers: a pointer to `int`, a pointer to `char`, a pointer to a specific struct type etc.
|
||||||
|
|
||||||
|
@ -1882,7 +1882,7 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
To add a few comments: the program opens a file whose name it gets passed as a command line argument, so it is used as: `./hexview myfile`. We try to correctly perform all safety checks, e.g. if we actually get passed the file name, if we manage to open it and so on. Our program (a bit inefficiently) loads the whole file into memory (advanced programs only load parts of the file) -- for this it first checks the file size, allocates sufficient memory for it with `malloc` (also checking for errors) and loads it there. Then we have a function to draw the current file view and inside the main program body we have an interactive loop that loads and handles user commands and issues the view drawing. That is basically it!
|
To append a few comments: the program opens a file whose name it gets passed as a command line argument, so it is used as: `./hexview myfile`. We try to correctly perform all safety checks, e.g. if we actually get passed the file name, if we manage to open it and so on. Our program (a bit inefficiently) loads the whole file into memory (advanced programs only load parts of the file) -- for this it first checks the file size, allocates sufficient memory for it with `malloc` (also checking for errors) and loads it there. Then we have a function to draw the current file view and inside the main program body we have an interactive loop that loads and handles user commands and issues the view drawing. That is basically it!
|
||||||
|
|
||||||
## Bonus: Introduction To Graphics (ASCII, PPM, SDL2, ...)
|
## Bonus: Introduction To Graphics (ASCII, PPM, SDL2, ...)
|
||||||
|
|
||||||
|
@ -1909,7 +1909,7 @@ But first let's quickly mention what graphics programming at this level is essen
|
||||||
- At the end, once drawing is complete, we have to **show (*present*) the picture**. This is to say that when we're drawing, the picture isn't actually seen, it is only changing in memory, it is shown to the user only when it's completed, i.e. when we issue a special command such as `drawingDone()`. Why can't the picture just be shown at all times? In theory it can, but you encounter problems, imagine e.g. a game that quickly redraws the picture on the screen -- here the user would see flickering, he might even see enemies show briefly behind a wall before the wall is actually drawn and so on. So a way to solve this is to do the drawing off screen and only at the end say "now we're done drawing, show the image" (for more details see [double buffering](double_buffering.md)).
|
- At the end, once drawing is complete, we have to **show (*present*) the picture**. This is to say that when we're drawing, the picture isn't actually seen, it is only changing in memory, it is shown to the user only when it's completed, i.e. when we issue a special command such as `drawingDone()`. Why can't the picture just be shown at all times? In theory it can, but you encounter problems, imagine e.g. a game that quickly redraws the picture on the screen -- here the user would see flickering, he might even see enemies show briefly behind a wall before the wall is actually drawn and so on. So a way to solve this is to do the drawing off screen and only at the end say "now we're done drawing, show the image" (for more details see [double buffering](double_buffering.md)).
|
||||||
- Also note that usually there is some kind of management around graphic code, i.e. some initialization of the program's window, setting its resolution, allocation of memory for the screen pixels, setting the pixel formats, [callbacks](callback.md) and so on. Similarly at the end you often have to clean things up and as many graphic systems are based on events, you have to periodically check events like key presses, window resizes etc. Interactive programs will furthermore have an infinite loop (so called *game loop*) in which they check events, redraw the screen, wait for a while (to keep the right [FPS](fps.md)) and so on. Libraries try to do many thing for you but you have to at least tell them some very basic things. So be prepared for a lot extra code.
|
- Also note that usually there is some kind of management around graphic code, i.e. some initialization of the program's window, setting its resolution, allocation of memory for the screen pixels, setting the pixel formats, [callbacks](callback.md) and so on. Similarly at the end you often have to clean things up and as many graphic systems are based on events, you have to periodically check events like key presses, window resizes etc. Interactive programs will furthermore have an infinite loop (so called *game loop*) in which they check events, redraw the screen, wait for a while (to keep the right [FPS](fps.md)) and so on. Libraries try to do many thing for you but you have to at least tell them some very basic things. So be prepared for a lot extra code.
|
||||||
|
|
||||||
Now let's finally do this. We'll set up some basic code for drawing a rectangle and try to draw it with different approaches.
|
Now let's finally get to writing the code. We'll set up some basic code for drawing a rectangle and try to draw it with different approaches.
|
||||||
|
|
||||||
The ASCII approach:
|
The ASCII approach:
|
||||||
|
|
||||||
|
@ -1986,7 +1986,7 @@ int main(void)
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
With this we have a simple interactive program that draws a dotted screen with rectangle that represents the player, you can compile it like any other program, it uses no external libraries. User can move the rectangle around by typing commands. There is a main infinite loop (this is the above mentioned *game loop*, a typical thing in interactive applications) in which we read the user commands and redraw the picture on the screen. Notice we have our basic `drawPixel` function as well as the `drawScreen` function for presenting the finished picture, we also have a helper `drawRectangle` function. The `screen` array represents our virtual picture (it is declared as one dimensional array but in reality it is treated as two dimensional by the `setPixel` function). As an exercise you can try to draw other simple shapes, for example horizontal and vertical lines, non-filled rectangles -- if you're brave enough you can also try a filled circle (hint: points inside a circle mustn't be further away from the center than the circle radius).
|
With this we have a simple interactive program that draws a dotted screen with rectangle representing the player, you can compile it like any other program, it uses no external libraries. User can move the rectangle around by typing commands. There is a main infinite loop (this is the above mentioned *game loop*, a typical thing in interactive applications) in which we read the user commands and redraw the picture on the screen. Notice we have our basic `drawPixel` function as well as the `drawScreen` function for presenting the finished picture, we also have a helper `drawRectangle` function. The `screen` array represents our virtual picture (it is declared as one dimensional array but in reality it is treated as two dimensional by the `setPixel` function). As an exercise you can try to draw other simple shapes, for example horizontal and vertical lines, non-filled rectangles -- if you're brave enough you can also try a filled circle (hint: points inside a circle mustn't be further away from the center than the circle radius).
|
||||||
|
|
||||||
Now let's try to do something similar, but this time creating a "real picture" made of true pixels, exported to a file:
|
Now let's try to do something similar, but this time creating a "real picture" made of true pixels, exported to a file:
|
||||||
|
|
||||||
|
@ -2150,7 +2150,7 @@ This code is almost a bare minimum template for SDL that doesn't even perform an
|
||||||
|
|
||||||
*See also [exercises](exercises.md).*
|
*See also [exercises](exercises.md).*
|
||||||
|
|
||||||
We haven't nearly covered the whole of C, but you should have pretty solid basics now. Now you just have to go and write a lot of C programs, that's the only way to truly master C. WARNING: Do not start with an ambitious [project](project.md) such as a 3D game. You won't make it and you'll get demotivated. Start very simple (a Tetris clone perhaps?). Try to develop some consistent programming style/formatting -- see our [LRS programming style](programming_style.md) you may adopt (it's better than trying to make your own really).
|
We haven't nearly covered the whole of C, but you should be left with pretty solid basics now. Now you just have to go and write a lot of C programs, that's the only way to truly master C. WARNING: Do not start with an ambitious [project](project.md) such as a 3D game. You won't make it and you'll get demotivated. Start very simple (a Tetris clone perhaps?). Try to develop some consistent programming style/formatting -- see our [LRS programming style](programming_style.md) you may adopt (it's better than trying to make your own really).
|
||||||
|
|
||||||
See also supplemental articles at the beginning of this tutorial.
|
See also supplemental articles at the beginning of this tutorial.
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ Photos of drummyfish: [young](https://cloud.disroot.org/apps/files_sharing/publi
|
||||||
|
|
||||||
Drummyfish experiences a lot of discrimination but still doesn't hate his discriminators. As a straight white male in [21st century](21st_century.md) drummyfish is a victim of regular discrimination and racism in form of social revenge for historical events he has nothing to do with. Drummyfish is not covid vaccinated -- for this he was sorted into the second class of citizens during the covid pandemic and experienced another form of discrimination, e.g. what today would be called a "verbal abuse", segregation and so on. He never had covid. As a [Slav](slav.md) he comes from an ancestry of slaves, so in [America](usa.md) he would be called a [hero](hero_culture.md). Drummyfish was baptized and is NOT circumcised. He has [hallux varus](body_shaming.md) (foot toes oddly spaced from the rest of the fingers) -- this makes him be able to grab things with his feet and climb trees well, like a monkey.
|
Drummyfish experiences a lot of discrimination but still doesn't hate his discriminators. As a straight white male in [21st century](21st_century.md) drummyfish is a victim of regular discrimination and racism in form of social revenge for historical events he has nothing to do with. Drummyfish is not covid vaccinated -- for this he was sorted into the second class of citizens during the covid pandemic and experienced another form of discrimination, e.g. what today would be called a "verbal abuse", segregation and so on. He never had covid. As a [Slav](slav.md) he comes from an ancestry of slaves, so in [America](usa.md) he would be called a [hero](hero_culture.md). Drummyfish was baptized and is NOT circumcised. He has [hallux varus](body_shaming.md) (foot toes oddly spaced from the rest of the fingers) -- this makes him be able to grab things with his feet and climb trees well, like a monkey.
|
||||||
|
|
||||||
Drummyfish's real name is Miloslav (NOT Miroslav) Číž, he was born in the blessed year [1990](1990.md), on 24th of August, and lives in Moravia, [Czech Republic](czechia.md), [Earth](earth.md) (he rejects the concept of a country/[nationalism](nationalism.md), the info here serves purely to specify a location). He spent his childhood happily in times when [memes](meme.md) didn't exist yet, when households didn't normally have computers, yet alone [Internet](internet.md), and people didn't even own cell phones, when TV with three channels in total was the peak of technology. Drummyfish's family got their first computer in 1997, with [Windows](windows.md) 3.1, of course, without any access to the [Internet](internet.md), just plain old horizontal-case PC with CRT, ball [mouse](mouse.md) and a floppy drive. At that time he became fascinated with games such as [Wolf3D](wold3d.md) and Duke Nukem 2 -- that's when he decided he wanted to one day be making his own [games](game.md). He became deeply fascinated with computers, cell phones and video games and asked himself "How are video games made? How is it possible to program ANYTHING?". He thought about this before sleep and even came up with an idea of [flowcharts](flowchart.md), a visual language with which it would be possible to "program anything". Even though his family didn't have too much money, he cried and cried all days until he achieved a [Gameboy](gameboy.md) Color, and later on even Gameboy Advance! He was extremely happy about it and played [Pokemon](pokemon.md) (Yellow, Crystal and Emerald) all day and night, however many years later he would realize the Gameboys were nowehere to be found and therefore lost -- what a disaster! As the family PC got upgraded, he was able to start playing the newest hits and came to love especially [Warcraft III](warcraft3.md) (played as Orc), [Trackmania](trackmania.md), [Quake 3](quake3.md), The Elder Scrolls (Morrowind, Oblivion, Skyrim) and much later also [World of Warcraft](wow.md) (since vanilla, quit during WotLK, played tauren warrior named *Drummy*). His family acquired permanent Internet connection at home in 2006, as drummyfish was leaving elementary school.
|
Drummyfish's real name is Miloslav (NOT Miroslav) Číž, he was born in the blessed year [1990](1990.md) (Chinese year of the Horse), on 24th of August ([Virgo](wizard.md)), and lives in Moravia, [Czech Republic](czechia.md), [Earth](earth.md) (he rejects the concept of a country/[nationalism](nationalism.md), the info here serves purely to specify a location). He spent his childhood happily in times when [memes](meme.md) didn't exist yet, when households didn't normally have computers, yet alone [Internet](internet.md), and people didn't even own cell phones, when TV with three channels in total was the peak of technology. Drummyfish's family got their first computer in 1997, with [Windows](windows.md) 3.1, of course, without any access to the [Internet](internet.md), just plain old horizontal-case PC with CRT, ball [mouse](mouse.md) and a floppy drive. At that time he became fascinated with games such as [Wolf3D](wold3d.md) and Duke Nukem 2 -- that's when he decided he wanted to one day be making his own [games](game.md). He became deeply fascinated with computers, cell phones and video games and asked himself "How are video games made? How is it possible to program ANYTHING?". He thought about this before sleep and even came up with an idea of [flowcharts](flowchart.md), a visual language with which it would be possible to "program anything". Even though his family didn't have too much money, he cried and cried all days until he achieved a [Gameboy](gameboy.md) Color, and later on even Gameboy Advance! He was extremely happy about it and played [Pokemon](pokemon.md) (Yellow, Crystal and Emerald) all day and night, however many years later he would realize the Gameboys were nowehere to be found and therefore lost -- what a disaster! As the family PC got upgraded, he was able to start playing the newest hits and came to love especially [Warcraft III](warcraft3.md) (played as Orc), [Trackmania](trackmania.md), [Quake 3](quake3.md), The Elder Scrolls (Morrowind, Oblivion, Skyrim) and much later also [World of Warcraft](wow.md) (since vanilla, quit during WotLK, played tauren warrior named *Drummy*). His family acquired permanent Internet connection at home in 2006, as drummyfish was leaving elementary school.
|
||||||
|
|
||||||
{ Why doxx myself? Following the [LRS](lrs.md) philosophy, I believe information should be free. [Censorship](censorship.md) -- even in the name of [privacy](privacy.md) -- goes against information freedom. We should live in a society in which people are moral and don't abuse others by any means, including via availability of their private information. And in order to achieve ideal society we have to actually live it, i.e. slowly start to behave as if it was already in place. Of course, I can't tell you literally everything (such as my passwords etc.), but the more I can tell you, the closer we are to the ideal society. ~drummyfish }
|
{ Why doxx myself? Following the [LRS](lrs.md) philosophy, I believe information should be free. [Censorship](censorship.md) -- even in the name of [privacy](privacy.md) -- goes against information freedom. We should live in a society in which people are moral and don't abuse others by any means, including via availability of their private information. And in order to achieve ideal society we have to actually live it, i.e. slowly start to behave as if it was already in place. Of course, I can't tell you literally everything (such as my passwords etc.), but the more I can tell you, the closer we are to the ideal society. ~drummyfish }
|
||||||
|
|
||||||
|
|
|
@ -1,20 +1,20 @@
|
||||||
# Fourier Transform
|
# Fourier Transform
|
||||||
|
|
||||||
Fourier Transform (FT) is one of the most important transformations/[algorithms](algorithm.md) in [signal](signal.md) processing (and really in [computer science](compsci.md) and [mathematics](math.md) in general), which enables us to express and manipulate a signal (such as a sound or picture) in terms of [frequencies](frequency.md) it is composed of (rather than in terms of individual [samples](samples.md)). It is so important because frequencies (basically [sine](sine.md) waves) are actually THE important thing in signals, they allow us to detect things (voices, visual objects, chemical elements, ...), [compress](compression.md) signals, modify them in useful ways (e.g. filter out [noise](noise.md) in specific frequency band, enhance specific frequency bands, change audio speed without changing its pitch, pitch-shift a song without changing its speed and so on). There also exists a related algorithm called **[Fast Fourier Transform](fft.md)** (FFT) which is able to compute one specific version of FT very quickly and so is often used in practice.
|
Fourier Transform (FT) is one of the most prominent transformations/[algorithms](algorithm.md) in [signal](signal.md) processing (and really in [computer science](compsci.md) and [mathematics](math.md) in general), which enables us to express and manipulate a [signal](signal.md) (such as a sound or picture) in terms of [frequencies](frequency.md) it is composed of (rather than in terms of individual [samples](samples.md)). It is so important because frequencies (basically [sine](sine.md) waves) are actually THE important essence in signals, they allow us to detect things (voices, visual objects, chemical elements, ...), [compress](compression.md) signals, modify them in useful ways (e.g. filter out [noise](noise.md) in specific frequency band, enhance specific frequency bands, change audio speed without changing its pitch, pitch-shift a song without changing its speed and so on). There also exists a related algorithm called **[Fast Fourier Transform](fft.md)** (FFT) which is able to compute one specific version of FT very quickly and so is often used in practice.
|
||||||
|
|
||||||
For newcomers FT is typically not easy to understand, it takes time to wrap one's head around it. There is also a very confusing terminology; there exist slightly different kinds of the Fourier Transform that are called by similar names, or sometimes all simply just "Fourier Transform" -- what programmers usually mean by FT is DFT or FFT. There also exist Fourier Transforms in higher dimensions (2D, 3D, ...) -- the base case is called one dimensional (because our input signal has one coordinate). All this will be explained below.
|
FT is typically not easy to understand right away, it takes time to wrap one's head around it. Confusing terminology doesn't help in this regard either; there exist slightly different kinds of Fourier Transform bearing similar names and sometimes they're all just called "Fourier Transform" -- what programmers usually mean by FT is DFT or FFT. There also exist Fourier Transforms in higher dimensions (2D, 3D, ...) -- the base case is called one dimensional (because our input signal has one coordinate). All this mess will be explained below.
|
||||||
|
|
||||||
**What FT does in essence**: it transforms an input signal (which can also be seen as a [function](function.md)) from **time (also space) domain**, i.e. the usual representation that for each *x* says the sample value *f(x)*, to **frequency domain**, another function that for each frequency *f* says "how much of the frequency is present" (amplitude and phase). For example an FT of a simple sine wave will be a function with a single spike at the frequency of the sine wave. There is also an **inverse Fourier Transform** that does the opposite (transforms the signal from frequencies back to time samples). The time and frequency representations are EQUIVALENT in that either one can be used to represent the signal -- it turns out that even "weird" looking functions can be decomposed into just sums of many differently shifted and scaled sine waves. In the frequency domain we can usually do two important things we cannot do in time domain: firstly analyze what frequencies are present (which can help e.g. in [voice recognition](voice_recognition.md), [spectral analysis](spectral_analysis.md), earthquake detection, [music](music.md) etc.) and also MODIFY them (typicaly example is e.g. music [equalizer](equalizer.md) or [compression](compression.md) that removes or quantizes some frequencies); if we modify the frequencies, we may use the inverse FT to get back the "normal" (time representation) signal back. Some things are also easier to do in the frequency domain, for example [convolution](convolution.md) becomes mere multiplication.
|
**What FT does in essence**: it transforms an input signal (which can also be though of as a [function](function.md)) from **time (also space) domain**, i.e. the usual representation that for each *x* says the sample value *f(x)*, to **frequency domain**, another function that for each frequency *f* says "how much of the frequency is present" (amplitude and phase). For example an FT of a simple sine wave will be a function with a single spike at the frequency of the sine wave. There is also an **inverse Fourier Transform** that does the opposite (transforms the signal from frequencies back to time samples). The time and frequency representations are EQUIVALENT in that either one can be used to represent the signal -- it turns out that even "weird" looking functions can be decomposed into just sums of many differently shifted and scaled sine waves. In the frequency domain we can usually do two important things we cannot do in time domain: firstly analyze what frequencies are present (which can help e.g. in [voice recognition](voice_recognition.md), [spectral analysis](spectral_analysis.md), earthquake detection, [music](music.md) etc.) and also MODIFY them (typicaly example is e.g. music [equalizer](equalizer.md) or [compression](compression.md) that removes or quantizes some frequencies); if we modify the frequencies, we may use the inverse FT to get back the "normal" (time representation) signal back. Some things are also easier to do in the frequency domain, for example [convolution](convolution.md) becomes mere multiplication.
|
||||||
|
|
||||||
FT is actually just one of many so called **[integral transforms](integral_transform.md)** that are all quite similar -- they always transform the signal to some other domain and back, they use similar equation but usually use a different kind of [function](function.md). Other integral transforms are for example **[discrete cosine transformation](dct.md)** (DCT) or **[wavelet transform](wavelet_transform.md)**. DCT is actually a bit simpler than FT, so if you are having hard time with FT, go check out DCT.
|
FT is actually just one of many so called **[integral transforms](integral_transform.md)** that are all quite similar -- they always transform the signal to some other domain and back, they use similar equation but usually use a different kind of [function](function.md). Other integral transforms are for example **[discrete cosine transformation](dct.md)** (DCT) or **[wavelet transform](wavelet_transform.md)**. DCT is actually a bit simpler than FT, so if you are having hard time with FT, go check out DCT.
|
||||||
|
|
||||||
**If you know [linear algebra](linear_algebra.md), this may help you understand what (D)FT really does:** Imagine the signal we work with is a POINT (we can also say a [vector](vector.md)) in many [dimensional](dimension.md) space; if for example we have a recorded sound that has 1000 samples, it is really a 1000 dimensional vector, a point in 1000 dimensional space, expressed as an "array" of 1000 numbers (vector components). A short note: since we consider a finite number of discrete samples here, we are actually dealing with what's called DISCRETE FT here, not the "vanilla" FT, but for now let's not digress. (D)FT does nothing more than transforming from one vector [basis](basis.md) ("system of coordinates", "frame of reference") to another basis; i.e. by default the signal is expressed in time domain (our usual vector basis), the numbers in the sound "array" are such because we are viewing them from the time "frame of reference" -- (D)FT will NOT do anything with to the signal itself (it is a vector/point in space, which will stay where it is, the recorded sound itself will not change), it will merely express this same point/vector from a different "point of view"/"frame of reference" (set of basis vectors) -- that of frequencies. That's basically how all the integral transforms work, they just have to ensure the basis they are transforming to is orthogonal (i.e. kind of legit, "usable") of course. In addition the FT equation is nothing complex, it literally just uses a **[dot product](dot_product.md)** of the whole input signal with each checked frequency wave to find out how similar the signal is to that particular frequency, as dot product simply says "how similar two vectors are" -- really, think about the equation and you will see it's really doing just that.
|
**If you know [linear algebra](linear_algebra.md), this may help you understand what (D)FT really does:** Picture the signal we work with as a POINT (we can also say a [vector](vector.md)) in many [dimensional](dimension.md) space; if for instance we have a recorded sound of 1000 samples, it is really a 1000 dimensional vector, a point in 1000 dimensional space, expressed as an "array" of 1000 [numbers](number.md) (vector components). A short note: since we assume a finite number of discrete samples here, we are actually dealing with what's called DISCRETE FT here, not the "vanilla" FT, but for now let's not digress. (D)FT does nothing more than transforming from one vector [basis](basis.md) ("system of coordinates", "frame of reference") to another basis; i.e. by default the signal is expressed in time domain (our usual vector basis), the numbers in the sound "array" are such because we are viewing them from the time "frame of reference" -- (D)FT will NOT do anything with to the signal itself (it is a vector/point in space, which will stay where it is, the recorded sound itself will not change), it will merely express this same point/vector from a different "point of view"/"frame of reference" (set of basis vectors) -- that of frequencies. That's basically how all the integral transforms work, they just have to ensure the basis they are transforming to is orthogonal (i.e. kind of legit, "usable") of course. In addition the FT equation is nothing complex, it literally just uses a **[dot product](dot_product.md)** of the whole input signal with each checked frequency wave to find out how similar the signal is to that particular frequency, as dot product simply says "how similar two vectors are" -- really, think about the equation and you will see it's really doing just that.
|
||||||
|
|
||||||
TODO: alternatives (like performing FIR filtering without actually doing FT etc.)
|
TODO: alternatives (like performing FIR filtering without actually doing FT etc.)
|
||||||
|
|
||||||
## Details
|
## Details
|
||||||
|
|
||||||
First let's make clearer the whole terminology around FT:
|
First and foremost let's clarify the whole terminology around FT a bit:
|
||||||
|
|
||||||
- **Fourier Series (FS)**: Transforms a PERIODIC (repeating) signal into a DISCRETE (non-continuous) spectrum. We can see this spectrum also as an infinite SERIES of coefficients *c0*, *c1*, *c2*, etc. The input signal can generally be [complex](complex_number.md), in which case the output spectrum also has negative part (*c-1*, *c-2*, *c-3* etc.) and shows us COMPLEX EXPONENTIALS (i.e. not mere sine waves) of the input signal; however if the input signal is [real](real_number.md) (probably most signals we practically deal with), the spectrum's negative part is symmetric to the positive part and the corresponding positive and negative complex exponentials always together give a sine wave, so for "normal" signals we can see the spectrum only being in the non-negative part and showing us the sine waves of the signal.
|
- **Fourier Series (FS)**: Transforms a PERIODIC (repeating) signal into a DISCRETE (non-continuous) spectrum. We can see this spectrum also as an infinite SERIES of coefficients *c0*, *c1*, *c2*, etc. The input signal can generally be [complex](complex_number.md), in which case the output spectrum also has negative part (*c-1*, *c-2*, *c-3* etc.) and shows us COMPLEX EXPONENTIALS (i.e. not mere sine waves) of the input signal; however if the input signal is [real](real_number.md) (probably most signals we practically deal with), the spectrum's negative part is symmetric to the positive part and the corresponding positive and negative complex exponentials always together give a sine wave, so for "normal" signals we can see the spectrum only being in the non-negative part and showing us the sine waves of the signal.
|
||||||
- **Fourier Transform (FT)**: Generalization of FS to work on any signal, not just periodic ones, i.e. FT takes a NON-PERIODIC signal and transforms it into a CONTINUOUS spectrum. This is achieved simply by considering the period of the signal to be infinite -- the spectrum now becomes continuous exactly because the input is non-periodic (this is a relationship that generally holds); since the output is continuous, we now rather see it as a function rather than a series. Same as with FS the input can be [complex](complex_number.md) (in which case the same implications apply), but we usually work with [real](real.md) signals.
|
- **Fourier Transform (FT)**: Generalization of FS to work on any signal, not just periodic ones, i.e. FT takes a NON-PERIODIC signal and transforms it into a CONTINUOUS spectrum. This is achieved simply by considering the period of the signal to be infinite -- the spectrum now becomes continuous exactly because the input is non-periodic (this is a relationship that generally holds); since the output is continuous, we now rather see it as a function rather than a series. Same as with FS the input can be [complex](complex_number.md) (in which case the same implications apply), but we usually work with [real](real.md) signals.
|
||||||
|
@ -24,7 +24,7 @@ First let's make clearer the whole terminology around FT:
|
||||||
- **Discrete Fourier Transform (DFT)** (not to be confused with DTFT!): Uses DFS to transform a FINITE DISCRETE signal to a FINITE DISCRETE spectrum (with the same period as the input) by simply "pretending" the finite input signal is actually repeating over and over and then, after the transform, only leaving in the first period of the result (since the rest is just repeating). **This is actually what programmers usually mean by Fourier Transform** because in computers we practically always only deal with finite discrete signals (i.e. [arrays](array.md) of data).
|
- **Discrete Fourier Transform (DFT)** (not to be confused with DTFT!): Uses DFS to transform a FINITE DISCRETE signal to a FINITE DISCRETE spectrum (with the same period as the input) by simply "pretending" the finite input signal is actually repeating over and over and then, after the transform, only leaving in the first period of the result (since the rest is just repeating). **This is actually what programmers usually mean by Fourier Transform** because in computers we practically always only deal with finite discrete signals (i.e. [arrays](array.md) of data).
|
||||||
- **Fast Fourier Transform (FFT)**: Computes DFT (NOT FT!) that's faster than the [naive](naive.md) implementation, i.e. computing the equation that defines DFT as it's written has time complexity O(n^2) while FFT improves this to O(n * log(n)).
|
- **Fast Fourier Transform (FFT)**: Computes DFT (NOT FT!) that's faster than the [naive](naive.md) implementation, i.e. computing the equation that defines DFT as it's written has time complexity O(n^2) while FFT improves this to O(n * log(n)).
|
||||||
|
|
||||||
From now on we will implicitly be talking about DFT of a real function (we'll ignore the possibility of complex input), the most notable transform here.
|
From now on we will implicitly be talking about DFT of a real function (we'll ignore the possibility of complex input), the most noteworthy transform here.
|
||||||
|
|
||||||
The input to DFT is a real function, i.e. the time domain representation of the signal. The output is a complex valued function of frequency, i.e. the spectrum -- for each frequency it says a complex number whose magnitude and phase say the magnitude and phase of that frequency (a sine wave) in the signal (many programs will visualize just the magnitude part as that's usually the important thing, however keep in mind there is always also the phase part as well).
|
The input to DFT is a real function, i.e. the time domain representation of the signal. The output is a complex valued function of frequency, i.e. the spectrum -- for each frequency it says a complex number whose magnitude and phase say the magnitude and phase of that frequency (a sine wave) in the signal (many programs will visualize just the magnitude part as that's usually the important thing, however keep in mind there is always also the phase part as well).
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
# Framework
|
# Framework
|
||||||
|
|
||||||
Software framework is a collection of tools such as [environments](environment.md), [libraries](library.md), [compilers](compiler.md) and [editors](editor.md), that together allow fast and comfortable implementation of other software by plugging in relatively small pieces of code. While a simple [library](library.md) is something that's plugged as a helper into programmer's code, framework is a bigger system into which programmer plugs his code. Frameworks are generally [bloated](bloat.md) and harmful, [LRS](lrs.md) doesn't recommend relying on them.
|
[Software](sw.md) framework is a collection of tools such as [environments](environment.md), [libraries](library.md), [compilers](compiler.md) and [editors](editor.md), that together enable fast and comfortable implementation of other software by plugging in relatively small pieces of code. Whereas [library](library.md) is something to be plugged as a helper into programmer's code, framework is a larger system into which programmer plugs his code (oftentimes in forms of [scripts](script.md)). Frameworks are [bloated](bloat.md) and harmful almost as a matter of rule, [LRS](lrs.md) recommends avoiding them.
|
||||||
|
|
||||||
|
## See Also
|
||||||
|
|
||||||
|
- [library](library.md)
|
||||||
|
- [scripting](scripting.md)
|
|
@ -4,6 +4,8 @@ Freedom of speech means there is no responsibility and absolutely no punishments
|
||||||
|
|
||||||
The basic principle of free speech says that **if you don't support freedom of speech which you dislike, you don't support free speech**. I.e. speech that you hate does not equal hate speech. Free speech is based on the observation that firstly limiting speech is extremely harmful, and secondly that **speech itself never harms anyone**, it is only actions that harm and we should therefore focus on the actions themselves. A though itself is never harmful and speech is just shared thought; to limit speech is to limit sharing thoughts and therefore **thought control**. Of course thoughts can have good or bad consequences, but we should be focused on learning to derive good consequences from whatever thoughts occur rather than restricting thinking. A death threat or call for someone's murder doesn't kill -- sure, it may lead to someone being killed, but so may for example playing sports. If any kind of speaking leads to people dying, you have a deep issue within your society that definitely does NOT lie in not applying enough censorship; trying to solve your issue with censorship here is like trying to solve depression by physically deforming the depressed man's face into a smile and pretending he's OK. Offending someone by pointing out he's an idiot also doesn't count as speech causing harm, it's just a sad case of someone who is unable to bear hearing truth (or a lie), in which case he shouldn't be listening to people any more than someone with epilepsy should be watching seizure inducing videos.
|
The basic principle of free speech says that **if you don't support freedom of speech which you dislike, you don't support free speech**. I.e. speech that you hate does not equal hate speech. Free speech is based on the observation that firstly limiting speech is extremely harmful, and secondly that **speech itself never harms anyone**, it is only actions that harm and we should therefore focus on the actions themselves. A though itself is never harmful and speech is just shared thought; to limit speech is to limit sharing thoughts and therefore **thought control**. Of course thoughts can have good or bad consequences, but we should be focused on learning to derive good consequences from whatever thoughts occur rather than restricting thinking. A death threat or call for someone's murder doesn't kill -- sure, it may lead to someone being killed, but so may for example playing sports. If any kind of speaking leads to people dying, you have a deep issue within your society that definitely does NOT lie in not applying enough censorship; trying to solve your issue with censorship here is like trying to solve depression by physically deforming the depressed man's face into a smile and pretending he's OK. Offending someone by pointing out he's an idiot also doesn't count as speech causing harm, it's just a sad case of someone who is unable to bear hearing truth (or a lie), in which case he shouldn't be listening to people any more than someone with epilepsy should be watching seizure inducing videos.
|
||||||
|
|
||||||
|
**How can we possibly claim speech can't harm anyone?** This question in particular is possibly the one most likely to be come up in response to the previous paragraph. Can't we hurt people with insults, spoilers, lies, doxxing etc.? No, but a bad society can make it so that others get punished for your speech, that people FEEL hurt by speech or that they unnecessarily hurt themselves in reaction to speech. Speech coming from others is just a stream of data without any warranty or guarantee of accuracy or truthfulness, it should be treated as such and can always be simply ignored. Should someone receive information KNOWN to potentially be false but subsequently treat it as truth and get hurt in result, in principle he did the same as if he took a gun and shot himself. Getting "offended" by insults is just a result of chimpanzee [culture](culture.md), insults don't physically hurt anyone and can simply be ignored. But what about doxxing for example? [Doxxing](dox.md) itself doesn't hurt anyone, it's the shitty society that raises lunatics who attack anyone whose whereabouts they get to know. Should we be allowed to breathe freely? Imagine capitalism ten years from now establishing breathing quotas for households and any extra breathing resulting in extra fees in your family's rent. If a child of a poor family refuses to do daily breath holding to save on rent, it hurts its parents who will have to work more in order to pay the extra money. Would you say breathing hurts others? No, but it can be made to look as if it does so that it can be regulated, monitored and made subject to [business](business.md).
|
||||||
|
|
||||||
Some idiots (like that [xkcd](xkcd.md) #1357) say that free speech is only about legality, i.e. about what's merely allowed to be said by the law or what speech the law "protects". Of course, **this is completely wrong** and just reflects this society's obsession with law; true free speech mustn't be limited by anything -- if you're not allowed to say something, it doesn't matter too much what it is that's preventing you, your speech is not free. By the twisted logic of "free speech with consequences" you always have free speech, even in North Korea -- you aren't PHYSICALLY prevented to speak, you just have to bear responsibility for your speech, in this case a bullet. A bullet is a bullet, be it from a government gun or a drug cartel gun, a gun pointed at one's face always makes one not want to talk, no matter who the gun belongs to. If for example it is theoretically legal to be politically incorrect and criticize the LGBT gospel but you [de-facto](de_facto.md) can't do it because the LGBT fascist [SJWs](sjw.md) would [cancel](cancel_culture.md) you and maybe even physically lynch you, your speech is not free. It is important to realize **we mustn't tie free speech to legal definition** (also considering that a [good society](less_retarded_society.md) aims to eliminate law itself), i.e. it isn't enough to make speech free only in legal sense, a **TRUE free speech plainly and simply means anyone can literally say what he wants without any fear at all**. Our goal is to make speech free [culturally](culture.md), i.e. teach people that we should let others speak freely, even those -- and especially those -- who we disagree with.
|
Some idiots (like that [xkcd](xkcd.md) #1357) say that free speech is only about legality, i.e. about what's merely allowed to be said by the law or what speech the law "protects". Of course, **this is completely wrong** and just reflects this society's obsession with law; true free speech mustn't be limited by anything -- if you're not allowed to say something, it doesn't matter too much what it is that's preventing you, your speech is not free. By the twisted logic of "free speech with consequences" you always have free speech, even in North Korea -- you aren't PHYSICALLY prevented to speak, you just have to bear responsibility for your speech, in this case a bullet. A bullet is a bullet, be it from a government gun or a drug cartel gun, a gun pointed at one's face always makes one not want to talk, no matter who the gun belongs to. If for example it is theoretically legal to be politically incorrect and criticize the LGBT gospel but you [de-facto](de_facto.md) can't do it because the LGBT fascist [SJWs](sjw.md) would [cancel](cancel_culture.md) you and maybe even physically lynch you, your speech is not free. It is important to realize **we mustn't tie free speech to legal definition** (also considering that a [good society](less_retarded_society.md) aims to eliminate law itself), i.e. it isn't enough to make speech free only in legal sense, a **TRUE free speech plainly and simply means anyone can literally say what he wants without any fear at all**. Our goal is to make speech free [culturally](culture.md), i.e. teach people that we should let others speak freely, even those -- and especially those -- who we disagree with.
|
||||||
|
|
||||||
**Free speech extends even to such actions as shouting "fire" in a crowded theatre.** In a good society with free speech people don't behave like monkeys, they will not trust a mere shout without having a further proof of there actually being fire and even if they suspect there is fire, they will not panic as that's a retarded thing to do.
|
**Free speech extends even to such actions as shouting "fire" in a crowded theatre.** In a good society with free speech people don't behave like monkeys, they will not trust a mere shout without having a further proof of there actually being fire and even if they suspect there is fire, they will not panic as that's a retarded thing to do.
|
||||||
|
|
|
@ -49,7 +49,7 @@ This section lists some of the most notable human languages. In the brackets the
|
||||||
- **Afrikaans** (~7 M native speakers, *Wat is jou naam?*): Young language, very similar to Dutch and English.
|
- **Afrikaans** (~7 M native speakers, *Wat is jou naam?*): Young language, very similar to Dutch and English.
|
||||||
- **Danish** (~6 M native speakers, *Hvad er dit navn?*): Sounds a little bit like German and Dutch minus the pig sounds.
|
- **Danish** (~6 M native speakers, *Hvad er dit navn?*): Sounds a little bit like German and Dutch minus the pig sounds.
|
||||||
- **Dutch** (~25 M native speakers, Netherlands, [ena], *Wat is jouw naam?*): Similar to English but with added "grunting" pig sounds.
|
- **Dutch** (~25 M native speakers, Netherlands, [ena], *Wat is jouw naam?*): Similar to English but with added "grunting" pig sounds.
|
||||||
- **[English](english.md)** (~400 M native speakers, [eta], *What's your name?*): Most spoken language in the world (considering also non-native speakers), very simple grammar, fixed word order, no letters with accents, pronounces "r" as if "having a hot potato in mouth", awkward spelling of words, can't say the Spanish "j", is the universal world language of modern age, a must know for everyone.
|
- **[English](english.md)** (~400 M native speakers, [eta], *What's your name?*): Most spoken language in the world (considering also non-native speakers), very simple grammar, fixed word order, no letters with accents, pronounces "r" as if "having a hot potato in mouth", awkward spelling of words, can't say the Spanish "j", is the universal world language of modern age, a must know for everyone. Mutually intelligible with Scots.
|
||||||
- **Australian**: Very similar to UK.
|
- **Australian**: Very similar to UK.
|
||||||
- **Irish**: Most prominent feature is probably pronouncing "th" as "t" or "d", pronounce "r"s.
|
- **Irish**: Most prominent feature is probably pronouncing "th" as "t" or "d", pronounce "r"s.
|
||||||
- **New Zealand**: Pronounce certain letters differently, e.g. "pen" sounds like "pin".
|
- **New Zealand**: Pronounce certain letters differently, e.g. "pen" sounds like "pin".
|
||||||
|
@ -58,6 +58,7 @@ This section lists some of the most notable human languages. In the brackets the
|
||||||
- south: TODO
|
- south: TODO
|
||||||
- ...
|
- ...
|
||||||
- **German** (~100 M native speakers, [eni], *Wie heißt du?*): Hard and rough staccato rhythm sound, unpleasant, very long words, identifiable by characteristic rolling "r" and articles like "das", "der" etc.
|
- **German** (~100 M native speakers, [eni], *Wie heißt du?*): Hard and rough staccato rhythm sound, unpleasant, very long words, identifiable by characteristic rolling "r" and articles like "das", "der" etc.
|
||||||
|
- **Scots** (*Whit's yer name?*): Spoken in parts of Scotland, is mutually intelligible with English -- in fact it's often described as "English with funny spelling".
|
||||||
- **Swedish** (~10 M native speakers, [ean], *Vad heter du?*): Mutually intelligible with Norwegian and Danish.
|
- **Swedish** (~10 M native speakers, [ean], *Vad heter du?*): Mutually intelligible with Norwegian and Danish.
|
||||||
- **Yiddish** (~4 M native speakers, *װי הײסטו, "Vi heystu?"*): Language spoken by [Jews](jew.md), developed in Jewish diaspora, an interesting "Frankenstein monster" mix of German, Hebrew and other languages, written right to left.
|
- **Yiddish** (~4 M native speakers, *װי הײסטו, "Vi heystu?"*): Language spoken by [Jews](jew.md), developed in Jewish diaspora, an interesting "Frankenstein monster" mix of German, Hebrew and other languages, written right to left.
|
||||||
- ...
|
- ...
|
||||||
|
|
|
@ -7,6 +7,7 @@ What follows is a "constantly [work in progress](wip.md)" list of subjectively s
|
||||||
- **Obscure [Internet](internet.md) communities**: for example various [wikis](wiki.md) or [image boards](image_board.md), also [darknet](darknet.md), [gopher](gopher.md), internet archives, websites in foreign languages and so on. See also [netstalking](netstalking.md).
|
- **Obscure [Internet](internet.md) communities**: for example various [wikis](wiki.md) or [image boards](image_board.md), also [darknet](darknet.md), [gopher](gopher.md), internet archives, websites in foreign languages and so on. See also [netstalking](netstalking.md).
|
||||||
- **Zanclean flood**: gigantic flood that refilled the Mediterranean sea some 5 million years ago, which must have been a greatly spectacular event. Other similar mega floods are also discussed, e.g. that of the Black sea. Some of them are (often controversially) thought to be the origin of the shared great flood myth that's present in almost all old religions and cultures. A bit related interesting topic is the 20th century Atlantropa mega project that planned to partially dry the Mediterranean to gain more space for Europe.
|
- **Zanclean flood**: gigantic flood that refilled the Mediterranean sea some 5 million years ago, which must have been a greatly spectacular event. Other similar mega floods are also discussed, e.g. that of the Black sea. Some of them are (often controversially) thought to be the origin of the shared great flood myth that's present in almost all old religions and cultures. A bit related interesting topic is the 20th century Atlantropa mega project that planned to partially dry the Mediterranean to gain more space for Europe.
|
||||||
- **[Ball lightning](ball_lightning.md)**: a real weird phenomenon whose existence is not controversial (it is acknowledged to exist) but which still remains without exact [scientific](science.md) explanation. You can find videos of it, descriptions of eye witnesses are also quite fun to read.
|
- **[Ball lightning](ball_lightning.md)**: a real weird phenomenon whose existence is not controversial (it is acknowledged to exist) but which still remains without exact [scientific](science.md) explanation. You can find videos of it, descriptions of eye witnesses are also quite fun to read.
|
||||||
|
- **Statistics, world records, [numbers](number.md), [data](data.md) and their visualization**: there's something wonderful about numbers, and not just to the autistic among us, the success of Guinness World Record book proves that figures are just cool. And computers further take this to another level, opening the door for quick pattern searches, adventurous exploration of correlations, deriving more and more numbers and especially making spectacular eye-candy visualizations, it's just so pleasant to plot and draw pixels, shapes and [colors](color.md) and glimpse into the abstract worlds the data hide, and sometimes we're even rewarded with very visually pleasant results.
|
||||||
- **Extinct animals**: obviously everyone loves dinosaurs (BTW look up well preserved fossils of dinosaurs, some are in excellent state, we also now know for fact the skin color of some dinosaurs, ALSO there exist MILLIONS years old animals perfectly preserved in amber), but there are many underrated extincts animals, e.g. gigantopithecus, the biggest ape known to have ever existed (estimated weight up to 300 kg), which we however know almost nothing about (only teeth were found). More recently extinct species such as mammoth, dodo (recorded in paintings, there exist some remains of dodos), moa bird (extremely large bird), saber-toothed cats, giant sloth, short-faced bear (probably the biggest bear ever) or Tasmanian tiger (which there still exists a black and white video footage of) are interesting exactly because they are closer on the timeline, people may have seen them and even depicted them somehow (e.g. cave paintings), we have may find much better preserved, mummified bodies of them (often in ice) and also have a bigger chance of cloning them one day or even discover them still living somewhere (has happened to several species already).
|
- **Extinct animals**: obviously everyone loves dinosaurs (BTW look up well preserved fossils of dinosaurs, some are in excellent state, we also now know for fact the skin color of some dinosaurs, ALSO there exist MILLIONS years old animals perfectly preserved in amber), but there are many underrated extincts animals, e.g. gigantopithecus, the biggest ape known to have ever existed (estimated weight up to 300 kg), which we however know almost nothing about (only teeth were found). More recently extinct species such as mammoth, dodo (recorded in paintings, there exist some remains of dodos), moa bird (extremely large bird), saber-toothed cats, giant sloth, short-faced bear (probably the biggest bear ever) or Tasmanian tiger (which there still exists a black and white video footage of) are interesting exactly because they are closer on the timeline, people may have seen them and even depicted them somehow (e.g. cave paintings), we have may find much better preserved, mummified bodies of them (often in ice) and also have a bigger chance of cloning them one day or even discover them still living somewhere (has happened to several species already).
|
||||||
- **[UFO](ufo.md)s and aliens**: ufology is pretty fun when when you dig through the real retarded cases and ignore soyence fanatics that will stop being friends with you. Remember, you may enjoy digging into weird, suspicious cases without starting to wear tinfoil or seeing little green men behind anything; even if a UFO turns out to be a new, secret military tech or newly discovered atmospheric phenomenon and not aliens, it's still pretty damn interesting. Some cases are pretty solid, e.g. Hangzhou Xiaoshan (China) 2010 sighting of extremely weird tear in the sky which was scanning the whole city with some kind of obviously artificial light screen for a very long time, which was seen by thousands and captured on camera and video by many (e.g. https://yt.artemislena.eu/watch?v=__9s5chdV7c) and even caused an airport to shut down -- the real nature of the thing was never explained and wasn't even much talked about (there also seems to be another simple-to-debunk cover up UFO sighting under the same keywords). The Travis Walton abduction case is also quite interesting, supported by a lot of evidence and has stood for a very long time. There are also many pretty good footages of weird UFOs, especially interesting are those captured by multiple people from different angles, which are extremely hard to fake.
|
- **[UFO](ufo.md)s and aliens**: ufology is pretty fun when when you dig through the real retarded cases and ignore soyence fanatics that will stop being friends with you. Remember, you may enjoy digging into weird, suspicious cases without starting to wear tinfoil or seeing little green men behind anything; even if a UFO turns out to be a new, secret military tech or newly discovered atmospheric phenomenon and not aliens, it's still pretty damn interesting. Some cases are pretty solid, e.g. Hangzhou Xiaoshan (China) 2010 sighting of extremely weird tear in the sky which was scanning the whole city with some kind of obviously artificial light screen for a very long time, which was seen by thousands and captured on camera and video by many (e.g. https://yt.artemislena.eu/watch?v=__9s5chdV7c) and even caused an airport to shut down -- the real nature of the thing was never explained and wasn't even much talked about (there also seems to be another simple-to-debunk cover up UFO sighting under the same keywords). The Travis Walton abduction case is also quite interesting, supported by a lot of evidence and has stood for a very long time. There are also many pretty good footages of weird UFOs, especially interesting are those captured by multiple people from different angles, which are extremely hard to fake.
|
||||||
- **Known but unexcavated archaeological sites**: e.g. the Qin tomb, a pyramid in China that's a resting place of a great emperor is buried underground -- historical records say the pyramid contains an unbelievable wealth, a great palace and models of cities, seas, waterways of quicksilver and traps protecting against intruders; this is believable as it is also the place where the astonishing terracota army was already excavated. However it is quite likely the pyramid won't be opened during our lifetime, we probably won't ever see it with our eyes. Also the well known pyramids and sphinx of Giza are still very mysterious -- e.g. there are holes in the great Sphinx you can clearly but about which no one ever talks -- you can see they lead somewhere inside but you never see the actual inside, they let no one in and photos are nowhere to be found. Historical places of yet unknown locations, like the hanging gardens of Babylon, are also pretty interesting.
|
- **Known but unexcavated archaeological sites**: e.g. the Qin tomb, a pyramid in China that's a resting place of a great emperor is buried underground -- historical records say the pyramid contains an unbelievable wealth, a great palace and models of cities, seas, waterways of quicksilver and traps protecting against intruders; this is believable as it is also the place where the astonishing terracota army was already excavated. However it is quite likely the pyramid won't be opened during our lifetime, we probably won't ever see it with our eyes. Also the well known pyramids and sphinx of Giza are still very mysterious -- e.g. there are holes in the great Sphinx you can clearly but about which no one ever talks -- you can see they lead somewhere inside but you never see the actual inside, they let no one in and photos are nowhere to be found. Historical places of yet unknown locations, like the hanging gardens of Babylon, are also pretty interesting.
|
||||||
|
@ -28,4 +29,6 @@ What follows is a "constantly [work in progress](wip.md)" list of subjectively s
|
||||||
|
|
||||||
TODO: serial killers?
|
TODO: serial killers?
|
||||||
|
|
||||||
|
## See Also
|
||||||
|
|
||||||
|
- [fun](fun.md)
|
9
lmao.md
9
lmao.md
|
@ -7,7 +7,7 @@ On this wiki we kind of use LMAO as a synonym to [LULZ](lulz.md) as used on [Enc
|
||||||
## LMOA stuff
|
## LMOA stuff
|
||||||
|
|
||||||
- There was a guy who made a whole game (named *DRAGON: A Game About a Dragon*), some 30000+ lines of code, without knowing about the concept of loops. He only ever used the if statement. (This was posted on reddit along with a portion of the code.)
|
- There was a guy who made a whole game (named *DRAGON: A Game About a Dragon*), some 30000+ lines of code, without knowing about the concept of loops. He only ever used the if statement. (This was posted on reddit along with a portion of the code.)
|
||||||
- In 1974 an absolute madman [trolled](trolling.md) a whole city in Alaska that stands under a volcano (Mount Edgecumbe). It was done as April fool's: the guy waited three years for the right weather conditions, then flew 70 old tyres with a helicopter on top of the volcano and set them on fire to make the people think the volcano is about to erupt :D He sprayed "April Fool" next to the fire. fkn kek
|
- In 1974 an absolute madman [trolled](trolling.md) a whole city in Alaska that stands under a volcano (Mount Edgecumbe). It was done for April fools': the guy waited three years for the right weather conditions, then flew 70 old tyres in a helicopter on top of the volcano and set them on fire to make the people think the volcano is about to erupt :D He sprayed "April Fool" next to the fire. fkn kek
|
||||||
- In 2021 [Alexa](alexa.md) (the shitty Amazon voice spy agent) told a 10 year old to touch an electric plug with a penny after the kid asked her "for a challenge".
|
- In 2021 [Alexa](alexa.md) (the shitty Amazon voice spy agent) told a 10 year old to touch an electric plug with a penny after the kid asked her "for a challenge".
|
||||||
- In 2007 [Wikipedia](wikipedia.md) banned the whole country of Qatar because their vandalism filter blocked the single [IP address](ip_address.md) 82.148.97.69 through which Qatar accesses the Internet, which causes a shitton of [lulz](lulz.md).
|
- In 2007 [Wikipedia](wikipedia.md) banned the whole country of Qatar because their vandalism filter blocked the single [IP address](ip_address.md) 82.148.97.69 through which Qatar accesses the Internet, which causes a shitton of [lulz](lulz.md).
|
||||||
- { I've seen a screenshot of code in which some guy exited the program by intentionally dividing by zero, the comment said it was the easiest way. ~drummyfish }
|
- { I've seen a screenshot of code in which some guy exited the program by intentionally dividing by zero, the comment said it was the easiest way. ~drummyfish }
|
||||||
|
@ -16,7 +16,7 @@ On this wiki we kind of use LMAO as a synonym to [LULZ](lulz.md) as used on [Enc
|
||||||
- In 2016 there was a progaming team in Halo called Mi Seng which in a broadcast game did a pretty funny thing: when they were leading they went into hiding in buggy spots and then just did nothing until the time ran out. Normies were crying, the commentators were pretty awkward, they considered this "unethical" xD We consider it pretty cool.
|
- In 2016 there was a progaming team in Halo called Mi Seng which in a broadcast game did a pretty funny thing: when they were leading they went into hiding in buggy spots and then just did nothing until the time ran out. Normies were crying, the commentators were pretty awkward, they considered this "unethical" xD We consider it pretty cool.
|
||||||
- In 2016 [Micro$oft](microsoft.md) released a Twitter [AI](ai.md) bot called Tay which was made to teach itself how to talk from the text on the Internet. It can be guessed it quickly became extremely racist and enraged waves of [SJW](sjw.md)s so they had to shut it down.
|
- In 2016 [Micro$oft](microsoft.md) released a Twitter [AI](ai.md) bot called Tay which was made to teach itself how to talk from the text on the Internet. It can be guessed it quickly became extremely racist and enraged waves of [SJW](sjw.md)s so they had to shut it down.
|
||||||
- The 2009 launch of [Pokemon](pokemon.md) Platinum saw one of the coolest [trollz](trolling.md) ever: during the event someone (who actually wasn't caught but it's speculated it was a guy cosplaying as a Team Rocket) created photoshopped flyers announcing there would be an "official" giveaway of a special Pokemon. The wifi was of course coming from the perpetrator's device and when the kids collected the Pokemon, they received a Gengar named [Nigger](nigger.md) with [stereotypical](stereotype.md) moves such as "thief" and "sucker punch". FUCKING KEK.
|
- The 2009 launch of [Pokemon](pokemon.md) Platinum saw one of the coolest [trollz](trolling.md) ever: during the event someone (who actually wasn't caught but it's speculated it was a guy cosplaying as a Team Rocket) created photoshopped flyers announcing there would be an "official" giveaway of a special Pokemon. The wifi was of course coming from the perpetrator's device and when the kids collected the Pokemon, they received a Gengar named [Nigger](nigger.md) with [stereotypical](stereotype.md) moves such as "thief" and "sucker punch". FUCKING KEK.
|
||||||
- There are many funny stories from [4chan](4chan.md). In 2012 they made masses of Justin Bieber fans shave their heads by spreading fake news that Bieber had cancer under the hashtag #BaldForBieber. In 2013 they made a similarly funny prank by making Justin Bieber fans cut themselves with another faked campaign #CuttingForBieber. In 2013 they made a huge number of Appletoddlers destroy their [iPhones](iphone.md) with fake ads that promoted a new "feature" that makes the phone waterproof via a software update. Similarly in 2014 they spread fake ads about a new iPhone "feature" that would let users charge their phones in a microwave. 4chan also hijacked many internet polls such as the Mountain Dew's poll for naming their new drink in 2012: people from 4chan raided the poll and chose the name "Hitler Did Nothing Wrong", with names such as "Diabeetus" or "Soda" as followers. Another raided poll was that of Talor Swift about at which school she should perform -- 4chan mass voted for a school for deaf children which eventually won (Taylor Switch handled it by donating money to the school). 4chan also chose North Korea as a country for Justin Bieber's tour. Another hilarious story is from 2006 when 4chan raided the Habbo Hotel (a MMO game mostly for children); they made shitton of black characters with afros, went around blocking players from accessing game areas, grouping to form swastikas and famously blocking a hotel pool with the sign "Pool's closed due to AIDS".
|
- Many funny stories come from [4chan](4chan.md). In 2012 they made masses of Justin Bieber fans shave their heads by spreading fake news that Bieber had cancer under the hashtag #BaldForBieber. In 2013 they made a similarly funny prank by making Justin Bieber fans cut themselves with another faked campaign #CuttingForBieber. In 2013 they made a huge number of Appletoddlers destroy their [iPhones](iphone.md) with fake ads that promoted a new "feature" that makes the phone waterproof via a software update. Similarly in 2014 they spread fake ads about a new iPhone "feature" that would let users charge their phones in a microwave. 4chan also hijacked many internet polls such as the Mountain Dew's poll for naming their new drink in 2012: people from 4chan raided the poll and chose the name "Hitler Did Nothing Wrong", with names such as "Diabeetus" or "Soda" as followers. Another raided poll was that of Talor Swift about at which school she should perform -- 4chan mass voted for a school for deaf children which eventually won (Taylor Switch handled it by donating money to the school). 4chan also chose North Korea as a country for Justin Bieber's tour. Another hilarious story is from 2006 when 4chan raided the Habbo Hotel (a MMO game mostly for children); they made shitton of black characters with afros, went around blocking players from accessing game areas, grouping to form swastikas and famously blocking a hotel pool with the sign "Pool's closed due to AIDS".
|
||||||
- In 2022 a proprietary "[smart](smart.md) home" company Insteon got into financial trouble, shut down its servers and left people without functioning houses.
|
- In 2022 a proprietary "[smart](smart.md) home" company Insteon got into financial trouble, shut down its servers and left people without functioning houses.
|
||||||
- In the 1985 book *Big Score: The Billion-Dollar Story: The Billion-Dollar Story of Silicon Valley* there is a nice chapter talking about the manufacturing of integrated chips that explains how the process is (or at least used to be) very unpredictable and how it's basically astrology for the managers to try to predict and maximize the yield rates (the percentage of manufactured chips that function correctly). There were companies whose research showed the number of good chips correlated with the phases of the Moon, another one found that chips were destroyed by tiny droplets of piss on the hands of workers who didn't wash their hands and that [women](woman.md) workers during menstruation destroyed more chips because of the increased amount of oil secreted from their hands.
|
- In the 1985 book *Big Score: The Billion-Dollar Story: The Billion-Dollar Story of Silicon Valley* there is a nice chapter talking about the manufacturing of integrated chips that explains how the process is (or at least used to be) very unpredictable and how it's basically astrology for the managers to try to predict and maximize the yield rates (the percentage of manufactured chips that function correctly). There were companies whose research showed the number of good chips correlated with the phases of the Moon, another one found that chips were destroyed by tiny droplets of piss on the hands of workers who didn't wash their hands and that [women](woman.md) workers during menstruation destroyed more chips because of the increased amount of oil secreted from their hands.
|
||||||
- In 2018 Hungary banned [gender studies](gender_studies.md) as ideology that has nothing in common with science :D
|
- In 2018 Hungary banned [gender studies](gender_studies.md) as ideology that has nothing in common with science :D
|
||||||
|
@ -30,14 +30,13 @@ On this wiki we kind of use LMAO as a synonym to [LULZ](lulz.md) as used on [Enc
|
||||||
- Some people believe there is a fictional whole number between 6 and 7 called [thrembo](thrembo.md).
|
- Some people believe there is a fictional whole number between 6 and 7 called [thrembo](thrembo.md).
|
||||||
- Some company was accused of racism when its policies forbid hiring people with criminal history, the accusation was that such policy is discriminatory against [black](black.md) people. This left many [SJW](sjw.md)s scratching their heads in confusion -- are the accusers in fact good because they help black people get jobs or bad because they assume criminals are mostly black? :D
|
- Some company was accused of racism when its policies forbid hiring people with criminal history, the accusation was that such policy is discriminatory against [black](black.md) people. This left many [SJW](sjw.md)s scratching their heads in confusion -- are the accusers in fact good because they help black people get jobs or bad because they assume criminals are mostly black? :D
|
||||||
- { Once a friend had trouble compiling something, so I asked what error the compiler gave. He said it printed this: `error: too many errors`. Thank you very much compiler :D ~drummyfish }
|
- { Once a friend had trouble compiling something, so I asked what error the compiler gave. He said it printed this: `error: too many errors`. Thank you very much compiler :D ~drummyfish }
|
||||||
|
|
||||||
|
|
||||||
- [Lizard Squad](lizard_squad.md) was a "hacker" group that brought a shitton of lulz in mid 2010s by [DDOSing](ddos.md) various faggot child games and [corporation](corporation.md) while laughing at the FBI who was absolutely powerless as they were of course hiding behind 7 proxies. The whole story is very funny, especially notable is how they literally **ruined the Christmas in 2014** by taking down PlayStation an XBox servers on Christmas day so that little children (and big manchildren) couldn't play games they received as presents LMAO :D They claimed it's very sad that kids can no longer entertain themselves if a game goes off for a few hours, which is absolutely true and on point, but corporations indeed weren't happy and their managers shit their pants. (We also add it's quite retarded that video games no longer function without connecting to the Internet, which is absolutely how the corpos wanted it, so they should be to blame in the first place). But that's not all, they did this all despite various "white knight hackers", self proclaimed "crime [fighting](fight_culture.md) ETHICAL MORAL keyboard warriors" that just couldn't do anything and had to just ragequit. No that's not all still, the Lizard Squad also literally **DDOSed North Korea and shut down its Internet** just because :D Anyone who badmouthed the lizards on twitter got a website hacked, one rich faggot in a suit got his plane delay by reports of bombs on the plane because he expressed hostility against them. Some of the members got sadly arrested in the end due to some stupid mistake, but their achievements remain legendary.
|
- [Lizard Squad](lizard_squad.md) was a "hacker" group that brought a shitton of lulz in mid 2010s by [DDOSing](ddos.md) various faggot child games and [corporation](corporation.md) while laughing at the FBI who was absolutely powerless as they were of course hiding behind 7 proxies. The whole story is very funny, especially notable is how they literally **ruined the Christmas in 2014** by taking down PlayStation an XBox servers on Christmas day so that little children (and big manchildren) couldn't play games they received as presents LMAO :D They claimed it's very sad that kids can no longer entertain themselves if a game goes off for a few hours, which is absolutely true and on point, but corporations indeed weren't happy and their managers shit their pants. (We also add it's quite retarded that video games no longer function without connecting to the Internet, which is absolutely how the corpos wanted it, so they should be to blame in the first place). But that's not all, they did this all despite various "white knight hackers", self proclaimed "crime [fighting](fight_culture.md) ETHICAL MORAL keyboard warriors" that just couldn't do anything and had to just ragequit. No that's not all still, the Lizard Squad also literally **DDOSed North Korea and shut down its Internet** just because :D Anyone who badmouthed the lizards on twitter got a website hacked, one rich faggot in a suit got his plane delay by reports of bombs on the plane because he expressed hostility against them. Some of the members got sadly arrested in the end due to some stupid mistake, but their achievements remain legendary.
|
||||||
- God's miracle caught on stream! On April 5th 2013 a "disabled" twitch streamer ZilianOP who was supposedly paralyzed and couldn't walk forgot for a while during live stream that he was paralyzed, he stood up from the wheelchair and went for something, revealing he was in fact just faking the disability so as to be considered an American [hero](hero_culture.md) and get more of those viewers seeking inspirational motivators or something :D I'M DISABLED BUT STILL PLAY VIDEO GAMES, WHAT'S YOUR EXCUSE! He then hilariously tried to cover it up along with his girlfriend, saying shit like "nonono, I fell from the chair" and then switching to "I could walk a bit thanks to therapy but I was keeping it secret because I wanted to surprise my girlfriend", you wouldn't believe to what lengths they went lol. On the other hand if you're white and not a [female](woman.md) with large breasts, being disabled is the only chance to ever get any views, so can we really blame him?
|
- God's miracle caught on stream! On April 5th 2013 a "disabled" twitch streamer ZilianOP who was supposedly paralyzed and couldn't walk forgot for a while during live stream that he was paralyzed, he stood up from the wheelchair and went for something, revealing he was in fact just faking the disability so as to be considered an American [hero](hero_culture.md) and get more of those viewers seeking inspirational motivators or something :D I'M DISABLED BUT STILL PLAY VIDEO GAMES, WHAT'S YOUR EXCUSE! He then hilariously tried to cover it up along with his girlfriend, saying shit like "nonono, I fell from the chair" and then switching to "I could walk a bit thanks to therapy but I was keeping it secret because I wanted to surprise my girlfriend", you wouldn't believe to what lengths they went lol. On the other hand if you're white and not a [female](woman.md) with large breasts, being disabled is the only chance to ever get any views, so can we really blame him?
|
||||||
- On occasion [reddit](reddit.md) offered its fair share of quality material as well, for example one TIFU (today I fucked up... might actually even have been the TIL subreddit lol) thread recounted a true story of a guy who grew up well into adulthood thinking that toilet seats were ONLY MEANT TO BE USED BY [WOMEN](woman.md) and that men simply sit on the cold toilet edge when they shit :D Apparently no one ever taught him and he only learned about the fact that men can use the seat too when he was buying a new toilet seat and joked with the salesman by saying something along the lines of "haha, if I didn't have a wife I wouldn't have to be spending money on toilet seats" -- then when the guy just stared in confusion all came to be revealed.
|
- On occasion [reddit](reddit.md) offered its fair share of quality material as well, for example one TIFU (today I fucked up... might actually even have been the TIL subreddit lol) thread recounted a true story of a guy who grew up well into adulthood thinking that toilet seats were ONLY MEANT TO BE USED BY [WOMEN](woman.md) and that men simply sit on the cold toilet edge when they shit :D Apparently no one ever taught him and he only learned about the fact that men can use the seat too when he was buying a new toilet seat and joked with the salesman by saying something along the lines of "haha, if I didn't have a wife I wouldn't have to be spending money on toilet seats" -- then when the guy just stared in confusion all came to be revealed.
|
||||||
- In 1991 Gerald Ratner, an incredibly stupid [CEO](ceo.md) (just like every other CEO) of some kind of "big game" jewelry company, delivered what is generally regarded to be the worst speech in [history](history.md). In it he awkwardly attempted
|
- In 1991 Gerald Ratner, an incredibly stupid [CEO](ceo.md) (just like every other CEO) of some kind of "big game" jewelry company, delivered what is generally regarded to be the worst speech in [history](history.md). In it he awkwardly attempted
|
||||||
to deliver prepared [jokes](jokes.md) (see also [humorwashing](humorwashing.md)) that were not just poor but downright retarded, for example he stated: *People ask me "How can you sell for such low prices?" I say "because it's total crap".* This backfired so much that the company's value fell down by 500 million pounds lol.
|
to deliver prepared [jokes](jokes.md) (see also [humorwashing](humorwashing.md)) that were not just poor but downright retarded, for example he stated: *People ask me "How can you sell for such low prices?" I say "because it's total crap".* This backfired so much that the company's value fell down by 500 million pounds lol.
|
||||||
- Epic trollz were conducted sometime in early 2020s by tinyviolin69 in [World of Warcraft](wow.md), most noteworthy of them was probably the following. He played on the hardcore server where character deaths are [permanent](permadeath.md), i.e. if you put 10000 hours into leveling and gearing up an epic character and then die in any way, even by slipping off of a slightly higher cliff, it's all gone to shit, the character's gone and you need to start over. The guy leveled up a high level character, entered a guild, gained their trust and then, in a raid that was carefully planned and discussed for hours so that no one would die, he deliberately fucked up so that basically everyone died :D He practically destroyed years worth of "work" of many children that day, they all cried like little babies. We applaud this, it's very stupid for anyone to attach to a video game like these children, AND especially to a permadeath game. The game is also gay as fuck, this is the only fun that can be had in it nowadays.
|
- As highlighted by [this kiwifarm post](https://kiwifarms.net/threads/reddit-general.8257/post-4264129), some idiot on [reddit](reddit.md) asked for help with his CV and posted it [unredacted](censorship.md) for everyone to see. How could it go wrong, right? The Internet took the challenge :D Someone downloaded the CV, modified it slightly by adding various lulz such as ["racist" keywords](nigger.md) and sent it to dozens of companies as an application. OP got swiftly blacklisted by all companies and even got calls from the managers asking how he could be such a human monster :D Great job.
|
||||||
|
- Epic trollz were conducted sometime in early 2020s by tinyviolin69 in [World of Warcraft](wow.md), most noteworthy of which was probably the following. He played on the hardcore server where character deaths are [permanent](permadeath.md), i.e. if you put 10000 hours into leveling and gearing up an epic character and then die in any way, even by slipping off of a slightly higher cliff, it's all gone to shit, the character's gone and you need to start over. The guy leveled up a high level character, entered a guild, gained their trust and then, in a raid that was carefully planned and discussed for hours so that no one would die, he deliberately fucked up so that basically everyone died :D He practically destroyed years worth of "work" of many children that day, they all cried like little babies. We applaud this, it's very stupid for anyone to attach to a video game like these children, AND especially to a permadeath game. The game is also gay as fuck, this is the only fun that can be had in it nowadays.
|
||||||
- Soyjak.party is a bunch of cringey [zoomer](zoomer.md) children, but it must be admitted their raids are very funny, for example the **Jackbox raids** (documented at https://wiki.soyjak.st/Jackbox_raiding) in which they troll tranny Twitch stremers via shitty Twitch minigames by spamming [niggers](nigger.md), swastikas, [gay](gay.md) porn and stuff alike :D Imagine audience of thousand little kids suddenly seeing someone win a shitty marble race with a profile picture of hanged tranny or a guy in Team Fortress putting a sign with stretched male anus right in front of the streamer's camera :D All the videos of this are available on their wiki.
|
- Soyjak.party is a bunch of cringey [zoomer](zoomer.md) children, but it must be admitted their raids are very funny, for example the **Jackbox raids** (documented at https://wiki.soyjak.st/Jackbox_raiding) in which they troll tranny Twitch stremers via shitty Twitch minigames by spamming [niggers](nigger.md), swastikas, [gay](gay.md) porn and stuff alike :D Imagine audience of thousand little kids suddenly seeing someone win a shitty marble race with a profile picture of hanged tranny or a guy in Team Fortress putting a sign with stretched male anus right in front of the streamer's camera :D All the videos of this are available on their wiki.
|
||||||
- The most humiliating defeat in [Warcraft III's](warcraft3.md) history was probably the match of WEG 2005 between Moon (Korea, considered by some the GOAT) playing as Night Elf [race](race.md) and Tod (France) playing as Human. The game is known for allowing a lot of cheesy strats and trolls, but on the highest levels it's still rare to win with a lulzy strat. Still Moon was so incredibly good he managed to do the following: he reached the ultimate spell which allows to steal the enemy units, he then stole Tod's worker which enabled him to start creating buildings of the human race, i.e. buildings that for him as an elf aren't normally available, then built a human town, trained human units and beat Tod with the units of his own race. To this day Tod gets quite irritated when asked about this in interviews.
|
- The most humiliating defeat in [Warcraft III's](warcraft3.md) history was probably the match of WEG 2005 between Moon (Korea, considered by some the GOAT) playing as Night Elf [race](race.md) and Tod (France) playing as Human. The game is known for allowing a lot of cheesy strats and trolls, but on the highest levels it's still rare to win with a lulzy strat. Still Moon was so incredibly good he managed to do the following: he reached the ultimate spell which allows to steal the enemy units, he then stole Tod's worker which enabled him to start creating buildings of the human race, i.e. buildings that for him as an elf aren't normally available, then built a human town, trained human units and beat Tod with the units of his own race. To this day Tod gets quite irritated when asked about this in interviews.
|
||||||
- Some parents [trolled](trolling.md) their children by giving them the same name lol, see [this](https://old.reddit.com/r/namenerds/comments/5wltvf/same_first_name_for_siblings/?rdt=42972).
|
- Some parents [trolled](trolling.md) their children by giving them the same name lol, see [this](https://old.reddit.com/r/namenerds/comments/5wltvf/same_first_name_for_siblings/?rdt=42972).
|
||||||
|
|
|
@ -65,7 +65,7 @@ Mandelbrot set (also M-set) is a famous two dimensional [fractal](fractal.md), a
|
||||||
|
|
||||||
*Simple ASCII rendering of Mandelbrot set, below a zoomed-in detail.*
|
*Simple ASCII rendering of Mandelbrot set, below a zoomed-in detail.*
|
||||||
|
|
||||||
**Definition**: we use [complex numbers](complex_number.md) to define the set. Consider the following series of complex numbers *z[n]*:
|
**Definition**: we use [complex numbers](complex_number.md) to define the set. Take the following series of complex numbers *z[n]*:
|
||||||
|
|
||||||
*z[0] = 0*, *z[n + 1] = z[n]^2 + p*
|
*z[0] = 0*, *z[n + 1] = z[n]^2 + p*
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ Mandelbrot set is the set of all points *p* for which the [absolute value](abs.m
|
||||||
|
|
||||||
NOTE: here is the series equation rewritten to just work with *x* and *y* coordinates. Checking the point *[px,py]*, your series will be *x[n + 1] = x[n]^2 - y[n]^2 + px* and *y[n + 1] = 2 * x[n] * y[n] + py*.
|
NOTE: here is the series equation rewritten to just work with *x* and *y* coordinates. Checking the point *[px,py]*, your series will be *x[n + 1] = x[n]^2 - y[n]^2 + px* and *y[n + 1] = 2 * x[n] * y[n] + py*.
|
||||||
|
|
||||||
I.e. taking any point *p* in the complex plane (whose real and imaginary parts we see as the *x* and *y* coordinates), plugging it into the above equation and iterating the series infinitely many times, if the absolute value of *z[n]* stays bounded under some finite value (even very large, just not infinitely large), the number belongs to the set, otherwise not (if the absolute value diverges towards infinity). I.e. in other words the Mandelbrot set is a set of kind of "well behaved" points that don't shoot away to infinity when we keep applying some operation to them over and over. Of course computers cannot evaluate infinitely many iterations of the series so they cannot compute the set 100% accurately, but we may very well [approximate](approximation.md) by performing many iterations (let's 100000) and seeing if the value we get is "very large" (let's say 1000000000) when we stop -- this will work correctly for most points and those few points near the set borders where we make a wrong guess won't really be noticed unless we zoom in very close -- in such cases we can simply perform more iterations to increase precision. To add **[colors](color.md)** to the visualization (so that we don't observe just the borders but also some kind of structure inside and outside of the set) we may simply assign different colors to the points depending e.g. on how big the absolute value is at the time we stop the evaluation, or how many iterations it took for the absolute value to exceed given limit (for points outside the set). Also note that for nice pictures we should apply [antialiasing](antialiasing.md). Additional fancy filters and [shaders](shader.md) such as some kind of postprocessing or fake 3D can also be applied to make the result even more impressive.
|
I.e. taking any point *p* in the complex plane (whose real and imaginary parts we see as the *x* and *y* coordinates), plugging it into the above equation and iterating the series infinitely many times, if the absolute value of *z[n]* stays bounded under some finite value (even very large, just not infinitely large), the number belongs to the set, otherwise not (if the absolute value diverges towards infinity). I.e. in other words the Mandelbrot set is a set of kind of "well behaved" points that don't shoot away to infinity by repeated application of a particular equation. Of course computers cannot evaluate infinitely many iterations of the series so they cannot compute the set 100% accurately, but we may very well [approximate](approximation.md) by performing many iterations (let's 100000) and checking if the value we get is "very large" (let's say 1000000000) when we stop -- this will work correctly for most points and those few points near the set borders where we make a wrong guess won't really be noticed unless we zoom in very close -- in such cases we can simply perform more iterations to increase precision. To add **[colors](color.md)** to the visualization (so that we don't observe just the borders but also some kind of structure inside and outside of the set) we may simply assign different colors to the points depending e.g. on how big the absolute value is at the time we stop the evaluation, or how many iterations it took for the absolute value to exceed given limit (for points outside the set). Note also that high quality pictures should apply [antialiasing](antialiasing.md) such as [supersampling](supersampling.md). Additional fancy filters and [shaders](shader.md) such as some kind of postprocessing or fake 3D can also be applied to make the result even more impressive.
|
||||||
|
|
||||||
There are further **[optimizations](optimization.md)** we may apply to calculate the set faster. The set itself also lies in the circle centered at [0,0] with radius 2, so points outside this area can be safely marked as lying outside the set. Furthermore it's proven that if absolute value of *z[n]* ever gets greater than 2, the point won't lie in the set (because getting absolute value greater than 2 basically means we start checking a point that inevitably lies outside the circle with radius 2 inside which the whole set lies, so we know the point won't lie in the set). A quick [bailout](bailout.md) check (not requiring square roots etc.) here can therefore be e.g. checking if either the real of imaginary component absolute value exceeds 2 (which implies the whole vector length must exceed 2 as well), or checking if the sum of squares of the components exceeds 4 (i.e. we squared both sides of the equation and got rid of the square root). [Symmetry](symmetry.md) of the set can also be used to skip computing some points. Further more complex optimizations exist, based e.g. on estimating distance of any given point to the set border etc.
|
There are further **[optimizations](optimization.md)** we may apply to calculate the set faster. The set itself also lies in the circle centered at [0,0] with radius 2, so points outside this area can be safely marked as lying outside the set. Furthermore it's proven that if absolute value of *z[n]* ever gets greater than 2, the point won't lie in the set (because getting absolute value greater than 2 basically means we start checking a point that inevitably lies outside the circle with radius 2 inside which the whole set lies, so we know the point won't lie in the set). A quick [bailout](bailout.md) check (not requiring square roots etc.) here can therefore be e.g. checking if either the real of imaginary component absolute value exceeds 2 (which implies the whole vector length must exceed 2 as well), or checking if the sum of squares of the components exceeds 4 (i.e. we squared both sides of the equation and got rid of the square root). [Symmetry](symmetry.md) of the set can also be used to skip computing some points. Further more complex optimizations exist, based e.g. on estimating distance of any given point to the set border etc.
|
||||||
|
|
||||||
|
|
|
@ -8,10 +8,12 @@
|
||||||
|
|
||||||
Digital privacy can be further categorized. We can talk e.g. about **communication privacy** (emails, chat, ...), **data privacy** (cookies, tracking, medical data, ...), **personal privacy** (intimate photos, sexual orientation, ... ), **individual privacy** (identifying information, anonymity, [spam](spam.md), ...) etc. Privacy is also closely related to **[cryptography](cryptography.md)**, as [encryption](encryption.md) is how information can be "protected" against reaching unauthorized entities, and to [free software](free_software.md), as using safe tools with available source code is crucial to avoid malware. Still, to achieve high privacy additional appropriate behavior has to be adopted, e.g. protection against [spyware](spyware.md), using proxies and/or onion routing, turning off browser [cookies](cookie.md), avoiding fingerprinting, avoiding [social networks](social_network.md), avoiding revealing potentially identifying information etc.
|
Digital privacy can be further categorized. We can talk e.g. about **communication privacy** (emails, chat, ...), **data privacy** (cookies, tracking, medical data, ...), **personal privacy** (intimate photos, sexual orientation, ... ), **individual privacy** (identifying information, anonymity, [spam](spam.md), ...) etc. Privacy is also closely related to **[cryptography](cryptography.md)**, as [encryption](encryption.md) is how information can be "protected" against reaching unauthorized entities, and to [free software](free_software.md), as using safe tools with available source code is crucial to avoid malware. Still, to achieve high privacy additional appropriate behavior has to be adopted, e.g. protection against [spyware](spyware.md), using proxies and/or onion routing, turning off browser [cookies](cookie.md), avoiding fingerprinting, avoiding [social networks](social_network.md), avoiding revealing potentially identifying information etc.
|
||||||
|
|
||||||
**Society is becoming more and more obsessed with privacy and that is EXTREMELY BAD.** It leads to hardcore [censorship](censorship.md), people are hiding their email addresses so it's impossible to contact them, photos of child faces are wiped from the Internet, more and more videos on the internet now just blur everything in the video that's not the main focus of it, "just in case", people are even afraid to credit other people by name even if they are e.g. legally obliged to by a license such as CC-BY-SA ([lmao](lmao.md) https://forum.freegamedev.net/viewtopic.php?f=7&t=19322). Everyone is like OH NOES they gonn steal my personal face pixelzzz, MY FACE IS LIKE MY HOUSE. Such [retardedness](retard.md) has probably never been seen yet.
|
**Society is becoming more and more obsessed with privacy and that is DISASTROUSLY WRONG.** It leads to unprecedented [censorship](censorship.md), people are hiding their email addresses so it's impossible to reach anyone, photos of child faces are wiped from the Internet, more and more videos on the internet now just blur everything that's not the main focus of it, "just in case", people are even afraid to credit other people by name even if they are literally legally obliged to by a license such as CC-BY-SA ([lmao](lmao.md) https://forum.freegamedev.net/viewtopic.php?f=7&t=19322). Everyone is like OH NOES they gonn steal my personal face pixelzzz, MY FACE IS LIKE MY HOUSE. Such [retardedness](retard.md) is beyond words.
|
||||||
|
|
||||||
{ Critique of privacy on a similar note: https://archive.li/bRiVs#90%. ~drummyfish }
|
{ Critique of privacy on a similar note: https://archive.li/bRiVs#90%. ~drummyfish }
|
||||||
|
|
||||||
|
In addition to all this, increasing "privacy" and anonymity are responsible for **immense [cultural](culture.md) damage** as well. Nowadays we live great portions of our lives online, our interactions and relationships live on the Internet, and as we're covering up more and more of ourselves, we **dehumanize ourselves**. We form relationships with letters on the screen, with no face, body language, age, gender, [race](race.md) or country. People conceal who they are and the insane [identity politics](identity_politics.md) all around only adds fuel to the fire by encouraging us to DENY who we are, to pretend to ACTUALLY be what we WISH to be. There is nothing wrong with wishes and desires, but it's important to acknowledge reality too, even if we're not particularly happy about lack power to change it: a 10 year old girl from Sweden can never see the world through the eyes of a 60 year old man from China, a starving African orphan is not the same kind of human as a rich American university student -- who we physically ARE plays an irreplaceable role in social interactions, feeling emotion, falling in [love](love.md), choosing friends and much more. This all has been removed by ever increasing anonymity, we are severely deprived of humanity, everyone's been reduced to a username. This wasn't always so -- back in the times of old Internet people shared their names and photos and even contact information, it's one of the reasons for why the Internet was so much happier and brighter back then.
|
||||||
|
|
||||||
**Accepting privacy inevitably comes with accepting pretense**, i.e. if privacy and anonymity is important, we are accepting the fact that people publicly pretend to be something they are not and only under the mask of anonymity will say what they truly think, i.e. we accept that pretense and public lying is normal. That's a completely fucked up mindset which a [good society](less_retarded_society.md) cannot accept. We have to make it so that people can be who they are publicly, that they can say and act publicly as they act in private.
|
**Accepting privacy inevitably comes with accepting pretense**, i.e. if privacy and anonymity is important, we are accepting the fact that people publicly pretend to be something they are not and only under the mask of anonymity will say what they truly think, i.e. we accept that pretense and public lying is normal. That's a completely fucked up mindset which a [good society](less_retarded_society.md) cannot accept. We have to make it so that people can be who they are publicly, that they can say and act publicly as they act in private.
|
||||||
|
|
||||||
If we [extrapolate](extrapolation.md) the situation into the [future](future.md), we can see where sustaining this will lead. If you go out, you'll always have to wear a full body protective cloak, face mask and, of course, you privacy high heels -- remember, your body proportions and body height are your private data, you don't want to give these away to the cameras lurking outside. You won't be able to talk freely to anyone, not even closest friends and family in complete privacy -- your information is not safe with anyone, anyone can slip or give it away unknowingly, so no, your friends mustn't know your favorite color, names of your pets, number of siblings, your gender, age, that's all too sensitive, a sufficiently smart AI will be able to deduce your password from it, or connect it with other information flying around, catching you into its net. Better minimize talking to your friend about anything at all, better not go outside unless you absolutely must, better stay in your cellar, be anonymous and safe, die happy in the darkness knowing no one knew anything about you, as if you never existed at all.
|
If we [extrapolate](extrapolation.md) the situation into the [future](future.md), we can see where sustaining this will lead. If you go out, you'll always have to wear a full body protective cloak, face mask and, of course, you privacy high heels -- remember, your body proportions and body height are your private data, you don't want to give these away to the cameras lurking outside. You won't be able to talk freely to anyone, not even closest friends and family in complete privacy -- your information is not safe with anyone, anyone can slip or give it away unknowingly, so no, your friends mustn't know your favorite color, names of your pets, number of siblings, your gender, age, that's all too sensitive, a sufficiently smart AI will be able to deduce your password from it, or connect it with other information flying around, catching you into its net. Better minimize talking to your friend about anything at all, better not go outside unless you absolutely must, better stay in your cellar, be anonymous and safe, die happy in the darkness knowing no one knew anything about you, as if you never existed at all.
|
||||||
|
@ -35,3 +37,7 @@ By this viewpoint, [LRS](lrs.md)'s stance towards privacy differs from that of m
|
||||||
"[Right](rights_culture.md) to be forgotten" is the stupidest crap anyone has ever come up with.
|
"[Right](rights_culture.md) to be forgotten" is the stupidest crap anyone has ever come up with.
|
||||||
|
|
||||||
**So what now?** Should we just literally dump our passwords, home address, phone number and credit card info online? Of course nowadays this would almost equate [suicide](suicide.md), for most it's not possible or advised to make such a huge leap immediately. Remember, LRS advocates slow evolution towards a better state of affairs, i.e. we should firstly realize that the status quo and current mindset are harmful, secondly we should educate others about it and along the way we should start relaxing our fear of losing privacy slowly. Great philosophers of ancient Greece spoke of an ideal stance towards death and told us to not fear it -- do not seek it but don't fear it either; you may not desire death but at the same time you may also not let it enslave you by making you avoid it at any cost. It's similar with our cause: you don't have to commit suicide, just don't let privacy enslave you anymore. Your goal doesn't have to be to achieve perfection in giving away 100% of your secrets; rather make it a goal to become more free from secrecy, even if perfection can't be achieved. You can probably let your real name, face photo and country of origin be known publicly, there is zero danger in this, and by doing so you free yourself a bit more, cure a bit of that phobia. Later on you will perhaps be able to make further steps such as sharing your autobiography and nude photos -- this is very doable. And perhaps you'll find this freedom so good that you will cancel all your bank accounts and social media and then you can comfortably share even your password to achieve absolute freedom from secrecy.
|
**So what now?** Should we just literally dump our passwords, home address, phone number and credit card info online? Of course nowadays this would almost equate [suicide](suicide.md), for most it's not possible or advised to make such a huge leap immediately. Remember, LRS advocates slow evolution towards a better state of affairs, i.e. we should firstly realize that the status quo and current mindset are harmful, secondly we should educate others about it and along the way we should start relaxing our fear of losing privacy slowly. Great philosophers of ancient Greece spoke of an ideal stance towards death and told us to not fear it -- do not seek it but don't fear it either; you may not desire death but at the same time you may also not let it enslave you by making you avoid it at any cost. It's similar with our cause: you don't have to commit suicide, just don't let privacy enslave you anymore. Your goal doesn't have to be to achieve perfection in giving away 100% of your secrets; rather make it a goal to become more free from secrecy, even if perfection can't be achieved. You can probably let your real name, face photo and country of origin be known publicly, there is zero danger in this, and by doing so you free yourself a bit more, cure a bit of that phobia. Later on you will perhaps be able to make further steps such as sharing your autobiography and nude photos -- this is very doable. And perhaps you'll find this freedom so good that you will cancel all your bank accounts and social media and then you can comfortably share even your password to achieve absolute freedom from secrecy.
|
||||||
|
|
||||||
|
## See Also
|
||||||
|
|
||||||
|
- [security](security.md)
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
*"PRODUCE PRODUCE PRODUCE PRODUCE PRODUCE"* --[capitalism](capitalism.md)
|
*"PRODUCE PRODUCE PRODUCE PRODUCE PRODUCE"* --[capitalism](capitalism.md)
|
||||||
|
|
||||||
Productivity cult (often connected to terms such as *self improvement*, *personal growth*, *personal development* etc.) is one of [modern](modern.md) [capitalist](capitalism.md) religions which praises human productivity above everything, even happiness, well being, sanity etc. Kids nowadays are all about "how to get more motivated and productive", they make daily checklists, analyze tables of their weekly performance, count how much time they spend taking a [shit](shit.md) on the toilet, give up sleep to study some useless [bullshit](bullshit.md) required by the current market fluctuation. Productivity cult is all about voluntarily making oneself a robot, a slave to the system that worships capital. As [Froge](froge.md) put it: "The world of self improvement gurus is a circlejerk of such magnitude it rivals several world religions".
|
Productivity cult (often connected to terms such as *self improvement*, *personal growth*, *personal development* etc.) is one of [modern](modern.md) [capitalist](capitalism.md) religions which praises human productivity above everything, even happiness, well being, sanity etc. [Kids nowadays](kids_nowadays.md) are all about "how to get more motivated and productive", they make daily checklists, analyze tables of their weekly performance, count how often they take a [shit](shit.md), give up sleep to study some useless [bullshit](bullshit.md) required by the current market fluctuation. Productivity cult is all about voluntarily reducing oneself to a robot slaving to the system that worships capital. As [Froge](froge.md) put it: "The world of self improvement gurus is a [circlejerk](circlejerk.md) of such magnitude it rivals several world religions".
|
||||||
|
|
||||||
A human is living being, not a machine, he should live a happy relaxed life, dedicated to spending time with his close ones, raising children, enjoying the beauties of nature, exploring secrets of the universe, without stress; he should create when inspiration or a truly great necessity comes to him and when he does, he should take his time to carefully make the art great, without hasting it or forcing it. Productivity cult goes all against this, it proclaims one should be constantly spitting out "something", torturing and forcing himself, maximizing quantity on detriment of quality, undergo constant stress while suppressing rest -- that one should all the time be preoccupied with competitive [fight](fight_culture.md), deadlines, that art he creates is something that can be planned on schedule, made on deadline and assigned a calculated price tag to be an ideal consumerist product. If such stance towards life doesn't make you wanna puke, you most likely lack a soul.
|
A human is [living being](life.md), not a machine. He should live a happy relaxed life, dedicated to spending his limited time with relatives and friends, upbringing offspring, admiring the beauties of nature, exploring secrets of the [universe](universe.md), ideally without stress and unnecessary suffering; he should create when inspiration or exceptional necessity comes and when he does, he should take his time to carefully produce good [art](art.md), without haste, force or disgust. Productivity cult shits on this whole concept. It proclaims man should be constantly spitting out "something", torturing and forcing himself, maximizing quantity on detriment of quality, undergo constant stress while dodging rest and peace of mind -- that one should all the time keep himself preoccupied with [competitive](competition.md) [fight](fight_culture.md), deadlines, that art he creates is something that can be planned on schedule, made on deadline and assigned a calculated price tag to be an ideal consumerist product. If such stance towards life doesn't make you wanna puke, you most likely lack a soul.
|
||||||
|
|
||||||
Do not produce. Create. Art takes time and can't be scheduled or forced.
|
Do not produce. Create. Art takes time and can't be scheduled or forced.
|
||||||
|
|
||||||
The name of the cult itself [gives away a lot](name_is_important.md). While a name such as *efficiency* would probably be better, as efficiency means doing less work with the same result and therefore having more free time, it is not a surprise that capitalism has chosen the word *productivity*, i.e. producing more which means working more, e.g. for the price of free time and mental health.
|
The name of the cult itself [gives away a lot](name_is_important.md). Whereas a name such as *efficiency* would likely be more appropriate, as efficiency stands for doing less work with the same result and therefore having more free time, it is not a surprise that capitalism has chosen the word *productivity*, i.e. producing more which means working more, e.g. for the price of free time and mental health.
|
||||||
|
|
||||||
Those obsessed with productivity are mostly idiots lacking the ability to think independently, they sport desktops with "[motivational](motivation.md)" wallpapers preaching shit like "the word impossible doesn't exist in my dictionary!" and when you tell them if it wouldn't be better to rather establish a society where people wouldn't have to work they start screeching "HAHAA THATS IMPOSSIBLE IT CANT WORK". Productivity maximalists bully others for taking rest or doing what they otherwise enjoy in moderation -- they invent words such as "[procrastination](procrastination.md)" to create a feeling of ever present guilt induced by doing what one truly enjoys.
|
Those obsessed with productivity are mostly idiots lacking the ability to think independently, they sport desktops with "[motivational](motivation.md)" wallpapers preaching shit like "the word impossible doesn't exist in my dictionary!" and when you tell them if it wouldn't be better to rather establish a society where people wouldn't have to work they start screeching "HAHAA THATS IMPOSSIBLE IT CANT WORK". Productivity maximalists bully others for taking rest or doing what they otherwise enjoy in moderation -- they invent words such as "[procrastination](procrastination.md)" to create a feeling of ever present guilt induced by doing what one truly enjoys.
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ Finally you need to actually release your work into the public domain. Remember
|
||||||
|
|
||||||
*Each contributor to this work agrees that they waive any exclusive rights, including but not limited to copyright, patents, trademark, trade dress, industrial design, plant varieties and trade secrets, to any and all ideas, concepts, processes, discoveries, improvements and inventions conceived, discovered, made, designed, researched or developed by the contributor either solely or jointly with others, which relate to this work or result from this work. Should any waiver of such right be judged legally invalid or ineffective under applicable law, the contributor hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to this right.* }
|
*Each contributor to this work agrees that they waive any exclusive rights, including but not limited to copyright, patents, trademark, trade dress, industrial design, plant varieties and trade secrets, to any and all ideas, concepts, processes, discoveries, improvements and inventions conceived, discovered, made, designed, researched or developed by the contributor either solely or jointly with others, which relate to this work or result from this work. Should any waiver of such right be judged legally invalid or ineffective under applicable law, the contributor hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to this right.* }
|
||||||
|
|
||||||
NOTE: You may be thinking that it doesn't really matter if you waive your rights properly and very clearly if you know you simply won't sue anyone, you may think it's enough to just write "do whatever you want with my creation". But you have to remember others, and even you yourself, can't know if you won't change your mind in the future. A clear waiver is a **legal guarantee** you provide to others, not just a *vague promise of someone on the Internet*, and this guarantee is very valuable, so valuable that whether someone uses your work or not will often come down to this. So waiving your "rights" properly may increase the popularity and reusability of your work almost as much as the quality of the work itself.
|
NOTE: You may be thinking it doesn't particularly matter whether you waive your rights properly and very clearly if you know you simply won't sue anyone, you may think it's enough to scribble down something like "do whatever you want with my creation". But you have to remember others, and even you yourself, can't be sure if you won't change your mind in the future. A clear waiver is a **legal guarantee** you provide to others, not just a *vague promise of someone on the Internet*, and this guarantee is very valuable, so valuable that whether someone uses your work or not will often come down to this. So waiving your "rights" properly may increase the popularity and reusability of your work almost as much as the quality of the work itself.
|
||||||
|
|
||||||
For an example of a project project properly released into public domain see the repository of our [LRS](lrs.md) game [Anarch](anarch.md).
|
For an example of a project project properly released into public domain see the repository of our [LRS](lrs.md) game [Anarch](anarch.md).
|
||||||
|
|
||||||
|
|
2
quake.md
2
quake.md
|
@ -24,7 +24,7 @@ Sadly the game also uses [float](float.md), another thumbs down.
|
||||||
|
|
||||||
The engine is also **fucking [nondeterministic](determinism.md)**, mainly because its physics is FPS dependent (huge brain fart), but even if that was fixed it might not suffice e.g. because of the use of floating point (as C specification leaves room for floating point nondeterminism).
|
The engine is also **fucking [nondeterministic](determinism.md)**, mainly because its physics is FPS dependent (huge brain fart), but even if that was fixed it might not suffice e.g. because of the use of floating point (as C specification leaves room for floating point nondeterminism).
|
||||||
|
|
||||||
And as if that wasn't enough, the [demo](demo.md) format sucks ass too. While demos in Doom only recorded the player's inputs -- the way it should always be done -- Quake demos literally store the player states such as their positions etc. It's basically a recording of packets coming from the [server](server.md) to the client. This means the demos are bigger, information about input is lost (causing trouble in verifying speedruns for example) and the demo is only playable from point of view it was recorded from. This desperate and disastrous design choice had to be made because the engine is nondeterministic. Here we can see how a bad programming choice quickly snowballs into a gigantic pile of shit.
|
And as if that wasn't enough, the [demo](demo.md) format sucks ass too. Whereas demos in Doom only recorded the player's inputs -- the way it should always be done -- Quake demos literally store the player states such as his positions etc. It's practically a recording of packets sent from the [server](server.md) to the client. This means the demos are larger, [information](information.md) about input is lost (causing trouble in verifying speedruns for example) and the demo is only playable from point of view it was recorded from. This desperate and disastrous design choice had to be made because the engine is nondeterministic. Here we can see how a bad programming choice quickly snowballs into a gigantic pile of shit.
|
||||||
|
|
||||||
As for the **3D rendering**: this is probably the nicest part. The engine features a beautifully looking [software renderer](sw_rendering.md) that was very fast ([optimized](optimization.md) in [assembly](assembly.md)). It supported [256](256.md) [colors](color.md) and by default ran in 320x200 resolution that computers back then could handle at 30 FPS. Shortly after the game's release new versions added a support for [GPU](gpu.md) acceleration with [OpenGL](opengl.md), which was of course faster, additionally supported 16 and 32 bit color, higher resolution and pimped up look (transparent water, [bilinear](bilinear.md) texture filtering that actually looks inferior and soulless, ...). We'll be however focusing on the software renderer. It used [Gouraud](gouraud.md) [shading](shading.md) for moving objects (enemies, doors, ...) and precomputed [lightmaps](lightmap.md) for static environment. Just like Doom, [BSP](bsp.md) trees were still used to represent levels, however in Quake they were 3D (while in Doom only 2D). The renderer worked as follows. First [frustum culling](frustum_culling.md) was performed on the BSP tree, removing anything not in the direction of the camera. Secondly there were precalculated potentially visible sets ([PVS](pvs.md)) -- a [data structure](data_structure.md) storing information about which BSP leaves are visible from other leaves, allowing for saving time by disregarding most parts of the level that can't be seen -- this was applied after frustum culling. Backface culling followed and then rasterization itself in front-to-back order. Rasterization was made so as to eliminate overdraw, it was quite complex, based on scanlines formed by projected geometry edges. As another improvements against the Doom engine there were simple [particle systems](particle_system.md) (well, literally just tiny squares), real-time lighting, warping screen effects and fully 3D animated enemy models. Animated models used a MDL format which stored simple vertex animation (no skeletal bullshit) -- the frames were just played one after another without [interpolation](interpolation.md), resulting in a "jerky" animation. Needless to say the models were quite [low poly](low_poly.md) (monsters usually around 300 [triangles](triangle.md)) and had quite low-res textures (around 300x200 pixels).
|
As for the **3D rendering**: this is probably the nicest part. The engine features a beautifully looking [software renderer](sw_rendering.md) that was very fast ([optimized](optimization.md) in [assembly](assembly.md)). It supported [256](256.md) [colors](color.md) and by default ran in 320x200 resolution that computers back then could handle at 30 FPS. Shortly after the game's release new versions added a support for [GPU](gpu.md) acceleration with [OpenGL](opengl.md), which was of course faster, additionally supported 16 and 32 bit color, higher resolution and pimped up look (transparent water, [bilinear](bilinear.md) texture filtering that actually looks inferior and soulless, ...). We'll be however focusing on the software renderer. It used [Gouraud](gouraud.md) [shading](shading.md) for moving objects (enemies, doors, ...) and precomputed [lightmaps](lightmap.md) for static environment. Just like Doom, [BSP](bsp.md) trees were still used to represent levels, however in Quake they were 3D (while in Doom only 2D). The renderer worked as follows. First [frustum culling](frustum_culling.md) was performed on the BSP tree, removing anything not in the direction of the camera. Secondly there were precalculated potentially visible sets ([PVS](pvs.md)) -- a [data structure](data_structure.md) storing information about which BSP leaves are visible from other leaves, allowing for saving time by disregarding most parts of the level that can't be seen -- this was applied after frustum culling. Backface culling followed and then rasterization itself in front-to-back order. Rasterization was made so as to eliminate overdraw, it was quite complex, based on scanlines formed by projected geometry edges. As another improvements against the Doom engine there were simple [particle systems](particle_system.md) (well, literally just tiny squares), real-time lighting, warping screen effects and fully 3D animated enemy models. Animated models used a MDL format which stored simple vertex animation (no skeletal bullshit) -- the frames were just played one after another without [interpolation](interpolation.md), resulting in a "jerky" animation. Needless to say the models were quite [low poly](low_poly.md) (monsters usually around 300 [triangles](triangle.md)) and had quite low-res textures (around 300x200 pixels).
|
||||||
|
|
||||||
|
|
3746
random_page.md
3746
random_page.md
File diff suppressed because it is too large
Load diff
|
@ -6,7 +6,7 @@ Reddit users are the kind of pseudorebels, keyboard warriors, wannabe Internet "
|
||||||
|
|
||||||
Before the infamous censorship wave circa 2019 reddit used to be quite a beautiful place to behold, truly an experience unlike anything else (maybe a bit comparable to [Usenet](usenet.md)). { I used to actually love reddit, sad it died. ~drummyfish } It's hard to sum up to someone who didn't experience reddit back then, it found a great mix of excellent ideas that just worked great together, a combination mainly of [free speech](free_speech.md) (that's completely gone now, it's almost comical to remember reddit used to be one of the "bastions of free speech" back then), nice minimalist user interface (also gone now), having many subforums for all kinds of niche communities, even the smallest you can imagine (like people who like round objects or people who try to talk without using some specific letter because they hate it etc.), sharing of [interesting](interesting.md) links and/or ideas, having a non-traditional comment system structured as a [tree](tree.md) and letting people vote on both posts and individual comments to bring up the ones they found most valuable (i.e. informative, funny, interesting etc.). Users also gathered so called "karma", a kind of points they accumulated for getting upvotes, so users had some sort of "level" -- the more karma, the more "elite" the user was (users could also gift so called *reddit gold* for excellent posts, basically giving the user a free premium account for a while); this often led to so called **karma whoring**, i.e. things like [clickbaits](clickbait.md), virtue signaling posts and basically the lame stuff you'd often see on [Facebook](facebook.md), something highly criticized for example by [4chan](4chan.md). Anyway, reddit was like an whole new Internet within the Internet, it was just a place where you could spend hours searching and discovering things you didn't even know you wanted to find -- any hobby or any detail you had a morbid curiosity about you could dig up on reddit, you could find large interviews with ambulance drivers who told fascinating stories they saw during their careers, schizophrenic people answering questions like "can you walk through the imaginary people you see?", discussions like "what's the weirdest thing that happened to you as a beekeeper", people digging out extremely weird videos on YouTube, solving mysteries in video games, even famous people like Barak Obama took part in reddit IAMA interviews and just answered all the weird questions the internet asked them. There were also porn communities and controversial communities like *r/watchpeopledie* where users just shared videos of people dying { This was my favorite, seeing people die and suffer was actually what led me to completely reject all violence later on in my life. ~drummyfish }. This was sort of the vanilla reddit experience. However, as they always do, money and [pseudoleftists](pseudoleft.md) soon swiftly killed all of this, a few greedy faggots just destroyed it all so that they could get even richer than they already were.
|
Before the infamous censorship wave circa 2019 reddit used to be quite a beautiful place to behold, truly an experience unlike anything else (maybe a bit comparable to [Usenet](usenet.md)). { I used to actually love reddit, sad it died. ~drummyfish } It's hard to sum up to someone who didn't experience reddit back then, it found a great mix of excellent ideas that just worked great together, a combination mainly of [free speech](free_speech.md) (that's completely gone now, it's almost comical to remember reddit used to be one of the "bastions of free speech" back then), nice minimalist user interface (also gone now), having many subforums for all kinds of niche communities, even the smallest you can imagine (like people who like round objects or people who try to talk without using some specific letter because they hate it etc.), sharing of [interesting](interesting.md) links and/or ideas, having a non-traditional comment system structured as a [tree](tree.md) and letting people vote on both posts and individual comments to bring up the ones they found most valuable (i.e. informative, funny, interesting etc.). Users also gathered so called "karma", a kind of points they accumulated for getting upvotes, so users had some sort of "level" -- the more karma, the more "elite" the user was (users could also gift so called *reddit gold* for excellent posts, basically giving the user a free premium account for a while); this often led to so called **karma whoring**, i.e. things like [clickbaits](clickbait.md), virtue signaling posts and basically the lame stuff you'd often see on [Facebook](facebook.md), something highly criticized for example by [4chan](4chan.md). Anyway, reddit was like an whole new Internet within the Internet, it was just a place where you could spend hours searching and discovering things you didn't even know you wanted to find -- any hobby or any detail you had a morbid curiosity about you could dig up on reddit, you could find large interviews with ambulance drivers who told fascinating stories they saw during their careers, schizophrenic people answering questions like "can you walk through the imaginary people you see?", discussions like "what's the weirdest thing that happened to you as a beekeeper", people digging out extremely weird videos on YouTube, solving mysteries in video games, even famous people like Barak Obama took part in reddit IAMA interviews and just answered all the weird questions the internet asked them. There were also porn communities and controversial communities like *r/watchpeopledie* where users just shared videos of people dying { This was my favorite, seeing people die and suffer was actually what led me to completely reject all violence later on in my life. ~drummyfish }. This was sort of the vanilla reddit experience. However, as they always do, money and [pseudoleftists](pseudoleft.md) soon swiftly killed all of this, a few greedy faggots just destroyed it all so that they could get even richer than they already were.
|
||||||
|
|
||||||
What was the big moment? Basically in 2019 reddit presented one the most visible, greatest examples of a **profit motivated 180 degree turn from a [free speech](free_speech.md) site to a [censorship](censorship.md) dictatorship** -- as some cock invested money to reddit, the reddit CEO just said yeah, let's make this advertisement friendly and ban all free speech on the site; there were hilarious historical moments like Alexis Ohanian, the co-founder of the site, saying "we never intended reddit to be the bastion of free speech" while someone actually found a quote of him saying the exact opposite in the past :D This shitstorm resulted in one of the greatest disasters to ever have happened on the Internet. Subreddits such as *r/politicallyincorrect*, *r/Offensive_Wallpapers*, *r/watchpeopledie*, *r/necrophilia*, *r/PicsOfHorseVaginas*, *r/sjwhate*, *r/lovenotacrime*, *r/fatpeoplehate* and THOUSANDS of others were all banned (you can probably still find them in archives, but you can no longer discuss of course). Of course those who criticized this were just banned too, anyone who showed a dislike of this got a "fuck you bitch" message from a mod with a swift ban. People not familiar with reddit or Internet too much perhaps didn't notice too much, but to an Internet citizen this was comparable to something like the Pope one day waking up, admitting to [atheism](atheism.md), dressing up as [Voldemort](hitler.md) and starting to masturbate on the balcony, cumming on people while promoting nuclear war, all because someone paid him $1 to do it. Of course this was completely expected under [capitalism](capitalism.md), reddit just showed a very rapid, "we don't give a shit about users or society or anything but money" kind of step, one that must show clear as day even to any blind idiot what capitalism really is about. After this many people left reddit for good { Including me. ~drummyfish }, some migrated to alternative sites like [Voat](voat.md), but it was never what it used to be, communities were fragmented and they mostly degenerated to small groups bitching about how reddit fucked up. At least it's a great lesson learned about "free market" society.
|
What was the big moment? Basically in early 2019 reddit presented one the most spectacular examples of a **profit motivated 180 degree turn from a [free speech](free_speech.md) site to a [censorship](censorship.md) dictatorship** -- as some cock invested money to reddit, the reddit CEO just said yeah, let's make this [advertisement](marketing.md) friendly and ban all free speech on the site; there were hilarious historical moments like Alexis Ohanian, the co-founder of the site, saying "we never intended reddit to be the bastion of free speech" while someone actually found a quote of him saying the exact opposite in the past :D This shitstorm resulted in one of the greatest disasters to ever have happened on the Internet. Subreddits such as *r/politicallyincorrect*, *r/Offensive_Wallpapers*, *r/watchpeopledie*, *r/necrophilia*, *r/PicsOfHorseVaginas*, *r/sjwhate*, *r/lovenotacrime*, *r/fatpeoplehate* and THOUSANDS of others were all banned (you can probably still find them in archives, but you can no longer discuss of course). Of course those who criticized this were just banned too, anyone who showed a dislike of this got a "fuck you bitch" message from a mod with a swift ban. People not familiar with reddit or Internet too much perhaps didn't notice too much, but to an Internet citizen this was comparable to something like the Pope one day waking up, admitting to [atheism](atheism.md), dressing up as [Voldemort](hitler.md) and starting to masturbate on the balcony, cumming on people while promoting nuclear war, all because someone paid him $1 to do it. Of course this was completely expected under [capitalism](capitalism.md), reddit just showed a very rapid, "we don't give a shit about users or society or anything but money" kind of step, one that must show clear as day even to any blind idiot what capitalism really is about. After this many people left reddit for good { Including me. ~drummyfish }, some migrated to alternative sites like [Voat](voat.md), but it was never what it used to be, communities were fragmented and they mostly degenerated to small groups bitching about how reddit fucked up. At least it's a great lesson learned about "free market" society.
|
||||||
|
|
||||||
Reddit had an extreme number of own [memes](meme.md), [historical](history.md) events, famous users, inside [jokes](jokes.md) and jargon -- it was kind of like a whole country. Especially notable are the [acronyms](acronym.md) that come from subreddit names and which reddit guys use in normal speech, like AMA (ask me anything), TIL (today I learned), TIFU (today I fucked up) or ELI5 (explain like I'm 5) etc.
|
Reddit had an extreme number of own [memes](meme.md), [historical](history.md) events, famous users, inside [jokes](jokes.md) and jargon -- it was kind of like a whole country. Especially notable are the [acronyms](acronym.md) that come from subreddit names and which reddit guys use in normal speech, like AMA (ask me anything), TIL (today I learned), TIFU (today I fucked up) or ELI5 (explain like I'm 5) etc.
|
||||||
|
|
||||||
|
|
6
rust.md
6
rust.md
|
@ -1,12 +1,10 @@
|
||||||
# Rust
|
# Rust
|
||||||
|
|
||||||
Rust is a stunningly poor attempt at a politically motivated [capitalist](capitalism.md) [programming language](programming_language.md) and one of the prime examples of a pitiful, badly designed [software](software.md) in general. It is highly [harmful](harmful.md) not just because of its awful design, implementation and motives, it also promotes [toxic](toxic.md) politics, aims to replace relatively good languages such as [C](c.md) and, worst of all, is gaining popularity among highly unqualified [tranny](transsexual.md) [coding monkeys](soydev.md), i.e. the majority of people creating technology nowadays, so it is infecting everything and contributing to the downfall of technology. FOR THE LOVE OF GOD STAY AS FAR AWAY AS POSSIBLE FROM RUST. If Middle Earth had programming, Rust would be used by Sauron. "SAFETY" is the main [buzzword](buzzword.md) used to [push](marketing.md) Rust (see also [shortcut thinking](shortcut_thinking.md)), however the true features and mainly [retardation](retard.md) and [fascism](fascism.md). Note also that the word "safety" is always the word used to taking freedom away.
|
Rust is a stunningly poor attempt at a politically motivated [capitalist](capitalism.md) [programming language](programming_language.md) and one of the prime examples of badly designed [software](software.md) in general. To call it bad is actually an understatement, it is highly [harmful](harmful.md) not just because of its awful design, implementation and motives, it also promotes [toxic](toxic.md) politics, aims to displace relatively good languages such as [C](c.md) and, worst of all, is winning popularity among highly unqualified [tranny](transsexual.md) [coding monkeys](soydev.md), i.e. the majority of "professional developers" nowadays, so it is infecting everything and contributing to the downfall of technology. FOR THE LOVE OF GOD STAY AS FAR AWAY AS POSSIBLE FROM RUST. If Middle Earth had computers and programming, Rust would be the programming language of Sauron. "SAFETY" is the main [buzzword](buzzword.md) used to [push](marketing.md) Rust (see also [shortcut thinking](shortcut_thinking.md)), however the true features are mainly [retardation](retard.md) and [fascism](fascism.md). Note also that the word "safety" is always the one used for taking freedom away. Some things exist solely to give an example of how it shouldn't be done -- indeed, here at least Rust shines.
|
||||||
|
|
||||||
[LMAO](lmao.md) https://github.com/mTvare6/hello-world.rs
|
[LMAO](lmao.md) https://github.com/mTvare6/hello-world.rs
|
||||||
|
|
||||||
Some things exist solely to give a really bad example of how it shouldn't be done -- indeed, at least at this Rust succeeded.
|
First and foremost we must establish that **rust is [shit](shit.md)** AND **CANNOT BE FIXED**, it is awful from the ground up and the only way to deal with it is to delete it. To mention just a few issues:
|
||||||
|
|
||||||
It should be made clear that **rust is [shit](shit.md)** AND **CANNOT BE FIXED**, it is awful from the ground up and the only way to deal with it is to delete it. To mention just a few issues:
|
|
||||||
|
|
||||||
- **Rust is [bloated](bloat.md) as hell**, it violates the most important philosophy in programming: the [Unix philosophy](unix_philosophy.md), and tries to do everything at once (i.e. follow the [Windows philosophy](windows_philosophy.md)), following the spirit of latest cancer such as [systemd](systemd.md). As such it sports **TONS of [dependencies](dependency.md) even for trivial programs**, its toolchains is huge, complex and complicated. The repo has FKN OVER 200 MB OF SOURCE CODE??? It probably doesn't have to be said it includes such unnecessary trash as [generics](generics.md), twisted [object obsession](oop.md) ("[traits](trait.md)"), [package manager](package_management.md), pushed [memory safety](memory_safety.md) and whatnot. It itself depends on extreme bloat like [Python](python.md), [ninja](ninja.md), [cmake](cmake.md) etc. Apparently compiling rust even requires [Internet](internet.md) connection to download some bootstrap shit? Even SJW littered places like [permacomputing wiki](permacomputing_wiki.md) are just forced to admit it's not a minimalist language by any stretch.
|
- **Rust is [bloated](bloat.md) as hell**, it violates the most important philosophy in programming: the [Unix philosophy](unix_philosophy.md), and tries to do everything at once (i.e. follow the [Windows philosophy](windows_philosophy.md)), following the spirit of latest cancer such as [systemd](systemd.md). As such it sports **TONS of [dependencies](dependency.md) even for trivial programs**, its toolchains is huge, complex and complicated. The repo has FKN OVER 200 MB OF SOURCE CODE??? It probably doesn't have to be said it includes such unnecessary trash as [generics](generics.md), twisted [object obsession](oop.md) ("[traits](trait.md)"), [package manager](package_management.md), pushed [memory safety](memory_safety.md) and whatnot. It itself depends on extreme bloat like [Python](python.md), [ninja](ninja.md), [cmake](cmake.md) etc. Apparently compiling rust even requires [Internet](internet.md) connection to download some bootstrap shit? Even SJW littered places like [permacomputing wiki](permacomputing_wiki.md) are just forced to admit it's not a minimalist language by any stretch.
|
||||||
- **It's just complete shit written**, everyone complains it compiles slow as hell (both rust programs and rust itself), it creates **HUGE binaries** because it statically links all the dependencies and runtime environment [LMAO](lmao.md).
|
- **It's just complete shit written**, everyone complains it compiles slow as hell (both rust programs and rust itself), it creates **HUGE binaries** because it statically links all the dependencies and runtime environment [LMAO](lmao.md).
|
||||||
|
|
File diff suppressed because one or more lines are too long
108
wiki_stats.md
108
wiki_stats.md
|
@ -3,9 +3,9 @@
|
||||||
This is an autogenerated article holding stats about this wiki.
|
This is an autogenerated article holding stats about this wiki.
|
||||||
|
|
||||||
- number of articles: 637
|
- number of articles: 637
|
||||||
- number of commits: 1005
|
- number of commits: 1006
|
||||||
- total size of all texts in bytes: 5331346
|
- total size of all texts in bytes: 5336367
|
||||||
- total number of lines of article texts: 38465
|
- total number of lines of article texts: 38507
|
||||||
- number of script lines: 324
|
- number of script lines: 324
|
||||||
- occurrences of the word "person": 10
|
- occurrences of the word "person": 10
|
||||||
- occurrences of the word "nigger": 124
|
- occurrences of the word "nigger": 124
|
||||||
|
@ -23,8 +23,8 @@ longest articles:
|
||||||
- [number](number.md): 52K
|
- [number](number.md): 52K
|
||||||
- [woman](woman.md): 48K
|
- [woman](woman.md): 48K
|
||||||
- [c](c.md): 44K
|
- [c](c.md): 44K
|
||||||
- [programming_language](programming_language.md): 44K
|
|
||||||
- [main](main.md): 44K
|
- [main](main.md): 44K
|
||||||
|
- [programming_language](programming_language.md): 44K
|
||||||
- [human_language](human_language.md): 44K
|
- [human_language](human_language.md): 44K
|
||||||
- [3d_model](3d_model.md): 44K
|
- [3d_model](3d_model.md): 44K
|
||||||
- [internet](internet.md): 44K
|
- [internet](internet.md): 44K
|
||||||
|
@ -35,25 +35,25 @@ longest articles:
|
||||||
|
|
||||||
top 50 5+ letter words:
|
top 50 5+ letter words:
|
||||||
|
|
||||||
- which (2920)
|
- which (2921)
|
||||||
- there (2293)
|
- there (2295)
|
||||||
- people (2194)
|
- people (2196)
|
||||||
- example (1849)
|
- example (1849)
|
||||||
- other (1659)
|
- other (1663)
|
||||||
- about (1487)
|
- about (1488)
|
||||||
- number (1358)
|
- number (1358)
|
||||||
- software (1314)
|
- software (1313)
|
||||||
- because (1225)
|
- because (1228)
|
||||||
- their (1148)
|
- their (1151)
|
||||||
- would (1104)
|
- would (1104)
|
||||||
- something (1099)
|
- something (1099)
|
||||||
- being (1087)
|
- being (1087)
|
||||||
- program (1070)
|
- program (1070)
|
||||||
- language (1011)
|
- language (1011)
|
||||||
- called (985)
|
- called (988)
|
||||||
- things (950)
|
- things (949)
|
||||||
- without (903)
|
- without (906)
|
||||||
- simple (885)
|
- simple (886)
|
||||||
- function (879)
|
- function (879)
|
||||||
- computer (858)
|
- computer (858)
|
||||||
- numbers (844)
|
- numbers (844)
|
||||||
|
@ -63,32 +63,49 @@ top 50 5+ letter words:
|
||||||
- however (795)
|
- however (795)
|
||||||
- world (789)
|
- world (789)
|
||||||
- system (763)
|
- system (763)
|
||||||
- should (758)
|
- should (760)
|
||||||
- still (747)
|
- still (748)
|
||||||
- doesn (745)
|
- doesn (746)
|
||||||
- games (715)
|
- games (715)
|
||||||
- drummyfish (699)
|
- drummyfish (700)
|
||||||
- while (692)
|
- while (692)
|
||||||
- point (689)
|
- point (689)
|
||||||
- society (686)
|
- society (685)
|
||||||
- possible (680)
|
- possible (679)
|
||||||
- always (676)
|
- always (677)
|
||||||
- simply (672)
|
- simply (672)
|
||||||
- probably (672)
|
- probably (672)
|
||||||
- using (656)
|
- using (656)
|
||||||
- course (630)
|
- course (631)
|
||||||
- similar (622)
|
- similar (622)
|
||||||
- https (617)
|
- https (618)
|
||||||
- actually (615)
|
- actually (617)
|
||||||
- someone (607)
|
- someone (608)
|
||||||
- first (594)
|
- first (596)
|
||||||
- though (590)
|
- though (589)
|
||||||
- really (584)
|
- really (584)
|
||||||
- value (576)
|
- value (577)
|
||||||
|
|
||||||
latest changes:
|
latest changes:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
Date: Wed Apr 16 16:48:07 2025 +0200
|
||||||
|
4chan.md
|
||||||
|
anorexia.md
|
||||||
|
c_tutorial.md
|
||||||
|
capitalism.md
|
||||||
|
consumerism.md
|
||||||
|
dramatica.md
|
||||||
|
great_trap.md
|
||||||
|
less_retarded_society.md
|
||||||
|
main.md
|
||||||
|
money.md
|
||||||
|
race.md
|
||||||
|
random_page.md
|
||||||
|
stereotype.md
|
||||||
|
sw_rendering.md
|
||||||
|
wiki_pages.md
|
||||||
|
wiki_stats.md
|
||||||
Date: Mon Apr 14 21:57:02 2025 +0200
|
Date: Mon Apr 14 21:57:02 2025 +0200
|
||||||
21st_century.md
|
21st_century.md
|
||||||
42.md
|
42.md
|
||||||
|
@ -111,31 +128,14 @@ Date: Mon Apr 14 21:57:02 2025 +0200
|
||||||
political_correctness.md
|
political_correctness.md
|
||||||
project.md
|
project.md
|
||||||
public_domain.md
|
public_domain.md
|
||||||
random_page.md
|
|
||||||
rms.md
|
|
||||||
steganography.md
|
|
||||||
stereotype.md
|
|
||||||
sw.md
|
|
||||||
ui.md
|
|
||||||
whale.md
|
|
||||||
wiki_pages.md
|
|
||||||
wiki_stats.md
|
|
||||||
wikipedia.md
|
|
||||||
wolf3d.md
|
|
||||||
wow.md
|
|
||||||
Date: Sat Apr 12 12:45:37 2025 +0200
|
|
||||||
21st_century.md
|
|
||||||
3d_rendering.md
|
|
||||||
abstraction.md
|
|
||||||
analytic_geometry.md
|
|
||||||
```
|
```
|
||||||
|
|
||||||
most wanted pages:
|
most wanted pages:
|
||||||
|
|
||||||
- [data_type](data_type.md) (16)
|
- [data_type](data_type.md) (16)
|
||||||
- [retard](retard.md) (14)
|
- [retard](retard.md) (14)
|
||||||
|
- [irl](irl.md) (14)
|
||||||
- [meme](meme.md) (13)
|
- [meme](meme.md) (13)
|
||||||
- [irl](irl.md) (13)
|
|
||||||
- [embedded](embedded.md) (13)
|
- [embedded](embedded.md) (13)
|
||||||
- [cli](cli.md) (12)
|
- [cli](cli.md) (12)
|
||||||
- [buddhism](buddhism.md) (12)
|
- [buddhism](buddhism.md) (12)
|
||||||
|
@ -149,9 +149,9 @@ most wanted pages:
|
||||||
- [pointer](pointer.md) (9)
|
- [pointer](pointer.md) (9)
|
||||||
- [jew](jew.md) (9)
|
- [jew](jew.md) (9)
|
||||||
- [brute_force](brute_force.md) (9)
|
- [brute_force](brute_force.md) (9)
|
||||||
- [war](war.md) (8)
|
|
||||||
- [syntax](syntax.md) (8)
|
- [syntax](syntax.md) (8)
|
||||||
- [rape](rape.md) (8)
|
- [rape](rape.md) (8)
|
||||||
|
- [nazi](nazi.md) (8)
|
||||||
|
|
||||||
most popular and lonely pages:
|
most popular and lonely pages:
|
||||||
|
|
||||||
|
@ -163,7 +163,7 @@ most popular and lonely pages:
|
||||||
- [game](game.md) (161)
|
- [game](game.md) (161)
|
||||||
- [suckless](suckless.md) (152)
|
- [suckless](suckless.md) (152)
|
||||||
- [proprietary](proprietary.md) (140)
|
- [proprietary](proprietary.md) (140)
|
||||||
- [modern](modern.md) (129)
|
- [modern](modern.md) (131)
|
||||||
- [minimalism](minimalism.md) (128)
|
- [minimalism](minimalism.md) (128)
|
||||||
- [computer](computer.md) (125)
|
- [computer](computer.md) (125)
|
||||||
- [censorship](censorship.md) (122)
|
- [censorship](censorship.md) (122)
|
||||||
|
@ -175,20 +175,20 @@ most popular and lonely pages:
|
||||||
- [woman](woman.md) (109)
|
- [woman](woman.md) (109)
|
||||||
- [gnu](gnu.md) (107)
|
- [gnu](gnu.md) (107)
|
||||||
- [linux](linux.md) (105)
|
- [linux](linux.md) (105)
|
||||||
- [corporation](corporation.md) (103)
|
- [bullshit](bullshit.md) (103)
|
||||||
- [history](history.md) (102)
|
- [history](history.md) (102)
|
||||||
- [bullshit](bullshit.md) (102)
|
- [corporation](corporation.md) (102)
|
||||||
- [art](art.md) (101)
|
- [art](art.md) (101)
|
||||||
- [fight_culture](fight_culture.md) (100)
|
- [fight_culture](fight_culture.md) (100)
|
||||||
- [hacking](hacking.md) (96)
|
- [hacking](hacking.md) (96)
|
||||||
|
- [work](work.md) (93)
|
||||||
- [less_retarded_society](less_retarded_society.md) (93)
|
- [less_retarded_society](less_retarded_society.md) (93)
|
||||||
- [programming_language](programming_language.md) (92)
|
- [programming_language](programming_language.md) (92)
|
||||||
- [free_culture](free_culture.md) (92)
|
- [free_culture](free_culture.md) (92)
|
||||||
- [work](work.md) (91)
|
|
||||||
- ...
|
- ...
|
||||||
|
- [friend_detox](friend_detox.md) (5)
|
||||||
- [free_body](free_body.md) (5)
|
- [free_body](free_body.md) (5)
|
||||||
- [explicit](explicit.md) (5)
|
- [explicit](explicit.md) (5)
|
||||||
- [dungeons_and_dragons](dungeons_and_dragons.md) (5)
|
|
||||||
- [dodleston](dodleston.md) (5)
|
- [dodleston](dodleston.md) (5)
|
||||||
- [cyber](cyber.md) (5)
|
- [cyber](cyber.md) (5)
|
||||||
- [crime_against_economy](crime_against_economy.md) (5)
|
- [crime_against_economy](crime_against_economy.md) (5)
|
||||||
|
|
Loading…
Reference in a new issue