master
Miloslav Ciz 5 months ago
parent f354398fd2
commit 53768ca2ea

@ -10,9 +10,10 @@ For us the most important part of 4chan is the technology board known as /g/ (fo
UPDATE: As of 2022 /g/ became literally unreadable, ABANDON SHIP. The board became flooded with [capitalists](capitalism.md), cryptofascists, proprietary [shills](shill.md), [productivity](productivity_cult.md) freaks and other uber retards, it's really not worth reading anymore. You can still read good old threads on archives such as https://desuarchive.org/g/page/280004/. Some other more relaxed boards such as /x/ may still be alright though.
**Alternatives to 4chan**: just check out other image boards like 8chan, 8kun, anon.cafe, leftychan.net, wizardchan, soyjak.party, 1436chan ([gopher](gopher.md)) etc. Also check out other types of forums than image boards such as saidit.net, voat or [encyclopedia dramatica](encyclopedia_dramatica.md) forums.
**Alternatives to 4chan**: just check out other image boards like 8chan, 8kun, anon.cafe, leftychan.net, wizardchan, soyjak.party, [BAI](bai.md), 1436chan ([gopher](gopher.md)) etc. Also check out other types of forums than image boards such as saidit.net, voat or [encyclopedia dramatica](encyclopedia_dramatica.md) forums.
You won't have much success searching for these using [Goolag](google.md).
## See Also
- [bienvenido a internet](bai.md)
- [something awful](something_awful.md)

@ -29,6 +29,7 @@ Here is a list of some acronyms:
- **[ATM](atm.md)** (at the moment, automated teller machine)
- **[B](b.md)** (byte, bit)
- **[B4](b4.md)** (before)
- **[BAI](bai.md)** (bienvenido a internet)
- **[BASH](bash.md)** (bourne again shell)
- **[BASIC](basic.md)** (beginner all purpose symbolic instruction code)
- **[BBC](bbc.md)** (big black cock)

@ -1,6 +1,6 @@
# Axiom Of Choice
In [mathematics](math.md) (specifically [set theory](set_theory.md)) axiom of choice is a possible [axiom](axiom.md) which basically states we can arbitrarily choose elements of sets and which is famous for being controversial and problematic because it causes trouble both when we accept or reject it. Note that this topic can go to a great depth and lead to philosophical debates, there is a huge rabbit hole and mathematicians can talk about this for hours; here we'll only state the very basic and quite simplified things, mostly for those who aren't professional mathematicians but need some overview of mathematics (e.g. programmers).
In [mathematics](math.md) (specifically [set theory](set_theory.md)) axiom of choice is a possible [axiom](axiom.md) which basically states we can arbitrarily choose elements of sets and which is famous for being controversial and problematic because it causes trouble both when we accept or reject it. Now it's actually been included in [ZFC](zfc.md), a kind of "commonly used base for mathematics", but its controversial nature stands. Note that this topic can go to a great depth and lead to philosophical debates, there is a huge rabbit hole and mathematicians can talk about this for hours; here we'll only state the very basic and quite simplified things, mostly for those who aren't professional mathematicians but need some overview of mathematics (e.g. programmers).
Indeed, **what really IS the axiom of choice?** It is an [axiom](axiom.md), i.e. something that we can't prove but can either accept or reject as a basic fact so that we can use it to prove things. Informally it says that given any collection of sets (even an infinite collection of infinitely large sets), we can make an arbitrary selection of one element from each set. More mathematically it says: if we have a collection of sets, there always exists a [function](function.md) *f* such that for any set *S* from the collection *f(S)* is an element of *S*.
@ -8,4 +8,4 @@ This doesn't sound weird, does it? Well, in many normal situations it isn't. For
**Why is it problematic?** Once you learn about axiom of choice, your first question will probably be why should it pose any problems if it just seems like an obvious fact. Well, it turns out it leads to strange things. If we accept axiom of choice, then some weird things happen, most famously e.g. the [Banach-Tarski paradox](banach_tarski.md) which uses the axiom of choice to prove that you can disassemble a sphere into finitely many pieces, then move and rotate them so that they create TWO new spheres, each one identical to the original (i.e. you duplicate the original sphere). But if we reject the axiom of choice, other weird things happen, for example we can't prove that every vector space has a basis -- it seems quite elementary that every vector space should have a basis, but this can't be proven without the axiom of choice and in fact accepting this implies the axiom of choice is true. Besides this great many number of proofs simply don't work without axiom of choice. So essentially either way things get weird, whether we accept axiom of choice or not.
**So what do mathematicians do?** How do they deal with this and why don't they kill themselves? Well, in reality most of them are pretty chill and don't really care, they try avoid it if they can (their proof is kind of stronger if it relies on fewer axioms) but they accept it if they really need it for a specific proof. Many elementary things in mathematics actually rely on axiom of choice, so there's no fuzz when someone uses it, it's very normal. Turns out axiom of choice is more of something they argue over a beer, they usually disagree about whether it is INTUITIVELY true or false, but that doesn't really affect their work.
**So what do mathematicians do?** How do they deal with this and why don't they kill themselves? Well, in reality most of them are pretty chill and don't really care, they try avoid it if they can (their proof is kind of stronger if it relies on fewer axioms) but they accept it if they really need it for a specific proof. Many elementary things in mathematics actually rely on axiom of choice, so there's no fuss when someone uses it, it's very normal. Turns out axiom of choice is more of something they argue over a beer, they usually disagree about whether it is INTUITIVELY true or false, but that doesn't really affect their work.

@ -20,4 +20,6 @@ The first BBS was CBBS (computerized bulletin board system) created by Ward Chri
- [Usenet](usenet.md)
- [modem world](modem_world.md)
- [tildeverse](tildeverse.md)
- [multi user dungeon](mud.md)
- [multi user dungeon](mud.md)
- [imageboard](imageboard.md)
- [textboard](textboard.md)

@ -1,6 +1,6 @@
# $$$Capitalism$$$
*Capitalism is how you enslave people with their approval.*
*Capitalism is how you enslave a man with his approval.*
Capitali$m is the worst socioeconomic system we've yet seen in [history](history.md),^[source](logic.md) based on pure greed, culture of slavery and artificially sustained conflict between everyone in society (so called [competition](competition.md)), abandoning all morals and putting money and profit (so called [capital](capital.md)) above everything else including preservation of life itself, capitalism fuels the worst in people and forces them to compete and suffer for basic resources, even in a world where abundance of resources is already possible to achieve -- of course, capitalism is a purely [rightist](left_right.md) idea. Capitalism goes against progress (see e.g. [antivirus paradox](antivirus_paradox.md)), [good technology](lrs.md) and freedom, it supports immense waste of resources, wars, abuse of people and animals, destruction of environment, decline of morals, deterioration of [art](art.md), invention of [bullshit](bullshit.md) (bullshit jobs, bullshit laws, ...), utilizing and perfecting methods of [torture](marketing.md), brainwashing, [censorship](censorship.md) and so on. In a sense capitalism can be seen as **slavery 2.0** or *universal slavery*, a more sophisticated form of slavery, one which denies the label by calling itself the polar opposite ("freedom") and manipulates people into them approving and voluntarily parttaking in their own enslavement (capitalist slaves are called wage slaves or *wagies*). However wage and consumption slavery is only a small part of capitalist dystopia -- capitalism brings on destruction basically to every part of civilization. It it also often likened to a [cancer](cancer.md) of society; one that is ever expanding, destroying everything with commercialism, materialism, waste and destruction, growing uncontrollably with the sole goal of just never stop an ever accelerating growth. Nevertheless, it's been truthfully stated that "it is now easier to imagine the end of all life than any substantial change in capitalism." Another famous quote is that "capitalism is the belief that the worst of men driven by the nastiest motives will somehow work for the benefit of everyone", which describes its principle quite well.

@ -194,7 +194,7 @@ Besides similar games such as [shogi](shogi.md) there are many variants of chess
- **duck chess**: After each move players place a duck on an empty square, the duck blocks the square. The duck cannot be left on the same square, it has to be moved. There are no checks, players win by capturing the king.
- **fog of war**: Makes chess an incomplete-information game by allowing players to only see squares they can immediately move to (this is similarly to some strategy video games).
- **horde chess**: Asymmetric starting position: large number of black pawns vs a white army of traditional men. Rules are slightly modified, e.g. black can only be defeated by having all pawns captured (there is no black king).
- **infinite chess**: Infinite chessboard.
- **[infinite](infinity.md) chess**: Infinite chessboard. { Huge rabbithole with things like "mate in [omega](omega.md)" etc. ~drummyfish }
- **minichess**: Smaller chessboard, e.g. 4x4, 4x8 etc. Los Alamos chess is played at 6x6 board without bishops (also no promotion to bishop, no pawn double step, no en passant, no castling). Some are already solved (e.g. 3x3).
- **more players**: E.g. 3 man chess or 4 player chess allow more than two players to play, some use different boards.
- **old chess**: The rules of chess itself have been changing over time (e.g. adding the 50 move rule etc.). The older rule sets can be seen as variants as well.

@ -15,7 +15,7 @@ TODO: some history etc.
## Implementations
Let's see how we can implement, improve and [optimize](optimization.md) FizzBuzz in [C](c.md). Keep in mind the question of scalability, i.e. try to imagine how the changes we make to the algorithm would manifest if the problem grew, i.e. if for example we wanted to check divisibility by many more numbers than just 1 and 5 etc. We will only focus on optimizing the core of the algorithm, i.e. the divisibility checking, without caring about other things like optimizing printing the commas between numbers and whatnot. Also we'll be supposing all compiler optimization are turned off so that you the excuse "compiler will optimize this" can't be used :)
Let's see how we can implement, improve and [optimize](optimization.md) FizzBuzz in [C](c.md). Keep in mind the question of scalability, i.e. try to imagine how the changes we make to the algorithm would manifest if the problem grew, i.e. if for example we wanted to check divisibility by many more numbers than just 1 and 5 etc. We will only focus on optimizing the core of the algorithm, i.e. the divisibility checking, without caring about other things like optimizing printing the commas between numbers and whatnot. Also we'll be supposing all compiler optimization are turned off so that the excuse "compiler will optimize this" can't be used :)
For starters let us write a kind of vanilla, [naive](naive.md) solution that everyone will likely come up with as his first attempt. A complete noob will fail to produce even this basic version, a slightly advanced programmer (we might say a "[coder](coding.md)") may submit this as the [final solution](final_solution.md).
@ -44,7 +44,7 @@ int main(void)
}
```
It [works](just_werks.md), however with a number of issues. Firstly we see that for every number we check we potentially test the divisibility by 3 and 5 twice, which is not good, considering division (and modulo) are one of the slowest instructions. We also reuse the magic constants 3 and 5 in different places, which would start to create a huge mess if we were dealing with many more divisors. There is also a lot of branching, in the main divisibility check we may jump up to three times for the checked number -- jump instruction are slow and we'd like to avoid them (again, consider we were checking e.g. divisibility by 1000 different numbers).
It [works](just_werks.md), however with a number of issues. Firstly we see that for every number we check we potentially test the divisibility by 3 and 5 twice, which is not [good](good.md), considering division (and modulo) are one of the slowest instructions. We also reuse the magic constants 3 and 5 in different places, which would start to create a huge mess if we were dealing with many more divisors. There is also a lot of branching, in the main divisibility check we may jump up to three times for the checked number -- jump instruction are slow and we'd like to avoid them (again, consider we were checking e.g. divisibility by 1000 different numbers).
When asked to optimize the algorithm a bit one might come up with something like this:
@ -126,6 +126,7 @@ int main(void)
if (i != 1)
printf(", ");
// look mom, no branches!
char *s = str;
*s = '1'; // convert number to string

@ -68,7 +68,7 @@ Mathematical functions can be seen as [models of computation](model_of_computati
Functions commonly used in mathematics range from the trivial ones (such as the constant functions, *f(x) = constant*) to things like trigonometric functions ([sine](sin.md), [cosine](cos.md), [tangent](tan.md), ...), [factorial](factorial.md), [logarithm](log.md), [logistic](logistic_function.md) sigmoid function, [Gaussian function](gaussian_function.md) etc. Furthermore some more complex and/or interesting functions are (the term function may be applied liberally here):
- **[Ackermann function](ackermann_function.md)**: Extremely fast growing function with some weird properties.
- **[busy beaver function](busy_beaver.md)**: One of [noncomputable](computability.md) functions.
- **[busy beaver function](busy_beaver.md)**: A famous, extremely quickly growing [uncomputable](computability.md) function.
- **Minkowski's [questionmark function](questionmark_function.md)**: Weird function with [fractal](fractal.md) properties.
- **sin(1/x)**: Simple function that gets [chaotic](chaos.md) close to zero.
- **[Dirichlet function](dirichlet_function.md)**: Function that can't really be plotted properly.

@ -205,7 +205,7 @@ The world cells are kept in the `world` array -- each cell holds the current sta
For real serious projects there exist highly optimized [algorithms](algorithm.md) such as [QuickLife](quicklife.md) and [HashLife](hashlife.md) -- if you are aiming to create a state-of-the-art program, check them out. Here we will not be discussing them further as the are beyond the scope of this article.
**Implementing infinite world:** it is possible to program the game so that the world has no boundaries (or possibly has boundaries imposed only by maximum values of the used integer [data type](data_type.md); these could of course be removed by using an advanced arbitrary size integer type). The immediate straightforward idea is to simply resize the world when we need more space, i.e initially we allocate some space to the world (let's say 128x128 cells) and once a cell comes to life outside this area we resize it by [allocating](memory_allocation.md) more memory -- of course this resizing should happen by some bigger step than one because the pattern will likely grow further (so we may resize e.g. from 128x128 right to 256x256). This can of course be highly inefficient, a single glider traveling far away in one direction may cause resizing the world to astronomical size; therefore more smartness can be applied, for example we may allocate spaces by big tiles (let's say 64x64) wherever they are needed (and of course deallocate/free the ones that no longer have any live cells) -- this will require a lot of code for managing the tiles and being able to actually quickly simulate such representation of the world. It would also be possible to have no world array at all but rather only keep a [list](list.md) of cells that are alive, each one storing its coordinates -- this might of course become inefficient for a big number of live cells, however good optimization could make this approach bearable; a basic optimization here would have to focus on very quick determination of each cell's neighbors, which could be achieved e.g. by keeping the list of the cells sorted (e.g. from northwestmost to southeastmost). Another idea (used e.g. by the QuickLife algorithm) is to use a dynamic [tree](tree.md) to represent the world.
**Implementing infinite world:** it is possible to program the game so that the world has no boundaries (or possibly has boundaries imposed only by maximum values of the used integer [data type](data_type.md); these could of course be removed by using an advanced arbitrary size integer type). The immediate straightforward idea is to simply resize the world when we need more space, i.e initially we allocate some space to the world (let's say 128x128 cells) and once a cell comes to life outside this area we resize it by [allocating](memory_allocation.md) more memory -- of course this resizing should happen by some bigger step than one because the pattern will likely grow further (so we may resize e.g. from 128x128 right to 256x256). This can of course be highly inefficient, a single glider traveling far away in one direction may cause resizing the world to astronomical size; therefore more smartness can be applied, for example we may allocate spaces by big tiles (let's say 64x64) wherever they are needed (and of course deallocate/free the ones that no longer have any live cells) -- this will require a lot of code for managing the tiles and being able to actually quickly simulate such representation of the world. It would also be possible to have no world array at all but rather only keep a [list](list.md) of cells that are alive, each one storing its coordinates -- this might of course become inefficient for a big number of live cells, however good optimization could make this approach bearable; a basic optimization here would have to focus on very quick determination of each cell's neighbor count, which could be achieved e.g. by keeping the list of the cells sorted (e.g. from northwestmost to southeastmost). Another idea (used e.g. by the QuickLife algorithm) is to use a dynamic [tree](tree.md) to represent the world.
Some basic **[optimization](optimization.md)** ideas are following: firstly, as shown in the code above, even though we could theoretically only allocate 1 bit for each cell, it is better to store each cell as a whole byte or possibly a whole integer (which will help memory alignment and likely speed up the simulation greatly) -- this also comes with the great feature of being able to store the current state in the lowest bit and older states in higher bits, which firstly allows rewinding time a few states back (which as seen below will be useful further) and secondly we don't need an extra array for performing the cell updates. Next, as another simplest optimization, we may try to skip big empty areas of the world during the update (however watch out for the border where a new cell can spawn due to a neighboring pattern). We may take this further and also skip areas that contain static, unchanging still life -- this could all be done e.g. by dividing the world into tiles (let's say 64x64) and keeping a record about each tile. This can be taken yet further and also detect e.g. periodically repeating still life (such as blinkers); if for example we know a tile contains pattern that repeats with period 2 and we are able to rewind time one step back (which we can easily do, as shown above), we can simply do this step back in time instead of simulating the whole cell. Next we may try to use [dynamic programming](dynamic_programming.md), e.g. [caches](caches.md) and [hash tables](hash_table.md) to keep results of recently performed big pattern simulations to reuse in the future, so that we don't have to simulate them again (i.e. for example remembering how a glider evolved from one frame to another so that next frame we simply copy-paste the result instead of actually simulating each cell again); HashLife algorithm is doing something like this. Also try to focus greatly on the [bottle necks](bottle_neck.md) such as counting the cell's neighbors -- it will be greatly worth it if you speed this code up, even for the cost of using more memory, i.e. consider things like loop unrolling, function inlining and [look up tables](lut.md) for counting the neighbors. Further speedup may be achieved by [parallelization](parallelism.md) ([multithreading](multithreading.md), [GPU](gpu.md), [SIMD](simd.md), ...) as isolated parts of the world may be simulated independently, though this will introduce hardware dependencies and [bloat](bloat.md) and is therefore discouraged.

@ -4,7 +4,7 @@
*UNDER CONSTRUCTION*
{ This article contains unoriginal research with errors and TODOs, read at own risk. Some really interesting and more in-dept information can be found at this nice site: http://mrob.com/pub/math/largenum.html. ~drummyfish }
{ This article contains unoriginal research with errors and TODOs, read at own risk. Some really interesting and more in-dept information can be found at this nice site: http://mrob.com/pub/math/largenum.html. Also the rabbithole of big numbers and googology is so deep I can't even see the end of it. ~drummyfish }
Hyperoperations are [mathematical](math.md) operations that are generalizations/continuations of the basic arithmetic operations of addition, multiplication, exponentiation etc. Basically they're like the basic operations like plus but on steroids. When we realize that multiplication is just repeated addition and exponentiation is just repeated multiplication, it is possible to continue in the same spirit and keep inventing new operations by simply saying that a new operation means repeating the previously defined operation, so we define repeated exponentiation, which we call tetration, then we define repeated tetration, which we call pentation, etc.
@ -228,4 +228,8 @@ In this form the code prints a table for right associativity tetration:
1 0 1 2 3
2 1 1 4 27
3 0 1 16 7625597484987
```
```
## See Also
- [googology](googology.md)

@ -1,17 +1,18 @@
# Just Werks
"Just werks" (for "just [work](work.md)s" if that's somehow not clear) is a phrase used by [noobs](noob.md) to justify using a piece of technology while completely neglecting any other deeper and/or long term consequences. A noob doesn't think about technology further than how it can immediately perform some task for him.
"Just werks" (for "just [work](work.md)s" if that's somehow not clear) is a phrase usually used by [noobs](noob.md) to justify using a piece of technology while completely neglecting any other deeper and/or long term consequences, though the argument has legitimate uses as well. A noob doesn't think about technology further than how it can immediately perform some task for him, to him "just werks" is a mere rationalization that gives him the comfort needed to not think things through.
This phrase is widely used on [4chan](4chan.md)/g, it probably originated there.
"Just werks" can be used legitimately to express that something simply works, e.g. thanks to being [simple](minimalism.md), for example "PDFs suck, [plaintext](plaintext.md) just werks". This use of the term is acceptable.
The "just werks" philosophy completely ignores questions such as:
This phrase is widely used e.g. on [4chan](4chan.md)/g, however mostly in the wrong way. It possibly originated there.
The ignorant "just werks" philosophy completely ignores questions such as:
- **Is there anything better in the long run?** A normie will always prefer a shitty software he can immediately use to a software that would take one day to learn and that would make the task many times easier, comfortable, cheaper etc.
- **Is this affecting my freedom?** A normie doesn't realize that by using proprietary or bloated program will limit the number of people who can maintain, fix and improve his software.
- **Is this affecting my security?** Of course noobs are completely oblivious to the fact that certain types of technology are just plain spyware.
- **Is this affecting my [freedom](freedom.md) (and things like "[security](security.md)" etc.)?** A normie doesn't realize that by using proprietary or bloated program will limit the number of people who can maintain, fix and improve his software, and that technology is used to abused him, e.g. by spying on him, making him depend on something unnecessary etc.
- **How is this affecting my computing in a wider sense?** A normie won't even think about such thing as that using some proprietary format will likely immediately close the door to working with it with a FOSS program, or that installing a specific OS will limit what programs he can run.
- **Am I becoming a slave to this technology?** By adopting something proprietary and/or bloated I am slowly becoming dependent on an ecosystem that's completely under control of some corporation, an ecosystem that can quickly change for the worse or even disappear completely.
- **Am I supporting evil?** E.g. by paying to a corporation, letting someone collect data in the background, promoting a bad piece of technology etc.
- **Am I supporting [evil](evil.md)?** E.g. by paying to a corporation, letting someone collect data in the background, promoting a bad piece of technology etc.
- **Am I hurting better alternatives by not using them?** E.g. by using a proprietary social network gives one more user to it and one fewer to a potentially more ethical free social network.
- **Is there anything just plain better?** A normie will take the first thing that's handed to him and "just werks" without even checking if something better exists that would satisfy him better.

@ -6,6 +6,8 @@ The symbol of LRS is a heart ([love](love.md)), the peace symbol (pacifism, nonv
By extension LRS can also stand for *[less retarded society](less_retarded_society.md)*, a kind of ideal society which we aim to achieve with our technology.
LRS is a set of ideas and a kind of a mindset, a philosophy, though it tries to not become a traditional movement or even something akin a centrally organized group; by [anarchist](anarchism.md) principles it sees following people and groups of people as harmful, it always advocates to only follow ideas and to associate loosely. Therefor it tries to only be a concept that will remain pure, such as for example that of [free software](free_software.md), but NOT an organization, such as for example the [FSF](fsf.md), which will always become corrupt.
## Definition
The definition here is not strict but rather [fuzzy](fuzzy.md), it is in a form of ideas, style and common practices that together help us subjectively identify software as less retarded.
@ -135,14 +137,15 @@ Other technology than software may also be aligned with LRS principles, e.g.:
*See also [less retarded society](less_retarded_society.md) and [FAQ](faq.md).*
LRS is connected to pretty specific political beliefs, but it's not a requirement to share those beliefs to create LRS or be part of the community centered around LRS technology. We just think that it doesn't make logical sense to support LRS and not the politics that justifies it and from which it is derived, but it's up to you to verify this.
LRS is connected to a pretty specific political beliefs, but it's not a requirement to share those beliefs to create LRS or be part of the community centered around LRS technology. We just think that it doesn't make logical sense to support LRS and not the politics that justifies it and from which it is derived, but it's up to you to verify this.
With that said, the politics behind LRS is an [idealist](idealism.md) [anarcho pacifist](anpac.md) [communism](communism.md), but NOT [pseudoleftism](pseudoleftism.md) (i.e. we do not support political correctness, [COC](coc.md)s, [cancel culture](cancel_culture.md), Marxism-Leninism etc.). In our views, goals and means we are similar to the [Venus project](venus_project.md), even though we may not agree completely on all points. We are not officially associated with any other project or community. **We [love](love.md) all [living beings](life.md)** (not just people), even those who cause us pain or hate us, we believe love is the only way towards a good society -- in this we follow similar philosophy of nonviolence that was preached by [Jesus](jesus.md) but without necessarily being religious, we simply think it is the only correct way of a mature society to behave nonviolently and lovingly towards everyone. We do NOT have any leaders or [heroes](hero_culture.md); people are imperfect and giving some more power, louder voices or greater influence creates hierarchy and goes against anarchism, therefore we only follow ideas. We aim for true social (not necessarily physical) equality of everyone, our technology helps everyone equally. We reject [competition](competition.md) as a basis of society and anti-equality means such as violence, [fights](fight_culture.md), bullying ([cancelling](cancel_culture.md) etc.), [censorship](censorship.md) ([political correctness](political_correctness.md) etc.), [governments](government.md) and [capitalism](capitalism.md). We support things such as [universal basic income](ubi.md) (as long as there exist money which we are however ultimately against), [veganism](veganism.md) and [slow movement](slow_movement.md). We highly prefer peaceful [evolution](evolution.md) to [revolution](revolution.md) as revolutions tend to be violent and have to be [fought](fight_culture.md) -- we do not intend to push any ideas by force but rather to convince enough people to a voluntary change.
With that said, the politics behind LRS is an [idealist](idealism.md) [anarcho pacifist](anpac.md) [communism](communism.md), but NOT [pseudoleftism](pseudoleftism.md) (i.e. we do not support political correctness, [COC](coc.md)s, [cancel culture](cancel_culture.md), Marxism-Leninism etc.). In our views, goals and means we are similar e.g. to the [Venus project](venus_project.md), even though we may not agree completely on all points. We are not officially associated with any other project or community. **We [love](love.md) all [living beings](life.md)** (not just people), even those who cause us pain or hate us, we believe love is the only way towards a good society -- in this we follow similar philosophy of nonviolence that was preached by [Jesus](jesus.md) but without necessarily being religious, we simply think it is the only correct way of a mature society to behave nonviolently and lovingly towards everyone. We do NOT have any leaders or [heroes](hero_culture.md); people are imperfect and giving some more power, louder voices or greater influence creates hierarchy and goes against anarchism, therefore we only follow ideas. We aim for true social (not necessarily physical) equality of everyone, our technology helps everyone equally. **We reject [competition](competition.md) as a basis of society** and anti-equality means such as violence, [fights](fight_culture.md), bullying ([cancelling](cancel_culture.md) etc.), [censorship](censorship.md) ([political correctness](political_correctness.md) etc.), [governments](government.md) and [capitalism](capitalism.md). We support things such as [universal basic income](ubi.md) (as long as there exist [money](money.md) which we are however ultimately against), [veganism](veganism.md) and [slow movement](slow_movement.md). We highly prefer peaceful [evolution](evolution.md) to [revolution](revolution.md) as revolutions tend to be violent and have to be [fought](fight_culture.md) -- we do not intend to push any ideas by force but rather to convince enough people to a voluntary change.
## See Also
- [less retarded society](less_retarded_society.md)
- [suckless](suckless.md)
- [Venus project](venus_project.md)
- [reactionary software](reactionary_software.md)
- [KISS](kiss.md)
- [Buddhism](buddhism.md)

@ -8,7 +8,7 @@ Some see math not as a science but rather a discipline that develops formal tool
On the other hand, one does not have to be a math [PhD](phd.md) in order to be a good programmer in most fields. Sure, knowledge and overview of advanced mathematics is needed to excel, to be able to spot and sense elegant solutions, but beyond these essentials that anyone can learn with a bit of will it's really more about just not being afraid of math, accepting and embracing the fact that it permeates what we do and studying it when the study of a new topic is needed.
**The power of math is limited.** In 1932 [Kurt Godel](godel.md) mathematically proved, with his [incompleteness theorems](incompleteness.md), that (basically) there are truths which math itself can never prove, and that math itself cannot prove its own consistency (which killed so called Hilbert's program which sought to do exactly that). This is related to the limited power of [computers](computer.md) due to [undecidability](undecidability.md) (there are problems a computer can never decide), proven by [Alan Turing](turing.md).
**The power of math is limited.** In 1932 [Kurt Godel](godel.md) mathematically proved, with his [incompleteness theorems](incompleteness.md), that (basically) there are logical truths which math itself can never prove, and that, put in a simplified way, "math itself cannot prove its own consistency" (which killed so called Hilbert's program which sought to do exactly that). This is related to the limited power of [computers](computer.md) due to [undecidability](undecidability.md) (there are problems a computer can never decide), proven by [Alan Turing](turing.md). There are probably even [numbers](number.md) so big they just can't even be computed, even in theory -- see [busy beaver](busy_beaver.md) function.
## Overview

@ -27,7 +27,7 @@ Indeed we may also do something "in between", e.g. generate procedural assets in
The following are some techniques and concepts often used in procedural generation:
- **[noise](noise.md)**: Noise is often used as a basis for generation or for modulation, it can be seen as kind of "RNG taken to the next level" -- noise is greatly random but also usually has some structure, for example it may resemble smoke or water ripples. There are great many types of noise and algorithms for its generation; the simplest [white noise](white_noise.md) is actually not very useful, more common are various forms of fractal noise, often used noises are [Perlin noise](perlin_noise.md), [simplex noise](simplex_noise.md) etc., other ones are [Voronoi](voronoi.md) diagrams, midpoint displacement, spot noise, cosine noise, fault formation etcetc.
- **[noise](noise.md)**: Noise is often used as a basis for generation or for modulation, it can be seen as kind of "RNG taken to the next level" -- noise is greatly random but also usually has some structure, for example it may resemble smoke or water ripples. There are great many types of noise and algorithms for its generation; the simplest [white noise](white_noise.md) is actually not very useful, more common are various forms of fractal noise, often used noises are [Perlin noise](perlin_noise.md), [simplex noise](simplex_noise.md) etc., other ones are [Voronoi](voronoi.md) diagrams, coin flip noise, midpoint displacement, spot noise, cosine noise, fault formation, Brownian motion etcetc.
- **[random number generators](rng.md)**: To make random decisions we use random number generators -- here we actually don't have to have the best generators, we aren't dealing with "security" or anything critical, however the generator should at least have a great period so that it's not limited to just generating few different results, and its useful to be able to choose [probability distribution](probability_distribution.md).
- **[modulation](modulation.md)**: Using previously generated procedural data, for example noise, to somehow affect another data -- for example imagine we already have some basic procedural texture but want to make it more interesting by randomly displacing its individual pixels to warp it a little bit. If we use a simple random number generator for each pixel, the result will just look too chaotic, so it's better if we e.g. use two additional Perlin noise textures, which together say for each pixel by what distance and angle we'll displace the pixel. As Perlin noise is more continuous, gradual noise, then also the distortion will be kind of continuous and nice. A famous example of this is marble texture that can be generated by horizontally modulating a texture of vertical black and white stripes with Perlin noise.
- **simulations resembling natural/biological phenomena**: E.g. [cellular automata](cellular_automaton.md), [particle systems](particle_system.md), erosion simulation, [agent systems](agent_system.md) (letting virtual "workers" collaborate on creating something) ...

@ -10,9 +10,9 @@ TODO
One of the most basic is the **[chi-squared test](chi_squared_test.md)** whose description can be found e.g. in the *Art of Computer Programming* book. TODO
{ The following is a method I wrote about here (includes some code): https://codeberg.org/drummyfish/my_writings/src/branch/master/randomness.md, I am almost certainly not the first to invent this, but I haven't found what this is called, so for now I'm calling it "my" test, not implying any ownership of course :) If you know what this method is called, please send me a mail. ~drummyfish }
{ The following is a method I came up with wrote about here (includes some code): https://codeberg.org/drummyfish/my_writings/src/branch/master/randomness.md, I haven't found what this is called, it probably already exists. If you know what this method is called, please send me a mail. ~drummyfish }
**[Drummyfish's](drummyfish.md) randomness test**: this test tries to measure the unpredictability, the inability to predict what binary digit will follow. As an input to the test we suppose a binary sequence *S* of length *N* bits that's repeating forever (for example for *N = 2* a possible sequence is 10 meaning we are really considering an infinite sequence 1010101010...). We suppose an observer knows the sequence and that it's repeating (consider he has for example been watching us broadcast it for a long time and he noticed we are just repeating the same sequence over and over), then we ask: if the observer is given a random (and randomly long) subsequence *S2* of the main sequence *S*, what's the average probability he can correctly predict the bit that will follow? This average probability is our measured randomness *r* -- the lower the *r*, the "more random" the sequence *S* is according to this test. For different *N* there are different minimum possible values of *r*, it is for example not possible to achieve *r < 0.7* for *N = 3* etc. The following table shows this test's most random sequences for given *N*, along with their count and *r*.
**Cool randomness test**: this test tries to measure the unpredictability, the inability to predict what binary digit will follow. As an input to the test we suppose a binary sequence *S* of length *N* bits that's repeating forever (for example for *N = 2* a possible sequence is 10 meaning we are really considering an infinite sequence 1010101010...). We suppose an observer knows the sequence and that it's repeating (consider he has for example been watching us broadcast it for a long time and he noticed we are just repeating the same sequence over and over), then we ask: if the observer is given a random (and randomly long) subsequence *S2* of the main sequence *S*, what's the average probability he can correctly predict the bit that will follow? This average probability is our measured randomness *r* -- the lower the *r*, the "more random" the sequence *S* is according to this test. For different *N* there are different minimum possible values of *r*, it is for example not possible to achieve *r < 0.7* for *N = 3* etc. The following table shows this test's most random sequences for given *N*, along with their count and *r*.
| seq. len. | most random looking sequences |count| min. r |
| --------- | --------------------------------------------------------------------------------------------- | --- | ------ |

@ -0,0 +1,3 @@
# Rights Culture
Rights culture is a [toxic](toxic.md) culture of the [law](law.md)-obsessed [capitalism](capitalism.md)-plagued western society in which common things such as [repairing things](right_to_repair.md) and [defecating without being watched](surveillance.md) start to become privileges which common people have to "[fight](fight_culture.md)" for instead of doing useful things. It manifests in language by much more frequent use of the word "right" ("human rights", "worker rights", "men's rights", "animal rights", "I have a right to sleep", "I have a right to not listen to you", ...), reflecting the subconscious shift towards accepting that "what's not codified as a right is implicitly forbidden", creating a new [bullshit](bullshit.md) field of various "[fighters](fight_culture.md)" for all kinds of rights like the right to wipe one's ass with his right hand, right to wipe his ass with the left hand, right to receive what one pays for, right to not be tortured for arriving late at [slavery](work.md) etc. The solution to such a shitty state of society is of course not in codifying more rights and "fighting" for them, but rather replacing the shitty [underlying system](capitalism.md) which keeps turning common things into privileges; however it's also the solution people will never choose because people always do the exact opposite of what they should.

@ -0,0 +1,5 @@
# Robot
TODO
{ lmao https://yt.artemislena.eu/watch?v=ewAbJn96krw ~drummyfish }

@ -6,11 +6,11 @@ Rust is an extremely poor attempt at a politically motivated [capitalist](capita
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)). As such it sports **TONS of [dependencies](dependency.md) even for trivial programs**. 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), forced [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?
- **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 badly designed as a language**, taking the mainstream road of bringing in more complexity, shiny new [paradigms](paradigm.md) and features, accumulating layers of abstraction, adding handholders, "safety" OCD etc., instead of rather taking as inspiration a good language such as [C](c.md) and trying to make it better by [SIMPLIFYING](minimalism.md) it. Their vision is that of someone who just learned about computers and naturally wants to just ADD MORE STUFF because "bigger is better", completely ignoring experienced people who know from practice that actual improvement lies in simplification.
- **Rust is [capitalist software](capitalist_software.md)** sponsored by corporations like [Mozilla](mozilla.md) and [Micro$oft](microsoft.md), trying to perpetuate the philosophy of "[modern](modern.md)" anti-people technology rather than steering it in [better direction](lrs.md). The Rust brand is [trademarked](trademark.md) and "protected" by corporations owning it. Remember, a corporation NEVER sponsors anything without trying to buy some control over that thing.
- **It has licensing/[freedom](free_software.md) issues**, specifically making it difficult to exercise freedom 3 (legally modify software), see https://web.archive.org/web/20191224132425/https://wiki.hyperbola.info/doku.php?id=en:main:rusts_freedom_flaws. **Its "[open source](open_source.md)" label is just [openwashing](openwashing.md)**, it is "open source" in the same way [Android](android.md) is open source (it has a "FOSS" license but it is de facto centrally controlled by some fascist group).
- **Rust is corporate [capitalist software](capitalist_software.md)** sponsored by [Big Tech](big_tech.md), organizations and corporations like [Mozilla](mozilla.md) and [Micro$oft](microsoft.md), trying to perpetuate the philosophy of "[modern](modern.md)" anti-people technology rather than steering it in [better direction](lrs.md). The Rust brand is [trademarked](trademark.md) and "protected" by corporations owning it. Remember, a corporation NEVER sponsors anything without trying to buy some control over that thing, "don't bite the hand that feeds you" is not just a phrase.
- **It has licensing/[freedom](free_software.md) issues**, specifically making it difficult to exercise freedom 3 (legally modify software), see e.g. https://web.archive.org/web/20191224132425/https://wiki.hyperbola.info/doku.php?id=en:main:rusts_freedom_flaws and https://www.gnu.org/philosophy/open-source-misses-the-point.html (criticism by [GNU](gnu.md) itself). **Its "[open source](open_source.md)" label is just [openwashing](openwashing.md)**, it is "open source" in the same way [Android](android.md) is open source (it has a "FOSS" license but it is de facto centrally controlled by some fascist group).
- **Rust has no specification**, it tries to discourage other implementations and as such greatly hurts basic principles of freedom. Lack of fixed specifications also creates [update culture](update_culture.md) etc.
- Due to the above, Rust is not really a language, it is more of a "platform" or "software framework" for programs -- Rust is a programming language in the same sense in which Google App Store is a package manager. If it becomes the mainstream language, it will do to computer programs what e.g. [Steam](steam.md) has done to video [games](game.md).
- **Rust is [fascist](fascism.md) [tranny software](tranny_software.md)** -- not because it is written by trannsexuals, but because it sports political discrimination through [codes of conduct](coc.md) and creating a de-facto monopoly on the language (with [bloat monopoly](bloat_monopoly.md), lack of specification, kicking people out of development based on their political views etc.). Its community is infamous for being extremely **[toxic](toxic.md) and [woke](woke.md)**.

@ -29,5 +29,5 @@ Here is a quick rough comparison of seydevs and actual good programmers (nowaday
| text editor | vim, ed, ... | Microsoft AI blockchain VSCode with 10000 plugins running in 10000 virtual sandboxes |
| looks | fat, unwashed, unkept beard, dirty clothes |pink hair, fake glasses, $1000 T-shirt "sudo make sandwich HAHA BAZINGA", 10000 tattoos|
| gender | male | depends on mood |
| race | white | prefers not to specify |
| race | white | prefers not to specify, offended by the question |
| hobbies | reading encyclopedias, chess, rocket science | distrohopping, browserhopping, githopping, editorhopping, tiktok, partying |

@ -201,4 +201,5 @@ Turing machines can be used to define computable [formal languages](formal_langu
## See Also
- [brainfuck](brainfuck.md)
- [brainfuck](brainfuck.md)
- [busy beaver](busy_beaver.md)
Loading…
Cancel
Save